Compare commits

...

6 Commits

Author SHA1 Message Date
semantic-release-bot
475197af45 chore: Release v5.46.0-dev.7 [skip ci]
# [5.46.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.46.0-dev.6...v5.46.0-dev.7) (2025-11-08)

### Bug Fixes

* **YouTube - Settings:** Add additional languages to ReVanced language preference ([d390b54](d390b54dab))
2025-11-08 12:32:08 +00:00
LisoUseInAIKyrios
d390b54dab fix(YouTube - Settings): Add additional languages to ReVanced language preference 2025-11-08 14:28:52 +02:00
github-actions[bot]
4d1eaa6b14 chore: Sync translations (#6260) 2025-11-08 14:26:20 +02:00
LisoUseInAIKyrios
c6364f5b49 chore: Fix compilation warning 2025-11-08 10:08:25 +02:00
semantic-release-bot
f177eae385 chore: Release v5.46.0-dev.6 [skip ci]
# [5.46.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.46.0-dev.5...v5.46.0-dev.6) (2025-11-08)

### Features

* **YouTube - Debugging:** Add setting to block experimental client flags ([#6196](https://github.com/ReVanced/revanced-patches/issues/6196)) ([2e9d695](2e9d6959c9))
2025-11-08 08:07:41 +00:00
MarcaD
2e9d6959c9 feat(YouTube - Debugging): Add setting to block experimental client flags (#6196) 2025-11-08 10:01:46 +02:00
83 changed files with 1773 additions and 505 deletions

View File

@@ -1,3 +1,17 @@
# [5.46.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.46.0-dev.6...v5.46.0-dev.7) (2025-11-08)
### Bug Fixes
* **YouTube - Settings:** Add additional languages to ReVanced language preference ([d390b54](https://github.com/ReVanced/revanced-patches/commit/d390b54dab92d75b4e0d3e38344eae489dd69d98))
# [5.46.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.46.0-dev.5...v5.46.0-dev.6) (2025-11-08)
### Features
* **YouTube - Debugging:** Add setting to block experimental client flags ([#6196](https://github.com/ReVanced/revanced-patches/issues/6196)) ([2e9d695](https://github.com/ReVanced/revanced-patches/commit/2e9d6959c94df7588b9e34b18770e9f437e91926))
# [5.46.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.46.0-dev.4...v5.46.0-dev.5) (2025-11-07)

View File

@@ -16,6 +16,7 @@ import java.util.Arrays;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.ui.Dim;
import com.amazon.video.sdk.player.Player;
@@ -64,9 +65,8 @@ public class PlaybackSpeedPatch {
SpeedIconDrawable speedIcon = new SpeedIconDrawable();
speedButton.setImageDrawable(speedIcon);
int buttonSize = Utils.dipToPixels(48);
speedButton.setMinimumWidth(buttonSize);
speedButton.setMinimumHeight(buttonSize);
speedButton.setMinimumWidth(Dim.dp48);
speedButton.setMinimumHeight(Dim.dp48);
return speedButton;
}
@@ -197,11 +197,11 @@ class SpeedIconDrawable extends Drawable {
@Override
public int getIntrinsicWidth() {
return Utils.dipToPixels(32);
return Dim.dp32;
}
@Override
public int getIntrinsicHeight() {
return Utils.dipToPixels(32);
return Dim.dp32;
}
}

View File

@@ -23,9 +23,7 @@ import android.os.Looper;
import android.preference.Preference;
import android.preference.PreferenceGroup;
import android.preference.PreferenceScreen;
import android.util.DisplayMetrics;
import android.util.Pair;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
@@ -63,6 +61,7 @@ import app.revanced.extension.shared.settings.AppLanguage;
import app.revanced.extension.shared.settings.BaseSettings;
import app.revanced.extension.shared.settings.BooleanSetting;
import app.revanced.extension.shared.settings.preference.ReVancedAboutPreference;
import app.revanced.extension.shared.ui.Dim;
@SuppressWarnings("NewApi")
public class Utils {
@@ -801,13 +800,10 @@ public class Utils {
public static void setDialogWindowParameters(Window window, int gravity, int yOffsetDip, int widthPercentage, boolean dimAmount) {
WindowManager.LayoutParams params = window.getAttributes();
DisplayMetrics displayMetrics = Resources.getSystem().getDisplayMetrics();
int portraitWidth = Math.min(displayMetrics.widthPixels, displayMetrics.heightPixels);
params.width = (int) (portraitWidth * (widthPercentage / 100.0f)); // Set width based on parameters.
params.width = Dim.pctPortraitWidth(widthPercentage);
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
params.gravity = gravity;
params.y = yOffsetDip > 0 ? dipToPixels(yOffsetDip) : 0;
params.y = yOffsetDip > 0 ? Dim.dp(yOffsetDip) : 0;
if (dimAmount) {
params.dimAmount = 0f;
}
@@ -816,18 +812,6 @@ public class Utils {
window.setBackgroundDrawable(null); // Remove default dialog background
}
/**
* Creates an array of corner radii for a rounded rectangle shape.
*
* @param dp Radius in density-independent pixels (dip) to apply to all corners.
* @return An array of eight float values representing the corner radii
* (top-left, top-right, bottom-right, bottom-left).
*/
public static float[] createCornerRadii(float dp) {
final float radius = dipToPixels(dp);
return new float[]{radius, radius, radius, radius, radius, radius, radius, radius};
}
/**
* Sets the theme light color used by the app.
*/
@@ -1132,42 +1116,6 @@ public class Utils {
return getResourceColor(colorString);
}
/**
* Converts dip value to actual device pixels.
*
* @param dip The density-independent pixels value.
* @return The device pixel value.
*/
public static int dipToPixels(float dip) {
return (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
dip,
Resources.getSystem().getDisplayMetrics()
);
}
/**
* Converts a percentage of the screen height to actual device pixels.
*
* @param percentage The percentage of the screen height (e.g., 30 for 30%).
* @return The device pixel value corresponding to the percentage of screen height.
*/
public static int percentageHeightToPixels(int percentage) {
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
return (int) (metrics.heightPixels * (percentage / 100.0f));
}
/**
* Converts a percentage of the screen width to actual device pixels.
*
* @param percentage The percentage of the screen width (e.g., 30 for 30%).
* @return The device pixel value corresponding to the percentage of screen width.
*/
public static int percentageWidthToPixels(int percentage) {
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
return (int) (metrics.widthPixels * (percentage / 100.0f));
}
/**
* Uses {@link #adjustColorBrightness(int, float)} depending if light or dark mode is active.
*/

View File

@@ -1,5 +1,9 @@
package app.revanced.extension.shared.patches;
import static java.lang.Boolean.TRUE;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
@@ -21,12 +25,28 @@ public final class EnableDebuggingPatch {
? new ConcurrentHashMap<>(800, 0.5f, 1)
: null;
private static final Set<Long> DISABLED_FEATURE_FLAGS = parseFlags(BaseSettings.DISABLED_FEATURE_FLAGS.get());
// Log all disabled flags on app startup.
static {
if (LOG_FEATURE_FLAGS && !DISABLED_FEATURE_FLAGS.isEmpty()) {
StringBuilder sb = new StringBuilder("Disabled feature flags:\n");
for (Long flag : DISABLED_FEATURE_FLAGS) {
sb.append(" ").append(flag).append('\n');
}
Logger.printDebug(sb::toString);
}
}
/**
* Injection point.
*/
public static boolean isBooleanFeatureFlagEnabled(boolean value, Long flag) {
if (LOG_FEATURE_FLAGS && value) {
if (featureFlags.putIfAbsent(flag, true) == null) {
if (DISABLED_FEATURE_FLAGS.contains(flag)) {
return false;
}
if (featureFlags.putIfAbsent(flag, TRUE) == null) {
Logger.printDebug(() -> "boolean feature is enabled: " + flag);
}
}
@@ -70,10 +90,44 @@ public final class EnableDebuggingPatch {
if (LOG_FEATURE_FLAGS && !defaultValue.equals(value)) {
if (featureFlags.putIfAbsent(flag, true) == null) {
Logger.printDebug(() -> " string feature is enabled: " + flag
+ " value: " + value + (defaultValue.isEmpty() ? "" : " default: " + defaultValue));
+ " value: " + value + (defaultValue.isEmpty() ? "" : " default: " + defaultValue));
}
}
return value;
}
/**
* Get all logged feature flags.
* @return Set of all known flags
*/
public static Set<Long> getAllLoggedFlags() {
if (featureFlags != null) {
return new HashSet<>(featureFlags.keySet());
}
return new HashSet<>();
}
/**
* Public method for parsing flags.
* @param flags String containing newline-separated flag IDs
* @return Set of parsed flag IDs
*/
public static Set<Long> parseFlags(String flags) {
Set<Long> parsedFlags = new HashSet<>();
if (!flags.isBlank()) {
for (String flag : flags.split("\n")) {
String trimmedFlag = flag.trim();
if (trimmedFlag.isEmpty()) continue; // Skip empty lines.
try {
parsedFlags.add(Long.parseLong(trimmedFlag));
} catch (NumberFormatException e) {
Logger.printException(() -> "Invalid flag ID: " + flag);
}
}
}
return parsedFlags;
}
}

View File

@@ -7,7 +7,6 @@ import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.preference.PreferenceFragment;
import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
@@ -16,6 +15,7 @@ import android.widget.Toolbar;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.settings.preference.ToolbarPreferenceFragment;
import app.revanced.extension.shared.ui.Dim;
/**
* Base class for hooking activities to inject a custom PreferenceFragment with a toolbar.
@@ -109,13 +109,12 @@ public abstract class BaseActivityHook extends Activity {
toolbar.setNavigationOnClickListener(getNavigationClickListener(activity));
toolbar.setTitle(STRING_REVANCED_SETTINGS_TITLE);
final int margin = Utils.dipToPixels(16);
toolbar.setTitleMarginStart(margin);
toolbar.setTitleMarginEnd(margin);
toolbar.setTitleMarginStart(Dim.dp16);
toolbar.setTitleMarginEnd(Dim.dp16);
TextView toolbarTextView = Utils.getChildView(toolbar, false, view -> view instanceof TextView);
if (toolbarTextView != null) {
toolbarTextView.setTextColor(Utils.getAppForegroundColor());
toolbarTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);
toolbarTextView.setTextSize(20);
}
setToolbarLayoutParams(toolbar);

View File

@@ -42,4 +42,6 @@ public class BaseSettings {
public static final EnumSetting<BrandingTheme> CUSTOM_BRANDING_ICON = new EnumSetting<>("revanced_custom_branding_icon", BrandingTheme.ORIGINAL, true);
public static final IntegerSetting CUSTOM_BRANDING_NAME = new IntegerSetting("revanced_custom_branding_name", 1, true);
public static final StringSetting DISABLED_FEATURE_FLAGS = new StringSetting("revanced_disabled_feature_flags", "", true, parent(DEBUG));
}

View File

@@ -1,7 +1,6 @@
package app.revanced.extension.shared.settings.preference;
import static app.revanced.extension.shared.StringRef.str;
import static app.revanced.extension.shared.Utils.dipToPixels;
import static app.revanced.extension.shared.Utils.getResourceIdentifierOrThrow;
import android.app.Dialog;
@@ -37,6 +36,7 @@ import app.revanced.extension.shared.settings.Setting;
import app.revanced.extension.shared.settings.StringSetting;
import app.revanced.extension.shared.ui.ColorDot;
import app.revanced.extension.shared.ui.CustomDialog;
import app.revanced.extension.shared.ui.Dim;
/**
* A custom preference for selecting a color via a hexadecimal code or a color picker dialog.
@@ -310,11 +310,8 @@ public class ColorPickerPreference extends EditTextPreference {
inputLayout.setGravity(Gravity.CENTER_VERTICAL);
dialogColorDot = new View(context);
LinearLayout.LayoutParams previewParams = new LinearLayout.LayoutParams(
dipToPixels(20),
dipToPixels(20)
);
previewParams.setMargins(dipToPixels(16), 0, dipToPixels(10), 0);
LinearLayout.LayoutParams previewParams = new LinearLayout.LayoutParams(Dim.dp20,Dim.dp20);
previewParams.setMargins(Dim.dp16, 0, Dim.dp10, 0);
dialogColorDot.setLayoutParams(previewParams);
inputLayout.addView(dialogColorDot);
updateDialogColorDot();

View File

@@ -1,6 +1,5 @@
package app.revanced.extension.shared.settings.preference;
import static app.revanced.extension.shared.Utils.dipToPixels;
import static app.revanced.extension.shared.settings.preference.ColorPickerPreference.getColorString;
import android.annotation.SuppressLint;
@@ -21,6 +20,7 @@ import androidx.annotation.ColorInt;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.ui.Dim;
/**
* A custom color picker view that allows the user to select a color using a hue slider, a saturation-value selector
@@ -54,28 +54,28 @@ public class ColorPickerView extends View {
}
/** Expanded touch area for the hue and opacity bars to increase the touch-sensitive area. */
public static final float TOUCH_EXPANSION = dipToPixels(20f);
public static final float TOUCH_EXPANSION = Dim.dp20;
/** Margin between different areas of the view (saturation-value selector, hue bar, and opacity slider). */
private static final float MARGIN_BETWEEN_AREAS = dipToPixels(24);
private static final float MARGIN_BETWEEN_AREAS = Dim.dp24;
/** Padding around the view. */
private static final float VIEW_PADDING = dipToPixels(16);
private static final float VIEW_PADDING = Dim.dp16;
/** Height of the hue bar. */
private static final float HUE_BAR_HEIGHT = dipToPixels(12);
private static final float HUE_BAR_HEIGHT = Dim.dp12;
/** Height of the opacity slider. */
private static final float OPACITY_BAR_HEIGHT = dipToPixels(12);
private static final float OPACITY_BAR_HEIGHT = Dim.dp12;
/** Corner radius for the hue bar. */
private static final float HUE_CORNER_RADIUS = dipToPixels(6);
private static final float HUE_CORNER_RADIUS = Dim.dp6;
/** Corner radius for the opacity slider. */
private static final float OPACITY_CORNER_RADIUS = dipToPixels(6);
private static final float OPACITY_CORNER_RADIUS = Dim.dp6;
/** Radius of the selector handles. */
private static final float SELECTOR_RADIUS = dipToPixels(12);
private static final float SELECTOR_RADIUS = Dim.dp12;
/** Stroke width for the selector handle outlines. */
private static final float SELECTOR_STROKE_WIDTH = 8;
@@ -202,7 +202,7 @@ public class ColorPickerView extends View {
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
final float DESIRED_ASPECT_RATIO = 0.8f; // height = width * 0.8
final int minWidth = dipToPixels(250);
final int minWidth = Dim.dp(250);
final int minHeight = (int) (minWidth * DESIRED_ASPECT_RATIO) + (int) (HUE_BAR_HEIGHT + MARGIN_BETWEEN_AREAS)
+ (opacitySliderEnabled ? (int) (OPACITY_BAR_HEIGHT + MARGIN_BETWEEN_AREAS) : 0);

View File

@@ -0,0 +1,623 @@
package app.revanced.extension.shared.settings.preference;
import static app.revanced.extension.shared.StringRef.str;
import static app.revanced.extension.shared.Utils.getResourceIdentifierOrThrow;
import android.annotation.SuppressLint;
import android.app.Dialog;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.ShapeDrawable;
import android.graphics.drawable.shapes.RoundRectShape;
import android.preference.Preference;
import android.text.Editable;
import android.text.InputType;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.util.Pair;
import android.util.SparseBooleanArray;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.Space;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.patches.EnableDebuggingPatch;
import app.revanced.extension.shared.settings.BaseSettings;
import app.revanced.extension.shared.ui.CustomDialog;
import app.revanced.extension.shared.ui.Dim;
/**
* A custom preference that opens a dialog for managing feature flags.
* Allows moving boolean flags between active and blocked states with advanced selection.
*/
@SuppressWarnings({"deprecation", "unused"})
public class FeatureFlagsManagerPreference extends Preference {
private static final int DRAWABLE_REVANCED_SETTINGS_SELECT_ALL =
getResourceIdentifierOrThrow("revanced_settings_select_all", "drawable");
private static final int DRAWABLE_REVANCED_SETTINGS_DESELECT_ALL =
getResourceIdentifierOrThrow("revanced_settings_deselect_all", "drawable");
private static final int DRAWABLE_REVANCED_SETTINGS_COPY_ALL =
getResourceIdentifierOrThrow("revanced_settings_copy_all", "drawable");
private static final int DRAWABLE_REVANCED_SETTINGS_ARROW_RIGHT_ONE =
getResourceIdentifierOrThrow("revanced_settings_arrow_right_one", "drawable");
private static final int DRAWABLE_REVANCED_SETTINGS_ARROW_RIGHT_DOUBLE =
getResourceIdentifierOrThrow("revanced_settings_arrow_right_double", "drawable");
private static final int DRAWABLE_REVANCED_SETTINGS_ARROW_LEFT_ONE =
getResourceIdentifierOrThrow("revanced_settings_arrow_left_one", "drawable");
private static final int DRAWABLE_REVANCED_SETTINGS_ARROW_LEFT_DOUBLE =
getResourceIdentifierOrThrow("revanced_settings_arrow_left_double", "drawable");
/**
* Flags to hide from the UI.
*/
private static final Set<Long> FLAGS_TO_IGNORE = Set.of(
45386834L // 'You' tab settings icon.
);
/**
* Tracks state for range selection in ListView.
*/
private static class ListViewSelectionState {
int lastClickedPosition = -1; // Position of the last clicked item.
boolean isRangeSelecting = false; // True while a range is being selected.
}
/**
* Helper class to pass ListView and Adapter together.
*/
private record ColumnViews(ListView listView, FlagAdapter adapter) {}
{
setOnPreferenceClickListener(pref -> {
showFlagsManagerDialog();
return true;
});
}
public FeatureFlagsManagerPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
public FeatureFlagsManagerPreference(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public FeatureFlagsManagerPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
public FeatureFlagsManagerPreference(Context context) {
super(context);
}
/**
* Shows the main dialog for managing feature flags.
*/
private void showFlagsManagerDialog() {
if (!BaseSettings.DEBUG.get()) {
Utils.showToastShort(str("revanced_debug_logs_disabled"));
return;
}
Context context = getContext();
// Load all known and disabled flags.
TreeSet<Long> allKnownFlags = new TreeSet<>(EnableDebuggingPatch.getAllLoggedFlags());
allKnownFlags.removeAll(FLAGS_TO_IGNORE);
TreeSet<Long> disabledFlags = new TreeSet<>(EnableDebuggingPatch.parseFlags(
BaseSettings.DISABLED_FEATURE_FLAGS.get()));
disabledFlags.removeAll(FLAGS_TO_IGNORE);
if (allKnownFlags.isEmpty() && disabledFlags.isEmpty()) {
// String does not need to be localized because it's basically impossible
// to reach the settings menu without encountering at least 1 flag.
Utils.showToastShort("No feature flags logged yet");
return;
}
TreeSet<Long> availableFlags = new TreeSet<>(allKnownFlags);
availableFlags.removeAll(disabledFlags);
TreeSet<Long> blockedFlags = new TreeSet<>(disabledFlags);
Pair<Dialog, LinearLayout> dialogPair = CustomDialog.create(
context,
getTitle() != null ? getTitle().toString() : "",
null,
null,
str("revanced_settings_save"),
() -> saveFlags(blockedFlags),
() -> {},
str("revanced_settings_reset"),
this::resetFlags,
true
);
LinearLayout mainLayout = dialogPair.second;
LinearLayout.LayoutParams contentParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, 0, 1.0f);
// Insert content before the dialog button row.
View contentView = createContentView(context, availableFlags, blockedFlags);
mainLayout.addView(contentView, mainLayout.getChildCount() - 1, contentParams);
Dialog dialog = dialogPair.first;
dialog.show();
Window window = dialog.getWindow();
if (window != null) {
Utils.setDialogWindowParameters(window, Gravity.CENTER, 0, 100, false);
}
}
/**
* Creates the main content view with two columns.
*/
private View createContentView(Context context, TreeSet<Long> availableFlags, TreeSet<Long> blockedFlags) {
LinearLayout contentLayout = new LinearLayout(context);
contentLayout.setOrientation(LinearLayout.VERTICAL);
// Headers.
TextView availableHeader = createHeader(context, "revanced_debug_feature_flags_manager_active_header");
TextView blockedHeader = createHeader(context, "revanced_debug_feature_flags_manager_blocked_header");
LinearLayout headersLayout = new LinearLayout(context);
headersLayout.setOrientation(LinearLayout.HORIZONTAL);
headersLayout.addView(availableHeader, new LinearLayout.LayoutParams(
0, ViewGroup.LayoutParams.WRAP_CONTENT, 1f));
headersLayout.addView(blockedHeader, new LinearLayout.LayoutParams(
0, ViewGroup.LayoutParams.WRAP_CONTENT, 1f));
// Columns.
View leftColumn = createColumn(context, availableFlags, availableHeader);
View rightColumn = createColumn(context, blockedFlags, blockedHeader);
ColumnViews leftViews = (ColumnViews) leftColumn.getTag();
ColumnViews rightViews = (ColumnViews) rightColumn.getTag();
updateHeaderCount(availableHeader, leftViews.adapter);
updateHeaderCount(blockedHeader, rightViews.adapter);
// Main columns layout.
LinearLayout columnsLayout = new LinearLayout(context);
columnsLayout.setOrientation(LinearLayout.HORIZONTAL);
columnsLayout.setLayoutParams(new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, 0, 1f));
columnsLayout.addView(leftColumn, new LinearLayout.LayoutParams(
0, ViewGroup.LayoutParams.MATCH_PARENT, 1f));
Space spaceBetweenColumns = new Space(context);
spaceBetweenColumns.setLayoutParams(new LinearLayout.LayoutParams(Dim.dp8, ViewGroup.LayoutParams.MATCH_PARENT));
columnsLayout.addView(spaceBetweenColumns);
columnsLayout.addView(rightColumn, new LinearLayout.LayoutParams(
0, ViewGroup.LayoutParams.MATCH_PARENT, 1f));
// Move buttons below columns.
Pair<LinearLayout, LinearLayout> moveButtons = createMoveButtons(context,
leftViews.listView, rightViews.listView,
availableFlags, blockedFlags, availableHeader, blockedHeader);
// Layout for buttons row.
LinearLayout buttonsRow = new LinearLayout(context);
buttonsRow.setOrientation(LinearLayout.HORIZONTAL);
buttonsRow.setLayoutParams(new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
buttonsRow.addView(moveButtons.first, new LinearLayout.LayoutParams(
0, ViewGroup.LayoutParams.WRAP_CONTENT, 1f));
Space spaceBetweenButtons = new Space(context);
spaceBetweenButtons.setLayoutParams(new LinearLayout.LayoutParams(Dim.dp8, ViewGroup.LayoutParams.WRAP_CONTENT));
buttonsRow.addView(spaceBetweenButtons);
buttonsRow.addView(moveButtons.second, new LinearLayout.LayoutParams(
0, ViewGroup.LayoutParams.WRAP_CONTENT, 1f));
contentLayout.addView(headersLayout);
contentLayout.addView(columnsLayout);
contentLayout.addView(buttonsRow);
return contentLayout;
}
/**
* Creates a header TextView.
*/
private TextView createHeader(Context context, String tag) {
TextView textview = new TextView(context);
textview.setTag(tag);
textview.setTextSize(16);
textview.setTextColor(Utils.getAppForegroundColor());
textview.setGravity(Gravity.CENTER);
return textview;
}
/**
* Creates a single column (search + buttons + list).
*/
private View createColumn(Context context, TreeSet<Long> flags, TextView countText) {
LinearLayout wrapper = new LinearLayout(context);
wrapper.setOrientation(LinearLayout.VERTICAL);
Pair<ListView, FlagAdapter> pair = createListView(context, flags, countText);
ListView listView = pair.first;
FlagAdapter adapter = pair.second;
EditText search = createSearchBox(context, adapter, listView, countText);
LinearLayout buttons = createActionButtons(context, listView, adapter);
listView.setLayoutParams(new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, 0, 1f));
ShapeDrawable background = new ShapeDrawable(new RoundRectShape(
Dim.roundedCorners(10), null, null));
background.getPaint().setColor(Utils.getEditTextBackground());
listView.setPadding(0, Dim.dp4, 0, Dim.dp4);
listView.setBackground(background);
listView.setOverScrollMode(View.OVER_SCROLL_NEVER);
wrapper.addView(search);
wrapper.addView(buttons);
wrapper.addView(listView);
// Save references for move buttons.
wrapper.setTag(new ColumnViews(listView, adapter));
return wrapper;
}
/**
* Updates the header text with the current count.
*/
private void updateHeaderCount(TextView header, FlagAdapter adapter) {
header.setText(str((String) header.getTag(), adapter.getCount()));
}
/**
* Creates a search box that filters the list.
*/
@SuppressLint("ClickableViewAccessibility")
private EditText createSearchBox(Context context, FlagAdapter adapter, ListView listView, TextView countText) {
EditText search = new EditText(context);
search.setInputType(InputType.TYPE_CLASS_NUMBER);
search.setTextSize(16);
search.setHint(str("revanced_debug_feature_flags_manager_search_hint"));
search.setHapticFeedbackEnabled(false);
search.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
search.addTextChangedListener(new TextWatcher() {
@Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override public void onTextChanged(CharSequence s, int start, int before, int count) {
adapter.setSearchQuery(s.toString());
listView.clearChoices();
updateHeaderCount(countText, adapter);
Drawable clearIcon = context.getResources().getDrawable(android.R.drawable.ic_menu_close_clear_cancel);
clearIcon.setBounds(0, 0, Dim.dp20, Dim.dp20);
search.setCompoundDrawables(null, null, TextUtils.isEmpty(s) ? null : clearIcon, null);
}
@Override public void afterTextChanged(Editable s) {}
});
search.setOnTouchListener((v, event) -> {
if (event.getAction() == MotionEvent.ACTION_UP) {
Drawable[] compoundDrawables = search.getCompoundDrawables();
if (compoundDrawables[2] != null &&
event.getRawX() >= (search.getRight() - compoundDrawables[2].getBounds().width())) {
search.setText("");
return true;
}
}
return false;
});
return search;
}
/**
* Creates action buttons.
*/
private LinearLayout createActionButtons(Context context, ListView listView, FlagAdapter adapter) {
LinearLayout row = new LinearLayout(context);
row.setOrientation(LinearLayout.HORIZONTAL);
row.setGravity(Gravity.CENTER);
row.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
ImageButton selectAll = createButton(context, DRAWABLE_REVANCED_SETTINGS_SELECT_ALL,
() -> {
for (int i = 0, count = adapter.getCount(); i < count; i++) {
listView.setItemChecked(i, true);
}
});
ImageButton clearAll = createButton(context, DRAWABLE_REVANCED_SETTINGS_DESELECT_ALL,
() -> {
listView.clearChoices();
adapter.notifyDataSetChanged();
});
ImageButton copy = createButton(context, DRAWABLE_REVANCED_SETTINGS_COPY_ALL,
() -> {
List<String> items = new ArrayList<>();
SparseBooleanArray checked = listView.getCheckedItemPositions();
if (checked.size() > 0) {
for (int i = 0, count = adapter.getCount(); i < count; i++) {
if (checked.get(i)) {
items.add(adapter.getItem(i));
}
}
} else {
for (Long flag : adapter.getFullFlags()) {
items.add(String.valueOf(flag));
}
}
Utils.setClipboard(TextUtils.join("\n", items));
Utils.showToastShort(str("revanced_debug_feature_flags_manager_toast_copied"));
});
row.addView(selectAll);
row.addView(clearAll);
row.addView(copy);
return row;
}
/**
* Creates the move buttons (left and right groups).
*/
private Pair<LinearLayout, LinearLayout> createMoveButtons(Context context,
ListView availableListView, ListView blockedListView,
TreeSet<Long> availableFlags, TreeSet<Long> blockedFlags,
TextView availableCountText, TextView blockedCountText) {
// Left group: >> >
LinearLayout leftButtons = new LinearLayout(context);
leftButtons.setOrientation(LinearLayout.HORIZONTAL);
leftButtons.setGravity(Gravity.CENTER);
ImageButton moveAllRight = createButton(context, DRAWABLE_REVANCED_SETTINGS_ARROW_RIGHT_DOUBLE,
() -> moveFlags(availableListView, blockedListView, availableFlags, blockedFlags,
availableCountText, blockedCountText, true));
ImageButton moveOneRight = createButton(context, DRAWABLE_REVANCED_SETTINGS_ARROW_RIGHT_ONE,
() -> moveFlags(availableListView, blockedListView, availableFlags, blockedFlags,
availableCountText, blockedCountText, false));
leftButtons.addView(moveAllRight);
leftButtons.addView(moveOneRight);
// Right group: < <<
LinearLayout rightButtons = new LinearLayout(context);
rightButtons.setOrientation(LinearLayout.HORIZONTAL);
rightButtons.setGravity(Gravity.CENTER);
ImageButton moveOneLeft = createButton(context, DRAWABLE_REVANCED_SETTINGS_ARROW_LEFT_ONE,
() -> moveFlags(blockedListView, availableListView, blockedFlags, availableFlags,
blockedCountText, availableCountText, false));
ImageButton moveAllLeft = createButton(context, DRAWABLE_REVANCED_SETTINGS_ARROW_LEFT_DOUBLE,
() -> moveFlags(blockedListView, availableListView, blockedFlags, availableFlags,
blockedCountText, availableCountText, true));
rightButtons.addView(moveOneLeft);
rightButtons.addView(moveAllLeft);
return new Pair<>(leftButtons, rightButtons);
}
/**
* Creates a styled ImageButton.
*/
@SuppressLint("ResourceType")
private ImageButton createButton(Context context, int drawableResId, Runnable action) {
ImageButton button = new ImageButton(context);
button.setImageResource(drawableResId);
button.setScaleType(ImageView.ScaleType.CENTER);
int[] attrs = {android.R.attr.selectableItemBackgroundBorderless};
//noinspection Recycle
TypedArray ripple = context.obtainStyledAttributes(attrs);
button.setBackgroundDrawable(ripple.getDrawable(0));
ripple.close();
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(Dim.dp32, Dim.dp32);
params.setMargins(Dim.dp8, Dim.dp8, Dim.dp8, Dim.dp8);
button.setLayoutParams(params);
button.setOnClickListener(v -> action.run());
return button;
}
/**
* Custom adapter with search filtering.
*/
private static class FlagAdapter extends ArrayAdapter<String> {
private final TreeSet<Long> fullFlags;
private String searchQuery = "";
public FlagAdapter(Context context, TreeSet<Long> fullFlags) {
super(context, android.R.layout.simple_list_item_multiple_choice, new ArrayList<>());
this.fullFlags = fullFlags;
updateFiltered();
}
public void setSearchQuery(String query) {
searchQuery = query == null ? "" : query.trim();
updateFiltered();
}
private void updateFiltered() {
clear();
for (Long flag : fullFlags) {
String flagString = String.valueOf(flag);
if (searchQuery.isEmpty() || flagString.contains(searchQuery)) {
add(flagString);
}
}
notifyDataSetChanged();
}
public void refresh() {
updateFiltered();
}
public List<Long> getFullFlags() {
return new ArrayList<>(fullFlags);
}
}
/**
* Creates a ListView with filtering, multi-select, and range selection.
*/
@SuppressLint("ClickableViewAccessibility")
private Pair<ListView, FlagAdapter> createListView(Context context,
TreeSet<Long> flags, TextView countText) {
ListView listView = new ListView(context);
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
listView.setDividerHeight(0);
FlagAdapter adapter = new FlagAdapter(context, flags);
listView.setAdapter(adapter);
final ListViewSelectionState state = new ListViewSelectionState();
listView.setOnItemClickListener((parent, view, position, id) -> {
if (!state.isRangeSelecting) {
state.lastClickedPosition = position;
} else {
state.isRangeSelecting = false;
}
});
listView.setOnItemLongClickListener((parent, view, position, id) -> {
if (state.lastClickedPosition == -1) {
listView.setItemChecked(position, true);
state.lastClickedPosition = position;
} else {
int start = Math.min(state.lastClickedPosition, position);
int end = Math.max(state.lastClickedPosition, position);
for (int i = start; i <= end; i++) {
listView.setItemChecked(i, true);
}
state.isRangeSelecting = true;
}
return true;
});
listView.setOnTouchListener((view, event) -> {
if (event.getAction() == MotionEvent.ACTION_UP && state.isRangeSelecting) {
state.isRangeSelecting = false;
}
return false;
});
return new Pair<>(listView, adapter);
}
/**
* Moves selected or all flags from one list to another.
*
* @param fromListView Source ListView.
* @param toListView Destination ListView.
* @param fromFlags Source flag set.
* @param toFlags Destination flag set.
* @param fromCountText Header showing count of source items.
* @param toCountText Header showing count of destination items.
* @param moveAll If true, move all items; if false, move only selected.
*/
private void moveFlags(ListView fromListView, ListView toListView,
TreeSet<Long> fromFlags, TreeSet<Long> toFlags,
TextView fromCountText, TextView toCountText,
boolean moveAll) {
if (fromListView == null || toListView == null) return;
List<Long> flagsToMove = new ArrayList<>();
FlagAdapter fromAdapter = (FlagAdapter) fromListView.getAdapter();
if (moveAll) {
flagsToMove.addAll(fromFlags);
} else {
SparseBooleanArray checked = fromListView.getCheckedItemPositions();
for (int i = 0, count = fromAdapter.getCount(); i < count; i++) {
if (checked.get(i)) {
String item = fromAdapter.getItem(i);
if (item != null) {
flagsToMove.add(Long.parseLong(item));
}
}
}
}
if (flagsToMove.isEmpty()) return;
for (Long flag : flagsToMove) {
fromFlags.remove(flag);
toFlags.add(flag);
}
// Clear selections before refreshing.
fromListView.clearChoices();
toListView.clearChoices();
// Refresh both adapters.
fromAdapter.refresh();
((FlagAdapter) toListView.getAdapter()).refresh();
// Update headers.
updateHeaderCount(fromCountText, fromAdapter);
updateHeaderCount(toCountText, (FlagAdapter) toListView.getAdapter());
}
/**
* Saves blocked flags to settings.
*/
private void saveFlags(TreeSet<Long> blockedFlags) {
StringBuilder flagsString = new StringBuilder();
for (Long flag : blockedFlags) {
if (flagsString.length() > 0) {
flagsString.append("\n");
}
flagsString.append(flag);
}
BaseSettings.DISABLED_FEATURE_FLAGS.save(flagsString.toString());
Utils.showToastShort(str("revanced_debug_feature_flags_manager_toast_saved"));
Logger.printDebug(() -> "Feature flags saved. Blocked: " + blockedFlags.size());
AbstractPreferenceFragment.showRestartDialog(getContext());
}
/**
* Resets all blocked flags.
*/
private void resetFlags() {
BaseSettings.DISABLED_FEATURE_FLAGS.save("");
Utils.showToastShort(str("revanced_debug_feature_flags_manager_toast_reset"));
AbstractPreferenceFragment.showRestartDialog(getContext());
}
}

View File

@@ -11,7 +11,6 @@ import android.preference.Preference;
import android.text.InputType;
import android.util.AttributeSet;
import android.util.Pair;
import android.util.TypedValue;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.LinearLayout;
@@ -20,6 +19,7 @@ import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.settings.Setting;
import app.revanced.extension.shared.ui.CustomDialog;
import app.revanced.extension.shared.ui.Dim;
@SuppressWarnings({"unused", "deprecation"})
public class ImportExportPreference extends EditTextPreference implements Preference.OnPreferenceClickListener {
@@ -35,7 +35,7 @@ public class ImportExportPreference extends EditTextPreference implements Prefer
editText.setAutofillHints((String) null);
}
editText.setInputType(editText.getInputType() | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
editText.setTextSize(TypedValue.COMPLEX_UNIT_PT, 7); // Use a smaller font to reduce text wrap.
editText.setTextSize(14);
setOnPreferenceClickListener(this);
}

View File

@@ -1,7 +1,6 @@
package app.revanced.extension.shared.settings.preference;
import static app.revanced.extension.shared.StringRef.str;
import static app.revanced.extension.shared.Utils.dipToPixels;
import static app.revanced.extension.shared.requests.Route.Method.GET;
import android.annotation.SuppressLint;
@@ -41,6 +40,7 @@ import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.requests.Requester;
import app.revanced.extension.shared.requests.Route;
import app.revanced.extension.shared.ui.Dim;
/**
* Opens a dialog showing official links.
@@ -222,11 +222,10 @@ class WebViewDialog extends Dialog {
LinearLayout mainLayout = new LinearLayout(getContext());
mainLayout.setOrientation(LinearLayout.VERTICAL);
final int padding = dipToPixels(10);
mainLayout.setPadding(padding, padding, padding, padding);
mainLayout.setPadding(Dim.dp10, Dim.dp10, Dim.dp10, Dim.dp10);
// Set rounded rectangle background.
ShapeDrawable mainBackground = new ShapeDrawable(new RoundRectShape(
Utils.createCornerRadii(28), null, null));
Dim.roundedCorners(28), null, null));
mainBackground.getPaint().setColor(Utils.getDialogBackgroundColor());
mainLayout.setBackground(mainBackground);

View File

@@ -8,7 +8,6 @@ import android.os.Build;
import android.preference.Preference;
import android.preference.PreferenceGroup;
import android.preference.PreferenceScreen;
import android.util.TypedValue;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowInsets;
@@ -20,6 +19,7 @@ import androidx.annotation.Nullable;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.settings.BaseActivityHook;
import app.revanced.extension.shared.ui.Dim;
@SuppressWarnings({"deprecation", "NewApi"})
public class ToolbarPreferenceFragment extends AbstractPreferenceFragment {
@@ -88,14 +88,13 @@ public class ToolbarPreferenceFragment extends AbstractPreferenceFragment {
toolbar.setNavigationIcon(getBackButtonDrawable());
toolbar.setNavigationOnClickListener(view -> preferenceScreenDialog.dismiss());
final int margin = Utils.dipToPixels(16);
toolbar.setTitleMargin(margin, 0, margin, 0);
toolbar.setTitleMargin(Dim.dp16, 0, Dim.dp16, 0);
TextView toolbarTextView = Utils.getChildView(toolbar,
true, TextView.class::isInstance);
if (toolbarTextView != null) {
toolbarTextView.setTextColor(Utils.getAppForegroundColor());
toolbarTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);
toolbarTextView.setTextSize(20);
}
// Allow package-specific toolbar customization.

View File

@@ -484,7 +484,7 @@ public abstract class BaseSearchResultsAdapter extends ArrayAdapter<BaseSearchRe
return -1;
}
for (int i = 0; i < adapter.getCount(); i++) {
for (int i = 0, count = adapter.getCount(); i < count; i++) {
Object item = adapter.getItem(i);
if (item == targetPreference) {
return i;
@@ -522,8 +522,8 @@ public abstract class BaseSearchResultsAdapter extends ArrayAdapter<BaseSearchRe
if (currentAnimator != null && currentAnimator.isRunning()) {
currentAnimator.cancel();
}
int startColor = Utils.getAppBackgroundColor();
int highlightColor = Utils.adjustColorBrightness(
final int startColor = Utils.getAppBackgroundColor();
final int highlightColor = Utils.adjustColorBrightness(
startColor,
Utils.isDarkModeEnabled() ? 1.25f : 0.8f
);
@@ -566,7 +566,7 @@ public abstract class BaseSearchResultsAdapter extends ArrayAdapter<BaseSearchRe
}
// First search on current level.
for (int i = 0; i < group.getPreferenceCount(); i++) {
for (int i = 0, count = group.getPreferenceCount(); i < count; i++) {
Preference pref = group.getPreference(i);
if (key.equals(pref.getKey())) {
return pref;

View File

@@ -13,7 +13,6 @@ import android.preference.PreferenceCategory;
import android.preference.PreferenceGroup;
import android.preference.PreferenceScreen;
import android.text.TextUtils;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.view.WindowManager;
@@ -45,6 +44,7 @@ import app.revanced.extension.shared.settings.Setting;
import app.revanced.extension.shared.settings.preference.ColorPickerPreference;
import app.revanced.extension.shared.settings.preference.CustomDialogListPreference;
import app.revanced.extension.shared.settings.preference.NoTitlePreferenceCategory;
import app.revanced.extension.shared.ui.Dim;
/**
* Abstract controller for managing the overlay search view in ReVanced settings.
@@ -123,7 +123,7 @@ public abstract class BaseSearchViewController {
searchView.setQueryHint(str("revanced_settings_search_hint"));
// Set text size.
searchEditText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
searchEditText.setTextSize(16);
// Set cursor color.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
@@ -149,7 +149,7 @@ public abstract class BaseSearchViewController {
// Create cursor drawable.
GradientDrawable cursorDrawable = new GradientDrawable();
cursorDrawable.setShape(GradientDrawable.RECTANGLE);
cursorDrawable.setSize(Utils.dipToPixels(2), -1); // Width: 2dp, Height: match text height.
cursorDrawable.setSize(Dim.dp2, -1); // Width: 2dp, Height: match text height.
cursorDrawable.setColor(cursorColor);
// Set cursor drawable.
@@ -164,7 +164,7 @@ public abstract class BaseSearchViewController {
overlayContainer = new FrameLayout(activity);
overlayContainer.setVisibility(View.GONE);
overlayContainer.setBackgroundColor(Utils.getAppBackgroundColor());
overlayContainer.setElevation(Utils.dipToPixels(8));
overlayContainer.setElevation(Dim.dp8);
// Container for search results.
FrameLayout searchResultsContainer = new FrameLayout(activity);
@@ -669,7 +669,7 @@ public abstract class BaseSearchViewController {
protected static GradientDrawable createBackgroundDrawable() {
GradientDrawable background = new GradientDrawable();
background.setShape(GradientDrawable.RECTANGLE);
background.setCornerRadius(Utils.dipToPixels(28));
background.setCornerRadius(Dim.dp28);
background.setColor(getSearchViewBackground());
return background;
}

View File

@@ -1,7 +1,6 @@
package app.revanced.extension.shared.ui;
import static app.revanced.extension.shared.Utils.adjustColorBrightness;
import static app.revanced.extension.shared.Utils.dipToPixels;
import static app.revanced.extension.shared.Utils.getAppBackgroundColor;
import static app.revanced.extension.shared.Utils.isDarkModeEnabled;
import static app.revanced.extension.shared.settings.preference.ColorPickerPreference.DISABLED_ALPHA;
@@ -13,7 +12,7 @@ import android.view.View;
import androidx.annotation.ColorInt;
public class ColorDot {
private static final int STROKE_WIDTH = dipToPixels(1.5f); // Stroke width in dp.
private static final int STROKE_WIDTH = Dim.dp(1.5f);
/**
* Creates a circular drawable with a main fill and a stroke.
@@ -55,7 +54,7 @@ public class ColorDot {
targetView.setAlpha(enabled ? 1.0f : DISABLED_ALPHA);
if (!isDarkModeEnabled()) {
targetView.setClipToOutline(true);
targetView.setElevation(dipToPixels(2));
targetView.setElevation(Dim.dp2);
}
}
}

View File

@@ -1,7 +1,5 @@
package app.revanced.extension.shared.ui;
import static app.revanced.extension.shared.Utils.dipToPixels;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Color;
@@ -37,7 +35,6 @@ public class CustomDialog {
private final Context context;
private final Dialog dialog;
private final LinearLayout mainLayout;
private final int dip4, dip8, dip16, dip24, dip36;
/**
* Creates a custom dialog with a styled layout, including a title, message, buttons, and an optional EditText.
@@ -93,13 +90,6 @@ public class CustomDialog {
this.dialog = new Dialog(context);
this.dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); // Remove default title bar.
// Preset size constants.
dip4 = dipToPixels(4);
dip8 = dipToPixels(8);
dip16 = dipToPixels(16);
dip24 = dipToPixels(24);
dip36 = dipToPixels(36);
// Create main layout.
mainLayout = createMainLayout();
addTitle(title);
@@ -122,11 +112,11 @@ public class CustomDialog {
private LinearLayout createMainLayout() {
LinearLayout layout = new LinearLayout(context);
layout.setOrientation(LinearLayout.VERTICAL);
layout.setPadding(dip24, dip16, dip24, dip24);
layout.setPadding(Dim.dp24, Dim.dp16, Dim.dp24, Dim.dp24);
// Set rounded rectangle background.
ShapeDrawable background = new ShapeDrawable(new RoundRectShape(
Utils.createCornerRadii(28), null, null));
Dim.roundedCorners(28), null, null));
// Dialog background.
background.getPaint().setColor(Utils.getDialogBackgroundColor());
layout.setBackground(background);
@@ -152,7 +142,7 @@ public class CustomDialog {
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
params.setMargins(0, 0, 0, dip16);
params.setMargins(0, 0, 0, Dim.dp16);
titleView.setLayoutParams(params);
mainLayout.addView(titleView);
@@ -180,9 +170,9 @@ public class CustomDialog {
// EditText (if provided).
if (editText != null) {
ShapeDrawable background = new ShapeDrawable(new RoundRectShape(
Utils.createCornerRadii(10), null, null));
Dim.roundedCorners(10), null, null));
background.getPaint().setColor(Utils.getEditTextBackground());
scrollView.setPadding(dip8, dip8, dip8, dip8);
scrollView.setPadding(Dim.dp8, Dim.dp8, Dim.dp8, Dim.dp8);
scrollView.setBackground(background);
scrollView.setClipToOutline(true);
@@ -241,7 +231,7 @@ public class CustomDialog {
LinearLayout.LayoutParams buttonContainerParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
buttonContainerParams.setMargins(0, dip16, 0, 0);
buttonContainerParams.setMargins(0, Dim.dp16, 0, 0);
buttonContainer.setLayoutParams(buttonContainerParams);
List<Button> buttons = new ArrayList<>();
@@ -289,12 +279,12 @@ public class CustomDialog {
button.setEllipsize(TextUtils.TruncateAt.END);
button.setGravity(Gravity.CENTER);
// Set internal padding.
button.setPadding(dip16, 0, dip16, 0);
button.setPadding(Dim.dp16, 0, Dim.dp16, 0);
// Background color for OK button (inversion).
// Background color for Cancel or Neutral buttons.
ShapeDrawable background = new ShapeDrawable(new RoundRectShape(
Utils.createCornerRadii(20), null, null));
Dim.roundedCorners(20), null, null));
background.getPaint().setColor(isOkButton
? Utils.getOkButtonBackgroundColor()
: Utils.getCancelOrNeutralButtonBackgroundColor());
@@ -331,20 +321,19 @@ public class CustomDialog {
if (buttons.isEmpty()) return;
// Check if buttons fit in one row.
int screenWidth = context.getResources().getDisplayMetrics().widthPixels;
int totalWidth = 0;
for (Integer width : buttonWidths) {
totalWidth += width;
}
if (buttonWidths.size() > 1) {
// Add margins for gaps.
totalWidth += (buttonWidths.size() - 1) * dip8;
totalWidth += (buttonWidths.size() - 1) * Dim.dp8;
}
// Single button: stretch to full width.
if (buttons.size() == 1) {
layoutSingleButton(buttonContainer, buttons.get(0));
} else if (totalWidth <= screenWidth * 0.8) {
} else if (totalWidth <= Dim.pctWidth(80)) {
// Single row: Neutral, Cancel, OK.
layoutButtonsInRow(buttonContainer, buttons, buttonWidths);
} else {
@@ -369,7 +358,7 @@ public class CustomDialog {
button.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
dip36));
Dim.dp36));
singleContainer.addView(button);
buttonContainer.addView(singleContainer);
}
@@ -405,17 +394,17 @@ public class CustomDialog {
if (parent != null) parent.removeView(button);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
0, dip36, buttonWidths.get(i));
0, Dim.dp36, buttonWidths.get(i));
// Set margins based on button type and combination.
if (buttons.size() == 2) {
// Neutral + OK or Cancel + OK.
params.setMargins(i == 0 ? 0 : dip4, 0, i == 0 ? dip4 : 0, 0);
params.setMargins(i == 0 ? 0 : Dim.dp4, 0, i == 0 ? Dim.dp4 : 0, 0);
} else if (buttons.size() == 3) {
// Neutral.
// Cancel.
// OK.
params.setMargins(i == 0 ? 0 : dip4, 0, i == 2 ? 0 : dip4, 0);
params.setMargins(i == 0 ? 0 : Dim.dp4, 0, i == 2 ? 0 : Dim.dp4, 0);
}
button.setLayoutParams(params);
@@ -447,14 +436,14 @@ public class CustomDialog {
singleContainer.setGravity(Gravity.CENTER);
singleContainer.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
dip36));
Dim.dp36));
ViewGroup parent = (ViewGroup) button.getParent();
if (parent != null) parent.removeView(button);
button.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
dip36));
Dim.dp36));
singleContainer.addView(button);
buttonContainer.addView(singleContainer);
@@ -463,7 +452,7 @@ public class CustomDialog {
View spacer = new View(context);
LinearLayout.LayoutParams spacerParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
dip8);
Dim.dp8);
spacer.setLayoutParams(spacerParams);
buttonContainer.addView(spacer);
}

View File

@@ -0,0 +1,89 @@
package app.revanced.extension.shared.ui;
import android.content.res.Resources;
import android.util.DisplayMetrics;
import android.util.TypedValue;
/**
* Utility class for converting design units (dp) and screen percentages to pixels.
*/
public final class Dim {
private Dim() {} // Prevent instantiation.
private static final DisplayMetrics METRICS = Resources.getSystem().getDisplayMetrics();
public static final int SCREEN_WIDTH = METRICS.widthPixels;
public static final int SCREEN_HEIGHT = METRICS.heightPixels;
// DP constants (density-independent pixels).
public static final int dp1 = dp(1);
public static final int dp2 = dp(2);
public static final int dp4 = dp(4);
public static final int dp6 = dp(6);
public static final int dp7 = dp(7);
public static final int dp8 = dp(8);
public static final int dp10 = dp(10);
public static final int dp12 = dp(12);
public static final int dp16 = dp(16);
public static final int dp20 = dp(20);
public static final int dp24 = dp(24);
public static final int dp28 = dp(28);
public static final int dp32 = dp(32);
public static final int dp36 = dp(36);
public static final int dp40 = dp(40);
public static final int dp48 = dp(48);
/**
* Converts dp (density-independent pixels) to actual device pixels.
* Uses Android's official TypedValue.applyDimension() for accurate rounding.
*
* @param dp The dp value to convert (supports float, e.g. 1.2f).
* @return The equivalent pixel value as int.
*/
public static int dp(float dp) {
return (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, dp, METRICS);
}
/**
* Converts a percentage of the screen height to pixels.
*
* @param percent The percentage (0100).
* @return The pixel value corresponding to the percentage of screen height.
*/
public static int pctHeight(int percent) {
return (SCREEN_HEIGHT * percent) / 100;
}
/**
* Converts a percentage of the screen width to pixels.
*
* @param percent The percentage (0100).
* @return The pixel value corresponding to the percentage of screen width.
*/
public static int pctWidth(int percent) {
return (SCREEN_WIDTH * percent) / 100;
}
/**
* Converts a percentage of the screen's portrait width (min side) to pixels.
*
* @param percent The percentage (0100).
* @return The pixel value.
*/
public static int pctPortraitWidth(int percent) {
final int portraitWidth = Math.min(SCREEN_WIDTH, SCREEN_HEIGHT);
return (int) (portraitWidth * (percent / 100.0f));
}
/**
* Creates an array of corner radii for a rounded rectangle.
* All corners use the same radius.
*
* @param dp radius in density-independent pixels
* @return array of 8 floats: [top-left-x, top-left-y, top-right-x, top-right-y, ...]
*/
public static float[] roundedCorners(float dp) {
final float r = dp(dp);
return new float[]{r, r, r, r, r, r, r, r};
}
}

View File

@@ -1,7 +1,5 @@
package app.revanced.extension.shared.ui;
import static app.revanced.extension.shared.Utils.dipToPixels;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator;
@@ -63,9 +61,8 @@ public class SheetBottomDialog {
// Add top spacer.
View spacer = new View(context);
final int dip40 = dipToPixels(40);
LinearLayout.LayoutParams spacerParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, dip40);
LinearLayout.LayoutParams.MATCH_PARENT, Dim.dp40);
spacer.setLayoutParams(spacerParams);
spacer.setClickable(true);
dragContainer.addView(spacer);
@@ -105,20 +102,15 @@ public class SheetBottomDialog {
* @return A configured {@link DraggableLinearLayout} with a handle bar and styled background.
*/
public static DraggableLinearLayout createMainLayout(@NonNull Context context, @Nullable Integer backgroundColor) {
// Preset size constants.
final int dip4 = dipToPixels(4); // Handle bar height.
final int dip8 = dipToPixels(8); // Dialog padding.
final int dip40 = dipToPixels(40); // Handle bar width.
DraggableLinearLayout mainLayout = new DraggableLinearLayout(context);
mainLayout.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(dip8, 0, dip8, dip8);
layoutParams.setMargins(Dim.dp8, 0, Dim.dp8, Dim.dp8);
mainLayout.setLayoutParams(layoutParams);
ShapeDrawable background = new ShapeDrawable(new RoundRectShape(
Utils.createCornerRadii(12), null, null));
Dim.roundedCorners(12), null, null));
int color = (backgroundColor != null) ? backgroundColor : Utils.getDialogBackgroundColor();
background.getPaint().setColor(color);
mainLayout.setBackground(background);
@@ -127,14 +119,14 @@ public class SheetBottomDialog {
LinearLayout handleContainer = new LinearLayout(context);
LinearLayout.LayoutParams containerParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
containerParams.setMargins(0, dip8, 0, 0);
containerParams.setMargins(0, Dim.dp8, 0, 0);
handleContainer.setLayoutParams(containerParams);
handleContainer.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM);
View handleBar = new View(context);
ShapeDrawable handleBackground = new ShapeDrawable(new RoundRectShape(
Utils.createCornerRadii(4), null, null));
Dim.roundedCorners(4), null, null));
handleBackground.getPaint().setColor(Utils.adjustColorBrightness(color, 0.9f, 1.25f));
LinearLayout.LayoutParams handleParams = new LinearLayout.LayoutParams(dip40, dip4);
LinearLayout.LayoutParams handleParams = new LinearLayout.LayoutParams(Dim.dp40, Dim.dp4);
handleBar.setLayoutParams(handleParams);
handleBar.setBackground(handleBackground);

View File

@@ -4,6 +4,7 @@ import android.view.View;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.ui.Dim;
import app.revanced.extension.youtube.settings.Settings;
@SuppressWarnings("unused")
@@ -31,7 +32,7 @@ public final class WideSearchbarPatch {
final int paddingRight = searchBarView.getPaddingRight();
final int paddingTop = searchBarView.getPaddingTop();
final int paddingBottom = searchBarView.getPaddingBottom();
final int paddingStart = Utils.dipToPixels(8);
final int paddingStart = Dim.dp8;
if (Utils.isRightToLeftLocale()) {
searchBarView.setPadding(paddingLeft, paddingTop, paddingStart, paddingBottom);

View File

@@ -2,7 +2,6 @@ package app.revanced.extension.youtube.patches.announcements;
import static android.text.Html.FROM_HTML_MODE_COMPACT;
import static app.revanced.extension.shared.StringRef.str;
import static app.revanced.extension.shared.Utils.dipToPixels;
import static app.revanced.extension.youtube.patches.announcements.requests.AnnouncementsRoutes.GET_LATEST_ANNOUNCEMENTS;
import static app.revanced.extension.youtube.patches.announcements.requests.AnnouncementsRoutes.GET_LATEST_ANNOUNCEMENT_IDS;
@@ -24,6 +23,7 @@ import java.time.LocalDateTime;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.requests.Requester;
import app.revanced.extension.shared.ui.Dim;
import app.revanced.extension.youtube.patches.announcements.requests.AnnouncementsRoutes;
import app.revanced.extension.youtube.settings.Settings;
@@ -148,7 +148,7 @@ public final class AnnouncementsPatch {
if (child instanceof TextView childTextView && finalTitle.equals(childTextView.getText().toString())) {
childTextView.setCompoundDrawablesWithIntrinsicBounds(
finalLevel.icon, 0, 0, 0);
childTextView.setCompoundDrawablePadding(dipToPixels(8));
childTextView.setCompoundDrawablePadding(Dim.dp8);
}
}

View File

@@ -1,7 +1,6 @@
package app.revanced.extension.youtube.patches.playback.speed;
import static app.revanced.extension.shared.StringRef.str;
import static app.revanced.extension.shared.Utils.dipToPixels;
import static app.revanced.extension.youtube.videoplayer.PlayerControlButton.fadeInDuration;
import static app.revanced.extension.youtube.videoplayer.PlayerControlButton.getDialogBackgroundColor;
@@ -30,6 +29,7 @@ import java.util.function.Function;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.ui.Dim;
import app.revanced.extension.shared.ui.SheetBottomDialog;
import app.revanced.extension.youtube.patches.VideoInformation;
import app.revanced.extension.youtube.patches.components.PlaybackSpeedMenuFilter;
@@ -264,14 +264,6 @@ public class CustomPlaybackSpeedPatch {
SheetBottomDialog.DraggableLinearLayout mainLayout =
SheetBottomDialog.createMainLayout(context, getDialogBackgroundColor());
// Preset size constants.
final int dip4 = dipToPixels(4);
final int dip8 = dipToPixels(8);
final int dip12 = dipToPixels(12);
final int dip20 = dipToPixels(20);
final int dip32 = dipToPixels(32);
final int dip60 = dipToPixels(60);
// Display current playback speed.
TextView currentSpeedText = new TextView(context);
float currentSpeed = VideoInformation.getPlaybackSpeed();
@@ -283,7 +275,7 @@ public class CustomPlaybackSpeedPatch {
currentSpeedText.setGravity(Gravity.CENTER);
LinearLayout.LayoutParams textParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
textParams.setMargins(0, dip20, 0, 0);
textParams.setMargins(0, Dim.dp20, 0, 0);
currentSpeedText.setLayoutParams(textParams);
// Add current speed text view to main layout.
mainLayout.addView(currentSpeedText);
@@ -294,8 +286,8 @@ public class CustomPlaybackSpeedPatch {
sliderLayout.setGravity(Gravity.CENTER_VERTICAL);
// Create +/- buttons.
Button minusButton = createStyledButton(context, false, dip8, dip8);
Button plusButton = createStyledButton(context, true, dip8, dip8);
Button minusButton = createStyledButton(context, false);
Button plusButton = createStyledButton(context, true);
// Create slider for speed adjustment.
SeekBar speedSlider = new SeekBar(context);
@@ -363,7 +355,7 @@ public class CustomPlaybackSpeedPatch {
gridLayout.setRowCount((int) Math.ceil(customPlaybackSpeeds.length / 5.0));
LinearLayout.LayoutParams gridParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
gridParams.setMargins(dip4, dip12, dip4, dip12); // Speed buttons container.
gridParams.setMargins(Dim.dp4, Dim.dp12, Dim.dp4, Dim.dp12); // Speed buttons container.
gridLayout.setLayoutParams(gridParams);
// For button use 1 digit minimum.
@@ -378,8 +370,8 @@ public class CustomPlaybackSpeedPatch {
GridLayout.LayoutParams containerParams = new GridLayout.LayoutParams();
containerParams.width = 0; // Equal width for columns.
containerParams.columnSpec = GridLayout.spec(GridLayout.UNDEFINED, 1, 1f);
containerParams.setMargins(dip4, 0, dip4, 0); // Button margins.
containerParams.height = dip60; // Fixed height for button and label.
containerParams.setMargins(Dim.dp4, 0, Dim.dp4, 0); // Button margins.
containerParams.height = Dim.dp(60); // Fixed height for button and label.
buttonContainer.setLayoutParams(containerParams);
// Create speed button.
@@ -391,14 +383,14 @@ public class CustomPlaybackSpeedPatch {
speedButton.setGravity(Gravity.CENTER);
ShapeDrawable buttonBackground = new ShapeDrawable(new RoundRectShape(
Utils.createCornerRadii(20), null, null));
Dim.roundedCorners(20), null, null));
buttonBackground.getPaint().setColor(getAdjustedBackgroundColor(false));
speedButton.setBackground(buttonBackground);
speedButton.setPadding(dip4, dip4, dip4, dip4);
speedButton.setPadding(Dim.dp4, Dim.dp4, Dim.dp4, Dim.dp4);
// Center button vertically and stretch horizontally in container.
FrameLayout.LayoutParams buttonParams = new FrameLayout.LayoutParams(
FrameLayout.LayoutParams.MATCH_PARENT, dip32, Gravity.CENTER);
FrameLayout.LayoutParams.MATCH_PARENT, Dim.dp32, Gravity.CENTER);
speedButton.setLayoutParams(buttonParams);
// Add speed buttons view to buttons container layout.
@@ -475,21 +467,18 @@ public class CustomPlaybackSpeedPatch {
*
* @param context The Android context used to create the button.
* @param isPlus True to display a plus symbol, false to display a minus symbol.
* @param marginStart The start margin in pixels (left for LTR, right for RTL).
* @param marginEnd The end margin in pixels (right for LTR, left for RTL).
* @return A configured {@link Button} with the specified styling and layout parameters.
*/
private static Button createStyledButton(Context context, boolean isPlus, int marginStart, int marginEnd) {
private static Button createStyledButton(Context context, boolean isPlus) {
Button button = new Button(context, null, 0); // Disable default theme style.
button.setText(""); // No text on button.
ShapeDrawable background = new ShapeDrawable(new RoundRectShape(
Utils.createCornerRadii(20), null, null));
Dim.roundedCorners(20), null, null));
background.getPaint().setColor(getAdjustedBackgroundColor(false));
button.setBackground(background);
button.setForeground(new OutlineSymbolDrawable(isPlus)); // Plus or minus symbol.
final int dip36 = dipToPixels(36);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(dip36, dip36);
params.setMargins(marginStart, 0, marginEnd, 0); // Set margins.
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(Dim.dp36, Dim.dp36);
params.setMargins(Dim.dp8, 0, Dim.dp8, 0); // Set margins.
button.setLayoutParams(params);
return button;
}
@@ -554,7 +543,7 @@ class OutlineSymbolDrawable extends Drawable {
paint = new Paint(Paint.ANTI_ALIAS_FLAG); // Enable anti-aliasing for smooth rendering.
paint.setColor(Utils.getAppForegroundColor());
paint.setStyle(Paint.Style.STROKE); // Use stroke style for outline.
paint.setStrokeWidth(dipToPixels(1)); // 1dp stroke width.
paint.setStrokeWidth(Dim.dp1); // 1dp stroke width.
}
@Override

View File

@@ -40,6 +40,7 @@ import java.util.concurrent.TimeoutException;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.ui.Dim;
import app.revanced.extension.youtube.returnyoutubedislike.requests.RYDVoteData;
import app.revanced.extension.youtube.returnyoutubedislike.requests.ReturnYouTubeDislikeApi;
import app.revanced.extension.youtube.settings.Settings;
@@ -124,12 +125,12 @@ public class ReturnYouTubeDislike {
static {
leftSeparatorBounds = new Rect(0, 0,
Utils.dipToPixels(1.2f),
Utils.dipToPixels(14f));
final int middleSeparatorSize = Utils.dipToPixels(3.7f);
Dim.dp(1.2f),
Dim.dp(14f));
final int middleSeparatorSize = Dim.dp(3.7f);
middleSeparatorBounds = new Rect(0, 0, middleSeparatorSize, middleSeparatorSize);
leftSeparatorShapePaddingPixels = Utils.dipToPixels(8.4f);
leftSeparatorShapePaddingPixels = Dim.dp(8.4f);
leftSeparatorShape = new ShapeDrawable(new RectShape());
leftSeparatorShape.setBounds(leftSeparatorBounds);

View File

@@ -2,7 +2,6 @@ package app.revanced.extension.youtube.settings.preference;
import static app.revanced.extension.shared.StringRef.sf;
import static app.revanced.extension.shared.StringRef.str;
import static app.revanced.extension.shared.Utils.dipToPixels;
import android.app.Dialog;
import android.content.Context;
@@ -15,13 +14,9 @@ import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.Pair;
import android.util.TypedValue;
import android.view.View;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListAdapter;
import android.widget.ListView;
import androidx.annotation.Nullable;
@@ -37,6 +32,7 @@ import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.settings.preference.CustomDialogListPreference;
import app.revanced.extension.shared.ui.CustomDialog;
import app.revanced.extension.shared.ui.Dim;
import app.revanced.extension.youtube.settings.Settings;
/**
@@ -264,42 +260,12 @@ public class ExternalDownloaderPreference extends CustomDialogListPreference {
// Add ListView to content layout with initial height.
LinearLayout.LayoutParams listViewParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
0 // Initial height, will be updated.
);
listViewParams.bottomMargin = dipToPixels(16);
LinearLayout.LayoutParams.MATCH_PARENT, 0, 1.0f);
listViewParams.bottomMargin = Dim.dp16;
contentLayout.addView(listView, listViewParams);
// Add EditText for custom package name.
editText = new EditText(context);
editText.setText(packageName);
editText.setSelection(packageName.length());
editText.setHint(str("revanced_external_downloader_other_item_hint"));
editText.setSingleLine(true); // Restrict EditText to a single line.
editText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
// Set initial EditText state based on selected downloader.
editText.setEnabled(usingCustomDownloader);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}
@Override
public void afterTextChanged(Editable edit) {
String updatedPackageName = edit.toString().trim();
updateListViewSelection.apply(updatedPackageName);
}
});
ShapeDrawable editTextBackground = new ShapeDrawable(new RoundRectShape(
Utils.createCornerRadii(10), null, null));
editTextBackground.getPaint().setColor(Utils.getEditTextBackground());
final int dip8 = dipToPixels(8);
editText.setPadding(dip8, dip8, dip8, dip8);
editText.setBackground(editTextBackground);
editText.setClipToOutline(true);
editText = createEditText(context, packageName, usingCustomDownloader, updateListViewSelection);
contentLayout.addView(editText);
// Create the custom dialog.
@@ -350,50 +316,59 @@ public class ExternalDownloaderPreference extends CustomDialogListPreference {
);
// Add the content layout directly to the dialog's main layout.
LinearLayout dialogMainLayout = dialogPair.second;
dialogMainLayout.addView(contentLayout, dialogMainLayout.getChildCount() - 1);
LinearLayout mainLayout = dialogPair.second;
LinearLayout.LayoutParams contentParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, 0, 1.0f);
// Update ListView height dynamically based on orientation.
//noinspection ExtractMethodRecommender
Runnable updateListViewHeight = () -> {
int totalHeight = 0;
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter != null) {
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
final int listAdapterCount = listAdapter.getCount();
for (int i = 0; i < listAdapterCount; i++) {
View item = listAdapter.getView(i, null, listView);
item.measure(
View.MeasureSpec.makeMeasureSpec(metrics.widthPixels, View.MeasureSpec.AT_MOST),
View.MeasureSpec.UNSPECIFIED
);
totalHeight += item.getMeasuredHeight();
}
totalHeight += listView.getDividerHeight() * (listAdapterCount - 1);
// Insert content before the dialog button row.
mainLayout.addView(contentLayout, mainLayout.getChildCount() - 1, contentParams);
Dialog dialog = dialogPair.first;
dialog.show();
}
/**
* Creates and configures the EditText for the custom package name.
*
* @param context Context for creating views.
* @param initialPackageName The package name to pre-fill.
* @param isCustom Whether the "Other" option is selected.
* @param textChangeCallback Callback to run when text changes.
* @return A configured EditText.
*/
private EditText createEditText(Context context,
String initialPackageName, boolean isCustom,
Function<String, Void> textChangeCallback) {
EditText editText = new EditText(context);
editText.setText(initialPackageName);
editText.setSelection(initialPackageName.length());
editText.setHint(str("revanced_external_downloader_other_item_hint"));
editText.setSingleLine(true);
editText.setTextSize(16);
editText.setEnabled(isCustom);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}
@Override
public void afterTextChanged(Editable edit) {
String updatedPackageName = edit.toString().trim();
textChangeCallback.apply(updatedPackageName);
}
});
final int orientation = context.getResources().getConfiguration().orientation;
if (orientation == android.content.res.Configuration.ORIENTATION_PORTRAIT) {
// In portrait orientation, use WRAP_CONTENT for ListView height.
listViewParams.height = LinearLayout.LayoutParams.WRAP_CONTENT;
} else {
// In landscape orientation, limit ListView height to 30% of screen height.
final int maxHeight = Utils.percentageHeightToPixels(30);
listViewParams.height = Math.min(totalHeight, maxHeight);
}
listView.setLayoutParams(listViewParams);
};
ShapeDrawable editTextBackground = new ShapeDrawable(new RoundRectShape(
Dim.roundedCorners(10), null, null));
editTextBackground.getPaint().setColor(Utils.getEditTextBackground());
editText.setPadding(Dim.dp8, Dim.dp8, Dim.dp8, Dim.dp8);
editText.setBackground(editTextBackground);
editText.setClipToOutline(true);
// Initial height calculation.
updateListViewHeight.run();
// Listen for configuration changes (e.g., orientation).
View dialogView = dialogPair.second;
// Recalculate height when layout changes (e.g., orientation change).
dialogView.getViewTreeObserver().addOnGlobalLayoutListener(updateListViewHeight::run);
// Show the dialog.
dialogPair.first.show();
return editText;
}
/**

View File

@@ -1,7 +1,6 @@
package app.revanced.extension.youtube.sponsorblock;
import static app.revanced.extension.shared.StringRef.str;
import static app.revanced.extension.shared.Utils.dipToPixels;
import static app.revanced.extension.youtube.sponsorblock.objects.CategoryBehaviour.SKIP_AUTOMATICALLY;
import android.annotation.SuppressLint;
@@ -34,6 +33,7 @@ import java.util.Objects;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.ui.Dim;
import app.revanced.extension.youtube.patches.VideoInformation;
import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.youtube.shared.PlayerType;
@@ -82,7 +82,7 @@ public class SegmentPlaybackController {
* Highlight segments have zero length as they are a point in time.
* Draw them on screen using a fixed width bar.
*/
private static final int HIGHLIGHT_SEGMENT_DRAW_BAR_WIDTH = dipToPixels(7);
private static final int HIGHLIGHT_SEGMENT_DRAW_BAR_WIDTH = Dim.dp7;
@Nullable
private static String currentVideoId;
@@ -808,14 +808,12 @@ public class SegmentPlaybackController {
LinearLayout mainLayout = new LinearLayout(currentContext);
mainLayout.setOrientation(LinearLayout.VERTICAL);
final int dip8 = dipToPixels(8);
final int dip16 = dipToPixels(16);
mainLayout.setPadding(dip16, dip8, dip16, dip8);
mainLayout.setPadding(Dim.dp16, Dim.dp8, Dim.dp16, Dim.dp8);
mainLayout.setGravity(Gravity.CENTER);
mainLayout.setMinimumHeight(dipToPixels(48));
mainLayout.setMinimumHeight(Dim.dp48);
ShapeDrawable background = new ShapeDrawable(new RoundRectShape(
Utils.createCornerRadii(20), null, null));
Dim.roundedCorners(20), null, null));
background.getPaint().setColor(Utils.getDialogBackgroundColor());
mainLayout.setBackground(background);

View File

@@ -1,7 +1,6 @@
package app.revanced.extension.youtube.sponsorblock.objects;
import static app.revanced.extension.shared.StringRef.str;
import static app.revanced.extension.shared.Utils.dipToPixels;
import static app.revanced.extension.youtube.sponsorblock.SponsorBlockSettings.migrateOldColorString;
import android.content.Context;
@@ -17,6 +16,7 @@ import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.settings.preference.ColorPickerPreference;
import app.revanced.extension.shared.ui.ColorDot;
import app.revanced.extension.shared.ui.Dim;
@SuppressWarnings("deprecation")
public class SegmentCategoryPreference extends ColorPickerPreference {
@@ -110,7 +110,7 @@ public class SegmentCategoryPreference extends ColorPickerPreference {
}
radioGroup.setOnCheckedChangeListener((group, checkedId) -> selectedDialogEntryIndex = checkedId);
radioGroup.setPadding(dipToPixels(10), 0, dipToPixels(10), dipToPixels(10));
radioGroup.setPadding(Dim.dp10, 0, Dim.dp10, Dim.dp10);
return radioGroup;
}

View File

@@ -15,6 +15,7 @@ import android.widget.FrameLayout;
import android.widget.ImageButton;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.ui.Dim;
import app.revanced.extension.youtube.patches.VideoInformation;
import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.youtube.sponsorblock.SponsorBlockUtils;
@@ -132,9 +133,7 @@ public final class NewSegmentLayout extends FrameLayout {
GradientDrawable backgroundDrawable = new GradientDrawable();
backgroundDrawable.setColor(getResourceColor("skip_ad_button_background_color"));
final float cornerRadius = squareLayout
? 0
: 16 * getResources().getDisplayMetrics().density;
final float cornerRadius = squareLayout ? 0f : Dim.dp16;
backgroundDrawable.setCornerRadius(cornerRadius);
setBackground(backgroundDrawable);
}

View File

@@ -18,7 +18,6 @@ import android.preference.SwitchPreference;
import android.text.InputType;
import android.util.AttributeSet;
import android.util.Pair;
import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
@@ -34,6 +33,7 @@ import app.revanced.extension.shared.settings.Setting;
import app.revanced.extension.shared.settings.preference.CustomDialogListPreference;
import app.revanced.extension.shared.settings.preference.ResettableEditTextPreference;
import app.revanced.extension.shared.ui.CustomDialog;
import app.revanced.extension.shared.ui.Dim;
import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.youtube.sponsorblock.SegmentPlaybackController;
import app.revanced.extension.youtube.sponsorblock.SponsorBlockSettings;
@@ -507,7 +507,7 @@ public class SponsorBlockPreferenceGroup extends PreferenceGroup {
EditText editText = getEditText();
editText.setInputType(editText.getInputType() | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
editText.setTextSize(TypedValue.COMPLEX_UNIT_PT, 7); // Use a smaller font to reduce text wrap.
editText.setTextSize(14);
// Create a custom dialog.
Pair<Dialog, LinearLayout> dialogPair = CustomDialog.create(
@@ -550,7 +550,7 @@ public class SponsorBlockPreferenceGroup extends PreferenceGroup {
| InputType.TYPE_TEXT_FLAG_MULTI_LINE
| InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
editText.setAutofillHints((String) null);
editText.setTextSize(TypedValue.COMPLEX_UNIT_PT, 8);
editText.setTextSize(14);
// Set preference listeners.
importExport.setOnPreferenceClickListener(preference1 -> {

View File

@@ -1,7 +1,6 @@
package app.revanced.extension.youtube.videoplayer;
import static app.revanced.extension.shared.StringRef.str;
import static app.revanced.extension.shared.Utils.dipToPixels;
import static app.revanced.extension.shared.settings.preference.CustomDialogListPreference.*;
import static app.revanced.extension.youtube.patches.VideoInformation.AUTOMATIC_VIDEO_QUALITY_VALUE;
import static app.revanced.extension.youtube.patches.VideoInformation.VIDEO_QUALITY_PREMIUM_NAME;
@@ -21,6 +20,7 @@ import android.widget.*;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import app.revanced.extension.shared.ui.Dim;
import app.revanced.extension.shared.ui.SheetBottomDialog;
import app.revanced.extension.youtube.shared.PlayerType;
import com.google.android.libraries.youtube.innertube.model.media.VideoQuality;
@@ -214,11 +214,6 @@ public class VideoQualityDialogButton {
}
}
// Preset size constants.
final int dip8 = dipToPixels(8);
final int dip12 = dipToPixels(12);
final int dip16 = dipToPixels(16);
// Create main layout.
SheetBottomDialog.DraggableLinearLayout mainLayout =
SheetBottomDialog.createMainLayout(context, getDialogBackgroundColor());
@@ -269,7 +264,7 @@ public class VideoQualityDialogButton {
LinearLayout.LayoutParams titleParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
titleParams.setMargins(dip12, dip16, 0, dip16);
titleParams.setMargins(Dim.dp12, Dim.dp16, 0, Dim.dp16);
titleView.setLayoutParams(titleParams);
mainLayout.addView(titleView);

View File

@@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M
org.gradle.parallel = true
android.useAndroidX = true
kotlin.code.style = official
version = 5.46.0-dev.5
version = 5.46.0-dev.7

View File

@@ -5,6 +5,7 @@ import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.patch.BytecodePatchBuilder
import app.revanced.patcher.patch.BytecodePatchContext
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patcher.patch.resourcePatch
import app.revanced.patches.all.misc.resources.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch
import app.revanced.patches.shared.misc.settings.preference.BasePreference
@@ -13,6 +14,8 @@ import app.revanced.patches.shared.misc.settings.preference.NonInteractivePrefer
import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference
import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference.Sorting
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
import app.revanced.util.ResourceGroup
import app.revanced.util.copyResources
import app.revanced.util.findInstructionIndicesReversedOrThrow
import app.revanced.util.indexOfFirstInstructionOrThrow
import app.revanced.util.indexOfFirstInstructionReversedOrThrow
@@ -36,7 +39,27 @@ internal fun enableDebuggingPatch(
description = "Adds options for debugging and exporting ReVanced logs to the clipboard.",
) {
dependsOn(addResourcesPatch)
dependsOn(
addResourcesPatch,
resourcePatch {
execute {
copyResources(
"settings",
ResourceGroup("drawable",
// Action buttons.
"revanced_settings_copy_all.xml",
"revanced_settings_deselect_all.xml",
"revanced_settings_select_all.xml",
// Move buttons.
"revanced_settings_arrow_left_double.xml",
"revanced_settings_arrow_left_one.xml",
"revanced_settings_arrow_right_double.xml",
"revanced_settings_arrow_right_one.xml"
)
)
}
}
)
block()
@@ -64,6 +87,11 @@ internal fun enableDebuggingPatch(
"revanced_debug_logs_clear_buffer",
tag = "app.revanced.extension.shared.settings.preference.ClearLogBufferPreference",
selectable = true
),
NonInteractivePreference(
"revanced_debug_feature_flags_manager",
tag = "app.revanced.extension.shared.settings.preference.FeatureFlagsManagerPreference",
selectable = true
)
)
)

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">تاريخ بناء APK تالف</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">تحذير</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">إشعار ReVanced</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">لم يتم حفظ سجل المشاهدة الخاص بك.&lt;br&gt;&lt;br&gt;من المرجح أن يكون السبب في ذلك هو مانع إعلانات DNS أو وكيل الشبكة.&lt;br&gt;&lt;br&gt;لإصلاح هذه المشكلة، قم بإضافة &lt;b&gt;s.youtube.com&lt;/b&gt; إلى القائمة البيضاء أو قم بإيقاف تشغيل جميع أدوات حظر DNS ووكلاء البروكسي.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">لا تعرض مرة أخرى</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">الإعدادات</string>
<string name="revanced_settings_confirm_user_dialog_title">هل أنت متأكد أنك تريد المتابعة؟</string>
<string name="revanced_settings_save">حفظ</string>
<string name="revanced_settings_reset">إعادة التعيين</string>
<string name="revanced_settings_reset_color">إعادة تعيين اللون</string>
<string name="revanced_settings_color_invalid">لون غير صالح</string>
@@ -164,6 +165,14 @@ Second \"item\" text"</string>
<string name="revanced_debug_logs_clear_buffer_title">مسح سجلات تصحيح الأخطاء</string>
<string name="revanced_debug_logs_clear_buffer_summary">يمسح جميع سجلات تصحيح أخطاء ReVanced المخزنة</string>
<string name="revanced_debug_logs_clear_toast">تم مسح السجلات</string>
<string name="revanced_debug_feature_flags_manager_title">مدير علامات الميزات</string>
<string name="revanced_debug_feature_flags_manager_summary">إدارة علامات الميزات المنطقية</string>
<string name="revanced_debug_feature_flags_manager_active_header">علامات نشطة (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">علامات محظورة (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">البحث عن علامات...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">تم حفظ العلامات</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">تم إعادة تعيين العلامات</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">تم نسخ العلامات إلى الحافظة</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">تطهير روابط المشاركة</string>

View File

@@ -29,7 +29,6 @@ Second \"item\" text"</string>
<patch id="misc.checks.checkEnvironmentPatch">
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">সকীয়নি</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<!-- Settings about dialog. -->

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">APK qurulma vaxtı pozulub</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Xәbәrdarlıq</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">ReVanced Bildiriş</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Baxış tarixçəniz saxlanmır.&lt;br&gt;&lt;br&gt;Bu çox güman ki, DNS reklam bloklayıcı və ya şəbəkə proksisinə görədir.&lt;br&gt;&lt;br&gt;.Bunu düzəltmək üçün s.youtube.com-u&lt;/b&gt; &lt;b&gt;ağ siyahıya salın və ya bütün DNS bloklayıcıları və proksiləri bağlayın.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Təkrar göstərmə</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Tənzimləmələr</string>
<string name="revanced_settings_confirm_user_dialog_title">Davam etmək istədiyinizə əminsiniz?</string>
<string name="revanced_settings_save">Yadda saxla</string>
<string name="revanced_settings_reset">Sıfırla</string>
<string name="revanced_settings_reset_color">Rəngi sıfırla</string>
<string name="revanced_settings_color_invalid">Yanlış rəng</string>
@@ -164,6 +165,14 @@ Gözlənilməz hallardan xəbərdar olmayacaqsınız."</string>
<string name="revanced_debug_logs_clear_buffer_title">Sazlama qeydlərini təmizlə</string>
<string name="revanced_debug_logs_clear_buffer_summary">Saxlanılan bütün ReVanced sazlama qeydlərini təmizləyir</string>
<string name="revanced_debug_logs_clear_toast">Qeydlər silindi</string>
<string name="revanced_debug_feature_flags_manager_title">Xüsusiyyət bayraqları Manager</string>
<string name="revanced_debug_feature_flags_manager_summary">Bulun xüsusiyyət bayraqlarını idarə edin</string>
<string name="revanced_debug_feature_flags_manager_active_header">Aktiv bayraqlar (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Bloklanmış bayraqlar (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Bayraqları axtarın...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Bayraqlar yadda saxlandı</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Bayraqlar sıfırlandı</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Bayraqlar panoya kopyalandı</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Paylaşım linklərin təmizlə</string>
@@ -328,9 +337,9 @@ Hər halda, bunu aktivləşdirmə IP ünvanınız kimi bəzi istifadəçi məlum
<string name="revanced_hide_how_this_was_made_section_title">\'Bu kontent necə hazırlanıb\'ı Gizlət</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">Bu məzmunun necə hazırlandığı bölməsi gizlidir</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">Bu məzmunun necə hazırlandığı bölməsi görünür</string>
<string name="revanced_hide_hype_points_title">Hype nöqtələrini gizlət</string>
<string name="revanced_hide_hype_points_summary_on">Hype nöqtələri gizlədilib</string>
<string name="revanced_hide_hype_points_summary_off">Hype nöqtələri göstərilir</string>
<string name="revanced_hide_hype_points_title">Coşqu xalların gizlət</string>
<string name="revanced_hide_hype_points_summary_on">Coşqu xalları gizlədilib</string>
<string name="revanced_hide_hype_points_summary_off">Coşqu xalları göstərilir</string>
<string name="revanced_hide_podcast_section_title">\'Podkastı araşdırın\"-ı Gizlət</string>
<string name="revanced_hide_podcast_section_summary_on">Podkast bölməsin araşdırın gizlidir</string>
<string name="revanced_hide_podcast_section_summary_off">Podkast bölməsin araşdırın görünür</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">Дата стварэння APK пашкоджана</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Увага</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">Заўвага ReVanced</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Ваша гісторыя прагляду не захоўваецца.&lt;br&gt;&lt;br&gt;Гэта, хутчэй за ўсё, выклікана DNS-блакіроўшчыкам рэкламы або сеткавым праксі.&lt;br&gt;&lt;br&gt;Каб выправіць гэта, дадайце &lt;b&gt;s.youtube.com&lt;/b&gt; у белы спіс або адключыце ўсе DNS-блакіроўшчыкі і праксі.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Больш не паказваць</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Налады</string>
<string name="revanced_settings_confirm_user_dialog_title">Вы ўпэўнены, што хочаце працягнуць?</string>
<string name="revanced_settings_save">Захаваць</string>
<string name="revanced_settings_reset">Скінуць</string>
<string name="revanced_settings_reset_color">Скінуць колер</string>
<string name="revanced_settings_color_invalid">Несапраўдны колер</string>
@@ -164,6 +165,14 @@ Second \"item\" text"</string>
<string name="revanced_debug_logs_clear_buffer_title">Ачысціць адладачныя лагі</string>
<string name="revanced_debug_logs_clear_buffer_summary">Ачышчае ўсе захаваныя адладачныя лагі ReVanced</string>
<string name="revanced_debug_logs_clear_toast">Лагі ачышчаны</string>
<string name="revanced_debug_feature_flags_manager_title">Менеджэр функцыйных сцягоў</string>
<string name="revanced_debug_feature_flags_manager_summary">Кіраванне лагічнымі функцыйнымі сцягамі</string>
<string name="revanced_debug_feature_flags_manager_active_header">Актыўныя сцягі (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Заблакаваныя сцягі (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Пошук сцягоў...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Сцягі захаваны</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Сцягі скінуты</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Сцягі скапіяваны ў буфер абмену</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Ачысціць спасылкі для абагульвання</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">Датата на компилация на APK е повредена</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Предупреждение</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">Известие от ReVanced</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Историята ви на гледане не се запазва.&lt;br&gt;&lt;br&gt;Това най-вероятно е причинено от DNS блокиращ реклами или мрежов прокси.&lt;br&gt;&lt;br&gt;За да коригирате това, поставете &lt;b&gt;s.youtube в белия списък.com&lt;/b&gt; или изключете всички DNS блокери и проксита.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Не показвай отново</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Настройки</string>
<string name="revanced_settings_confirm_user_dialog_title">Сигурни ли сте, че искате да продължите?</string>
<string name="revanced_settings_save">Запазване</string>
<string name="revanced_settings_reset">Възстанови</string>
<string name="revanced_settings_reset_color">Нулиране на цвета</string>
<string name="revanced_settings_color_invalid">Невалиден цвят</string>
@@ -164,6 +165,14 @@ Second \"item\" text"</string>
<string name="revanced_debug_logs_clear_buffer_title">Изчистване на логовете за отстраняване на грешки</string>
<string name="revanced_debug_logs_clear_buffer_summary">Изчиства всички съхранени логове за отстраняване на грешки на ReVanced</string>
<string name="revanced_debug_logs_clear_toast">Логовете са изчистени</string>
<string name="revanced_debug_feature_flags_manager_title">Мениджър на флагове за функции</string>
<string name="revanced_debug_feature_flags_manager_summary">Управление на булеви флагове за функции</string>
<string name="revanced_debug_feature_flags_manager_active_header">Активни флагове (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Блокирани флагове (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Търсене на флагове...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Флаговете са запазени</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Флаговете са нулирани</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Флаговете са копирани в клипборда</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Почистване на връзки за споделяне</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">APK তৈরির তারিখ ত্রুটিপূর্ণ</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">সতর্কীকরণ</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">ReVanced নোটিশ</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">আপনার দেখার ইতিহাস সংরক্ষিত হচ্ছে না।&lt;br&gt;&lt;br&gt;এটি সম্ভবত DNS অ্যাড ব্লকার অথবা নেটওয়ার্ক প্রক্সির কারণে।&lt;br&gt;&lt;br&gt;এটি ঠিক করার জন্য, &lt;b&gt;s.youtube.com&lt;/b&gt; সাদা তালিকাভুক্ত করুন অথবা সকল DNS ব্লকার এবং প্রক্সি বন্ধ করুন।</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">আবার দেখাবেন না</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">সেটিংস</string>
<string name="revanced_settings_confirm_user_dialog_title">আপনি কি এগিয়ে যেতে চান?</string>
<string name="revanced_settings_save">সংরক্ষণ করুন</string>
<string name="revanced_settings_reset">আবার সেট করুন</string>
<string name="revanced_settings_reset_color">রঙ রিসেট করুন</string>
<string name="revanced_settings_color_invalid">অবৈধ রঙ</string>
@@ -164,6 +165,14 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_debug_logs_clear_buffer_title">ডিবাগ লগগুলি সাফ করুন</string>
<string name="revanced_debug_logs_clear_buffer_summary">সমস্ত সঞ্চিত ReVanced ডিবাগ লগ সাফ করে</string>
<string name="revanced_debug_logs_clear_toast">লগ সাফ করা হয়েছে</string>
<string name="revanced_debug_feature_flags_manager_title">ফিচার ফ্ল্যাগ Manager</string>
<string name="revanced_debug_feature_flags_manager_summary">বুলিয়ান ফিচার ফ্ল্যাগ পরিচালনা করুন</string>
<string name="revanced_debug_feature_flags_manager_active_header">সক্রিয় ফ্ল্যাগ (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">ব্লক করা ফ্ল্যাগ (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">ফ্ল্যাগ খুঁজুন...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">ফ্ল্যাগ সংরক্ষণ করা হয়েছে</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">ফ্ল্যাগ রিসেট করা হয়েছে</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">ফ্ল্যাগ ক্লিপবোর্ডে কপি করা হয়েছে</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">শেয়ারিং লিঙ্ক স্যানিটাইজ করুন</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">Datum sestavení souboru APK je poškozeno</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Varování</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">Upozornění ReVanced</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Vaše historie sledování není ukládána.&lt;br&gt;&lt;br&gt;Příčinou je s největší pravděpodobností DNS blokátor reklam nebo síťový proxy server.&lt;br&gt;&lt;br&gt;Chcete-li to opravit, přidejte&lt;b&gt;s.youtube.com&lt;/b&gt; na whitelist nebo vypněte všechny DNS blokátory a proxy servery.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Už nezobrazovat</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Nastavení</string>
<string name="revanced_settings_confirm_user_dialog_title">Opravdu chcete pokračovat?</string>
<string name="revanced_settings_save">Uložit</string>
<string name="revanced_settings_reset">Výchozí</string>
<string name="revanced_settings_reset_color">Obnovit barvu</string>
<string name="revanced_settings_color_invalid">Neplatná barva</string>
@@ -164,6 +165,14 @@ Nebudete informováni o žádné neočekávané události."</string>
<string name="revanced_debug_logs_clear_buffer_title">Vymazat ladicí protokoly</string>
<string name="revanced_debug_logs_clear_buffer_summary">Vymaže všechny uložené ladicí protokoly ReVanced</string>
<string name="revanced_debug_logs_clear_toast">Protokoly vymazány</string>
<string name="revanced_debug_feature_flags_manager_title">Příznaky funkcí Manager</string>
<string name="revanced_debug_feature_flags_manager_summary">Spravovat boolean příznaky funkcí</string>
<string name="revanced_debug_feature_flags_manager_active_header">Aktivní přepínače (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Zablokované přepínače (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Hledat přepínače...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Přepínače uloženy</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Přepínače resetovány</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Přepínače zkopírovány do schránky</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Vyčistit sdílené odkazy</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">APK byggedato er ødelagt</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Advarsel</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">ReVanced Meddelelse</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Din urhistorik gemmes ikke.&lt;br&gt;&lt;br&gt;Dette skyldes sandsynligvis en DNS-annonceblokker eller netværksproxy.&lt;br&gt;&lt;br&gt;For at løse dette, whitelist &lt;b&gt;s.youtube.com&lt;/b&gt; eller slå alle DNS-blokkere og fuldmagter fra.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Vis ikke igen</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Indstillinger</string>
<string name="revanced_settings_confirm_user_dialog_title">Er du sikker på, at du vil fortsætte?</string>
<string name="revanced_settings_save">Gem</string>
<string name="revanced_settings_reset">Nulstil</string>
<string name="revanced_settings_reset_color">Nulstil farve</string>
<string name="revanced_settings_color_invalid">Ugyldig farve</string>
@@ -164,6 +165,14 @@ Du modtager ikke notifikationer om uventede hændelser."</string>
<string name="revanced_debug_logs_clear_buffer_title">Ryd fejlsøgningslogfiler</string>
<string name="revanced_debug_logs_clear_buffer_summary">Rydder alle gemte ReVanced-fejlsøgningslogfiler</string>
<string name="revanced_debug_logs_clear_toast">Logfiler ryddet</string>
<string name="revanced_debug_feature_flags_manager_title">Funktionsflag Manager</string>
<string name="revanced_debug_feature_flags_manager_summary">Administrer booleske funktionsflag</string>
<string name="revanced_debug_feature_flags_manager_active_header">Aktive flag (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Blokerede flag (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Søg flag...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Flag gemt</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Flag nulstillet</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Flag kopieret til udklipsholder</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Rens delingslinks</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">APK Erstellungsdatum ist beschädigt</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Warnung</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">ReVanced Hinweis</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Ihr Verlauf wird nicht gespeichert.&lt;br&gt;&lt;br&gt;Dies wird höchstwahrscheinlich durch einen DNS-Werbeblocker oder einen Netzwerkproxy verursacht.&lt;br&gt;&lt;br&gt;Um dies zu beheben, setze &lt;b&gt;s.youtube.com&lt;/b&gt; auf die Whitelist oder schalten Sie alle DNS-Blocker und Proxies aus.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Nicht wieder anzeigen</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Einstellungen</string>
<string name="revanced_settings_confirm_user_dialog_title">Bist du sicher, dass du fortfahren möchtest?</string>
<string name="revanced_settings_save">Speichern</string>
<string name="revanced_settings_reset">Zurücksetzen</string>
<string name="revanced_settings_reset_color">Farbe zurücksetzen</string>
<string name="revanced_settings_color_invalid">Ungültige Farbe</string>
@@ -164,6 +165,14 @@ Sie werden nicht über unerwartete Ereignisse informiert."</string>
<string name="revanced_debug_logs_clear_buffer_title">Debug-Protokolle löschen</string>
<string name="revanced_debug_logs_clear_buffer_summary">Löscht alle gespeicherten ReVanced-Debug-Protokolle</string>
<string name="revanced_debug_logs_clear_toast">Protokolle gelöscht</string>
<string name="revanced_debug_feature_flags_manager_title">Feature-Flags Manager</string>
<string name="revanced_debug_feature_flags_manager_summary">Boolesche Feature-Flags verwalten</string>
<string name="revanced_debug_feature_flags_manager_active_header">Aktive Flags (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Blockierte Flags (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Flags suchen...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Flags gespeichert</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Flags zurückgesetzt</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Flags in die Zwischenablage kopiert</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Freigabelinks säubern</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">Η ημερομηνία κατασκευής του APK είναι κατεστραμμένη</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Προειδοποίηση</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">Ειδοποίηση ReVanced</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Το ιστορικό παρακολούθησης δεν αποθηκεύεται.&lt;br&gt;&lt;br&gt;Πιθανό να συμβαίνει λόγω αποκλεισμού διαφημίσεων μέσω DNS ή μέσω διακομιστή μεσολάβησης δικτύου.&lt;br&gt;&lt;br&gt;Μια λύση γι\'αυτό θα ήταν να προσθέσετε σε whitelist το &lt;b&gt;s.youtube.com&lt;/b&gt; ή να απενεργοποιήστε τους DNS/proxy blockers.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Να μην εμφανιστεί ξανά</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Ρυθμίσεις</string>
<string name="revanced_settings_confirm_user_dialog_title">Είστε βέβαιοι ότι θέλετε να συνεχίσετε;</string>
<string name="revanced_settings_save">Αποθήκευση</string>
<string name="revanced_settings_reset">Επαναφορά</string>
<string name="revanced_settings_reset_color">Επαναφορά χρώματος</string>
<string name="revanced_settings_color_invalid">Μη έγκυρο χρώμα</string>
@@ -164,6 +165,14 @@ Second \"item\" text"</string>
<string name="revanced_debug_logs_clear_buffer_title">Εκκαθάριση αρχείων καταγραφής εντοπισμού σφαλμάτων</string>
<string name="revanced_debug_logs_clear_buffer_summary">Εκκαθάριση όλων των αποθηκευμένων αρχειών καταγραφής εντοπισμού σφαλμάτων ReVanced</string>
<string name="revanced_debug_logs_clear_toast">Τα αρχεία καταγραφής εκκαθαρίστηκαν</string>
<string name="revanced_debug_feature_flags_manager_title">Διαχειριστής σημαιών λειτουργιών</string>
<string name="revanced_debug_feature_flags_manager_summary">Διαχείριση των boolean σημαιών λειτουργιών</string>
<string name="revanced_debug_feature_flags_manager_active_header">Ενεργές σημαίες (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Αποκλεισμένες σημαίες (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Αναζήτηση σημαιών...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Οι σημαίες αποθηκεύτηκαν</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Οι σημαίες επαναφέρθηκαν</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Οι σημαίες αντιγράφηκαν στο πρόχειρο</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Καθαρισμός συνδέσμων κοινοποίησης</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">La fecha de compilación del APK está corrupta</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Advertencia</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">Aviso de ReVanced</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Tu historial no está siendo guardado.&lt;br&gt;&lt;br&gt;Esto puede ser por un bloqueador de anuncios DNS o Proxy.&lt;br&gt;&lt;br&gt;Para arreglarlo, permita el dominio &lt;b&gt;s.youtube.com&lt;/b&gt; o desactive el bloqueador DNS o Proxy.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">No mostrar de nuevo</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Ajustes</string>
<string name="revanced_settings_confirm_user_dialog_title">¿Estás seguro de que quieres continuar?</string>
<string name="revanced_settings_save">Guardar</string>
<string name="revanced_settings_reset">Restablecer</string>
<string name="revanced_settings_reset_color">Restablecer color</string>
<string name="revanced_settings_color_invalid">Color no válido</string>
@@ -164,6 +165,14 @@ No se le notificará de ningún evento inesperado."</string>
<string name="revanced_debug_logs_clear_buffer_title">Borrar registros de depuración</string>
<string name="revanced_debug_logs_clear_buffer_summary">Borra todos los registros de depuración de ReVanced almacenados</string>
<string name="revanced_debug_logs_clear_toast">Registros borrados</string>
<string name="revanced_debug_feature_flags_manager_title">Manager de indicadores de funciones</string>
<string name="revanced_debug_feature_flags_manager_summary">Gestionar indicadores de funciones booleanos</string>
<string name="revanced_debug_feature_flags_manager_active_header">Banderas activas (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Banderas bloqueadas (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Buscar banderas...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Banderas guardadas</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Banderas restablecidas</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Banderas copiadas al portapapeles</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Sanear enlaces compartidos</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">APK ehituskuupäev on rikutud</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Hoiatus</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">ReVancedi Teade</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Teie vaatamise ajalugu ei salvestata.&lt;br&gt;&lt;br&gt;See on tõenäoliselt tingitud DNS-i reklaamiblokeerijast või võrguproksilt.&lt;br&gt;&lt;br&gt;Selle parandamiseks lisage valgesse nimekirja &lt;b&gt;s.youtube.com&lt;/b&gt; või lülitage kõik DNS-i reklaamiblokeerijad ja proksid välja.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Ära kuva uuesti</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Seaded</string>
<string name="revanced_settings_confirm_user_dialog_title">Kas sa oled kindel, et soovid jätkata?</string>
<string name="revanced_settings_save">Salvesta</string>
<string name="revanced_settings_reset">Lähtesta</string>
<string name="revanced_settings_reset_color">Lähtesta värv</string>
<string name="revanced_settings_color_invalid">Vigane värv</string>
@@ -164,6 +165,14 @@ Teid ei teavitata ühestki ootamatust sündmusest."</string>
<string name="revanced_debug_logs_clear_buffer_title">Puhasta silumislogid</string>
<string name="revanced_debug_logs_clear_buffer_summary">Puhastab kõik salvestatud ReVanced silumislogid</string>
<string name="revanced_debug_logs_clear_toast">Logid puhastatud</string>
<string name="revanced_debug_feature_flags_manager_title">Funktsioonilipikute Manager</string>
<string name="revanced_debug_feature_flags_manager_summary">Halda booleani funktsioonilipikuid</string>
<string name="revanced_debug_feature_flags_manager_active_header">Aktiivsed lipud (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Blokeeritud lipud (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Otsi lippe...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Lipud salvestatud</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Lipud lähtestatud</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Lipud kopeeritud lõikelauale</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Puhasta jagamislingid</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">APK käännöspäivä on vioittunut</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Varoitus</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">ReVanced Ilmoitus</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Kellon historiaa ei tallenneta.&lt;br&gt;&lt;br&gt;Tämä todennäköisesti johtuu DNS mainosten estäjä tai verkkovälityspalvelin.&lt;br&gt;&lt;br&gt;Korjataksesi tämän, valkoiselle listalle &lt;b&gt;s.youtube.com&lt;/b&gt; tai poistaaksesi kaikki DNS-estäjät ja -profiilit.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Älä näytä uudelleen</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Asetukset</string>
<string name="revanced_settings_confirm_user_dialog_title">Haluatko varmasti jatkaa?</string>
<string name="revanced_settings_save">Tallenna</string>
<string name="revanced_settings_reset">Nollaa</string>
<string name="revanced_settings_reset_color">Nollaa väri</string>
<string name="revanced_settings_color_invalid">Virheellinen väri</string>
@@ -164,6 +165,14 @@ Et saa ilmoituksia odottamattomista tapahtumista."</string>
<string name="revanced_debug_logs_clear_buffer_title">Tyhjennä virheenkorjauslokit</string>
<string name="revanced_debug_logs_clear_buffer_summary">Tyhjentää kaikki tallennetut ReVanced-virheenkorjauslokit</string>
<string name="revanced_debug_logs_clear_toast">Lokit tyhjennetty</string>
<string name="revanced_debug_feature_flags_manager_title">Ominaisuuslippujen Manager</string>
<string name="revanced_debug_feature_flags_manager_summary">Hallitse totuusarvo-ominaisuuslippuja</string>
<string name="revanced_debug_feature_flags_manager_active_header">Aktiiviset liput (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Estetyt liput (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Hae lippuja...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Liput tallennettu</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Liput nollattu</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Liput kopioitu leikepöydälle</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Puhdista jakamislinkit</string>
@@ -779,9 +788,9 @@ Jos tämän asetuksen muuttaminen ei tule voimaan, kokeile vaihtaa Incognito-til
<string name="revanced_hide_player_flyout_lock_screen_summary_on">Näytön lukitus -valinta piilotetaan</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_off">Näytön lukitus -valinta näytetään</string>
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_listen_with_youtube_music_title">Piilota Kuuntele YouTube Musicilla</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_on">Kuuntele YouTube Musicilla -valikko on piilotettu</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_off">Kuuntele YouTube Musicilla -valikko on näkyvissä</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_title">Piilota Kuuntele YouTube Musicissa</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_on">Kuuntele YouTube Musicissa -valinta piilotetaan</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_off">Kuuntele YouTube Musicissa -valinta näytetään</string>
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_audio_track_title">Piilota Ääniraita</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">Ääniraitavalikko piilotetaan</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">Ang petsa ng pagbuo ng APK ay sira</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Babala</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">Paunawa ng ReVanced</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Hindi nai-save ang iyong kasaysayan ng panonood.&lt;br&gt;&lt;br&gt;Karaniwang sanhi nito ay ang DNS ad blocker o network proxy.&lt;br&gt;&lt;br&gt;Para maayos ito, i-whitelist ang &lt;b&gt;s.youtube.com&lt;/b&gt; o i-off ang lahat ng DNS blocker at proxy.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Huwag ipakitang muli</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Mga Setting</string>
<string name="revanced_settings_confirm_user_dialog_title">Sigurado ka bang gusto mong magpatuloy?</string>
<string name="revanced_settings_save">I-save</string>
<string name="revanced_settings_reset">I-reset</string>
<string name="revanced_settings_reset_color">I-reset ang kulay</string>
<string name="revanced_settings_color_invalid">Hindi wasto ang kulay</string>
@@ -164,6 +165,14 @@ Hindi ka aabisuhan ng anumang hindi inaasahang mga kaganapan."</string>
<string name="revanced_debug_logs_clear_buffer_title">I-clear ang mga debug log</string>
<string name="revanced_debug_logs_clear_buffer_summary">Iki-clear ang lahat ng nakaimbak na ReVanced debug log</string>
<string name="revanced_debug_logs_clear_toast">Na-clear ang mga log</string>
<string name="revanced_debug_feature_flags_manager_title">Manager ng Mga Flag ng Tampok</string>
<string name="revanced_debug_feature_flags_manager_summary">Pamahalaan ang mga boolean na flag ng tampok</string>
<string name="revanced_debug_feature_flags_manager_active_header">Mga aktibong flag (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Mga harang na flag (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Maghanap ng mga flag...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Na-save ang mga flag</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Na-reset ang mga flag</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Nakopya ang mga flag sa clipboard</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Linisin ang mga link sa pagbabahagi</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">La date de construction de l\'APK est corrompue</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Avertissement</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">Avis ReVanced</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Les vidéos que vous regardez ne sont pas enregistrées dans votre historique.&lt;br&gt;&lt;br&gt;La cause la plus probable est l\'utilisation d\'un serveur DNS bloqueur de publicités ou d\'un proxy.&lt;br&gt;&lt;br&gt;Pour résoudre ce problème, autorisez l\'accès à &lt;b&gt;s.youtube.com&lt;/b&gt; ou désactivez tous vos bloqueurs DNS et proxys.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Ne plus afficher</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Paramètres</string>
<string name="revanced_settings_confirm_user_dialog_title">Voulez-vous vraiment continuer ?</string>
<string name="revanced_settings_save">Enregistrer</string>
<string name="revanced_settings_reset">Réinitialiser</string>
<string name="revanced_settings_reset_color">Réinitialiser la couleur</string>
<string name="revanced_settings_color_invalid">Couleur invalide</string>
@@ -164,6 +165,14 @@ Vous ne serez pas informé des événements inattendus."</string>
<string name="revanced_debug_logs_clear_buffer_title">Effacer les journaux de débogage</string>
<string name="revanced_debug_logs_clear_buffer_summary">Efface tous les journaux de débogage ReVanced stockés</string>
<string name="revanced_debug_logs_clear_toast">Journaux effacés</string>
<string name="revanced_debug_feature_flags_manager_title">Gestionnaire des indicateurs de fonctionnalités</string>
<string name="revanced_debug_feature_flags_manager_summary">Gérer les indicateurs de fonctionnalités booléens</string>
<string name="revanced_debug_feature_flags_manager_active_header">Drapeaux actifs (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Drapeaux bloqués (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Rechercher des drapeaux...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Drapeaux enregistrés</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Drapeaux réinitialisés</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Drapeaux copiés dans le presse-papiers</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Nettoyer les liens de partage</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">Tá dáta tógála APK truaillithe</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Rabhadh</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">Fógra ReVanced</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Níl do stair faire á sábháil.&lt;br&gt;&lt;br&gt;Is é is dóichí gur seachfhreastalaí fógraí DNS nó seachfhreastalaí líonra is cúis leis seo.&lt;br&gt;&lt;br&gt; Chun é seo a réiteach, déan liosta bán &lt;b&gt;s.youtube.com&lt;/b&gt; nó gach seachfhreastalaí DNS a mhúchadh.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Ná taispeáin arís</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Socruithe</string>
<string name="revanced_settings_confirm_user_dialog_title">An bhfuil tú cinnte gur mhaith leat dul ar aghaidh?</string>
<string name="revanced_settings_save">Sábháil</string>
<string name="revanced_settings_reset">Athshocrú</string>
<string name="revanced_settings_reset_color">Dath a athshocrú</string>
<string name="revanced_settings_color_invalid">Dath neamhbhailí</string>
@@ -164,6 +165,14 @@ Ní chuirfear ar an eolas thú faoi aon imeachtaí gan choinne."</string>
<string name="revanced_debug_logs_clear_buffer_title">Glan logaí dífhabhtaithe</string>
<string name="revanced_debug_logs_clear_buffer_summary">Glanann sé gach loga dífhabhtaithe ReVanced stóráilte</string>
<string name="revanced_debug_logs_clear_toast">Lógaí glanta</string>
<string name="revanced_debug_feature_flags_manager_title">Bainisteoir bratacha gnéithe</string>
<string name="revanced_debug_feature_flags_manager_summary">Bainistigh bratacha gné booléacha</string>
<string name="revanced_debug_feature_flags_manager_active_header">Bratacha gníomhacha (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Bratacha blocáilte (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Cuardaigh bratacha...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Bratacha sábháilte</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Bratacha athshocraithe</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Bratacha cóipeáilte chuig an ngearrthaisce</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Glan na naisc roinnte</string>

View File

@@ -32,6 +32,7 @@ Second \"item\" text"</string>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_save">Sačuvaj</string>
<!-- Settings about dialog. -->
<!-- NOTE: the about strings above are duplicated in the TikTok about screen code,
and changes made here must also be made there. -->

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">Az APK build dátuma sérült</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Figyelmeztetés</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">ReVanced Értesítés</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">A megtekintési előzmények mentése nem történik meg.&lt;br&gt;&lt;br&gt;Ezt valószínűleg egy DNS-hirdetésblokkoló vagy hálózati proxy okozza.&lt;br&gt;&lt;br&gt;A probléma megoldásához vegye fel az engedélyezőlistára az &lt;b&gt;s.youtube.com&lt;/b&gt; domaint vagy kapcsolja ki az összes DNS-blokkolót és proxyt.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Ne jelenjen meg többet</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Beállítások</string>
<string name="revanced_settings_confirm_user_dialog_title">Biztosan folytatni szeretné?</string>
<string name="revanced_settings_save">Mentés</string>
<string name="revanced_settings_reset">Visszaállítás</string>
<string name="revanced_settings_reset_color">Szín alaphelyzetbe állítása</string>
<string name="revanced_settings_color_invalid">Érvénytelen szín</string>
@@ -164,6 +165,14 @@ Nem fog értesülni semmilyen váratlan eseményről."</string>
<string name="revanced_debug_logs_clear_buffer_title">Hibakeresési naplók törlése</string>
<string name="revanced_debug_logs_clear_buffer_summary">Törli az összes tárolt ReVanced hibakeresési naplót</string>
<string name="revanced_debug_logs_clear_toast">Naplók törölve</string>
<string name="revanced_debug_feature_flags_manager_title">Funkciójelzők Manager</string>
<string name="revanced_debug_feature_flags_manager_summary">Logikai funkciójelzők kezelése</string>
<string name="revanced_debug_feature_flags_manager_active_header">Aktív jelzők (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Blokkolt jelzők (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Jelzők keresése...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Jelzők mentve</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Jelzők visszaállítva</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Jelzők vágólapra másolva</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Megosztási linkek tisztítása</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">APK-ի կառուցման ամսաթիվը վնասված է</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Զգուշացում</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">ReVanced Ծանուցում</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Ձեր դիտման պատմությունը չի պահպանվում.&lt;br&gt;&lt;br&gt;Այս հավանական պատճառը DNS գովազդների բլոկավորիչ կամ ցանցային պրոքսի է.&lt;br&gt;&lt;br&gt;Խնդրում ենք գործարկել &lt;b&gt;s.youtube.com&lt;/b&gt; կամ անջատել DNS բլոկավորիչներ և պրոքսիներ:</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Ավելի չցուցադրել</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Կարգավորումներ</string>
<string name="revanced_settings_confirm_user_dialog_title">Վստա՞հ եք, որ ցանկանում եք շարունակել:</string>
<string name="revanced_settings_save">Պահպանել</string>
<string name="revanced_settings_reset">Վերականգնել</string>
<string name="revanced_settings_reset_color">Գույնը վերականգնել</string>
<string name="revanced_settings_color_invalid">Անվավեր գույն</string>
@@ -164,6 +165,14 @@ MicroG-ի համար մարտկոցի օպտիմալացումը անջատել
<string name="revanced_debug_logs_clear_buffer_title">Մաքրել վրեժխնդրության մատյանները</string>
<string name="revanced_debug_logs_clear_buffer_summary">Մաքրում է բոլոր պահված ReVanced կարգաբերման մատյանները</string>
<string name="revanced_debug_logs_clear_toast">Մատյանները մաքրվել են</string>
<string name="revanced_debug_feature_flags_manager_title">Գործառույթի դրոշակների Manager</string>
<string name="revanced_debug_feature_flags_manager_summary">Կառավարել բուլյան գործառույթի դրոշակները</string>
<string name="revanced_debug_feature_flags_manager_active_header">Ակտիվ դրոշակներ (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Արգելափակված դրոշակներ (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Որոնել դրոշակներ...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Դրոշակները պահպանվեցին</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Դրոշակները զրոյացվեցին</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Դրոշակները պատճենվեցին սեղմատախտակին</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Մաքրել համօգտագործման հղումները</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">Tanggal pembuatan APK rusak</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Peringatan </string>
<string name="revanced_check_watch_history_domain_name_dialog_title">Pemberitahuan ReVanced</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Riwayat tontonan Anda tidak sedang disimpan.&lt;br&gt;&lt;br&gt;Hal ini kemungkinan besar disebabkan oleh pemblokir iklan DNS atau proksi jaringan.&lt;br&gt;&lt;br&gt;Untuk memperbaikinya, masukkan daftar putih &lt;b&gt;s.youtube.com&lt;/b&gt; atau matikan semua pemblokir DNS dan proksi.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Jangan tampilkan lagi</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Pengaturan</string>
<string name="revanced_settings_confirm_user_dialog_title">Apakah Anda yakin ingin melanjutkan?</string>
<string name="revanced_settings_save">Simpan</string>
<string name="revanced_settings_reset">Setel ulang</string>
<string name="revanced_settings_reset_color">Setel ulang warna</string>
<string name="revanced_settings_color_invalid">Warna tidak sah</string>
@@ -61,7 +62,7 @@ Second \"item\" text"</string>
<string name="revanced_settings_import">Impor</string>
<string name="revanced_settings_import_copy">Salin</string>
<string name="revanced_settings_import_reset">Pengaturan ReVanced diatur ke bawaan</string>
<string name="revanced_settings_import_success">Setelan %d terimpor</string>
<string name="revanced_settings_import_success">%d Setelan terimpor</string>
<string name="revanced_settings_import_failure_parse">Impor gagal: %s</string>
<string name="revanced_settings_search_hint">Pengaturan pencarian</string>
<string name="revanced_settings_search_no_results_title">Tidak ada hasil yang ditemukan untuk \'%s\'</string>
@@ -164,6 +165,14 @@ Anda tidak akan diberi tahu tentang kejadian yang tidak terduga."</string>
<string name="revanced_debug_logs_clear_buffer_title">Bersihkan catatan debug</string>
<string name="revanced_debug_logs_clear_buffer_summary">Menghapus semua catatan debug ReVanced yang tersimpan</string>
<string name="revanced_debug_logs_clear_toast">Catatan dibersihkan</string>
<string name="revanced_debug_feature_flags_manager_title">Fitur pengelolaan tanda</string>
<string name="revanced_debug_feature_flags_manager_summary">Kelola tanda fitur boolean</string>
<string name="revanced_debug_feature_flags_manager_active_header">Tanda aktif (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Tanda diblokir (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Cari tanda...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Tanda disimpan</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Tanda diatur ulang</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Tanda disalin ke papan klip</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Bersihkan tautan berbagi</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">La data di compilazione dell\'APK è corrotta</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Attenzione</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">Avviso ReVanced</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">La tua cronologia di visualizzazione non sta venendo salvata.&lt;br&gt;&lt;br&gt;Questo è molto probabilmente causato da un blocco annunci DNS o da un proxy di rete.&lt;br&gt;&lt;br&gt;Per risolvere, inserisci nella whitelist &lt;b&gt;s.youtube.com&lt;/b&gt; o disattiva tutti i blocchi DNS e proxy.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Non mostrare più</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Impostazioni</string>
<string name="revanced_settings_confirm_user_dialog_title">Sei sicuro di voler procedere?</string>
<string name="revanced_settings_save">Salva</string>
<string name="revanced_settings_reset">Reimposta</string>
<string name="revanced_settings_reset_color">Reimposta colore</string>
<string name="revanced_settings_color_invalid">Colore non valido</string>
@@ -164,6 +165,14 @@ Non sarai notificato di eventi imprevisti."</string>
<string name="revanced_debug_logs_clear_buffer_title">Cancella i log di debug</string>
<string name="revanced_debug_logs_clear_buffer_summary">Cancella tutti i log di debug di ReVanced memorizzati</string>
<string name="revanced_debug_logs_clear_toast">Log cancellati</string>
<string name="revanced_debug_feature_flags_manager_title">Manager dei flag di funzionalità</string>
<string name="revanced_debug_feature_flags_manager_summary">Gestisci flag di funzionalità booleani</string>
<string name="revanced_debug_feature_flags_manager_active_header">Flag attivi (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Flag bloccati (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Cerca flag...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Flag salvati</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Flag ripristinati</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Flag copiati negli appunti</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Sanifica collegamenti di condivisione</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">תאריך בניית ה-APK פגום</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">אזהרה</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">הודעת ReVanced</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">היסטוריית הצפייה שלך לא נשמרת.&lt;br&gt;&lt;br&gt;סביר להניח שזה נגרם על ידי חוסם מודעות ברמת DNS או פרוקסי רשת.&lt;br&gt;&lt;br&gt;כדי לתקן זאת, רשום את &lt;b&gt;s.youtube.com&lt;/b&gt; ברשימת ההיתרים או כבה את כל חוסמי ה-DNS והפרוקסים.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">אל תציג שוב</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">הגדרות</string>
<string name="revanced_settings_confirm_user_dialog_title">האם אתה בטוח שברצונך להמשיך?</string>
<string name="revanced_settings_save">שמור</string>
<string name="revanced_settings_reset">איפוס</string>
<string name="revanced_settings_reset_color">אפס צבע</string>
<string name="revanced_settings_color_invalid">צבע לא חוקי</string>
@@ -164,6 +165,14 @@ Second \"item\" text"</string>
<string name="revanced_debug_logs_clear_buffer_title">נקה יומני איתור באגים</string>
<string name="revanced_debug_logs_clear_buffer_summary">מנקה את כל היומנים לאיתור באגים של Revanced המאוחסנים</string>
<string name="revanced_debug_logs_clear_toast">היומנים נוקו</string>
<string name="revanced_debug_feature_flags_manager_title">Manager דגלי תכונות</string>
<string name="revanced_debug_feature_flags_manager_summary">נהל דגלי תכונות בוליאניים</string>
<string name="revanced_debug_feature_flags_manager_active_header">דגלים פעילים (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">דגלים חסומים (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">חפש דגלים...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">הדגלים נשמרו</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">הדגלים אופסו</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">הדגלים הועתקו ללוח</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">טיהור קישורי שיתוף</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">APK の作成日時データが破損している</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">警告</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">ReVanced からのお知らせ</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">再生履歴が保存されていません。&lt;br&gt;&lt;br&gt;これはおそらく、DNS 広告ブロッカーまたはネットワーク プロキシが原因です。&lt;br&gt;&lt;br&gt;この問題を解決するには、&lt;b&gt;s.youtube.com&lt;/b&gt; をホワイトリストに追加するか、すべての DNS ブロッカーとプロキシをオフにしてください。</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">今後表示しない</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">設定</string>
<string name="revanced_settings_confirm_user_dialog_title">続行してもよろしいですか?</string>
<string name="revanced_settings_save">保存</string>
<string name="revanced_settings_reset">リセット</string>
<string name="revanced_settings_reset_color">色をリセット</string>
<string name="revanced_settings_color_invalid">色の値が無効です</string>
@@ -164,6 +165,14 @@ YouTube Premium ユーザーの場合、この設定は必要ない可能性が
<string name="revanced_debug_logs_clear_buffer_title">デバッグログを消去</string>
<string name="revanced_debug_logs_clear_buffer_summary">保存されている ReVanced のすべてのデバッグログを消去します</string>
<string name="revanced_debug_logs_clear_toast">ログを消去しました</string>
<string name="revanced_debug_feature_flags_manager_title">機能フラグ Manager</string>
<string name="revanced_debug_feature_flags_manager_summary">ブール機能フラグを管理</string>
<string name="revanced_debug_feature_flags_manager_active_header">有効なフラグ (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">ブロックされたフラグ (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">フラグを検索...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">フラグを保存しました</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">フラグをリセットしました</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">フラグをクリップボードにコピーしました</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">共有リンクを無害化</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">APK 빌드 날짜가 손상되었습니다</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">경고</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">ReVanced 알림</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">시청 기록이 저장되지 않습니다.&lt;br&gt;&lt;br&gt; DNS 광고 차단기 또는 네트워크 프록시로 인하여 발생한 문제일 가능성이 높습니다.&lt;br&gt;&lt;br&gt; 이 문제를 해결하려면 &lt;b&gt;s.youtube.com&lt;/b&gt;을 허용 목록에서 제외하거나 모든 DNS 차단기 및 프록시를 해제하세요.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">다시 보지 않기</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">설정</string>
<string name="revanced_settings_confirm_user_dialog_title">계속하시겠습니까?</string>
<string name="revanced_settings_save">저장</string>
<string name="revanced_settings_reset">초기화</string>
<string name="revanced_settings_reset_color">색상 초기화</string>
<string name="revanced_settings_color_invalid">잘못된 색상입니다</string>
@@ -164,6 +165,14 @@ YouTube Premium 사용자라면 이 설정은 필요하지 않을 수 있습니
<string name="revanced_debug_logs_clear_buffer_title">디버그 로그 지우기</string>
<string name="revanced_debug_logs_clear_buffer_summary">저장된 모든 ReVanced 디버그 로그를 지울 수 있습니다</string>
<string name="revanced_debug_logs_clear_toast">디버그 로그가 지워졌습니다</string>
<string name="revanced_debug_feature_flags_manager_title">기능 플래그 관리자</string>
<string name="revanced_debug_feature_flags_manager_summary">부울 기능 플래그를 관리할 수 있습니다</string>
<string name="revanced_debug_feature_flags_manager_active_header">허용된 플래그 (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">차단된 플래그 (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">플래그 검색 ...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">플래그를 저장하였습니다</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">플래그를 초기화하였습니다</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">플래그를 클립보드에 복사하였습니다</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">추적 쿼리를 제거한 링크 공유하기</string>
@@ -316,34 +325,34 @@ YouTube Premium 사용자라면 이 설정은 필요하지 않을 수 있습니
<string name="revanced_hide_timed_reactions_title">실시간 이모티콘 리액션 숨기기</string>
<string name="revanced_hide_timed_reactions_summary_on">실시간 이모티콘 리액션이 숨겨집니다</string>
<string name="revanced_hide_timed_reactions_summary_off">실시간 이모티콘 리액션이 표시됩니다</string>
<string name="revanced_hide_ai_generated_video_summary_section_title">AI 생성 동영상 요약 섹션 숨기기</string>
<string name="revanced_hide_ai_generated_video_summary_section_title">AI 생성 동영상 요약 숨기기</string>
<string name="revanced_hide_ai_generated_video_summary_section_summary_on">AI 생성 동영상 요약 섹션이 숨겨집니다</string>
<string name="revanced_hide_ai_generated_video_summary_section_summary_off">AI 생성 동영상 요약 섹션이 표시됩니다</string>
<string name="revanced_hide_ask_section_title">\'질문하기\' 섹션 숨기기</string>
<string name="revanced_hide_ask_section_title">\'질문하기\' 숨기기</string>
<string name="revanced_hide_ask_section_summary_on">\'질문하기\' 섹션이 숨겨집니다</string>
<string name="revanced_hide_ask_section_summary_off">\'질문하기\' 섹션이 표시됩니다</string>
<string name="revanced_hide_attributes_section_title">속성 섹션 숨기기</string>
<string name="revanced_hide_attributes_section_title">속성 숨기기</string>
<string name="revanced_hide_attributes_section_summary_on">게임, 음악, 동영상 속 장소 그리고 언급된 인물 섹션이 숨겨집니다</string>
<string name="revanced_hide_attributes_section_summary_off">게임, 음악, 동영상 속 장소 그리고 언급된 인물 섹션이 표시됩니다</string>
<string name="revanced_hide_chapters_section_title">챕터 숨기기</string>
<string name="revanced_hide_chapters_section_summary_on">챕터 섹션이 숨겨집니다</string>
<string name="revanced_hide_chapters_section_summary_off">챕터 섹션이 표시됩니다</string>
<string name="revanced_hide_how_this_was_made_section_title">이 콘텐츠가 제작된 방식 섹션 숨기기</string>
<string name="revanced_hide_how_this_was_made_section_title">이 콘텐츠가 제작된 방식 숨기기</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">이 콘텐츠가 제작된 방식 섹션이 숨겨집니다</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">이 콘텐츠가 제작된 방식 섹션이 표시됩니다</string>
<string name="revanced_hide_hype_points_title">Hype 점수 숨기기</string>
<string name="revanced_hide_hype_points_summary_on">Hype 점수가 숨겨집니다</string>
<string name="revanced_hide_hype_points_summary_off">Hype 점수가 표시됩니다</string>
<string name="revanced_hide_podcast_section_title">팟캐스트 살펴보기 섹션 숨기기</string>
<string name="revanced_hide_podcast_section_title">\'팟캐스트 살펴보기\' 숨기기</string>
<string name="revanced_hide_podcast_section_summary_on">팟캐스트 살펴보기 섹션이 숨겨집니다</string>
<string name="revanced_hide_podcast_section_summary_off">팟캐스트 살펴보기 섹션이 표시됩니다</string>
<string name="revanced_hide_info_cards_section_title">크리에이터 정보 카드 섹션 숨기기</string>
<string name="revanced_hide_info_cards_section_title">크리에이터 정보 카드 숨기기</string>
<string name="revanced_hide_info_cards_section_summary_on">크리에이터 정보 카드 섹션이 숨겨집니다</string>
<string name="revanced_hide_info_cards_section_summary_off">크리에이터 정보 카드 섹션이 표시됩니다</string>
<string name="revanced_hide_key_concepts_section_title">주요 개념 섹션 숨기기</string>
<string name="revanced_hide_key_concepts_section_title">주요 개념 숨기기</string>
<string name="revanced_hide_key_concepts_section_summary_on">주요 개념 섹션이 숨겨집니다</string>
<string name="revanced_hide_key_concepts_section_summary_off">주요 개념 섹션이 표시됩니다</string>
<string name="revanced_hide_transcript_section_title">스크립트 섹션 숨기기</string>
<string name="revanced_hide_transcript_section_title">스크립트 숨기기</string>
<string name="revanced_hide_transcript_section_summary_on">스크립트 섹션이 숨겨집니다</string>
<string name="revanced_hide_transcript_section_summary_off">스크립트 섹션이 표시됩니다</string>
<string name="revanced_hide_description_components_screen_title">동영상 설명</string>
@@ -631,65 +640,65 @@ YouTube Premium 사용자라면 이 설정은 필요하지 않을 수 있습니
<patch id="layout.buttons.action.hideButtonsPatch">
<string name="revanced_hide_buttons_screen_title">동작 버튼</string>
<string name="revanced_hide_buttons_screen_summary">플레이어 하단에서 동작 버튼을 숨기거나 표시할 수 있습니다</string>
<string name="revanced_disable_like_subscribe_glow_title">빛나는 \'좋아요\' / \'구독\' 버튼 비활성화하기</string>
<string name="revanced_disable_like_subscribe_glow_title">빛나는 \'좋아요\' / \'구독\' 비활성화하기</string>
<string name="revanced_disable_like_subscribe_glow_summary_on">동영상에서 \'Like (좋아요)\' 또는 \'Subscribe (구독)\' 버튼이 언급되었을 경우에 해당 버튼에 빛나는 애니메이션을 적용하지 않습니다</string>
<string name="revanced_disable_like_subscribe_glow_summary_off">동영상에서 \'Like (좋아요)\' 또는 \'Subscribe (구독)\' 버튼이 언급되었을 경우에 해당 버튼에 빛나는 애니메이션을 적용합니다</string>
<string name="revanced_hide_like_dislike_button_title">좋아요 &amp; 싫어요 버튼 숨기기</string>
<string name="revanced_hide_like_dislike_button_title">좋아요 &amp; 싫어요 숨기기</string>
<string name="revanced_hide_like_dislike_button_summary_on">좋아요 &amp; 싫어요 버튼이 숨겨집니다</string>
<string name="revanced_hide_like_dislike_button_summary_off">좋아요 &amp; 싫어요 버튼이 표시됩니다</string>
<!-- 'Share' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_share_button_title">공유 버튼 숨기기</string>
<string name="revanced_hide_share_button_title">공유 숨기기</string>
<string name="revanced_hide_share_button_summary_on">공유 버튼이 숨겨집니다</string>
<string name="revanced_hide_share_button_summary_off">공유 버튼이 표시됩니다</string>
<!-- 'Stop ads' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_stop_ads_button_title">광고 중지 버튼 숨기기</string>
<string name="revanced_hide_stop_ads_button_title">광고 중지 숨기기</string>
<string name="revanced_hide_stop_ads_button_summary_on">광고 중지 버튼이 숨겨집니다</string>
<string name="revanced_hide_stop_ads_button_summary_off">광고 중지 버튼이 표시됩니다</string>
<!-- Button does not have any text and is only shown as an icon, and only when the video information area is collapsed to a compact state. -->
<string name="revanced_hide_comments_button_title">댓글 버튼 숨기기</string>
<string name="revanced_hide_comments_button_title">댓글 숨기기</string>
<string name="revanced_hide_comments_button_summary_on">댓글 버튼이 숨겨집니다</string>
<string name="revanced_hide_comments_button_summary_off">댓글 버튼이 표시됩니다</string>
<!-- 'Report' should be translated with the same localized wording that YouTube displays.
This button usually only shows on live streams. -->
<string name="revanced_hide_report_button_title">신고 버튼 숨기기</string>
<string name="revanced_hide_report_button_title">신고 숨기기</string>
<string name="revanced_hide_report_button_summary_on">신고 버튼이 숨겨집니다</string>
<string name="revanced_hide_report_button_summary_off">신고 버튼이 표시됩니다</string>
<!-- 'Remix' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_remix_button_title">리믹스 버튼 숨기기</string>
<string name="revanced_hide_remix_button_title">리믹스 숨기기</string>
<string name="revanced_hide_remix_button_summary_on">리믹스 버튼이 숨겨집니다</string>
<string name="revanced_hide_remix_button_summary_off">리믹스 버튼이 표시됩니다</string>
<!-- 'Download' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_download_button_title">오프라인 저장 버튼 숨기기</string>
<string name="revanced_hide_download_button_title">오프라인 저장 숨기기</string>
<string name="revanced_hide_download_button_summary_on">오프라인 저장 버튼이 숨겨집니다</string>
<string name="revanced_hide_download_button_summary_off">오프라인 저장 버튼이 표시됩니다</string>
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
This button only shows on videos uploaded by the logged in user. -->
<string name="revanced_hide_hype_button_title">Hype 버튼 숨기기</string>
<string name="revanced_hide_hype_button_title">Hype 숨기기</string>
<string name="revanced_hide_hype_button_summary_on">Hype 버튼이 숨겨집니다</string>
<string name="revanced_hide_hype_button_summary_off">Hype 버튼이 표시됩니다</string>
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_promote_button_title">프로모션 버튼 숨기기</string>
<string name="revanced_hide_promote_button_title">프로모션 숨기기</string>
<string name="revanced_hide_promote_button_summary_on">프로모션 버튼이 숨겨집니다</string>
<string name="revanced_hide_promote_button_summary_off">프로모션 버튼이 표시됩니다</string>
<!-- 'Thanks' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_thanks_button_title">Thanks 버튼 숨기기</string>
<string name="revanced_hide_thanks_button_title">Thanks 숨기기</string>
<string name="revanced_hide_thanks_button_summary_on">Thanks 버튼이 숨겨집니다</string>
<string name="revanced_hide_thanks_button_summary_off">Thanks 버튼이 표시됩니다</string>
<!-- 'Ask' should be translated with the same localized wording that YouTube displays.
This button only shows if the user ip is from specific region such as the USA or EU. -->
<string name="revanced_hide_ask_button_title">\'질문하기\' 버튼 숨기기</string>
<string name="revanced_hide_ask_button_title">\'질문하기\' 숨기기</string>
<string name="revanced_hide_ask_button_summary_on">\'질문하기\' 버튼이 숨겨집니다</string>
<string name="revanced_hide_ask_button_summary_off">\'질문하기\' 버튼이 표시됩니다</string>
<!-- 'Clip' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_clip_button_title">클립 버튼 숨기기</string>
<string name="revanced_hide_clip_button_title">클립 숨기기</string>
<string name="revanced_hide_clip_button_summary_on">클립 버튼이 숨겨집니다</string>
<string name="revanced_hide_clip_button_summary_off">클립 버튼이 표시됩니다</string>
<!-- 'Shop' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_shop_button_title">쇼핑 버튼 숨기기</string>
<string name="revanced_hide_shop_button_title">쇼핑 숨기기</string>
<string name="revanced_hide_shop_button_summary_on">쇼핑 버튼이 숨겨집니다</string>
<string name="revanced_hide_shop_button_summary_off">쇼핑 버튼이 표시됩니다</string>
<!-- 'Save' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_save_button_title">저장 버튼 숨기기</string>
<string name="revanced_hide_save_button_title">저장 숨기기</string>
<string name="revanced_hide_save_button_summary_on">저장 버튼이 숨겨집니다</string>
<string name="revanced_hide_save_button_summary_off">저장 버튼이 표시됩니다</string>
</patch>
@@ -697,26 +706,26 @@ YouTube Premium 사용자라면 이 설정은 필요하지 않을 수 있습니
<string name="revanced_navigation_buttons_screen_title">하단바 버튼</string>
<string name="revanced_navigation_buttons_screen_summary">하단바에서 버튼을 숨기거나 변경할 수 있습니다</string>
<!-- 'Home' should be translated using the same localized wording YouTube displays for the tab. -->
<string name="revanced_hide_home_button_title"> 버튼 숨기기</string>
<string name="revanced_hide_home_button_title">홈 숨기기</string>
<string name="revanced_hide_home_button_summary_on">홈 버튼이 숨겨집니다</string>
<string name="revanced_hide_home_button_summary_off">홈 버튼이 표시됩니다</string>
<!-- 'Shorts' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_hide_shorts_button_title">Shorts 버튼 숨기기</string>
<string name="revanced_hide_shorts_button_title">Shorts 숨기기</string>
<string name="revanced_hide_shorts_button_summary_on">Shorts 버튼이 숨겨집니다</string>
<string name="revanced_hide_shorts_button_summary_off">Shorts 버튼이 표시됩니다</string>
<!-- 'Create' has no display name. Translate normally. -->
<string name="revanced_hide_create_button_title">만들기 버튼 숨기기</string>
<string name="revanced_hide_create_button_title">만들기 숨기기</string>
<string name="revanced_hide_create_button_summary_on">만들기 버튼이 숨겨집니다</string>
<string name="revanced_hide_create_button_summary_off">만들기 버튼이 표시됩니다</string>
<!-- 'Subscriptions' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_hide_subscriptions_button_title">구독 버튼 숨기기</string>
<string name="revanced_hide_subscriptions_button_title">구독 숨기기</string>
<string name="revanced_hide_subscriptions_button_summary_on">구독 버튼이 숨겨집니다</string>
<string name="revanced_hide_subscriptions_button_summary_off">구독 버튼이 표시됩니다</string>
<string name="revanced_hide_notifications_button_title">알림 버튼 숨기기</string>
<string name="revanced_hide_notifications_button_title">알림 숨기기</string>
<string name="revanced_hide_notifications_button_summary_on">알림 버튼이 숨겨집니다</string>
<string name="revanced_hide_notifications_button_summary_off">알림 버튼이 표시됩니다</string>
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_switch_create_with_notifications_button_title">만들기 버튼과 알림 버튼 위치 교환하기</string>
<string name="revanced_switch_create_with_notifications_button_title">만들기와 알림 위치 교환하기</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">"만들기 버튼과 알림 버튼의 위치를 교환합니다
알려진 문제점:
@@ -743,46 +752,46 @@ YouTube Premium 사용자라면 이 설정은 필요하지 않을 수 있습니
<string name="revanced_hide_player_flyout_title">메뉴 구성요소</string>
<string name="revanced_hide_player_flyout_summary">플레이어에서 메뉴 구성요소를 숨기거나 표시할 수 있습니다</string>
<!-- 'Captions' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_captions_title">자막 메뉴 숨기기</string>
<string name="revanced_hide_player_flyout_captions_title">자막 숨기기</string>
<string name="revanced_hide_player_flyout_captions_summary_on">자막 메뉴가 숨겨집니다</string>
<string name="revanced_hide_player_flyout_captions_summary_off">자막 메뉴가 표시됩니다</string>
<!-- 'Additional settings' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_additional_settings_title">추가 설정 메뉴 숨기기</string>
<string name="revanced_hide_player_flyout_additional_settings_title">추가 설정 숨기기</string>
<string name="revanced_hide_player_flyout_additional_settings_summary_on">추가 설정 메뉴가 숨겨집니다</string>
<string name="revanced_hide_player_flyout_additional_settings_summary_off">추가 설정 메뉴가 표시됩니다</string>
<!-- 'Sleep timer' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_sleep_timer_title">취침 타이머 메뉴 숨기기</string>
<string name="revanced_hide_player_flyout_sleep_timer_title">취침 타이머 숨기기</string>
<string name="revanced_hide_player_flyout_sleep_timer_summary_on">취침 타이머 메뉴가 숨겨집니다</string>
<string name="revanced_hide_player_flyout_sleep_timer_summary_off">취침 타이머 메뉴가 표시됩니다</string>
<!-- 'Loop video' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_loop_video_title">동영상 연속 재생 메뉴 숨기기</string>
<string name="revanced_hide_player_flyout_loop_video_title">동영상 연속 재생 숨기기</string>
<string name="revanced_hide_player_flyout_loop_video_summary_on">동영상 연속 재생 메뉴가 숨겨집니다</string>
<string name="revanced_hide_player_flyout_loop_video_summary_off">동영상 연속 재생 메뉴가 표시됩니다</string>
<!-- 'Ambient mode' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_ambient_mode_title">앰비언트 모드 메뉴 숨기기</string>
<string name="revanced_hide_player_flyout_ambient_mode_title">앰비언트 모드 숨기기</string>
<string name="revanced_hide_player_flyout_ambient_mode_summary_on">앰비언트 모드 메뉴가 숨겨집니다</string>
<string name="revanced_hide_player_flyout_ambient_mode_summary_off">앰비언트 모드 메뉴가 표시됩니다</string>
<string name="revanced_hide_player_flyout_stable_volume_title">안정적인 볼륨 메뉴 숨기기</string>
<string name="revanced_hide_player_flyout_stable_volume_title">안정적인 볼륨 숨기기</string>
<string name="revanced_hide_player_flyout_stable_volume_summary_off">안정적인 볼륨 메뉴가 표시됩니다</string>
<string name="revanced_hide_player_flyout_stable_volume_summary_on">안정적인 볼륨 메뉴가 숨겨집니다</string>
<!-- 'Help & feedback' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_help_title">고객센터 메뉴 숨기기</string>
<string name="revanced_hide_player_flyout_help_title">고객센터 숨기기</string>
<string name="revanced_hide_player_flyout_help_summary_on">고객센터 메뉴가 숨겨집니다</string>
<string name="revanced_hide_player_flyout_help_summary_off">고객센터 메뉴가 표시됩니다</string>
<!-- 'Playback speed' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_speed_title">재생 속도 메뉴 숨기기</string>
<string name="revanced_hide_player_flyout_speed_title">재생 속도 숨기기</string>
<string name="revanced_hide_player_flyout_speed_summary_on">재생 속도 메뉴가 숨겨집니다</string>
<string name="revanced_hide_player_flyout_speed_summary_off">재생 속도 메뉴가 표시됩니다</string>
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_lock_screen_title">잠금 화면 메뉴 숨기기</string>
<string name="revanced_hide_player_flyout_lock_screen_title">잠금 화면 숨기기</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_on">잠금 화면 메뉴가 숨겨집니다</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_off">잠금 화면 메뉴가 표시됩니다</string>
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_listen_with_youtube_music_title">YouTube Music으로 음악 감상 메뉴 숨기기</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_title">YouTube Music으로 음악 감상 숨기기</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_on">YouTube Music으로 음악 감상 메뉴가 숨겨집니다</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_off">YouTube Music으로 음악 감상 메뉴가 표시됩니다</string>
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_audio_track_title">오디오 트랙 메뉴 숨기기</string>
<string name="revanced_hide_player_flyout_audio_track_title">오디오 트랙 숨기기</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">오디오 트랙 메뉴가 숨겨집니다</string>
<string name="revanced_hide_player_flyout_audio_track_summary_off">오디오 트랙 메뉴가 표시됩니다</string>
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
@@ -790,13 +799,13 @@ YouTube Premium 사용자라면 이 설정은 필요하지 않을 수 있습니
오디오 트랙 메뉴를 표시하려면, '동영상 스트림 변경하기'에서 기본 클라이언트를 iPadOS로 변경하세요"</string>
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_watch_in_vr_title">VR로 보기 메뉴 숨기기</string>
<string name="revanced_hide_player_flyout_watch_in_vr_title">VR로 보기 숨기기</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">VR로 보기 메뉴가 숨겨집니다</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_off">VR로 보기 메뉴가 표시됩니다</string>
<string name="revanced_hide_player_flyout_video_quality_title">동영상 화질 메뉴 숨기기</string>
<string name="revanced_hide_player_flyout_video_quality_summary_on">동영상 화질 메뉴가 숨겨집니다</string>
<string name="revanced_hide_player_flyout_video_quality_summary_off">동영상 화질 메뉴가 표시됩니다</string>
<string name="revanced_hide_player_flyout_video_quality_footer_title">화질 설정 메뉴에서 하단 설명 숨기기</string>
<string name="revanced_hide_player_flyout_video_quality_footer_title">동영상 화질 메뉴에서 하단 설명 숨기기</string>
<string name="revanced_hide_player_flyout_video_quality_footer_summary_on">화질 설정 메뉴에서 하단 설명이 숨겨집니다</string>
<string name="revanced_hide_player_flyout_video_quality_footer_summary_off">화질 설정 메뉴에서 하단 설명이 표시됩니다</string>
</patch>
@@ -851,14 +860,14 @@ YouTube Premium 사용자라면 이 설정은 필요하지 않을 수 있습니
<string name="revanced_shorts_player_screen_title">Shorts 플레이어</string>
<string name="revanced_shorts_player_screen_summary">Shorts 플레이어에서 구성요소를 숨기거나 표시할 수 있습니다</string>
<!-- 'Home' should be translated using the same localized wording YouTube displays for the Home tab. -->
<string name="revanced_hide_shorts_home_title">홈 피드에서 Shorts 선반 숨기기</string>
<string name="revanced_hide_shorts_home_title">홈 피드에서 Shorts 숨기기</string>
<string name="revanced_hide_shorts_home_summary_on">홈 피드 및 관련 동영상에서 숨겨집니다</string>
<string name="revanced_hide_shorts_home_summary_off">홈 피드 및 관련 동영상에서 표시됩니다</string>
<string name="revanced_hide_shorts_search_title">검색 결과에서 Shorts 선반 숨기기</string>
<string name="revanced_hide_shorts_search_title">검색 결과에서 Shorts 숨기기</string>
<string name="revanced_hide_shorts_search_summary_on">검색 결과에서 숨겨집니다</string>
<string name="revanced_hide_shorts_search_summary_off">검색 결과에서 표시됩니다</string>
<!-- 'Subscriptions' should be translated using the same localized wording YouTube displays for the Subscriptions tab. -->
<string name="revanced_hide_shorts_subscriptions_title">구독 피드에서 Shorts 선반 숨기기</string>
<string name="revanced_hide_shorts_subscriptions_title">구독 피드에서 Shorts 숨기기</string>
<string name="revanced_hide_shorts_subscriptions_summary_on">구독 피드에서 숨겨집니다</string>
<string name="revanced_hide_shorts_subscriptions_summary_off">구독 피드에서 표시됩니다</string>
<string name="revanced_hide_shorts_history_title">시청 기록에서 Shorts 숨기기</string>
@@ -962,12 +971,12 @@ YouTube Premium 사용자라면 이 설정은 필요하지 않을 수 있습니
<string name="revanced_hide_shorts_navigation_bar_summary_off">하단바가 표시됩니다</string>
</patch>
<patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
<string name="revanced_end_screen_suggested_video_title">최종 화면 다음 재생 추천 동영상 숨기기</string>
<string name="revanced_end_screen_suggested_video_summary_on">"자동재생이 꺼져 있을 경우에 최종 화면에서 다음 재생 추천 동영상이 숨겨집니다
<string name="revanced_end_screen_suggested_video_title">최종 화면 추천 동영상 숨기기</string>
<string name="revanced_end_screen_suggested_video_summary_on">"자동재생이 꺼져 있을 경우에 최종 화면에서 추천 동영상이 숨겨집니다
자동재생은 YouTube 설정에서 변경할 수 있습니다:
설정 → 재생 → 다음 동영상 자동재생"</string>
<string name="revanced_end_screen_suggested_video_summary_off">최종 화면에서 다음 재생 추천 동영상이 표시됩니다</string>
<string name="revanced_end_screen_suggested_video_summary_off">최종 화면에서 추천 동영상이 표시됩니다</string>
</patch>
<patch id="layout.hide.relatedvideooverlay.hideRelatedVideoOverlayPatch">
<string name="revanced_hide_related_videos_overlay_title">관련 동영상 오버레이 숨기기</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">APK sukurties data yra sugadinta</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Įspėjimas</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">ReVanced pranešimas</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Jūsų žiūrėjimo istorija nėra išsaugoma.&lt;br&gt;&lt;br&gt;Tikėtina, kad tai sukelia DNS skelbimų blokatorius arba tinklo tarpinis serveris.&lt;br&gt;&lt;br&gt;Norėdami išspręsti šią problemą, įtraukite į baltąjį sąrašą &lt;b&gt;s.youtube.com&lt;/b&gt; arba išjunkite visus DNS blokatorius ir tarpinį serverį.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Nerodyti daugiau</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Nustatymai</string>
<string name="revanced_settings_confirm_user_dialog_title">Ar tikrai norite tęsti?</string>
<string name="revanced_settings_save">Išsaugoti</string>
<string name="revanced_settings_reset">Atstatyti</string>
<string name="revanced_settings_reset_color">Atkurti spalvą</string>
<string name="revanced_settings_color_invalid">Neteisinga spalva</string>
@@ -164,6 +165,14 @@ Apie netikėtus įvykius nebus pranešta."</string>
<string name="revanced_debug_logs_clear_buffer_title">Išvalyti derinimo žurnalus</string>
<string name="revanced_debug_logs_clear_buffer_summary">Išvalo visus išsaugotus „ReVanced“ derinimo žurnalus</string>
<string name="revanced_debug_logs_clear_toast">Žurnalai išvalyti</string>
<string name="revanced_debug_feature_flags_manager_title">Funkcijų žymių Manager</string>
<string name="revanced_debug_feature_flags_manager_summary">Tvarkyti logines funkcijų žymes</string>
<string name="revanced_debug_feature_flags_manager_active_header">Aktyviosios vėliavėlės (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Užblokuotos vėliavėlės (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Ieškoti vėliavėlių...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Vėliavėlės išsaugotos</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Vėliavėlės nustatytos iš naujo</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Vėliavėlės nukopijuotos į iškarpinę</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Nuvalyti bendrinimo nuorodas</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">APK veidošanas datums ir bojāts</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Brīdinājums</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">ReVanced paziņojums</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Jūsu skatīšanās vēsture netiek saglabāta.&lt;br&gt;&lt;br&gt;Visticamāk, to izraisa DNS reklāmu bloķētājs vai tīkla starpniekserveris.&lt;br&gt;&lt;br&gt;Lai to novērstu, pievienojiet baltajam sarakstam &lt;b&gt;s.youtube.com&lt;/b&gt; vai izslēdziet visus DNS bloķētājus un starpniekservera serverus.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Nerādīt vēlreiz</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Iestatījumi</string>
<string name="revanced_settings_confirm_user_dialog_title">Vai tiešām vēlaties turpināt?</string>
<string name="revanced_settings_save">Saglabāt</string>
<string name="revanced_settings_reset">Atiestatīt</string>
<string name="revanced_settings_reset_color">Atiestatīt krāsu</string>
<string name="revanced_settings_color_invalid">Nederīga krāsa</string>
@@ -164,6 +165,14 @@ Jūs netiksit informēts par neparedzētiem notikumiem."</string>
<string name="revanced_debug_logs_clear_buffer_title">Notīrīt atkļūdošanas žurnālus</string>
<string name="revanced_debug_logs_clear_buffer_summary">Notīra visus saglabātos ReVanced atkļūdošanas žurnālus</string>
<string name="revanced_debug_logs_clear_toast">Žurnāli ir notīrīti</string>
<string name="revanced_debug_feature_flags_manager_title">Funkciju karodziņu Manager</string>
<string name="revanced_debug_feature_flags_manager_summary">Pārvaldīt Būla funkciju karodziņus</string>
<string name="revanced_debug_feature_flags_manager_active_header">Aktīvie karodziņi (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Bloķētie karodziņi (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Meklēt karodziņus...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Karodziņi saglabāti</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Karodziņi atiestatīti</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Karodziņi kopēti starpliktuvē</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Tīrīt koplietošanas saites</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">APK-bouwdatum is beschadigd</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Waarschuwing</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">ReVanced Melding</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Uw kijkgeschiedenis wordt niet opgeslagen.&lt;br&gt;&lt;br&gt;Dit wordt hoogstwaarschijnlijk veroorzaakt door een DNS-adblocker of netwerkproxy.&lt;br&gt;&lt;br&gt;Om dit te verhelpen, voegt u &lt;b&gt;s.youtube.com&lt;/b&gt; toe aan de witte lijst of schakelt u alle DNS-blokkers en proxies uit.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Niet meer weergeven</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Instellingen</string>
<string name="revanced_settings_confirm_user_dialog_title">Weet je zeker dat je door wilt gaan?</string>
<string name="revanced_settings_save">Opslaan</string>
<string name="revanced_settings_reset">Terugzetten</string>
<string name="revanced_settings_reset_color">Kleur opnieuw instellen</string>
<string name="revanced_settings_color_invalid">Ongeldige kleur</string>
@@ -164,6 +165,14 @@ U wordt niet op de hoogte gesteld van onverwachte gebeurtenissen."</string>
<string name="revanced_debug_logs_clear_buffer_title">Foutopsporingslogboeken wissen</string>
<string name="revanced_debug_logs_clear_buffer_summary">Wist alle opgeslagen ReVanced-foutopsporingslogboeken</string>
<string name="revanced_debug_logs_clear_toast">Logboeken gewist</string>
<string name="revanced_debug_feature_flags_manager_title">Functievlaggen Manager</string>
<string name="revanced_debug_feature_flags_manager_summary">Beheer booleaanse functievlaggen</string>
<string name="revanced_debug_feature_flags_manager_active_header">Actieve vlaggen (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Geblokkeerde vlaggen (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Vlaggen zoeken...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Vlaggen opgeslagen</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Vlaggen gereset</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Vlaggen gekopieerd naar klembord</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Deelbare links opschonen</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">Data kompilacji APK jest uszkodzona</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Ostrzeżenie</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">Powiadomienie ReVanced</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Twoja historia oglądania nie jest zapisywana.&lt;br&gt;&lt;br&gt;Najprawdopodobniej jest to spowodowane blokadą reklam DNS lub serwer proxy.&lt;br&gt;&lt;br&gt;Aby to naprawić, dodaj do białej listy&lt;b&gt;s.youtube.com&lt;/b&gt; lub wyłącz wszystkie blokady DNS i proxy.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Nie pokazuj ponownie</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Ustawienia</string>
<string name="revanced_settings_confirm_user_dialog_title">Czy na pewno chcesz kontynuować?</string>
<string name="revanced_settings_save">Zapisz</string>
<string name="revanced_settings_reset">Zresetuj</string>
<string name="revanced_settings_reset_color">Zresetuj kolor</string>
<string name="revanced_settings_color_invalid">Nieprawidłowy kolor</string>
@@ -164,6 +165,14 @@ Nie będziesz informowany o żadnych nieoczekiwanych zdarzeniach."</string>
<string name="revanced_debug_logs_clear_buffer_title">Wyczyść dzienniki debugowania</string>
<string name="revanced_debug_logs_clear_buffer_summary">Czyści wszystkie zapisane dzienniki debugowania ReVanced</string>
<string name="revanced_debug_logs_clear_toast">Dzienniki wyczyszczone</string>
<string name="revanced_debug_feature_flags_manager_title">Manager flag funkcji</string>
<string name="revanced_debug_feature_flags_manager_summary">Zarządzaj flagami funkcji typu boolean</string>
<string name="revanced_debug_feature_flags_manager_active_header">Aktywne flagi (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Zablokowane flagi (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Szukaj flag...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Flagi zapisane</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Flagi zresetowane</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Flagi skopiowane do schowka</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Oczyść linki udostępniania</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">Data de compilação do APK está corrompida</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Atenção</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">Aviso do ReVanced</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Seu histórico de exibição não está sendo salvo.&lt;br&gt;&lt;br&gt;Na maioria dos casos isso é causado por um bloqueador de anúncios por DNS ou proxy de rede.&lt;br&gt;&lt;br&gt;Para corrigir isso, permita &lt;b&gt;s.youtube.com&lt;/b&gt; na sua lista ou desative todos os bloqueadores de DNS e proxies.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Não exibir novamente</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Configurações</string>
<string name="revanced_settings_confirm_user_dialog_title">Tem certeza de que deseja continuar?</string>
<string name="revanced_settings_save">Salvar</string>
<string name="revanced_settings_reset">Resetar</string>
<string name="revanced_settings_reset_color">Redefinir cor</string>
<string name="revanced_settings_color_invalid">Cor inválida</string>
@@ -164,6 +165,14 @@ Você não será notificado sobre nenhum evento inesperado."</string>
<string name="revanced_debug_logs_clear_buffer_title">Limpar registros de depuração</string>
<string name="revanced_debug_logs_clear_buffer_summary">Limpa todos os registros de depuração do ReVanced armazenados</string>
<string name="revanced_debug_logs_clear_toast">Registros limpos</string>
<string name="revanced_debug_feature_flags_manager_title">Gerenciador de sinalizadores de recursos</string>
<string name="revanced_debug_feature_flags_manager_summary">Gerenciar sinalizadores de recursos booleanos</string>
<string name="revanced_debug_feature_flags_manager_active_header">Flags ativas (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Flags bloqueadas (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Pesquisar flags...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Flags salvas</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Flags redefinidas</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Flags copiadas para a área de transferência</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Higienizar links de compartilhamento</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">A data da compilação da APK está corrompida</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Atenção</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">Aviso do ReVanced</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">O teu histórico de visualização não está a ser guardado.&lt;br&gt;&lt;br&gt;Isto é mais provávelmente causado por um bloqueador de anúncios DNS ou proxy de rede.&lt;br&gt;&lt;br&gt;Para reparar isto, adiciona às exceções &lt;b&gt;s.youtube.com&lt;/b&gt; ou desativa todos os bloqueadores DNS e proxies.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Não mostrar novamente</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Configurações</string>
<string name="revanced_settings_confirm_user_dialog_title">Tem certeza de que deseja prosseguir?</string>
<string name="revanced_settings_save">Salvar</string>
<string name="revanced_settings_reset">Repor</string>
<string name="revanced_settings_reset_color">Redefinir cor</string>
<string name="revanced_settings_color_invalid">Cor inválida</string>
@@ -164,6 +165,14 @@ Não será notificado de quaisquer eventos inesperados."</string>
<string name="revanced_debug_logs_clear_buffer_title">Limpar registos de depuração</string>
<string name="revanced_debug_logs_clear_buffer_summary">Limpa todos os registos de depuração do ReVanced armazenados</string>
<string name="revanced_debug_logs_clear_toast">Registos limpos</string>
<string name="revanced_debug_feature_flags_manager_title">Manager de sinalizadores de recurso</string>
<string name="revanced_debug_feature_flags_manager_summary">Gerenciar sinalizadores de recurso booleanos</string>
<string name="revanced_debug_feature_flags_manager_active_header">Sinalizadores ativos (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Sinalizadores bloqueados (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Pesquisar sinalizadores...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Sinalizadores salvos</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Sinalizadores redefinidos</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Sinalizadores copiados para a área de transferência</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Sanitizar links de partilha</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">Data construirii APK-ului este coruptă</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Atenție</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">Notificare ReVanced</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Istoricul de vizionare nu este salvat.&lt;br&gt;&lt;br&gt;Cel mai probabil este cauzată de un DNS de blocare a anunțurilor sau de un proxy de rețea.&lt;br&gt;&lt;br&gt;Pentru a remedia acest lucru, lista albă &lt;b&gt;s.youtube.com&lt;/b&gt; sau pentru a opri toate blocantele DNS și proxy-urile.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Nu mai afișa</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Setări</string>
<string name="revanced_settings_confirm_user_dialog_title">Sigur doriți să continuați?</string>
<string name="revanced_settings_save">Salvați</string>
<string name="revanced_settings_reset">Resetare</string>
<string name="revanced_settings_reset_color">Resetează culoarea</string>
<string name="revanced_settings_color_invalid">Culoare nevalidă</string>
@@ -164,6 +165,14 @@ Nu veți fi notificat de niciun eveniment neașteptat."</string>
<string name="revanced_debug_logs_clear_buffer_title">Șterge jurnalele de depanare</string>
<string name="revanced_debug_logs_clear_buffer_summary">Șterge toate jurnalele de depanare ReVanced stocate</string>
<string name="revanced_debug_logs_clear_toast">Jurnale șterse</string>
<string name="revanced_debug_feature_flags_manager_title">Manager de funcții</string>
<string name="revanced_debug_feature_flags_manager_summary">Gestionați funcțiile booleene</string>
<string name="revanced_debug_feature_flags_manager_active_header">Steaguri active (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Steaguri blocate (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Căutați steaguri...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Steaguri salvate</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Steaguri resetate</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Steaguri copiate în clipboard</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Igienizează linkurile de partajare</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">Дата сборки APK повреждена</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Внимание</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">Уведомление ReVanced</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Ваша история просмотра не сохраняется.&lt;br&gt;&lt;br&gt;Вероятнее всего это вызвано DNS блокировщиком рекламы или сетевым прокси.&lt;br&gt;&lt;br&gt;Чтобы это исправить, добавьте &lt;b&gt;s.youtube.com&lt;/b&gt; в белый список блокировщика рекламы или отключите все блокировщики DNS и прокси.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Не показывать снова</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Настройки</string>
<string name="revanced_settings_confirm_user_dialog_title">Вы уверены, что хотите продолжить?</string>
<string name="revanced_settings_save">Сохранить</string>
<string name="revanced_settings_reset">Сбросить</string>
<string name="revanced_settings_reset_color">Сбросить цвет</string>
<string name="revanced_settings_color_invalid">Неверный цвет</string>
@@ -164,6 +165,14 @@ Second \"item\" text"</string>
<string name="revanced_debug_logs_clear_buffer_title">Очистить журналы отладки</string>
<string name="revanced_debug_logs_clear_buffer_summary">Очищает все сохраненные журналы отладки ReVanced</string>
<string name="revanced_debug_logs_clear_toast">Журналы очищены</string>
<string name="revanced_debug_feature_flags_manager_title">Флаги функций Manager</string>
<string name="revanced_debug_feature_flags_manager_summary">Управление логическими флагами функций</string>
<string name="revanced_debug_feature_flags_manager_active_header">Активные флаги (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Заблокированные флаги (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Поиск флагов...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Флаги сохранены</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Флаги сброшены</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Флаги скопированы в буфер обмена</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Очищать ссылки для обмена</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">Dátum zostavenia APK je poškodený</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Upozornenie</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">Upozornenie ReVanced</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Vaša história pozeraného sa neuchováva.&lt;br&gt;&lt;br&gt;Toto je pravdepodobne spôsobené blokovaním reklám pomocou DNS alebo sieťového proxy.&lt;br&gt;&lt;br&gt;Pre vyriešenie tohto problému povoľte &lt;b&gt;s.youtube.com&lt;/b&gt; alebo vypnite všetky blokátory reklám pomocou DNS a proxy.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Neukazuj znovu</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Nastavenia</string>
<string name="revanced_settings_confirm_user_dialog_title">Naozaj chcete pokračovať?</string>
<string name="revanced_settings_save">Uložiť</string>
<string name="revanced_settings_reset">Resetovať</string>
<string name="revanced_settings_reset_color">Obnovi farbu</string>
<string name="revanced_settings_color_invalid">Neplatn farba</string>
@@ -162,6 +163,14 @@ Nebudete informovaní o žiadnych nepredvídaných udalostiach."</string>
<string name="revanced_debug_logs_clear_buffer_title">Vymazať protokoly ladenia</string>
<string name="revanced_debug_logs_clear_buffer_summary">Vymaže všetky uložené protokoly ladenia ReVanced</string>
<string name="revanced_debug_logs_clear_toast">Protokoly vymazané</string>
<string name="revanced_debug_feature_flags_manager_title">Manager príznakov funkcií</string>
<string name="revanced_debug_feature_flags_manager_summary">Spravovať booleovské príznaky funkcií</string>
<string name="revanced_debug_feature_flags_manager_active_header">Aktívne príznaky (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Blokované príznaky (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Hľadať príznaky...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Príznaky uložené</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Príznaky resetované</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Príznaky skopírované do schránky</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Vyčistiť odkazy na zdieľanie</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">Datum izgradnje APK je poškodovan</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Opozorilo</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">Obvestilo ReVanced</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Vaš zgodovine gledanja se ne shranjuje.&lt;br&gt;&lt;br&gt;To najverjetneje povzroči DNS blokiralnik oglasov ali omrežni posrednik.&lt;br&gt;&lt;br&gt;Za odpravo težave dodajte na beli seznam &lt;b&gt;s.youtube.com&lt;/b&gt; ali izklopite vse blokiralnike oglasov DNS in posrednike.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Ne prikazuj več</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Nastavitve</string>
<string name="revanced_settings_confirm_user_dialog_title">Ali ste prepričani, da želite nadaljevati?</string>
<string name="revanced_settings_save">Shrani</string>
<string name="revanced_settings_reset">Ponastavi</string>
<string name="revanced_settings_reset_color">Ponastavi barvo</string>
<string name="revanced_settings_color_invalid">Neveljavna barva</string>
@@ -164,6 +165,14 @@ Ne boste obveščeni o nobenih nepričakovanih dogodkih."</string>
<string name="revanced_debug_logs_clear_buffer_title">Počisti dnevnike napak</string>
<string name="revanced_debug_logs_clear_buffer_summary">Počisti vse shranjene dnevnike napak ReVanced</string>
<string name="revanced_debug_logs_clear_toast">Dnevniki so bili izbrisani</string>
<string name="revanced_debug_feature_flags_manager_title">Zastavice funkcij Manager</string>
<string name="revanced_debug_feature_flags_manager_summary">Upravljanje logičnih zastavic funkcij</string>
<string name="revanced_debug_feature_flags_manager_active_header">Aktivne zastavice (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Blokirane zastavice (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Iskanje zastavic...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Zastavice shranjene</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Zastavice ponastavljene</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Zastavice kopirane v odložišče</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Sanitiziraj povezave za deljenje</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">Data e ndërtimit të APK është e korruptuar</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Kujdes</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">Njoftim ReVanced</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Historia juaj e shikimit nuk po ruhet.&lt;br&gt;&lt;br&gt;Kjo me shumë mundësi shkaktohet nga një bllokues DNS reklamash ose një prokuri rrjeti.&lt;br&gt;&lt;br&gt;Për të zgjidhur këtë, shto në listën e bardhë &lt;b&gt;s.youtube.com&lt;/b&gt; ose çaktivizo të gjithë bllokuesit DNS dhe prokuritë.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Mos shfaq përsëri</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Cilësimet</string>
<string name="revanced_settings_confirm_user_dialog_title">A jeni i sigurt që dëshironi të vazhdoni?</string>
<string name="revanced_settings_save">Ruaj</string>
<string name="revanced_settings_reset">Rivendos</string>
<string name="revanced_settings_reset_color">Rikthe ngjyrën</string>
<string name="revanced_settings_color_invalid">Ngjyrë e pavlefshme</string>
@@ -164,6 +165,14 @@ Ju nuk do të njoftoheni për ndonjë ngjarje të papritur."</string>
<string name="revanced_debug_logs_clear_buffer_title">Pastro regjistrat e korrigjimit</string>
<string name="revanced_debug_logs_clear_buffer_summary">Pastro të gjithë regjistrat e ruajtur të korrigjimit të ReVanced</string>
<string name="revanced_debug_logs_clear_toast">Regjistrat u pastruan</string>
<string name="revanced_debug_feature_flags_manager_title">Manager i sinjaleve të veçorive</string>
<string name="revanced_debug_feature_flags_manager_summary">Menaxhoni sinjalet boolean të veçorive</string>
<string name="revanced_debug_feature_flags_manager_active_header">Flamuj aktivë (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Flamuj të bllokuar (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Kërko flamuj...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Flamujt u ruajtën</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Flamujt u rivendosën</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Flamujt u kopjuan në kujtesën e punës</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Pastro lidhjet e ndarjes</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">Datum izrade APK-a je oštećen</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Upozorenje</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">ReVanced obaveštenje</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Vaša istorija gledanja se ne čuva.&lt;br&gt;&lt;br&gt;Ovo je najverovatnije uzrokovano DNS blokatorom oglasa ili mrežnim proksijem.&lt;br&gt;&lt;br&gt;Da biste ovo popravili, stavite na belu listu &lt;b&gt;s.youtube.com&lt;/b&gt; ili isključite sve DNS blokatore i proksije.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Ne prikazuj ponovo</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Podešavanja</string>
<string name="revanced_settings_confirm_user_dialog_title">Želite li zaista da nastavite?</string>
<string name="revanced_settings_save">Sačuvaj</string>
<string name="revanced_settings_reset">Resetuj</string>
<string name="revanced_settings_reset_color">Resetuj boju</string>
<string name="revanced_settings_color_invalid">Nevažeća boja</string>
@@ -164,6 +165,14 @@ Nećete biti obavešteni ni o kakvim neočekivanim događajima."</string>
<string name="revanced_debug_logs_clear_buffer_title">Izbriši evidencije otklanjanja grešaka</string>
<string name="revanced_debug_logs_clear_buffer_summary">Briše sve sačuvane evidencije otklanjanja grešaka ReVanceda</string>
<string name="revanced_debug_logs_clear_toast">Evidencije su izbrisane</string>
<string name="revanced_debug_feature_flags_manager_title">Feature flags Manager</string>
<string name="revanced_debug_feature_flags_manager_summary">Upravljajte bulovim zastavicama funkcija</string>
<string name="revanced_debug_feature_flags_manager_active_header">Aktivne zastavice (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Blokirane zastavice (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Pretraži zastavice...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Zastavice sačuvane</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Zastavice resetovane</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Zastavice kopirane u međumemoriju</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Očisti deljene linkove</string>
@@ -328,9 +337,9 @@ Ako se Doodle trenutno prikazuje u vašem regionu i ova opcija skrivanja je uklj
<string name="revanced_hide_how_this_was_made_section_title">Sakrij odeljak „Kako je napravljen ovaj sadržaj”</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">Odeljak „Kako je napravljen ovaj sadržaj” je skriven</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">Odeljak „Kako je napravljen ovaj sadržaj” je prikazan</string>
<string name="revanced_hide_hype_points_title">Sakrij Hype poene</string>
<string name="revanced_hide_hype_points_summary_on">Hype poeni su skriveni</string>
<string name="revanced_hide_hype_points_summary_off">Hype poeni su prikazani</string>
<string name="revanced_hide_hype_points_title">Sakrij hajp poene</string>
<string name="revanced_hide_hype_points_summary_on">Hajp poeni su skriveni</string>
<string name="revanced_hide_hype_points_summary_off">Hajp poeni su prikazani</string>
<string name="revanced_hide_podcast_section_title">Sakrij odeljak „Istražite podkast”</string>
<string name="revanced_hide_podcast_section_summary_on">Odeljak „Istražite podkast” je skriven</string>
<string name="revanced_hide_podcast_section_summary_off">Odeljak „Istražite podkast” je prikazan</string>
@@ -779,9 +788,9 @@ Ako se promena ove opcije ne primeni, pokušajte da pređete u režim bez arhivi
<string name="revanced_hide_player_flyout_lock_screen_summary_on">Dugme „Zaključaj ekran” je skriveno</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_off">Dugme „Zaključaj ekran” je prikazano</string>
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_listen_with_youtube_music_title">Sakrij Slušaj uz YouTube Music</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_on">Meni Slušaj uz YouTube Music je sakriven</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_off">Meni Slušaj uz YouTube Music je prikazan</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_title">Sakrij meni „Slušajte na YouTube Musicu”</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_on">Meni Slušajte na YouTube Musicu” je skriven</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_off">Meni Slušajte na YouTube Musicu” je prikazan</string>
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_audio_track_title">Sakrij meni „Audio snimak”</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">Meni „Audio snimak” je skriven</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">Датум израде APK-а је оштећен</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Упозорење</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">ReVanced обавештење</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Ваша историја гледања се не чува.&lt;br&gt;&lt;br&gt;Ово је највероватније узроковано DNS блокатором огласа или мрежним проксијем.&lt;br&gt;&lt;br&gt;Да бисте ово поправили, ставите на белу листу &lt;b&gt;s.youtube.com&lt;/b&gt; или искључите све DNS блокаторе и проксије.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Не приказуј поново</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Подешавања</string>
<string name="revanced_settings_confirm_user_dialog_title">Желите ли заиста да наставите?</string>
<string name="revanced_settings_save">Сачувај</string>
<string name="revanced_settings_reset">Ресетуј</string>
<string name="revanced_settings_reset_color">Ресетуј боју</string>
<string name="revanced_settings_color_invalid">Неважећа боја</string>
@@ -164,6 +165,14 @@ Second \"item\" text"</string>
<string name="revanced_debug_logs_clear_buffer_title">Избриши евиденције отклањања грешака</string>
<string name="revanced_debug_logs_clear_buffer_summary">Брише све сачуване евиденције отклањања грешака ReVanced-а</string>
<string name="revanced_debug_logs_clear_toast">Евиденције су избрисане</string>
<string name="revanced_debug_feature_flags_manager_title">Manager ознака функција</string>
<string name="revanced_debug_feature_flags_manager_summary">Управљај буловским ознакама функција</string>
<string name="revanced_debug_feature_flags_manager_active_header">Активне заставице (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Блокиране заставице (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Претражи заставице...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Заставице сачуване</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Заставице ресетоване</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Заставице копиране у оставу</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Очисти дељене линкове</string>
@@ -328,7 +337,7 @@ Second \"item\" text"</string>
<string name="revanced_hide_how_this_was_made_section_title">Сакриј одељак „Како је направљен овај садржај”</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">Одељак „Како је направљен овај садржај” је скривен</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">Одељак „Како је направљен овај садржај” је приказан</string>
<string name="revanced_hide_hype_points_title">Сакриј Хајп поене</string>
<string name="revanced_hide_hype_points_title">Сакриј хајп поене</string>
<string name="revanced_hide_hype_points_summary_on">Хајп поени су скривени</string>
<string name="revanced_hide_hype_points_summary_off">Хајп поени су приказани</string>
<string name="revanced_hide_podcast_section_title">Сакриј одељак „Истражите подкаст”</string>
@@ -779,9 +788,9 @@ Second \"item\" text"</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_on">Дугме „Закључај екран” је скривено</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_off">Дугме „Закључај екран” је приказано</string>
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_listen_with_youtube_music_title">Сакриј „Слушај помоћу YouTube музике“</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_on">Мени „Слушај помоћу YouTube музике“ је скривен</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_off">Мени „Слушај помоћу YouTube музике“ је приказан</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_title">Сакриј мени „Слушајте на YouTube Music-у”</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_on">Мени „Слушајте на YouTube Music-у” је скривен</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_off">Мени „Слушајте на YouTube Music-у” је приказан</string>
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_audio_track_title">Сакриј мени „Аудио снимак”</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">Мени „Аудио снимак” је скривен</string>

View File

@@ -26,7 +26,7 @@ Second \"item\" text"</string>
<!-- Translations of this should be identical to revanced_custom_branding_icon_entry_5 -->
<string name="revanced_custom_branding_name_entry_5">Anpassad</string>
<string name="revanced_custom_branding_icon_title">Appikon</string>
<string name="revanced_custom_branding_icon_entry_1">Original</string>
<string name="revanced_custom_branding_icon_entry_1">Ursprunglig</string>
<!-- Translation of this should be identical to revanced_header_logo_entry_5 -->
<string name="revanced_custom_branding_icon_entry_3">ReVanced minimalistisk</string>
<string name="revanced_custom_branding_icon_entry_4">ReVanced skalad</string>
@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">Byggdatum för APK är skadat</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Varning</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">ReVanced-meddelande</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Din visningshistorik sparas inte.&lt;br&gt;&lt;br&gt;Detta orsakas troligen av en DNS-annonsblockerare eller nätverksproxy.&lt;br&gt;&lt;br&gt;För att åtgärda detta, vitlista &lt;b&gt;s.youtube.com&lt;/b&gt; eller stäng av alla DNS-blockerare och proxyer.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Visa inte igen</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Inställningar</string>
<string name="revanced_settings_confirm_user_dialog_title">Är du säker på att du vill fortsätta?</string>
<string name="revanced_settings_save">Spara</string>
<string name="revanced_settings_reset">Återställ</string>
<string name="revanced_settings_reset_color">Återställ färg</string>
<string name="revanced_settings_color_invalid">Ogiltig färg</string>
@@ -164,6 +165,14 @@ Du kommer inte att bli meddelad om oväntade händelser."</string>
<string name="revanced_debug_logs_clear_buffer_title">Rensa felsökningsloggar</string>
<string name="revanced_debug_logs_clear_buffer_summary">Rensar alla lagrade ReVanced-felsökningsloggar</string>
<string name="revanced_debug_logs_clear_toast">Loggar rensade</string>
<string name="revanced_debug_feature_flags_manager_title">Funktionsflaggor Manager</string>
<string name="revanced_debug_feature_flags_manager_summary">Hantera booleska funktionsflaggor</string>
<string name="revanced_debug_feature_flags_manager_active_header">Aktiva flaggor (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Blockerade flaggor (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Sök efter flaggor...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Flaggor sparade</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Flaggor återställda</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Flaggor kopierade till urklipp</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Rensa delningslänkar</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">วันที่สร้าง APK เสียหาย</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">คำเตือน</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">ประกาศ ReVanced</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">ประวัติการรับชมของคุณไม่ได้ถูกบันทึก&lt;br&gt;&lt;br&gt;สาเหตุที่เป็นไปได้มากที่สุดคือตัวบล็อกโฆษณา DNS หรือพร็อกซีเครือข่าย&lt;br&gt;&lt;br&gt;เพื่อแก้ไขปัญหานี้ ให้เพิ่ม &lt;b&gt;s.youtube.com&lt;/b&gt; ในรายการที่อนุญาต หรือปิดตัวบล็อกโฆษณา DNS และพร็อกซีทั้งหมด</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">อย่าแสดงอีก</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">การตั้งค่า</string>
<string name="revanced_settings_confirm_user_dialog_title">คุณแน่ใจหรือไม่ว่าต้องการดำเนินการต่อ</string>
<string name="revanced_settings_save">บันทึก</string>
<string name="revanced_settings_reset">รีเซ็ต</string>
<string name="revanced_settings_reset_color">รีเซ็ตสี</string>
<string name="revanced_settings_color_invalid">สีไม่ถูกต้อง</string>
@@ -164,6 +165,14 @@ Second \"item\" text"</string>
<string name="revanced_debug_logs_clear_buffer_title">ล้างบันทึกการแก้ไขข้อบกพร่อง</string>
<string name="revanced_debug_logs_clear_buffer_summary">ล้างบันทึกการแก้ไขข้อบกพร่องของ ReVanced ที่จัดเก็บไว้ทั้งหมด</string>
<string name="revanced_debug_logs_clear_toast">ล้างบันทึกแล้ว</string>
<string name="revanced_debug_feature_flags_manager_title">แฟล็กคุณสมบัติ Manager</string>
<string name="revanced_debug_feature_flags_manager_summary">จัดการแฟล็กคุณสมบัติบูลีน</string>
<string name="revanced_debug_feature_flags_manager_active_header">แฟล็กที่ใช้งานอยู่ (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">แฟล็กที่ถูกบล็อก (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">ค้นหาแฟล็ก...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">บันทึกแฟล็กแล้ว</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">รีเซ็ตแฟล็กแล้ว</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">คัดลอกแฟล็กไปยังคลิปบอร์ดแล้ว</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">ล้างข้อมูลลิงก์ที่แชร์</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">APK derleme tarihi bozuk</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Uyarı</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">ReVanced Bildirimi</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">İzleme geçmişiniz kaydedilmiyor.&lt;br&gt;&lt;br&gt;Bu büyük ihtimalle bir reklam engelleyici DNS\'den veya proxy\'den kaynaklanıyor.&lt;br&gt;&lt;br&gt;Bunu düzeltmek için, &lt;b&gt;s.youtube.com&lt;/b&gt; adresini beyaz listeye ekleyin veya bütün engelleyici DNSleri ve proxy\'leri kapatın.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Bir daha gösterme</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Ayarlar</string>
<string name="revanced_settings_confirm_user_dialog_title">Devam etmek istediğinizden emin misiniz?</string>
<string name="revanced_settings_save">Kaydet</string>
<string name="revanced_settings_reset">Sıfırla</string>
<string name="revanced_settings_reset_color">Rengi sıfırla</string>
<string name="revanced_settings_color_invalid">Geçersiz renk</string>
@@ -164,6 +165,14 @@ Beklenmedik olaylar hakkında bilgilendirilmeyeceksiniz."</string>
<string name="revanced_debug_logs_clear_buffer_title">Hata ayıklama kayıtlarını temizle</string>
<string name="revanced_debug_logs_clear_buffer_summary">Kaydedilmiş tüm ReVanced hata ayıklama kayıtlarını temizler</string>
<string name="revanced_debug_logs_clear_toast">Kayıtlar temizlendi</string>
<string name="revanced_debug_feature_flags_manager_title">Özellik bayrakları Manager</string>
<string name="revanced_debug_feature_flags_manager_summary">Boole özellik bayraklarını yönet</string>
<string name="revanced_debug_feature_flags_manager_active_header">Aktif bayraklar (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Engellenen bayraklar (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Bayrakları ara...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Bayraklar kaydedildi</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Bayraklar sıfırlandı</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Bayraklar panoya kopyalandı</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Paylaşım bağlantılarını temizle</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">Дата збірки APK пошкоджена</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Увага</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">Повідомлення ReVanced</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Ваша історія переглядів не зберігається.&lt;br&gt;&lt;br&gt;Швидше за все, це спричинено блокувальником реклами DNS або мережевим проксі.&lt;br&gt;&lt;br&gt;Щоб це виправити, додайте &lt;b&gt;s.youtube.com&lt;/b&gt; у білий список блокувальника або вимкніть усі DNS блокувальники та проксі.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Більше не показувати</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Налаштування</string>
<string name="revanced_settings_confirm_user_dialog_title">Ви впевнені, що хочете продовжити?</string>
<string name="revanced_settings_save">Зберегти</string>
<string name="revanced_settings_reset">Скинути</string>
<string name="revanced_settings_reset_color">Скинути колір</string>
<string name="revanced_settings_color_invalid">Недійсний колір</string>
@@ -164,6 +165,14 @@ Second \"item\" text"</string>
<string name="revanced_debug_logs_clear_buffer_title">Очистити журнали налагодження</string>
<string name="revanced_debug_logs_clear_buffer_summary">Очищує всі збережені журнали налагодження ReVanced</string>
<string name="revanced_debug_logs_clear_toast">Журнали очищено</string>
<string name="revanced_debug_feature_flags_manager_title">Функціональні прапорці Manager</string>
<string name="revanced_debug_feature_flags_manager_summary">Керувати логічними функціональними прапорцями</string>
<string name="revanced_debug_feature_flags_manager_active_header">Активні прапорці (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Заблоковані прапорці (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Пошук прапорців...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Прапорці збережено</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Прапорці скинуто</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Прапорці скопійовано до буфера обміну</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Очищення посилань для поширення</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">Ngày dựng APK bị hỏng</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Cảnh báo</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">Thông báo ReVanced</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Nhật ký xem của bạn hiện không được lưu lại.&lt;br&gt;&lt;br&gt;Nguyên nhân có thể là do trình chặn quảng cáo DNS hoặc proxy mạng.&lt;br&gt;&lt;br&gt;Để khắc phục, hãy thêm &lt;b&gt;s.youtube.com&lt;/b&gt; vào danh sách cho phép, hoặc tắt tất cả trình chặn DNS và proxy.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Không hiện lại</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Thiết lập</string>
<string name="revanced_settings_confirm_user_dialog_title">Bạn có chắc chắn muốn tiếp tục không?</string>
<string name="revanced_settings_save">Lưu</string>
<string name="revanced_settings_reset">Đặt lại</string>
<string name="revanced_settings_reset_color">Đặt lại màu</string>
<string name="revanced_settings_color_invalid">Màu không hợp lệ</string>
@@ -164,6 +165,14 @@ Bạn sẽ không được thông báo khi xẩy ra lỗi bất ngờ."</string>
<string name="revanced_debug_logs_clear_buffer_title">Xóa nhật ký gỡ lỗi</string>
<string name="revanced_debug_logs_clear_buffer_summary">Xóa tất cả nhật ký gỡ lỗi ReVanced đã lưu trữ</string>
<string name="revanced_debug_logs_clear_toast">Đã xóa nhật ký</string>
<string name="revanced_debug_feature_flags_manager_title">Manager cờ tính năng</string>
<string name="revanced_debug_feature_flags_manager_summary">Quản lý các cờ tính năng boolean</string>
<string name="revanced_debug_feature_flags_manager_active_header">Cờ đang hoạt động (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Cờ bị chặn (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Tìm kiếm cờ...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Đã lưu cờ</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Đã đặt lại cờ</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Đã sao chép cờ vào bảng nhớ tạm</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Rút gọn liên kết chia sẻ</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">APK 构建日期已损坏</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">警告</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">ReVanced 通知</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">您的观看历史记录未保存。&lt;br&gt;&lt;br&gt;这很可能是由 DNS 广告拦截器或网络代理造成的。&lt;br&gt;&lt;br&gt;要解决此问题,请将 &lt;b&gt;s.youtube.com&lt;/b&gt; 添加到白名单或关闭所有 DNS 广告拦截器和代理。</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">不再显示</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">设置</string>
<string name="revanced_settings_confirm_user_dialog_title">确定要继续吗?</string>
<string name="revanced_settings_save">保存</string>
<string name="revanced_settings_reset">重置</string>
<string name="revanced_settings_reset_color">重置颜色</string>
<string name="revanced_settings_color_invalid">无效的颜色</string>
@@ -164,6 +165,14 @@ Second \"item\" text"</string>
<string name="revanced_debug_logs_clear_buffer_title">清除调试日志</string>
<string name="revanced_debug_logs_clear_buffer_summary">清除所有存储的 ReVanced 调试日志</string>
<string name="revanced_debug_logs_clear_toast">日志已清除</string>
<string name="revanced_debug_feature_flags_manager_title">功能标志 Manager</string>
<string name="revanced_debug_feature_flags_manager_summary">管理布尔功能标志</string>
<string name="revanced_debug_feature_flags_manager_active_header">活动标志 (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">已阻止标志 (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">搜索标志...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">标志已保存</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">标志已重置</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">标志已复制到剪贴板</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">净化分享链接</string>

View File

@@ -45,13 +45,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">APK 建構日期已損毀</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">警告</string>
<string name="revanced_check_watch_history_domain_name_dialog_title">ReVanced 通知</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">你的觀看記錄未被儲存。&lt;br&gt;&lt;br&gt;這很可能是由於 DNS 廣告封鎖器或網路代理所導致。&lt;br&gt;&lt;br&gt;若要解決此問題,請將 &lt;b&gt;s.youtube.com&lt;/b&gt; 加入白名單,或關閉所有 DNS 封鎖器和代理。</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">不再顯示</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">設定</string>
<string name="revanced_settings_confirm_user_dialog_title">你確定要繼續嗎?</string>
<string name="revanced_settings_save">儲存</string>
<string name="revanced_settings_reset">重設</string>
<string name="revanced_settings_reset_color">重設顏色</string>
<string name="revanced_settings_color_invalid">無效的顏色</string>
@@ -164,6 +165,14 @@ Second \"item\" text"</string>
<string name="revanced_debug_logs_clear_buffer_title">清除偵錯記錄</string>
<string name="revanced_debug_logs_clear_buffer_summary">清除所有儲存的 ReVanced 偵錯記錄</string>
<string name="revanced_debug_logs_clear_toast">記錄已清除</string>
<string name="revanced_debug_feature_flags_manager_title">功能旗標 Manager</string>
<string name="revanced_debug_feature_flags_manager_summary">管理布林功能旗標</string>
<string name="revanced_debug_feature_flags_manager_active_header">啟用的旗標 (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">已封鎖的旗標 (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">搜尋旗標...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">旗標已儲存</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">旗標已重設</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">旗標已複製到剪貼簿</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">清理分享連結</string>

View File

@@ -31,72 +31,93 @@
<patch id="misc.settings.settingsResourcePatch">
<string-array name="revanced_language_entries">
<item>@string/revanced_language_DEFAULT</item>
<item>@string/revanced_language_AM</item>
<item>@string/revanced_language_AR</item>
<item>@string/revanced_language_AZ</item>
<item>@string/revanced_language_BE</item>
<item>@string/revanced_language_BG</item>
<item>@string/revanced_language_BN</item>
<item>@string/revanced_language_CA</item>
<item>@string/revanced_language_CS</item>
<item>@string/revanced_language_DA</item>
<item>@string/revanced_language_DE</item>
<item>@string/revanced_language_EL</item>
<item>@string/revanced_language_EN</item>
<item>@string/revanced_language_ES</item>
<item>@string/revanced_language_ET</item>
<item>@string/revanced_language_FA</item>
<item>@string/revanced_language_FI</item>
<item>@string/revanced_language_FR</item>
<item>@string/revanced_language_GA</item>
<item>@string/revanced_language_GU</item>
<item>@string/revanced_language_HE</item>
<item>@string/revanced_language_HI</item>
<item>@string/revanced_language_HR</item>
<item>@string/revanced_language_HU</item>
<item>@string/revanced_language_ID</item>
<item>@string/revanced_language_IT</item>
<item>@string/revanced_language_JA</item>
<item>@string/revanced_language_KK</item>
<item>@string/revanced_language_KO</item>
<item>@string/revanced_language_LT</item>
<item>@string/revanced_language_LV</item>
<item>@string/revanced_language_MK</item>
<item>@string/revanced_language_MN</item>
<item>@string/revanced_language_MR</item>
<item>@string/revanced_language_MS</item>
<item>@string/revanced_language_MY</item>
<item>@string/revanced_language_NL</item>
<item>@string/revanced_language_OR</item>
<item>@string/revanced_language_PA</item>
<item>@string/revanced_language_PL</item>
<item>@string/revanced_language_PT</item>
<item>@string/revanced_language_RO</item>
<item>@string/revanced_language_RU</item>
<item>@string/revanced_language_SK</item>
<item>@string/revanced_language_SQ</item>
<item>@string/revanced_language_SL</item>
<item>@string/revanced_language_SR</item>
<item>@string/revanced_language_SV</item>
<item>@string/revanced_language_SW</item>
<item>@string/revanced_language_TA</item>
<item>@string/revanced_language_TE</item>
<item>@string/revanced_language_TH</item>
<item>@string/revanced_language_TR</item>
<item>@string/revanced_language_UK</item>
<item>@string/revanced_language_UR</item>
<item>@string/revanced_language_VI</item>
<item>@string/revanced_language_ZH</item>
<item>Afrikaans</item>
<item>አማርኛ</item>
<item>العربية</item>
<item>অসমীয়া</item>
<item>Azərbaycanca</item>
<item>Беларуская</item>
<item>Български</item>
<item>বাংলা</item>
<item>Bosanski</item>
<item>Català</item>
<item>Čeština</item>
<item>Dansk</item>
<item>Deutsch</item>
<item>Ελληνικά</item>
<item>English</item>
<item>Español</item>
<item>Eesti</item>
<item>Euskara</item>
<item>فارسی</item>
<item>Suomi</item>
<item>Français</item>
<item>Gaeilge</item>
<item>Galego</item>
<item>ગુજરાતી</item>
<item>עברית</item>
<item>हिन्दी</item>
<item>Hrvatski</item>
<item>Magyar</item>
<item>Հայերեն</item>
<item>Bahasa Indonesia</item>
<item>Íslenska</item>
<item>Italiano</item>
<item>日本語</item>
<item>ქართული</item>
<item>Қазақ тілі</item>
<item>ភាសាខ្មែរ</item>
<item>ಕನ್ನಡ</item>
<item>한국어</item>
<item>Кыргызча</item>
<item>ລາວ</item>
<item>Lietuvių</item>
<item>Latviešu</item>
<item>Македонски</item>
<item>മലയാളം</item>
<item>Монгол</item>
<item>मराठी</item>
<item>Bahasa Melayu</item>
<item>မြန်မာစာ</item>
<item>Norsk bokmål</item>
<item>नेपाली</item>
<item>Nederlands</item>
<item>ଓଡ଼ିଆ</item>
<item>ਪੰਜਾਬੀ</item>
<item>Polski</item>
<item>Português</item>
<item>Română</item>
<item>Русский</item>
<item>සිංහල</item>
<item>Slovenčina</item>
<item>Slovenščina</item>
<item>Shqip</item>
<item>Српски</item>
<item>Svenska</item>
<item>Kiswahili</item>
<item>தமிழ்</item>
<item>తెలుగు</item>
<item>ไทย</item>
<item>Tagalog</item>
<item>Türkçe</item>
<item>Українська</item>
<item>اردو</item>
<item>Oʻzbekcha</item>
<item>Tiếng Việt</item>
<item>中文</item>
<item>isiZulu</item>
</string-array>
<string-array name="revanced_language_entry_values">
<!-- Extension enum names. -->
<item>DEFAULT</item>
<item>AF</item>
<item>AM</item>
<item>AR</item>
<item>AS</item>
<item>AZ</item>
<item>BE</item>
<item>BG</item>
<item>BN</item>
<item>BS</item>
<item>CA</item>
<item>CS</item>
<item>DA</item>
@@ -105,27 +126,39 @@
<item>EN</item>
<item>ES</item>
<item>ET</item>
<item>EU</item>
<item>FA</item>
<item>FI</item>
<item>FR</item>
<item>GA</item>
<item>GL</item>
<item>GU</item>
<item>HE</item>
<item>HI</item>
<item>HR</item>
<item>HU</item>
<item>HY</item>
<item>ID</item>
<item>IS</item>
<item>IT</item>
<item>JA</item>
<item>KA</item>
<item>KK</item>
<item>KM</item>
<item>KN</item>
<item>KO</item>
<item>KY</item>
<item>LO</item>
<item>LT</item>
<item>LV</item>
<item>MK</item>
<item>ML</item>
<item>MN</item>
<item>MR</item>
<item>MS</item>
<item>MY</item>
<item>NB</item>
<item>NE</item>
<item>NL</item>
<item>OR</item>
<item>PA</item>
@@ -133,20 +166,24 @@
<item>PT</item>
<item>RO</item>
<item>RU</item>
<item>SI</item>
<item>SK</item>
<item>SQ</item>
<item>SL</item>
<item>SQ</item>
<item>SR</item>
<item>SV</item>
<item>SW</item>
<item>TA</item>
<item>TE</item>
<item>TH</item>
<item>TL</item>
<item>TR</item>
<item>UK</item>
<item>UR</item>
<item>UZ</item>
<item>VI</item>
<item>ZH</item>
<item>ZU</item>
</string-array>
</patch>
</app>

View File

@@ -53,6 +53,7 @@ Second \"item\" text"</string>
<string name="revanced_settings_submenu_title">Settings</string>
<string name="revanced_settings_title" translatable="false">ReVanced</string>
<string name="revanced_settings_confirm_user_dialog_title">Are you sure you want to proceed?</string>
<string name="revanced_settings_save">Save</string>
<string name="revanced_settings_reset">Reset</string>
<string name="revanced_settings_reset_color">Reset color</string>
<string name="revanced_settings_color_invalid">Invalid color</string>
@@ -90,62 +91,6 @@ Second \"item\" text"</string>
To translate new languages or improve the existing translations, visit translate.revanced.app"</string>
<string name="revanced_language_DEFAULT">App language</string>
<string name="revanced_language_AM" translatable="false">አማርኛ</string>
<string name="revanced_language_AR" translatable="false">العربية</string>
<string name="revanced_language_AZ" translatable="false">Azərbaycan</string>
<string name="revanced_language_BE" translatable="false">беларуская</string>
<string name="revanced_language_BG" translatable="false">Български</string>
<string name="revanced_language_BN" translatable="false">বাংলা</string>
<string name="revanced_language_CA" translatable="false">Català</string>
<string name="revanced_language_CS" translatable="false">Čeština</string>
<string name="revanced_language_DA" translatable="false">Dansk</string>
<string name="revanced_language_DE" translatable="false">Deutsch</string>
<string name="revanced_language_EL" translatable="false">Ελληνικά</string>s
<string name="revanced_language_EN" translatable="false">English</string>
<string name="revanced_language_ES" translatable="false">Español</string>
<string name="revanced_language_ET" translatable="false">Eesti</string>
<string name="revanced_language_FA" translatable="false">فارسی</string>
<string name="revanced_language_FI" translatable="false">Suomi</string>
<string name="revanced_language_FR" translatable="false">Français</string>
<string name="revanced_language_GA" translatable="false">Gaeilge</string>
<string name="revanced_language_GU" translatable="false">ગુજરાતી</string>
<string name="revanced_language_HE" translatable="false">עברי</string>
<string name="revanced_language_HI" translatable="false">हिन्दी</string>
<string name="revanced_language_HR" translatable="false">Hrvatski</string>
<string name="revanced_language_HU" translatable="false">Magyar</string>
<string name="revanced_language_ID" translatable="false">Indonesia</string>
<string name="revanced_language_IT" translatable="false">Italiano</string>
<string name="revanced_language_JA" translatable="false">日本語</string>
<string name="revanced_language_KK" translatable="false">Қазақ тілі</string>
<string name="revanced_language_KO" translatable="false">한국어</string>
<string name="revanced_language_LT" translatable="false">Lietuvių</string>
<string name="revanced_language_LV" translatable="false">Latviešu</string>
<string name="revanced_language_MK" translatable="false">Македонски</string>
<string name="revanced_language_MN" translatable="false">Монгол</string>
<string name="revanced_language_MR" translatable="false">मराठी</string>
<string name="revanced_language_MS" translatable="false">Melayu</string>
<string name="revanced_language_MY" translatable="false">ဗမာ</string>
<string name="revanced_language_NL" translatable="false">Nederlands</string>
<string name="revanced_language_OR" translatable="false">ଓଡ଼ିଆ</string>
<string name="revanced_language_PA" translatable="false">ਪੰਜਾਬੀ</string>
<string name="revanced_language_PL" translatable="false">Polski</string>
<string name="revanced_language_PT" translatable="false">Português</string>
<string name="revanced_language_RO" translatable="false">Română</string>
<string name="revanced_language_RU" translatable="false">Русский</string>
<string name="revanced_language_SK" translatable="false">Slovenčina</string>
<string name="revanced_language_SQ" translatable="false">Shqip</string>
<string name="revanced_language_SL" translatable="false">Slovenščina</string>
<string name="revanced_language_SR" translatable="false">Српски</string>
<string name="revanced_language_SV" translatable="false">Svenska</string>
<string name="revanced_language_SW" translatable="false">Kiswahili</string>
<string name="revanced_language_TA" translatable="false">தமிழ்</string>
<string name="revanced_language_TE" translatable="false">తెలుగు</string>
<string name="revanced_language_TH" translatable="false">ไทย</string>
<string name="revanced_language_TR" translatable="false">Türkçe</string>
<string name="revanced_language_UK" translatable="false">Українська</string>
<string name="revanced_language_UR" translatable="false">اردو</string>
<string name="revanced_language_VI" translatable="false">Tiếng Việt</string>
<string name="revanced_language_ZH" translatable="false">中文</string>
<string name="revanced_pref_import_export_title">Import / Export</string>
<string name="revanced_pref_import_export_summary">Import / Export ReVanced settings</string>
<!-- Settings about dialog. -->
@@ -221,6 +166,14 @@ You will not be notified of any unexpected events."</string>
<string name="revanced_debug_logs_clear_buffer_title">Clear debug logs</string>
<string name="revanced_debug_logs_clear_buffer_summary">Clears all stored ReVanced debug logs</string>
<string name="revanced_debug_logs_clear_toast">Logs cleared</string>
<string name="revanced_debug_feature_flags_manager_title">Feature flags manager</string>
<string name="revanced_debug_feature_flags_manager_summary">Manage boolean feature flags</string>
<string name="revanced_debug_feature_flags_manager_active_header">Active flags (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Blocked flags (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Search flags...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Flags saved</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Flags reset</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Flags copied to clipboard</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Sanitize sharing links</string>

View File

@@ -0,0 +1,32 @@
<!--
https://github.com/google/material-design-icons/blob/bb04090f930e272697f2a1f0d7b352d92dfeee43/symbols/android/keyboard_double_arrow_left/materialsymbolsoutlined/keyboard_double_arrow_left_wght200_24px.xml
Changes made: Added custom stroke.
Copyright 2022 Google
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="?android:attr/textColorPrimary"
android:pathData="M11.25,17.3086 L5.94141,12 L11.25,6.69141 L11.957,7.39844 L7.36328,12 L11.957,16.6016 Z M17.3516,17.3086 L12.043,12 L17.3516,6.69141 L18.0586,7.39844 L13.4648,12 L18.0586,16.6016 Z M17.3516,17.3086" />
<path
android:fillColor="?android:attr/textColorPrimary"
android:pathData="M1.80859,23.8086 C0.875313,23.8086,0.1914,23.1246,0.1914,22.1914 L0.191402,1.80859 C0.191402,0.875317,0.875368,0.19141,1.80859,0.19141 L22.1914,0.19141 C23.1247,0.19141,23.8086,0.875376,23.8086,1.80859 L23.8086,22.1914 C23.8086,23.1247,23.1246,23.8086,22.1914,23.8086 Z M1.80859,22.8086 L22.1914,22.8086 C22.5552,22.8086,22.8086,22.5552,22.8086,22.1914 L22.8086,1.80859 C22.8086,1.44477,22.5552,1.19141,22.1914,1.19141 L1.80859,1.19141 C1.44477,1.19141,1.19141,1.4448,1.19141,1.8086 L1.19141,22.1914 C1.19141,22.5552,1.4448,22.8086,1.8086,22.8086 Z" />
</vector>

View File

@@ -0,0 +1,31 @@
<!--
https://github.com/google/material-design-icons/blob/bb04090f930e272697f2a1f0d7b352d92dfeee43/symbols/android/keyboard_arrow_left/materialsymbolsoutlined/keyboard_arrow_left_wght200_24px.xml
Copyright 2022 Google
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="?android:attr/textColorPrimary"
android:pathData="M14,17.3086 L8.69141,12 L14,6.69141 L14.707,7.39844 L10.1094,12 L14.707,16.6016 Z M14,17.3086" />
<path
android:fillColor="?android:attr/textColorPrimary"
android:pathData="M1.80859,23.8086 C0.875313,23.8086,0.1914,23.1246,0.1914,22.1914 L0.191402,1.80859 C0.191402,0.875317,0.875368,0.19141,1.80859,0.19141 L22.1914,0.19141 C23.1247,0.19141,23.8086,0.875376,23.8086,1.80859 L23.8086,22.1914 C23.8086,23.1247,23.1246,23.8086,22.1914,23.8086 Z M1.80859,22.8086 L22.1914,22.8086 C22.5552,22.8086,22.8086,22.5552,22.8086,22.1914 L22.8086,1.80859 C22.8086,1.44477,22.5552,1.19141,22.1914,1.19141 L1.80859,1.19141 C1.44477,1.19141,1.19141,1.4448,1.19141,1.8086 L1.19141,22.1914 C1.19141,22.5552,1.4448,22.8086,1.8086,22.8086 Z" />
</vector>

View File

@@ -0,0 +1,32 @@
<!--
https://github.com/google/material-design-icons/blob/bb04090f930e272697f2a1f0d7b352d92dfeee43/symbols/android/keyboard_double_arrow_right/materialsymbolsoutlined/keyboard_double_arrow_right_wght200_24px.xml
Changes made: Added custom stroke.
Copyright 2022 Google
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="?android:attr/textColorPrimary"
android:pathData="M10.5352,12 L5.94141,7.39844 L6.64844,6.69141 L11.957,12 L6.64844,17.3086 L5.94141,16.6016 Z M16.6367,12 L12.043,7.39844 L12.75,6.69141 L18.0586,12 L12.75,17.3086 L12.043,16.6016 Z M16.6367,12" />
<path
android:fillColor="?android:attr/textColorPrimary"
android:pathData="M1.80859,23.8086 C0.875313,23.8086,0.1914,23.1246,0.1914,22.1914 L0.191402,1.80859 C0.191402,0.875317,0.875368,0.19141,1.80859,0.19141 L22.1914,0.19141 C23.1247,0.19141,23.8086,0.875376,23.8086,1.80859 L23.8086,22.1914 C23.8086,23.1247,23.1246,23.8086,22.1914,23.8086 Z M1.80859,22.8086 L22.1914,22.8086 C22.5552,22.8086,22.8086,22.5552,22.8086,22.1914 L22.8086,1.80859 C22.8086,1.44477,22.5552,1.19141,22.1914,1.19141 L1.80859,1.19141 C1.44477,1.19141,1.19141,1.4448,1.19141,1.8086 L1.19141,22.1914 C1.19141,22.5552,1.4448,22.8086,1.8086,22.8086 Z" />
</vector>

View File

@@ -0,0 +1,31 @@
<!--
https://github.com/google/material-design-icons/blob/bb04090f930e272697f2a1f0d7b352d92dfeee43/symbols/android/keyboard_arrow_right/materialsymbolsoutlined/keyboard_arrow_right_wght200_24px.xml
Copyright 2022 Google
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="?android:attr/textColorPrimary"
android:pathData="M13.293,12 L8.69141,7.39844 L9.39844,6.69141 L14.707,12 L9.39844,17.3086 L8.69141,16.6016 Z M13.293,12" />
<path
android:fillColor="?android:attr/textColorPrimary"
android:pathData="M1.80859,23.8086 C0.875313,23.8086,0.1914,23.1246,0.1914,22.1914 L0.191402,1.80859 C0.191402,0.875317,0.875368,0.19141,1.80859,0.19141 L22.1914,0.19141 C23.1247,0.19141,23.8086,0.875376,23.8086,1.80859 L23.8086,22.1914 C23.8086,23.1247,23.1246,23.8086,22.1914,23.8086 Z M1.80859,22.8086 L22.1914,22.8086 C22.5552,22.8086,22.8086,22.5552,22.8086,22.1914 L22.8086,1.80859 C22.8086,1.44477,22.5552,1.19141,22.1914,1.19141 L1.80859,1.19141 C1.44477,1.19141,1.19141,1.4448,1.19141,1.8086 L1.19141,22.1914 C1.19141,22.5552,1.4448,22.8086,1.8086,22.8086 Z" />
</vector>

View File

@@ -0,0 +1,28 @@
<!--
https://github.com/google/material-design-icons/blob/bb04090f930e272697f2a1f0d7b352d92dfeee43/symbols/android/copy_all/materialsymbolsoutlined/copy_all_wght200_24px.xml
Copyright 2022 Google
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="?android:attr/textColorPrimary"
android:pathData="M4,17.4219 L4,16.1914 L5.23047,16.1914 L5.23047,17.4219 Z M4,13.8477 L4,12.6172 L5.23047,12.6172 L5.23047,13.8477 Z M4,10.2695 L4,9.03906 L5.23047,9.03906 L5.23047,10.2695 Z M7.57813,21 L7.57813,19.7695 L8.80859,19.7695 L8.80859,21 Z M9.30859,17.3086 C8.84766,17.3086,8.46484,17.1523,8.15625,16.8438 C7.84766,16.5352,7.69141,16.1523,7.69141,15.6914 L7.69141,4.61719 C7.69141,4.15625,7.84766,3.76953,8.15625,3.46094 C8.46484,3.15234,8.84766,3,9.30859,3 L17.3828,3 C17.8438,3,18.2305,3.15234,18.5391,3.46094 C18.8477,3.76953,19,4.15625,19,4.61719 L19,15.6914 C19,16.1523,18.8477,16.5352,18.5391,16.8438 C18.2305,17.1523,17.8438,17.3086,17.3828,17.3086 Z M9.30859,16.3086 L17.3828,16.3086 C17.5391,16.3086,17.6797,16.2422,17.8086,16.1172 C17.9375,15.9883,18,15.8477,18,15.6914 L18,4.61719 C18,4.46094,17.9375,4.32031,17.8086,4.19141 C17.6797,4.0625,17.5391,4,17.3828,4 L9.30859,4 C9.15234,4,9.01172,4.0625,8.88281,4.19141 C8.75781,4.32031,8.69141,4.46094,8.69141,4.61719 L8.69141,15.6914 C8.69141,15.8477,8.75781,15.9883,8.88281,16.1172 C9.01172,16.2422,9.15234,16.3086,9.30859,16.3086 Z M11.1523,21 L11.1523,19.7695 L12.3828,19.7695 L12.3828,21 Z M5.23047,21 C4.89063,21,4.60156,20.8789,4.36328,20.6367 C4.12109,20.3984,4,20.1094,4,19.7695 L5.23047,19.7695 Z M14.7305,21 L14.7305,19.7695 L15.9609,19.7695 C15.9609,20.1133,15.8398,20.4063,15.6016,20.6445 C15.3594,20.8828,15.0703,21,14.7305,21 Z M4,6.69141 C4,6.35547,4.12109,6.0625,4.36328,5.82422 C4.60156,5.58203,4.89063,5.46094,5.23047,5.46094 L5.23047,6.69141 Z M13.3477,10.1523 Z M13.3477,10.1523" />
</vector>

View File

@@ -0,0 +1,28 @@
<!--
https://github.com/google/material-design-icons/blob/bb04090f930e272697f2a1f0d7b352d92dfeee43/symbols/android/deselect/materialsymbolsoutlined/deselect_wght200_24px.xml
Copyright 2022 Google
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="?android:attr/textColorPrimary"
android:pathData="M19.832,21.2539 L14.8867,16.3086 L7.69141,16.3086 L7.69141,9.11328 L2.74609,4.16797 L3.45313,3.45313 L20.5469,20.5469 Z M8.69141,15.3086 L13.8867,15.3086 L8.69141,10.1133 Z M16.3086,13.4844 L15.3086,12.4844 L15.3086,8.69141 L11.5156,8.69141 L10.5156,7.69141 L16.3086,7.69141 Z M5.23047,18.7695 L5.23047,20 C4.89063,20,4.60156,19.8789,4.36328,19.6367 C4.12109,19.3984,4,19.1094,4,18.7695 Z M4,16.3086 L4,15.0781 L5.23047,15.0781 L5.23047,16.3086 Z M4,12.6172 L4,11.3828 L5.23047,11.3828 L5.23047,12.6172 Z M4,8.92188 L4,7.69141 L5.23047,7.69141 L5.23047,8.92188 Z M7.69141,20 L7.69141,18.7695 L8.92188,18.7695 L8.92188,20 Z M7.69141,5.23047 L7.69141,4 L8.92188,4 L8.92188,5.23047 Z M11.3828,20 L11.3828,18.7695 L12.6172,18.7695 L12.6172,20 Z M11.3828,5.23047 L11.3828,4 L12.6172,4 L12.6172,5.23047 Z M15.0781,20 L15.0781,18.7695 L16.3086,18.7695 L16.3086,20 Z M15.0781,5.23047 L15.0781,4 L16.3086,4 L16.3086,5.23047 Z M18.7695,16.3086 L18.7695,15.0781 L20,15.0781 L20,16.3086 Z M18.7695,12.6172 L18.7695,11.3828 L20,11.3828 L20,12.6172 Z M18.7695,8.92188 L18.7695,7.69141 L20,7.69141 L20,8.92188 Z M18.7695,5.23047 L18.7695,4 C19.1094,4,19.3984,4.12109,19.6367,4.36328 C19.8789,4.60156,20,4.89063,20,5.23047 Z M18.7695,5.23047" />
</vector>

View File

@@ -0,0 +1,28 @@
<!--
https://github.com/google/material-design-icons/blob/bb04090f930e272697f2a1f0d7b352d92dfeee43/symbols/android/select_all/materialsymbolsoutlined/select_all_wght200_24px.xml
Copyright 2022 Google
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="?android:attr/textColorPrimary"
android:pathData="M7.69141,16.3086 L7.69141,7.69141 L16.3086,7.69141 L16.3086,16.3086 Z M8.69141,15.3086 L15.3086,15.3086 L15.3086,8.69141 L8.69141,8.69141 Z M5.23047,18.7695 L5.23047,20 C4.89063,20,4.60156,19.8789,4.36328,19.6367 C4.12109,19.3984,4,19.1094,4,18.7695 Z M4,16.3086 L4,15.0781 L5.23047,15.0781 L5.23047,16.3086 Z M4,12.6172 L4,11.3828 L5.23047,11.3828 L5.23047,12.6172 Z M4,8.92188 L4,7.69141 L5.23047,7.69141 L5.23047,8.92188 Z M5.23047,5.23047 L4,5.23047 C4,4.89063,4.12109,4.60156,4.36328,4.36328 C4.60156,4.12109,4.89063,4,5.23047,4 Z M7.69141,20 L7.69141,18.7695 L8.92188,18.7695 L8.92188,20 Z M7.69141,5.23047 L7.69141,4 L8.92188,4 L8.92188,5.23047 Z M11.3828,20 L11.3828,18.7695 L12.6172,18.7695 L12.6172,20 Z M11.3828,5.23047 L11.3828,4 L12.6172,4 L12.6172,5.23047 Z M15.0781,20 L15.0781,18.7695 L16.3086,18.7695 L16.3086,20 Z M15.0781,5.23047 L15.0781,4 L16.3086,4 L16.3086,5.23047 Z M18.7695,20 L18.7695,18.7695 L20,18.7695 C20,19.1133,19.8789,19.4063,19.6367,19.6445 C19.3984,19.8828,19.1094,20,18.7695,20 Z M18.7695,16.3086 L18.7695,15.0781 L20,15.0781 L20,16.3086 Z M18.7695,12.6172 L18.7695,11.3828 L20,11.3828 L20,12.6172 Z M18.7695,8.92188 L18.7695,7.69141 L20,7.69141 L20,8.92188 Z M18.7695,5.23047 L18.7695,4 C19.1094,4,19.3984,4.12109,19.6367,4.36328 C19.8789,4.60156,20,4.89063,20,5.23047 Z M18.7695,5.23047" />
</vector>