Compare commits

..

27 Commits

Author SHA1 Message Date
semantic-release-bot
34d29abdfa chore: Release v5.46.0-dev.9 [skip ci]
# [5.46.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.46.0-dev.8...v5.46.0-dev.9) (2025-11-09)

### Features

* **YouTube Music:** Add `Change miniplayer color` patch ([#6259](https://github.com/ReVanced/revanced-patches/issues/6259)) ([ab808ae](ab808aeb77))
2025-11-09 07:43:26 +00:00
MarcaD
ab808aeb77 feat(YouTube Music): Add Change miniplayer color patch (#6259)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2025-11-09 09:39:51 +02:00
github-actions[bot]
a6b07cceb1 chore: Sync translations (#6266) 2025-11-09 09:39:32 +02:00
semantic-release-bot
d291881215 chore: Release v5.46.0-dev.8 [skip ci]
# [5.46.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v5.46.0-dev.7...v5.46.0-dev.8) (2025-11-09)

### Features

* **YouTube Music:** Add `Hide buttons` patch ([#6255](https://github.com/ReVanced/revanced-patches/issues/6255)) ([7a18ebc](7a18ebc7ab))
2025-11-09 07:09:07 +00:00
MarcaD
7a18ebc7ab feat(YouTube Music): Add Hide buttons patch (#6255) 2025-11-09 09:05:31 +02:00
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
semantic-release-bot
81f83690d6 chore: Release v5.46.0-dev.5 [skip ci]
# [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)

### Bug Fixes

* **Duolingo - Disable ads:** Constrain patch to last working app target ([f238ae9](f238ae9895))
* **Instagram - Hide navigation buttons:** Constrain patch to last working app target ([e030e9c](e030e9c07a))
* **Spotify - Hide Create button:** Remove obsolete patch that is no longer needed ([#6252](https://github.com/ReVanced/revanced-patches/issues/6252)) ([59d85b2](59d85b28a7))
2025-11-07 11:39:00 +00:00
LisoUseInAIKyrios
f1bd6848c9 chore(deps-dev): Revert bump semantic-release from 24.2.9 to 25.0.1 (#6204)
This reverts commit 55e1a6784b.
2025-11-07 13:36:18 +02:00
LisoUseInAIKyrios
59d85b28a7 fix(Spotify - Hide Create button): Remove obsolete patch that is no longer needed (#6252) 2025-11-07 13:29:34 +02:00
LisoUseInAIKyrios
f238ae9895 fix(Duolingo - Disable ads): Constrain patch to last working app target 2025-11-07 13:27:31 +02:00
LisoUseInAIKyrios
e030e9c07a fix(Instagram - Hide navigation buttons): Constrain patch to last working app target 2025-11-07 13:25:24 +02:00
dependabot[bot]
5029e979be chore(deps): Bump actions/upload-artifact from 4 to 5 (#6201) 2025-11-07 09:34:24 +02:00
dependabot[bot]
55e1a6784b chore(deps-dev): Bump semantic-release from 24.2.9 to 25.0.1 (#6204) 2025-11-07 09:33:23 +02:00
dependabot[bot]
0cad5e73f0 chore(deps): Bump actions/setup-node from 5 to 6 (#6200) 2025-11-07 09:33:05 +02:00
semantic-release-bot
ce503d5b58 chore: Release v5.46.0-dev.4 [skip ci]
# [5.46.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.46.0-dev.3...v5.46.0-dev.4) (2025-11-07)

### Bug Fixes

* **YouTube - Check watch history domain name resolution:** Fix false positive warning message if the internet connection fails halfway into the DNS check ([5726353](57263538c7))
2025-11-07 07:17:59 +00:00
LisoUseInAIKyrios
57263538c7 fix(YouTube - Check watch history domain name resolution): Fix false positive warning message if the internet connection fails halfway into the DNS check 2025-11-07 09:14:21 +02:00
semantic-release-bot
70f4955e89 chore: Release v5.46.0-dev.3 [skip ci]
# [5.46.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.46.0-dev.2...v5.46.0-dev.3) (2025-11-06)

### Bug Fixes

* **YouTube - Hide layout components:** Fix "Hide Hype points" ([#6247](https://github.com/ReVanced/revanced-patches/issues/6247)) ([5821440](582144026d))
2025-11-06 12:12:38 +00:00
ILoveOpenSourceApplications
582144026d fix(YouTube - Hide layout components): Fix "Hide Hype points" (#6247) 2025-11-06 14:09:43 +02:00
github-actions[bot]
d80892cc0e chore: Sync translations (#6248) 2025-11-06 14:09:25 +02:00
semantic-release-bot
6c4b931b8a chore: Release v5.46.0-dev.2 [skip ci]
# [5.46.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.46.0-dev.1...v5.46.0-dev.2) (2025-11-04)

### Bug Fixes

* **YouTube - Settings:** Resolve settings search crash when searching for specific words ([#6231](https://github.com/ReVanced/revanced-patches/issues/6231)) ([76dcfae](76dcfaefd8))
2025-11-04 13:03:33 +00:00
MarcaD
76dcfaefd8 fix(YouTube - Settings): Resolve settings search crash when searching for specific words (#6231) 2025-11-04 14:59:43 +02:00
github-actions[bot]
e4f52343c0 chore: Sync translations (#6239) 2025-11-04 14:59:20 +02:00
144 changed files with 3159 additions and 1136 deletions

View File

@@ -29,7 +29,7 @@ jobs:
run: ./gradlew :patches:buildAndroid --no-daemon
- name: Upload artifacts
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
with:
name: revanced-patches
path: patches/build/libs

View File

@@ -35,7 +35,7 @@ jobs:
run: ./gradlew :patches:buildAndroid clean
- name: Setup Node.js
uses: actions/setup-node@v5
uses: actions/setup-node@v6
with:
node-version: 'lts/*'
cache: 'npm'

View File

@@ -1,3 +1,61 @@
# [5.46.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.46.0-dev.8...v5.46.0-dev.9) (2025-11-09)
### Features
* **YouTube Music:** Add `Change miniplayer color` patch ([#6259](https://github.com/ReVanced/revanced-patches/issues/6259)) ([ab808ae](https://github.com/ReVanced/revanced-patches/commit/ab808aeb773592cb26c848d8456478a346ec3bad))
# [5.46.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v5.46.0-dev.7...v5.46.0-dev.8) (2025-11-09)
### Features
* **YouTube Music:** Add `Hide buttons` patch ([#6255](https://github.com/ReVanced/revanced-patches/issues/6255)) ([7a18ebc](https://github.com/ReVanced/revanced-patches/commit/7a18ebc7ab74ba30c5d5284a4856c55cdfc31097))
# [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)
### Bug Fixes
* **Duolingo - Disable ads:** Constrain patch to last working app target ([f238ae9](https://github.com/ReVanced/revanced-patches/commit/f238ae9895000f01d1dccb800cc8efde0d5362bd))
* **Instagram - Hide navigation buttons:** Constrain patch to last working app target ([e030e9c](https://github.com/ReVanced/revanced-patches/commit/e030e9c07a7748e117ac44f6776a9f6317b20623))
* **Spotify - Hide Create button:** Remove obsolete patch that is no longer needed ([#6252](https://github.com/ReVanced/revanced-patches/issues/6252)) ([59d85b2](https://github.com/ReVanced/revanced-patches/commit/59d85b28a7fcb285ff5f2bb6ae654020d76b2019))
# [5.46.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.46.0-dev.3...v5.46.0-dev.4) (2025-11-07)
### Bug Fixes
* **YouTube - Check watch history domain name resolution:** Fix false positive warning message if the internet connection fails halfway into the DNS check ([5726353](https://github.com/ReVanced/revanced-patches/commit/57263538c79f5a561c449229ac8e068c641285d3))
# [5.46.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.46.0-dev.2...v5.46.0-dev.3) (2025-11-06)
### Bug Fixes
* **YouTube - Hide layout components:** Fix "Hide Hype points" ([#6247](https://github.com/ReVanced/revanced-patches/issues/6247)) ([5821440](https://github.com/ReVanced/revanced-patches/commit/582144026d28e57bb7adcbba39244f3c7cdbc0f3))
# [5.46.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.46.0-dev.1...v5.46.0-dev.2) (2025-11-04)
### Bug Fixes
* **YouTube - Settings:** Resolve settings search crash when searching for specific words ([#6231](https://github.com/ReVanced/revanced-patches/issues/6231)) ([76dcfae](https://github.com/ReVanced/revanced-patches/commit/76dcfaefd8679e45a70f265b0239436e60c055cf))
# [5.46.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.45.0...v5.46.0-dev.1) (2025-11-04)

View File

@@ -0,0 +1,14 @@
package app.revanced.extension.music.patches;
import app.revanced.extension.music.settings.Settings;
@SuppressWarnings("unused")
public class ChangeMiniplayerColorPatch {
/**
* Injection point
*/
public static boolean changeMiniplayerColor() {
return Settings.CHANGE_MINIPLAYER_COLOR.get();
}
}

View File

@@ -0,0 +1,49 @@
package app.revanced.extension.music.patches;
import static app.revanced.extension.shared.Utils.hideViewBy0dpUnderCondition;
import android.view.View;
import android.view.ViewGroup;
import app.revanced.extension.music.settings.Settings;
@SuppressWarnings("unused")
public class HideButtonsPatch {
/**
* Injection point
*/
public static int hideCastButton(int original) {
return Settings.HIDE_CAST_BUTTON.get() ? View.GONE : original;
}
/**
* Injection point
*/
public static void hideCastButton(View view) {
hideViewBy0dpUnderCondition(Settings.HIDE_CAST_BUTTON, view);
}
/**
* Injection point
*/
public static boolean hideHistoryButton(boolean original) {
return original && !Settings.HIDE_HISTORY_BUTTON.get();
}
/**
* Injection point
*/
public static void hideNotificationButton(View view) {
if (view.getParent() instanceof ViewGroup viewGroup) {
hideViewBy0dpUnderCondition(Settings.HIDE_NOTIFICATION_BUTTON, viewGroup);
}
}
/**
* Injection point
*/
public static void hideSearchButton(View view) {
hideViewBy0dpUnderCondition(Settings.HIDE_SEARCH_BUTTON, view);
}
}

View File

@@ -1,24 +0,0 @@
package app.revanced.extension.music.patches;
import static app.revanced.extension.shared.Utils.hideViewBy0dpUnderCondition;
import android.view.View;
import app.revanced.extension.music.settings.Settings;
@SuppressWarnings("unused")
public class HideCastButtonPatch {
/**
* Injection point
*/
public static int hideCastButton(int original) {
return Settings.HIDE_CAST_BUTTON.get() ? View.GONE : original;
}
/**
* Injection point
*/
public static void hideCastButton(View view) {
hideViewBy0dpUnderCondition(Settings.HIDE_CAST_BUTTON, view);
}
}

View File

@@ -3,6 +3,7 @@ package app.revanced.extension.music.patches;
import static app.revanced.extension.shared.Utils.hideViewBy0dpUnderCondition;
import android.view.View;
import app.revanced.extension.music.settings.Settings;
@SuppressWarnings("unused")

View File

@@ -16,8 +16,11 @@ public class Settings extends BaseSettings {
public static final BooleanSetting HIDE_GET_PREMIUM_LABEL = new BooleanSetting("revanced_music_hide_get_premium_label", TRUE, true);
// General
public static final BooleanSetting HIDE_CAST_BUTTON = new BooleanSetting("revanced_music_hide_cast_button", TRUE, false);
public static final BooleanSetting HIDE_CAST_BUTTON = new BooleanSetting("revanced_music_hide_cast_button", TRUE, true);
public static final BooleanSetting HIDE_CATEGORY_BAR = new BooleanSetting("revanced_music_hide_category_bar", FALSE, true);
public static final BooleanSetting HIDE_HISTORY_BUTTON = new BooleanSetting("revanced_music_hide_history_button", FALSE, true);
public static final BooleanSetting HIDE_SEARCH_BUTTON = new BooleanSetting("revanced_music_hide_search_button", FALSE, true);
public static final BooleanSetting HIDE_NOTIFICATION_BUTTON = new BooleanSetting("revanced_music_hide_notification_button", FALSE, true);
public static final BooleanSetting HIDE_NAVIGATION_BAR_HOME_BUTTON = new BooleanSetting("revanced_music_hide_navigation_bar_home_button", FALSE, true);
public static final BooleanSetting HIDE_NAVIGATION_BAR_SAMPLES_BUTTON = new BooleanSetting("revanced_music_hide_navigation_bar_samples_button", FALSE, true);
public static final BooleanSetting HIDE_NAVIGATION_BAR_EXPLORE_BUTTON = new BooleanSetting("revanced_music_hide_navigation_bar_explore_button", FALSE, true);
@@ -27,6 +30,7 @@ public class Settings extends BaseSettings {
public static final BooleanSetting HIDE_NAVIGATION_BAR_LABEL = new BooleanSetting("revanced_music_hide_navigation_bar_labels", FALSE, true);
// Player
public static final BooleanSetting CHANGE_MINIPLAYER_COLOR = new BooleanSetting("revanced_music_change_miniplayer_color", FALSE, true);
public static final BooleanSetting PERMANENT_REPEAT = new BooleanSetting("revanced_music_play_permanent_repeat", FALSE, true);
// Miscellaneous

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;
@@ -34,17 +32,15 @@ import android.view.Window;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.Toast;
import android.widget.Toolbar;
import androidx.annotation.ColorInt;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.text.Bidi;
import java.text.Collator;
import java.text.Normalizer;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -61,6 +57,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 {
@@ -79,6 +76,15 @@ public class Utils {
@Nullable
private static Boolean isDarkModeEnabled;
// Cached Collator instance with its locale.
@Nullable
private static Locale cachedCollatorLocale;
@Nullable
private static Collator cachedCollator;
private static final Pattern PUNCTUATION_PATTERN = Pattern.compile("\\p{P}+");
private static final Pattern DIACRITICS_PATTERN = Pattern.compile("\\p{M}");
private Utils() {
} // utility class
@@ -749,31 +755,25 @@ public class Utils {
}
/**
* Hide a view by setting its layout params to 0x0
* @param view The view to hide.
* Hides a view by setting its layout width and height to 0dp.
* Handles null layout params safely.
*
* @param view The view to hide. If null, does nothing.
*/
public static void hideViewByLayoutParams(View view) {
if (view instanceof LinearLayout) {
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(0, 0);
view.setLayoutParams(layoutParams);
} else if (view instanceof FrameLayout) {
FrameLayout.LayoutParams layoutParams2 = new FrameLayout.LayoutParams(0, 0);
view.setLayoutParams(layoutParams2);
} else if (view instanceof RelativeLayout) {
RelativeLayout.LayoutParams layoutParams3 = new RelativeLayout.LayoutParams(0, 0);
view.setLayoutParams(layoutParams3);
} else if (view instanceof Toolbar) {
Toolbar.LayoutParams layoutParams4 = new Toolbar.LayoutParams(0, 0);
view.setLayoutParams(layoutParams4);
} else if (view instanceof ViewGroup) {
ViewGroup.LayoutParams layoutParams5 = new ViewGroup.LayoutParams(0, 0);
view.setLayoutParams(layoutParams5);
public static void hideViewByLayoutParams(@Nullable View view) {
if (view == null) return;
ViewGroup.LayoutParams params = view.getLayoutParams();
if (params == null) {
// Create generic 0x0 layout params accepted by all ViewGroups.
params = new ViewGroup.LayoutParams(0, 0);
} else {
ViewGroup.LayoutParams params = view.getLayoutParams();
params.width = 0;
params.height = 0;
view.setLayoutParams(params);
}
view.setLayoutParams(params);
}
/**
@@ -790,13 +790,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;
}
@@ -805,18 +802,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.
*/
@@ -976,30 +961,60 @@ public class Utils {
}
}
private static final Pattern punctuationPattern = Pattern.compile("\\p{P}+");
/**
* Strips all punctuation and converts to lower case. A null parameter returns an empty string.
* Removes punctuation and converts text to lowercase. Returns an empty string if input is null.
*/
public static String removePunctuationToLowercase(@Nullable CharSequence original) {
if (original == null) return "";
return punctuationPattern.matcher(original).replaceAll("")
return PUNCTUATION_PATTERN.matcher(original).replaceAll("")
.toLowerCase(BaseSettings.REVANCED_LANGUAGE.get().getLocale());
}
/**
* Sort a PreferenceGroup and all it's sub groups by title or key.
* Normalizes text for search: applies NFD, removes diacritics, and lowercases (locale-neutral).
* Returns an empty string if input is null.
*/
public static String normalizeTextToLowercase(@Nullable CharSequence original) {
if (original == null) return "";
return DIACRITICS_PATTERN.matcher(Normalizer.normalize(original, Normalizer.Form.NFD))
.replaceAll("").toLowerCase(Locale.ROOT);
}
/**
* Returns a cached Collator for the current locale, or creates a new one if locale changed.
*/
private static Collator getCollator() {
Locale currentLocale = BaseSettings.REVANCED_LANGUAGE.get().getLocale();
if (cachedCollator == null || !currentLocale.equals(cachedCollatorLocale)) {
cachedCollatorLocale = currentLocale;
cachedCollator = Collator.getInstance(currentLocale);
cachedCollator.setStrength(Collator.SECONDARY); // Case-insensitive, diacritic-insensitive.
}
return cachedCollator;
}
/**
* Sorts a {@link PreferenceGroup} and all nested subgroups by title or key.
* <p>
* Sort order is determined by the preferences key {@link Sort} suffix.
* The sort order is controlled by the {@link Sort} suffix present in the preference key.
* Preferences without a key or without a {@link Sort} suffix remain in their original order.
* <p>
* If a preference has no key or no {@link Sort} suffix,
* then the preferences are left unsorted.
* Sorting is performed using {@link Collator} with the current user locale,
* ensuring correct alphabetical ordering for all supported languages
* (e.g., Ukrainian "і", German "ß", French accented characters, etc.).
*
* @param group the {@link PreferenceGroup} to sort
*/
@SuppressWarnings("deprecation")
public static void sortPreferenceGroups(PreferenceGroup group) {
Sort groupSort = Sort.fromKey(group.getKey(), Sort.UNSORTED);
List<Pair<String, Preference>> preferences = new ArrayList<>();
// Get cached Collator for locale-aware string comparison.
Collator collator = getCollator();
for (int i = 0, prefCount = group.getPreferenceCount(); i < prefCount; i++) {
Preference preference = group.getPreference(i);
@@ -1030,10 +1045,11 @@ public class Utils {
preferences.add(new Pair<>(sortValue, preference));
}
//noinspection ComparatorCombinators
// Sort the list using locale-specific collation rules.
Collections.sort(preferences, (pair1, pair2)
-> pair1.first.compareTo(pair2.first));
-> collator.compare(pair1.first, pair2.first));
// Reassign order values to reflect the new sorted sequence
int index = 0;
for (Pair<String, Preference> pair : preferences) {
int order = index++;
@@ -1090,42 +1106,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

@@ -61,7 +61,11 @@ public class CheckWatchHistoryDomainNameResolutionPatch {
// Prevent this false positive by verify youtube.com resolves.
// If youtube.com does not resolve, then it's not a watch history domain resolving error
// because the entire app will not work since no domains are resolving.
if (!domainResolvesToValidIP("youtube.com")
String domainYouTube = "youtube.com";
if (!domainResolvesToValidIP(domainYouTube)
|| domainResolvesToValidIP(HISTORY_TRACKING_ENDPOINT)
// Check multiple times, so a false positive from a flaky connection is almost impossible.
|| !domainResolvesToValidIP(domainYouTube)
|| domainResolvesToValidIP(HISTORY_TRACKING_ENDPOINT)) {
return;
}

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

@@ -392,10 +392,13 @@ public abstract class Setting<T> {
/**
* Get the parent Settings that this setting depends on.
* @return List of parent Settings (e.g., BooleanSetting or EnumSetting), or empty list if no dependencies exist.
* @return List of parent Settings, or empty list if no dependencies exist.
* Defensive: handles null availability or missing getParentSettings() override.
*/
public List<Setting<?>> getParentSettings() {
return availability == null ? Collections.emptyList() : availability.getParentSettings();
return availability == null
? Collections.emptyList()
: Objects.requireNonNullElse(availability.getParentSettings(), Collections.emptyList());
}
/**

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;
@@ -35,7 +34,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

@@ -75,7 +75,7 @@ public abstract class BaseSearchResultItem {
// Shared method for highlighting text with search query.
protected static CharSequence highlightSearchQuery(CharSequence text, Pattern queryPattern) {
if (TextUtils.isEmpty(text)) return text;
if (TextUtils.isEmpty(text) || queryPattern == null) return text;
final int adjustedColor = Utils.adjustColorBrightness(
Utils.getAppBackgroundColor(), 0.95f, 1.20f);
@@ -84,7 +84,10 @@ public abstract class BaseSearchResultItem {
Matcher matcher = queryPattern.matcher(text);
while (matcher.find()) {
spannable.setSpan(highlightSpan, matcher.start(), matcher.end(),
int start = matcher.start();
int end = matcher.end();
if (start == end) continue; // Skip zero matches.
spannable.setSpan(highlightSpan, start, end,
SpannableStringBuilder.SPAN_EXCLUSIVE_EXCLUSIVE);
}
@@ -224,10 +227,14 @@ public abstract class BaseSearchResultItem {
return searchBuilder.toString();
}
/**
* Appends normalized searchable text to the builder.
* Uses full Unicode normalization for accurate search across all languages.
*/
private void appendText(StringBuilder builder, CharSequence text) {
if (!TextUtils.isEmpty(text)) {
if (builder.length() > 0) builder.append(" ");
builder.append(Utils.removePunctuationToLowercase(text));
builder.append(Utils.normalizeTextToLowercase(text));
}
}
@@ -272,7 +279,7 @@ public abstract class BaseSearchResultItem {
*/
@Override
boolean matchesQuery(String query) {
return searchableText.contains(Utils.removePunctuationToLowercase(query));
return searchableText.contains(Utils.normalizeTextToLowercase(query));
}
/**

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);
@@ -450,7 +450,7 @@ public abstract class BaseSearchViewController {
filteredSearchItems.clear();
String queryLower = Utils.removePunctuationToLowercase(query);
String queryLower = Utils.normalizeTextToLowercase(query);
Pattern queryPattern = Pattern.compile(Pattern.quote(queryLower), Pattern.CASE_INSENSITIVE);
// Clear highlighting only for items that were previously visible.
@@ -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

@@ -7,6 +7,7 @@ import app.revanced.extension.spotify.shared.ComponentFilters.StringComponentFil
import java.util.List;
@Deprecated(forRemoval = true)
@SuppressWarnings("unused")
public final class HideCreateButtonPatch {

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

@@ -17,6 +17,7 @@ final class DescriptionComponentsFilter extends Filter {
private final ByteArrayFilterGroup cellVideoAttribute;
private final StringFilterGroup aiGeneratedVideoSummarySection;
private final StringFilterGroup hypePoints;
public DescriptionComponentsFilter() {
exceptions.addPatterns(
@@ -63,7 +64,7 @@ final class DescriptionComponentsFilter extends Filter {
"how_this_was_made_section"
);
final StringFilterGroup hypePoints = new StringFilterGroup(
hypePoints = new StringFilterGroup(
Settings.HIDE_HYPE_POINTS,
"hype_points_factoid"
);
@@ -112,7 +113,7 @@ final class DescriptionComponentsFilter extends Filter {
boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
if (matchedGroup == aiGeneratedVideoSummarySection) {
if (matchedGroup == aiGeneratedVideoSummarySection || matchedGroup == hypePoints) {
// Only hide if player is open, in case this component is used somewhere else.
return PlayerType.getCurrent().isMaximizedOrFullscreen();
}

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

@@ -22,6 +22,11 @@ public class SpoofVideoStreamsPatch {
return Settings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.isAvailable()
&& Settings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get() == ANDROID_VR_1_43_32;
}
@Override
public List<Setting<?>> getParentSettings() {
return List.of(Settings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE);
}
}
/**

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.1
version = 5.46.0-dev.9

View File

@@ -404,6 +404,10 @@ public final class app/revanced/patches/music/layout/branding/CustomBrandingPatc
public static final fun getCustomBrandingPatch ()Lapp/revanced/patcher/patch/ResourcePatch;
}
public final class app/revanced/patches/music/layout/buttons/HideButtonsKt {
public static final fun getHideButtons ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/music/layout/castbutton/HideCastButtonKt {
public static final fun getHideCastButton ()Lapp/revanced/patcher/patch/BytecodePatch;
}
@@ -412,6 +416,10 @@ public final class app/revanced/patches/music/layout/compactheader/HideCategoryB
public static final fun getHideCategoryBar ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/music/layout/miniplayercolor/ChangeMiniplayerColorKt {
public static final fun getChangeMiniplayerColor ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/music/layout/navigationbar/NavigationBarPatchKt {
public static final fun getNavigationBarPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}

View File

@@ -18,7 +18,7 @@ val removeShareTargetsPatch = resourcePatch(
document("res/xml/shortcuts.xml")
} catch (_: FileNotFoundException) {
return@execute Logger.getLogger(this::class.java.name).warning(
"The app has no shortcuts. No changes applied.")
"The app has no shortcuts. No changes applied.")
}.use { document ->
val rootNode = document.getNode("shortcuts") as? Element ?: return@use

View File

@@ -9,7 +9,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
val disableAdsPatch = bytecodePatch(
"Disable ads",
) {
compatibleWith("com.duolingo")
// 6.55.3 and higher can show ads after each exercise.
compatibleWith("com.duolingo"("6.54.5"))
execute {
// Couple approaches to remove ads exist:

View File

@@ -4,6 +4,7 @@ import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.patch.booleanOption
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.instagram.misc.extension.sharedExtensionPatch
import app.revanced.patches.shared.PATCH_NAME_HIDE_NAVIGATION_BUTTONS
import app.revanced.util.addInstructionsAtControlFlowLabel
import app.revanced.util.findFreeRegister
import app.revanced.util.getReference
@@ -19,11 +20,11 @@ private const val EXTENSION_CLASS_DESCRIPTOR =
@Suppress("unused")
val hideNavigationButtonsPatch = bytecodePatch(
name = "Hide navigation buttons",
name = PATCH_NAME_HIDE_NAVIGATION_BUTTONS,
description = "Hides navigation bar buttons, such as the Reels and Create button.",
use = false
) {
compatibleWith("com.instagram.android")
compatibleWith("com.instagram.android"("401.0.0.48.79"))
dependsOn(sharedExtensionPatch)

View File

@@ -0,0 +1,64 @@
package app.revanced.patches.music.layout.buttons
import app.revanced.patcher.fingerprint
import app.revanced.util.containsLiteralInstruction
import app.revanced.util.literal
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
internal val mediaRouteButtonFingerprint = fingerprint {
accessFlags(AccessFlags.PRIVATE, AccessFlags.FINAL)
returns("Z")
strings("MediaRouteButton")
}
internal val playerOverlayChipFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returns("L")
literal { playerOverlayChip }
}
internal val historyMenuItemFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returns("V")
parameters("Landroid/view/Menu;")
opcodes(
Opcode.INVOKE_INTERFACE,
Opcode.RETURN_VOID
)
literal { historyMenuItem }
custom { _, classDef ->
classDef.methods.count() == 5
}
}
internal val historyMenuItemOfflineTabFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returns("V")
parameters("Landroid/view/Menu;")
opcodes(
Opcode.INVOKE_INTERFACE,
Opcode.RETURN_VOID
)
custom { method, _ ->
method.containsLiteralInstruction(historyMenuItem) &&
method.containsLiteralInstruction(offlineSettingsMenuItem)
}
}
internal val searchActionViewFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returns("Landroid/view/View;")
parameters()
literal { searchButton }
custom { _, classDef ->
classDef.type.endsWith("/SearchActionProvider;")
}
}
internal val topBarMenuItemImageViewFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returns("Landroid/view/View;")
parameters()
literal { topBarMenuItemImageView }
}

View File

@@ -0,0 +1,121 @@
package app.revanced.patches.music.layout.buttons
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.all.misc.resources.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch
import app.revanced.patches.music.misc.extension.sharedExtensionPatch
import app.revanced.patches.music.misc.settings.PreferenceScreen
import app.revanced.patches.music.misc.settings.settingsPatch
import app.revanced.patches.shared.misc.mapping.get
import app.revanced.patches.shared.misc.mapping.resourceMappingPatch
import app.revanced.patches.shared.misc.mapping.resourceMappings
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
import app.revanced.util.indexOfFirstInstructionOrThrow
import app.revanced.util.indexOfFirstLiteralInstructionOrThrow
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
internal var playerOverlayChip = -1L
private set
internal var historyMenuItem = -1L
private set
internal var offlineSettingsMenuItem = -1L
private set
internal var searchButton = -1L
private set
internal var topBarMenuItemImageView = -1L
private set
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/music/patches/HideButtonsPatch;"
@Suppress("unused")
val hideButtons = bytecodePatch(
name = "Hide buttons",
description = "Adds options to hide the cast, history, notification, and search buttons."
) {
dependsOn(
sharedExtensionPatch,
settingsPatch,
addResourcesPatch,
resourceMappingPatch
)
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.29.52",
"8.10.52"
)
)
execute {
playerOverlayChip = resourceMappings["id", "player_overlay_chip"]
historyMenuItem = resourceMappings["id", "history_menu_item"]
offlineSettingsMenuItem = resourceMappings["id", "offline_settings_menu_item"]
searchButton = resourceMappings["layout", "search_button"]
topBarMenuItemImageView = resourceMappings["id", "top_bar_menu_item_image_view"]
addResources("music", "layout.buttons.hideButtons")
PreferenceScreen.GENERAL.addPreferences(
SwitchPreference("revanced_music_hide_cast_button"),
SwitchPreference("revanced_music_hide_history_button"),
SwitchPreference("revanced_music_hide_notification_button"),
SwitchPreference("revanced_music_hide_search_button")
)
// Region for hide history button in the top bar.
arrayOf(
historyMenuItemFingerprint,
historyMenuItemOfflineTabFingerprint
).forEach { fingerprint ->
fingerprint.method.apply {
val targetIndex = fingerprint.patternMatch!!.startIndex
val targetRegister = getInstruction<FiveRegisterInstruction>(targetIndex).registerD
addInstructions(
targetIndex,
"""
invoke-static { v$targetRegister }, $EXTENSION_CLASS_DESCRIPTOR->hideHistoryButton(Z)Z
move-result v$targetRegister
"""
)
}
}
// Region for hide cast, search and notification buttons in the top bar.
arrayOf(
Triple(playerOverlayChipFingerprint, playerOverlayChip, "hideCastButton"),
Triple(searchActionViewFingerprint, searchButton, "hideSearchButton"),
Triple(topBarMenuItemImageViewFingerprint, topBarMenuItemImageView, "hideNotificationButton")
).forEach { (fingerprint, resourceIdLiteral, methodName) ->
fingerprint.method.apply {
val resourceIndex = indexOfFirstLiteralInstructionOrThrow(resourceIdLiteral)
val targetIndex = indexOfFirstInstructionOrThrow(
resourceIndex, Opcode.MOVE_RESULT_OBJECT
)
val targetRegister = getInstruction<OneRegisterInstruction>(targetIndex).registerA
addInstruction(
targetIndex + 1,
"invoke-static { v$targetRegister }, " +
"$EXTENSION_CLASS_DESCRIPTOR->$methodName(Landroid/view/View;)V"
)
}
}
// Region for hide cast button in the player.
mediaRouteButtonFingerprint.classDef.methods.single { method ->
method.name == "setVisibility"
}.addInstructions(
0,
"""
invoke-static { p1 }, $EXTENSION_CLASS_DESCRIPTOR->hideCastButton(I)I
move-result p1
"""
)
}
}

View File

@@ -1,17 +0,0 @@
package app.revanced.patches.music.layout.castbutton
import com.android.tools.smali.dexlib2.AccessFlags
import app.revanced.patcher.fingerprint
import app.revanced.util.literal
internal val mediaRouteButtonFingerprint = fingerprint {
accessFlags(AccessFlags.PRIVATE, AccessFlags.FINAL)
returns("Z")
strings("MediaRouteButton")
}
internal val playerOverlayChipFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returns("L")
literal { playerOverlayChip }
}

View File

@@ -1,77 +1,10 @@
package app.revanced.patches.music.layout.castbutton
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.all.misc.resources.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch
import app.revanced.patches.music.misc.extension.sharedExtensionPatch
import app.revanced.patches.music.misc.settings.PreferenceScreen
import app.revanced.patches.music.misc.settings.settingsPatch
import app.revanced.patches.shared.misc.mapping.get
import app.revanced.patches.shared.misc.mapping.resourceMappingPatch
import app.revanced.patches.shared.misc.mapping.resourceMappings
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
import app.revanced.util.indexOfFirstInstructionOrThrow
import app.revanced.util.indexOfFirstLiteralInstructionOrThrow
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
internal var playerOverlayChip = -1L
private set
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/music/patches/HideCastButtonPatch;"
import app.revanced.patches.music.layout.buttons.hideButtons
@Deprecated("Patch was moved", ReplaceWith("hideButtons"))
@Suppress("unused")
val hideCastButton = bytecodePatch(
name = "Hide cast button",
description = "Adds an option to hide the cast button."
) {
dependsOn(
sharedExtensionPatch,
settingsPatch,
addResourcesPatch,
resourceMappingPatch
)
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.29.52",
"8.10.52"
)
)
execute {
playerOverlayChip = resourceMappings["id", "player_overlay_chip"]
addResources("music", "layout.castbutton.hideCastButton")
PreferenceScreen.GENERAL.addPreferences(
SwitchPreference("revanced_music_hide_cast_button"),
)
mediaRouteButtonFingerprint.classDef.apply {
val setVisibilityMethod = methods.first { method -> method.name == "setVisibility" }
setVisibilityMethod.addInstructions(
0,
"""
invoke-static { p1 }, $EXTENSION_CLASS_DESCRIPTOR->hideCastButton(I)I
move-result p1
"""
)
}
playerOverlayChipFingerprint.method.apply {
val resourceIndex = indexOfFirstLiteralInstructionOrThrow(playerOverlayChip)
val targetIndex = indexOfFirstInstructionOrThrow(resourceIndex, Opcode.MOVE_RESULT_OBJECT)
val targetRegister = getInstruction<OneRegisterInstruction>(targetIndex).registerA
addInstruction(
targetIndex + 1,
"invoke-static { v$targetRegister }, $EXTENSION_CLASS_DESCRIPTOR->hideCastButton(Landroid/view/View;)V"
)
}
}
val hideCastButton = bytecodePatch{
dependsOn(hideButtons)
}

View File

@@ -0,0 +1,110 @@
@file:Suppress("SpellCheckingInspection")
package app.revanced.patches.music.layout.miniplayercolor
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.all.misc.resources.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch
import app.revanced.patches.music.misc.extension.sharedExtensionPatch
import app.revanced.patches.music.misc.settings.PreferenceScreen
import app.revanced.patches.music.misc.settings.settingsPatch
import app.revanced.patches.shared.misc.mapping.get
import app.revanced.patches.shared.misc.mapping.resourceMappingPatch
import app.revanced.patches.shared.misc.mapping.resourceMappings
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
import app.revanced.util.addInstructionsAtControlFlowLabel
import app.revanced.util.findFreeRegister
import app.revanced.util.getReference
import app.revanced.util.indexOfFirstInstructionOrThrow
import app.revanced.util.indexOfFirstInstructionReversedOrThrow
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
internal var mpp_player_bottom_sheet = -1L
private set
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/music/patches/ChangeMiniplayerColorPatch;"
@Suppress("unused")
val changeMiniplayerColor = bytecodePatch(
name = "Change miniplayer color",
description = "Adds an option to change the miniplayer background color to match the fullscreen player."
) {
dependsOn(
sharedExtensionPatch,
settingsPatch,
addResourcesPatch,
resourceMappingPatch
)
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.29.52",
"8.10.52"
)
)
execute {
mpp_player_bottom_sheet = resourceMappings["id", "mpp_player_bottom_sheet"]
addResources("music", "layout.miniplayercolor.changeMiniplayerColor")
PreferenceScreen.PLAYER.addPreferences(
SwitchPreference("revanced_music_change_miniplayer_color"),
)
switchToggleColorFingerprint.match(miniPlayerConstructorFingerprint.classDef).let {
val relativeIndex = it.patternMatch!!.endIndex + 1
val invokeVirtualIndex = it.method.indexOfFirstInstructionOrThrow(
relativeIndex, Opcode.INVOKE_VIRTUAL
)
val colorMathPlayerInvokeVirtualReference = it.method
.getInstruction<ReferenceInstruction>(invokeVirtualIndex).reference
val iGetIndex = it.method.indexOfFirstInstructionOrThrow(
relativeIndex, Opcode.IGET
)
val colorMathPlayerIGetReference = it.method
.getInstruction<ReferenceInstruction>(iGetIndex).reference as FieldReference
val colorGreyIndex = miniPlayerConstructorFingerprint.method.indexOfFirstInstructionReversedOrThrow {
getReference<MethodReference>()?.name == "getColor"
}
val iPutIndex = miniPlayerConstructorFingerprint.method.indexOfFirstInstructionOrThrow(
colorGreyIndex, Opcode.IPUT
)
val colorMathPlayerIPutReference = miniPlayerConstructorFingerprint.method
.getInstruction<ReferenceInstruction>(iPutIndex).reference
miniPlayerConstructorFingerprint.classDef.methods.single { method ->
method.accessFlags == AccessFlags.PUBLIC.value or AccessFlags.FINAL.value &&
method.returnType == "V" &&
method.parameters == it.originalMethod.parameters
}.apply {
val insertIndex = indexOfFirstInstructionReversedOrThrow(Opcode.INVOKE_DIRECT)
val freeRegister = findFreeRegister(insertIndex)
addInstructionsAtControlFlowLabel(
insertIndex,
"""
invoke-static {}, $EXTENSION_CLASS_DESCRIPTOR->changeMiniplayerColor()Z
move-result v$freeRegister
if-eqz v$freeRegister, :off
invoke-virtual { p1 }, $colorMathPlayerInvokeVirtualReference
move-result-object v$freeRegister
check-cast v$freeRegister, ${colorMathPlayerIGetReference.definingClass}
iget v$freeRegister, v$freeRegister, $colorMathPlayerIGetReference
iput v$freeRegister, p0, $colorMathPlayerIPutReference
:off
nop
"""
)
}
}
}
}

View File

@@ -0,0 +1,27 @@
package app.revanced.patches.music.layout.miniplayercolor
import app.revanced.patcher.fingerprint
import app.revanced.util.literal
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
internal val miniPlayerConstructorFingerprint = fingerprint {
returns("V")
strings("sharedToggleMenuItemMutations")
literal { mpp_player_bottom_sheet }
}
/**
* Matches to the class found in [miniPlayerConstructorFingerprint].
*/
internal val switchToggleColorFingerprint = fingerprint {
accessFlags(AccessFlags.PRIVATE, AccessFlags.FINAL)
returns("V")
parameters("L", "J")
opcodes(
Opcode.INVOKE_VIRTUAL,
Opcode.MOVE_RESULT_OBJECT,
Opcode.CHECK_CAST,
Opcode.IGET
)
}

View File

@@ -12,3 +12,5 @@ internal const val PATCH_DESCRIPTION_SANITIZE_SHARING_LINKS = "Removes the track
internal const val PATCH_NAME_CHANGE_LINK_SHARING_DOMAIN = "Change link sharing domain"
internal const val PATCH_DESCRIPTION_CHANGE_LINK_SHARING_DOMAIN = "Replaces the domain name of shared links."
internal const val PATCH_NAME_HIDE_NAVIGATION_BUTTONS = "Hide navigation buttons"

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

@@ -15,7 +15,7 @@ val disableLicenseCheckPatch = bytecodePatch(
execute {
if (processLicenseResponseFingerprint.methodOrNull == null || validateLicenseResponseFingerprint.methodOrNull == null) {
return@execute Logger.getLogger(this::class.java.name)
.warning("Could not find Pairip licensing check. No changes applied.")
.warning("Could not find Pairip licensing check. No changes applied.")
}
// Set first parameter (responseCode) to 0 (success status).

View File

@@ -7,10 +7,12 @@ import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
@Deprecated("Obsolete")
internal val navigationBarItemSetClassFingerprint = fingerprint {
strings("NavigationBarItemSet(")
}
@Deprecated("Obsolete")
internal val navigationBarItemSetConstructorFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR)
// Make sure the method checks whether navigation bar items are null before adding them.
@@ -23,6 +25,7 @@ internal val navigationBarItemSetConstructorFingerprint = fingerprint {
}
}
@Deprecated("Obsolete")
internal val oldNavigationBarAddItemFingerprint = fingerprint {
strings("Bottom navigation tabs exceeds maximum of 5 tabs")
}

View File

@@ -14,11 +14,11 @@ import com.android.tools.smali.dexlib2.iface.reference.MethodReference
private const val EXTENSION_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/spotify/layout/hide/createbutton/HideCreateButtonPatch;"
@Deprecated("Patch no longer works with the latest version of Spotify, " +
"and Spotify has added this functionality to the app")
@Suppress("unused")
val hideCreateButtonPatch = bytecodePatch(
name = "Hide Create button",
description = "Hides the \"Create\" button in the navigation bar. The latest app targets do not need this patch.",
use = false
) {
compatibleWith("com.spotify.music")

View File

@@ -3,23 +3,13 @@ package app.revanced.patches.viber.misc.navbar
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
import app.revanced.patcher.patch.booleanOption
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.shared.PATCH_NAME_HIDE_NAVIGATION_BUTTONS
import java.util.logging.Logger
import kotlin.collections.joinToString
private const val instructionsFooter = """
# If we reach this, it means that this tab has been disabled by user
const/4 v0, 0
return v0 # return false as "This tab is not enabled"
# Proceed with default execution
:continue
nop
"""
@Suppress("unused")
val hideNavigationButtonsPatch = bytecodePatch(
name = "Hide navigation buttons",
name = PATCH_NAME_HIDE_NAVIGATION_BUTTONS,
description = "Permanently hides navigation bar buttons, such as Explore and Marketplace.",
use = false
) {
@@ -40,13 +30,21 @@ val hideNavigationButtonsPatch = bytecodePatch(
if (allowedItems.size == AllowedNavigationItems.entries.size) {
return@execute Logger.getLogger(this::class.java.name).warning(
"No hide navigation buttons options are enabled. No changes made."
"No hide navigation buttons options are enabled. No changes applied."
)
}
val injectionInstructions = allowedItems
.map { it.key.buildAllowInstruction() }
.joinToString("\n") + instructionsFooter
.joinToString("\n") + """
# If we reach this, it means that this tab has been disabled by user
const/4 v0, 0
return v0 # return false as "This tab is not enabled"
# Proceed with default execution
:continue
nop
"""
shouldShowTabIdMethodFingerprint
.method
@@ -78,8 +76,8 @@ private enum class AllowedNavigationItems(
fun buildAllowInstruction(): String =
ids.joinToString("\n") { id ->
"""
const/4 v0, $id # If tabId == $id ($itemName), don't hide it
if-eq p1, v0, :continue
const/4 v0, $id # If tabId == $id ($itemName), don't hide it
if-eq p1, v0, :continue
"""
}
}

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -134,9 +133,8 @@ Second \"item\" text"</string>
<!-- 'Ambient mode' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Help & feedback' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Playback speed' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
@@ -268,7 +266,7 @@ Second \"item\" text"</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
</patch>
<patch id="layout.compactheader.hideCategoryBar">
</patch>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -134,9 +133,8 @@ Second \"item\" text"</string>
<!-- 'Ambient mode' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Help & feedback' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Playback speed' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
@@ -268,7 +266,7 @@ Second \"item\" text"</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
</patch>
<patch id="layout.compactheader.hideCategoryBar">
</patch>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,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 +164,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">مدير Feature Flags</string>
<string name="revanced_debug_feature_flags_manager_summary">إدارة Feature Flags المنطقية</string>
<string name="revanced_debug_feature_flags_manager_active_header">Flags نشطة (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Flags محظورة (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">البحث عن Flags...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">تم حفظ Flags</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">تم إعادة تعيين Flags</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">تم نسخ Flags إلى الحافظة</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">تطهير روابط المشاركة</string>
@@ -328,6 +336,9 @@ 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_summary_on">تم إخفاء نقاط التشجيع</string>
<string name="revanced_hide_hype_points_summary_off">يتم عرض نقاط التشجيع</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>
@@ -771,15 +782,14 @@ Second \"item\" text"</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>
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<string name="revanced_hide_player_flyout_more_info_title">إخفاء المزيد من المعلومات</string>
<string name="revanced_hide_player_flyout_more_info_summary_on">تم إخفاء قائمة المزيد من المعلومات</string>
<string name="revanced_hide_player_flyout_more_info_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_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_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>
@@ -1661,10 +1671,19 @@ Second \"item\" text"</string>
<string name="revanced_music_play_permanent_repeat_summary_on">تم تمكين التكرار الدائم</string>
<string name="revanced_music_play_permanent_repeat_summary_off">تم تعطيل التكرار الدائم</string>
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">إخفاء زر البث</string>
<string name="revanced_music_hide_cast_button_summary_on">تم إخفاء زر البث</string>
<string name="revanced_music_hide_cast_button_summary_off">يتم عرض زر البث</string>
<string name="revanced_music_hide_history_button_title">إخفاء زر السجل</string>
<string name="revanced_music_hide_history_button_summary_on">زر السجل مخفي</string>
<string name="revanced_music_hide_history_button_summary_off">زر السجل ظاهر</string>
<string name="revanced_music_hide_notification_button_title">إخفاء زر الإشعارات</string>
<string name="revanced_music_hide_notification_button_summary_on">تم إخفاء زر الإشعارات</string>
<string name="revanced_music_hide_notification_button_summary_off">يتم عرض زر الإشعارات</string>
<string name="revanced_music_hide_search_button_title">إخفاء زر البحث</string>
<string name="revanced_music_hide_search_button_summary_on">تم إخفاء زر البحث</string>
<string name="revanced_music_hide_search_button_summary_off">يتم عرض زر البحث</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">إخفاء شريط الفئات</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -29,7 +28,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. -->
@@ -135,9 +133,8 @@ Second \"item\" text"</string>
<!-- 'Ambient mode' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Help & feedback' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Playback speed' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
@@ -270,7 +267,7 @@ Second \"item\" text"</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
</patch>
<patch id="layout.compactheader.hideCategoryBar">
</patch>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,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">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 +164,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 nişançıları idarəedicisi</string>
<string name="revanced_debug_feature_flags_manager_summary">Boolean xüsusiyyət nişançıların idarə et</string>
<string name="revanced_debug_feature_flags_manager_active_header">Aktiv nişançılar (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Bloklanmış nişançılar (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Nişançıları axtarın...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Nişançılar saxlandı</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Nişançılar sıfırlandı</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Nişançılar buferə köçürüldü</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Paylaşım linklərin təmizlə</string>
@@ -328,6 +336,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">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>
@@ -771,15 +782,14 @@ Bu seçimi dəyişdirmə işə düşmürsə, Gizli rejimə keçməyə çalışı
<string name="revanced_hide_player_flyout_speed_title">\"Oynatma sürəti\"ni gizlət</string>
<string name="revanced_hide_player_flyout_speed_summary_on">Oynatma sürəti menyusu gizlidir</string>
<string name="revanced_hide_player_flyout_speed_summary_off">Oynatma sürəti menyusu göstərilir</string>
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<string name="revanced_hide_player_flyout_more_info_title">\"Daha çox məlumat\"ı gizlət</string>
<string name="revanced_hide_player_flyout_more_info_summary_on">Ətraflı məlumat menyusu gizlidir</string>
<string name="revanced_hide_player_flyout_more_info_summary_off">Ətraflı məlumat menyusu göstərilir</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">Kilid ekranını gizlət</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_on">Kilid ekranı menyusu gizlidir</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_off">Kilid ekranı menyusu göstərilir</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 ilə dinləməni gizlət</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_on">YouTube Music ilə dinlə menyusu gizlədilib</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_off">YouTube Music ilə dinlə menyusu göstərilir</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">Səs trekini gizlət</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">Səs axını menyusu gizlidir</string>
@@ -1660,10 +1670,19 @@ Video oynatma AV1 ilə ilişə bilər və ya kadrlar buraxıla bilər."</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Kəsintisiz təkrarlama aktivdir</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Kəsintisiz təkrarlama qapalıdır</string>
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">Yayım düyməsini gizlət</string>
<string name="revanced_music_hide_cast_button_summary_on">Yayım düyməsi gizlidir</string>
<string name="revanced_music_hide_cast_button_summary_off">Yayım düyməsi göstərilir</string>
<string name="revanced_music_hide_history_button_title">Keçmiş düyməsini gizlət</string>
<string name="revanced_music_hide_history_button_summary_on">Keçmiş düyməsi gizlidir</string>
<string name="revanced_music_hide_history_button_summary_off">Keçmiş düyməsi görünür</string>
<string name="revanced_music_hide_notification_button_title">Bildiriş düyməsini gizlət</string>
<string name="revanced_music_hide_notification_button_summary_on">Bildiriş düyməsi gizlidir</string>
<string name="revanced_music_hide_notification_button_summary_off">Bildiriş düyməsi görünür</string>
<string name="revanced_music_hide_search_button_title">Axtarış düyməsini gizlət</string>
<string name="revanced_music_hide_search_button_summary_on">Axtarış düyməsi gizlidir</string>
<string name="revanced_music_hide_search_button_summary_off">Axtarış düyməsi görünür</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Kateqoriya cizgisin gizlət</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,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 +164,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>
@@ -328,6 +336,9 @@ 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">Схаваць 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_summary_on">Раздзел «Пазнаёмцеся з падкастам» схаваны</string>
<string name="revanced_hide_podcast_section_summary_off">Раздзел «Пазнаёмцеся з падкастам» паказаны</string>
@@ -771,15 +782,14 @@ Second \"item\" text"</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>
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<string name="revanced_hide_player_flyout_more_info_title">Схаваць Дадатковая інфармацыя</string>
<string name="revanced_hide_player_flyout_more_info_summary_on">Меню дадатковай інфармацыі схавана</string>
<string name="revanced_hide_player_flyout_more_info_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_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_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>
@@ -1662,10 +1672,19 @@ Second \"item\" text"</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Пастаянны паўтор уключаны</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Пастаянны паўтор адключаны</string>
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">Схаваць кнопку трансляцыі</string>
<string name="revanced_music_hide_cast_button_summary_on">Кнопка трансляцыі схавана</string>
<string name="revanced_music_hide_cast_button_summary_off">Кнопка трансляцыі паказана</string>
<string name="revanced_music_hide_history_button_title">Схаваць кнопку гісторыі</string>
<string name="revanced_music_hide_history_button_summary_on">Кнопка гісторыі схавана</string>
<string name="revanced_music_hide_history_button_summary_off">Кнопка гісторыі паказана</string>
<string name="revanced_music_hide_notification_button_title">Схаваць кнопку апавяшчэння</string>
<string name="revanced_music_hide_notification_button_summary_on">Кнопка апавяшчэння схаваная</string>
<string name="revanced_music_hide_notification_button_summary_off">Кнопка апавяшчэння паказаная</string>
<string name="revanced_music_hide_search_button_title">Схаваць кнопку пошуку</string>
<string name="revanced_music_hide_search_button_summary_on">Кнопка пошуку схаваная</string>
<string name="revanced_music_hide_search_button_summary_off">Кнопка пошуку паказаная</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Схаваць панэль катэгорый</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,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 +164,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>
@@ -328,6 +336,9 @@ 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_summary_on">Точките на хайп са скрити</string>
<string name="revanced_hide_hype_points_summary_off">Точките на хайп са показани</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>
@@ -771,15 +782,14 @@ Second \"item\" text"</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>
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<string name="revanced_hide_player_flyout_more_info_title">\"Допълнителна информация\"</string>
<string name="revanced_hide_player_flyout_more_info_summary_on">\"Допълнителна информация\" е скрита</string>
<string name="revanced_hide_player_flyout_more_info_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_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_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>
@@ -1661,10 +1671,19 @@ Second \"item\" text"</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Постоянното повтаряне е активирано</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Постоянното повтаряне е деактивирано</string>
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">Скриване на бутона за предаване</string>
<string name="revanced_music_hide_cast_button_summary_on">Бутонът за предаване е скрит</string>
<string name="revanced_music_hide_cast_button_summary_off">Бутонът за предаване е показан</string>
<string name="revanced_music_hide_history_button_title">Скриване на бутона за история</string>
<string name="revanced_music_hide_history_button_summary_on">Бутонът за история е скрит</string>
<string name="revanced_music_hide_history_button_summary_off">Бутонът за история е показан</string>
<string name="revanced_music_hide_notification_button_title">Скриване на бутона за известия</string>
<string name="revanced_music_hide_notification_button_summary_on">Бутонът за известия е скрит</string>
<string name="revanced_music_hide_notification_button_summary_off">Бутонът за известия е показан</string>
<string name="revanced_music_hide_search_button_title">Скриване на бутона за търсене</string>
<string name="revanced_music_hide_search_button_summary_on">Бутонът за търсене е скрит</string>
<string name="revanced_music_hide_search_button_summary_off">Бутонът за търсене е показан</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Скриване на лентата с категории</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,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 +164,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>
@@ -324,6 +332,9 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_hide_how_this_was_made_section_title">\'How this content was made\' লুকান</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">How this content was made বিভাগটি লুকানো আছে</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">How this content was made বিভাগটি দেখানো হয়েছে</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">\'Explore the podcast\' লুকান</string>
<string name="revanced_hide_podcast_section_summary_on">Explore the podcast বিভাগটি লুকানো আছে</string>
<string name="revanced_hide_podcast_section_summary_off">Explore the podcast বিভাগটি দেখানো হয়েছে</string>
@@ -767,15 +778,14 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<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>
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<string name="revanced_hide_player_flyout_more_info_title">আরো তথ্য লুকান</string>
<string name="revanced_hide_player_flyout_more_info_summary_on">আরও তথ্য মেনু লুকানো আছে</string>
<string name="revanced_hide_player_flyout_more_info_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_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">ইউটিউব মিউজিক দিয়ে শুনুন লুকান</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_on">ইউটিউব মিউজিক দিয়ে শুনুন মেনু লুকানো আছে</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_off">ইউটিউব মিউজিক দিয়ে শুনুন মেনু দেখানো আছে</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>
@@ -1657,10 +1667,19 @@ AV1 সহ ভিডিও প্লেব্যাক আটকে যেতে
<string name="revanced_music_play_permanent_repeat_summary_on">স্থায়ী পুনরাবৃত্তি সক্ষম করা হয়েছে</string>
<string name="revanced_music_play_permanent_repeat_summary_off">স্থায়ী পুনরাবৃত্তি অক্ষম করা হয়েছে</string>
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">কাস্ট বোতাম লুকান</string>
<string name="revanced_music_hide_cast_button_summary_on">কাস্ট বোতাম লুকানো আছে</string>
<string name="revanced_music_hide_cast_button_summary_off">কাস্ট বোতাম দেখানো আছে</string>
<string name="revanced_music_hide_history_button_title">ইতিহাস বোতাম লুকান</string>
<string name="revanced_music_hide_history_button_summary_on">ইতিহাস বোতাম লুকানো আছে</string>
<string name="revanced_music_hide_history_button_summary_off">ইতিহাস বোতাম দেখানো আছে</string>
<string name="revanced_music_hide_notification_button_title">বিজ্ঞপ্তি বাটন লুকান</string>
<string name="revanced_music_hide_notification_button_summary_on">বিজ্ঞপ্তি বাটন লুকানো আছে</string>
<string name="revanced_music_hide_notification_button_summary_off">বিজ্ঞপ্তি বাটন দেখানো হয়েছে</string>
<string name="revanced_music_hide_search_button_title">অনুসন্ধান বাটন লুকান</string>
<string name="revanced_music_hide_search_button_summary_on">অনুসন্ধান বাটন লুকানো আছে</string>
<string name="revanced_music_hide_search_button_summary_off">অনুসন্ধান বাটন দেখানো হয়েছে</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">ক্যাটাগরি বার লুকান</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -134,9 +133,8 @@ Second \"item\" text"</string>
<!-- 'Ambient mode' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Help & feedback' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Playback speed' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
@@ -268,7 +266,7 @@ Second \"item\" text"</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
</patch>
<patch id="layout.compactheader.hideCategoryBar">
</patch>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -134,9 +133,8 @@ Second \"item\" text"</string>
<!-- 'Ambient mode' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Help & feedback' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Playback speed' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
@@ -268,7 +266,7 @@ Second \"item\" text"</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
</patch>
<patch id="layout.compactheader.hideCategoryBar">
</patch>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,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 +164,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>
@@ -328,6 +336,9 @@ Pokud se Doodle v současné době zobrazuje ve vaší oblasti a toto nastavení
<string name="revanced_hide_how_this_was_made_section_title">Skrýt „Jak tento obsah vznikl“</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">Sekce Jak tento obsah vznikl je skrytá</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">Sekce Jak tento obsah vznikl je zobrazena</string>
<string name="revanced_hide_hype_points_title">Skrýt Hype body</string>
<string name="revanced_hide_hype_points_summary_on">Hype body jsou skryté</string>
<string name="revanced_hide_hype_points_summary_off">Hype body jsou zobrazené</string>
<string name="revanced_hide_podcast_section_title">Skrýt „Prozkoumat podcast“</string>
<string name="revanced_hide_podcast_section_summary_on">Sekce Prozkoumat podcast je skrytá</string>
<string name="revanced_hide_podcast_section_summary_off">Sekce Prozkoumat podcast je zobrazena</string>
@@ -771,15 +782,14 @@ Pokud změna tohoto nastavení nemá žádný účinek, zkuste přepnout do rež
<string name="revanced_hide_player_flyout_speed_title">Skrýt Rychlost přehrávání</string>
<string name="revanced_hide_player_flyout_speed_summary_on">Menu Rychlost přehrávání je skryto</string>
<string name="revanced_hide_player_flyout_speed_summary_off">Menu Rychlost přehrávání je zobrazeno</string>
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<string name="revanced_hide_player_flyout_more_info_title">Skrýt Více informací</string>
<string name="revanced_hide_player_flyout_more_info_summary_on">Menu Více informací je skryto</string>
<string name="revanced_hide_player_flyout_more_info_summary_off">Menu Více informací je zobrazeno</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">Skrýt Zamknout obrazovku</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_on">Menu Zamknout obrazovku je skryto</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_off">Menu Zamknout obrazovku je zobrazeno</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">Skrýt Poslouchat v YouTube Music</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_on">Nabídka Poslouchat v YouTube Music je skrytá</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_off">Nabídka Poslouchat v YouTube Music je zobrazena</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">Skrýt Zvuková stopa</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">Menu Zvuková stopa je skryto</string>
@@ -1661,10 +1671,19 @@ Přehrávání videa s AV1 se může sekat nebo vypadávat snímky."</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Trvalé opakování je povoleno</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Trvalé opakování je zakázáno</string>
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">Skrýt tlačítko Odesílat</string>
<string name="revanced_music_hide_cast_button_summary_on">Tlačítko Odesílat je skryté</string>
<string name="revanced_music_hide_cast_button_summary_off">Tlačítko Odesílat je zobrazené</string>
<string name="revanced_music_hide_history_button_title">Skrýt tlačítko historie</string>
<string name="revanced_music_hide_history_button_summary_on">Tlačítko historie je skryté</string>
<string name="revanced_music_hide_history_button_summary_off">Tlačítko historie je zobrazeno</string>
<string name="revanced_music_hide_notification_button_title">Skrýt tlačítko oznámení</string>
<string name="revanced_music_hide_notification_button_summary_on">Tlačítko oznámení je skryté</string>
<string name="revanced_music_hide_notification_button_summary_off">Tlačítko oznámení je zobrazené</string>
<string name="revanced_music_hide_search_button_title">Skrýt tlačítko vyhledávání</string>
<string name="revanced_music_hide_search_button_summary_on">Tlačítko vyhledávání je skryté</string>
<string name="revanced_music_hide_search_button_summary_off">Tlačítko vyhledávání je zobrazené</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Skrýt panel kategorií</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,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 +164,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>
@@ -328,6 +336,9 @@ Hvis et Doodle vises i øjeblikket i din region, og denne skjuleindstilling er a
<string name="revanced_hide_how_this_was_made_section_title">Skjul \"Hvordan dette indhold blev lavet\"</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">Sektionen Sådan blev dette indhold lavet er skjult</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">Sektionen Sådan blev dette indhold lavet vises</string>
<string name="revanced_hide_hype_points_title">Skjul Hype-point</string>
<string name="revanced_hide_hype_points_summary_on">Hype-point er skjult</string>
<string name="revanced_hide_hype_points_summary_off">Hype-point er vist</string>
<string name="revanced_hide_podcast_section_title">Skjul \"Udforsk podcasten\"</string>
<string name="revanced_hide_podcast_section_summary_on">Sektionen Udforsk podcasten er skjult</string>
<string name="revanced_hide_podcast_section_summary_off">Sektionen Udforsk podcasten vises</string>
@@ -771,15 +782,14 @@ Hvis ændring af denne indstilling ikke træder i kraft, kan du prøve at skifte
<string name="revanced_hide_player_flyout_speed_title">Skjul afspilningshastighed</string>
<string name="revanced_hide_player_flyout_speed_summary_on">Afspilningshastighedsmenu er skjult</string>
<string name="revanced_hide_player_flyout_speed_summary_off">Afspilningshastighed menuen vises</string>
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<string name="revanced_hide_player_flyout_more_info_title">Skjul Mere info</string>
<string name="revanced_hide_player_flyout_more_info_summary_on">Mere info menu er skjult</string>
<string name="revanced_hide_player_flyout_more_info_summary_off">Mere info menu er vist</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">Skjul låseskærm</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_on">Menuen Låseskærm er skjult</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_off">Låseskærmsmenuen vises</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">Skjul Lyt med YouTube Music</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_on">Lyt med YouTube Music-menuen er skjult</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_off">Lyt med YouTube Music-menuen vises</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">Skjul lydspor</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">Menuen for lydspor er skjult</string>
@@ -1663,10 +1673,19 @@ Videoafspilning med AV1 kan hakke eller tabe billeder."</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Permanent gentagelse er aktiveret</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Permanent gentagelse er deaktiveret</string>
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">Skjul cast-knap</string>
<string name="revanced_music_hide_cast_button_summary_on">Cast-knappen er skjult</string>
<string name="revanced_music_hide_cast_button_summary_off">Cast-knappen vises</string>
<string name="revanced_music_hide_history_button_title">Skjul historikknap</string>
<string name="revanced_music_hide_history_button_summary_on">Historikknappen er skjult</string>
<string name="revanced_music_hide_history_button_summary_off">Historikknappen vises</string>
<string name="revanced_music_hide_notification_button_title">Skjul notifikationsknap</string>
<string name="revanced_music_hide_notification_button_summary_on">Notifikationsknappen er skjult</string>
<string name="revanced_music_hide_notification_button_summary_off">Notifikationsknappen vises</string>
<string name="revanced_music_hide_search_button_title">Skjul søgeknap</string>
<string name="revanced_music_hide_search_button_summary_on">Søgeknappen er skjult</string>
<string name="revanced_music_hide_search_button_summary_off">Søgeknappen vises</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Skjul kategorilinje</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,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 +164,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>
@@ -327,6 +335,9 @@ Wenn ein Doodle zurzeit in Ihrer Region angezeigt wird und diese Einstellung zum
<string name="revanced_hide_how_this_was_made_section_title">\"Wie dieser Inhalt erstellt wurde\" ausblenden</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">Der Abschnitt \"Wie dieser Inhalt erstellt wurde\" ist ausgeblendet</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">Der Abschnitt \"Wie dieser Inhalt erstellt wurde\" wird angezeigt</string>
<string name="revanced_hide_hype_points_title">Hype-Punkte ausblenden</string>
<string name="revanced_hide_hype_points_summary_on">Hype-Punkte sind ausgeblendet</string>
<string name="revanced_hide_hype_points_summary_off">Hype-Punkte werden angezeigt</string>
<string name="revanced_hide_podcast_section_title">\'Podcast entdecken\' ausblenden</string>
<string name="revanced_hide_podcast_section_summary_on">Der Abschnitt \"Podcast entdecken\" ist ausgeblendet</string>
<string name="revanced_hide_podcast_section_summary_off">Der Abschnitt \"Podcast entdecken\" wird angezeigt</string>
@@ -768,15 +779,14 @@ Wenn diese Änderung nicht wirksam wird, versuchen Sie, in den Inkognito-Modus z
<string name="revanced_hide_player_flyout_speed_title">Wiedergabegeschwindigkeit ausblenden</string>
<string name="revanced_hide_player_flyout_speed_summary_on">Wiedergabegeschwindigkeit ist ausgeblendet</string>
<string name="revanced_hide_player_flyout_speed_summary_off">Wiedergabegeschwindigkeit wird angezeigt</string>
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<string name="revanced_hide_player_flyout_more_info_title">Mehr Info ausblenden</string>
<string name="revanced_hide_player_flyout_more_info_summary_on">Mehr Info-Menü ist ausgeblendet</string>
<string name="revanced_hide_player_flyout_more_info_summary_off">Mehr Info-Menü wird angezeigt</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">Sperrbildschirm ausblenden</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_on">Sperrbildschirm-Menü ist ausgeblendet</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_off">Sperrbildschirm-Menü wird angezeigt</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">„Mit YouTube Music hören“ ausblenden</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_on">„Mit YouTube Music hören“-Menü ist ausgeblendet</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_off">„Mit YouTube Music hören“-Menü wird angezeigt</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">Audiospur ausblenden</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">Audiospur-Menü ist ausgeblendet</string>
@@ -1658,10 +1668,19 @@ Die Videowiedergabe mit AV1 kann stottern oder Bilder überspringen."</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Dauerwiederholung ist aktiviert</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Dauerwiederholung ist deaktiviert</string>
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">Übertragen-Taste ausblenden</string>
<string name="revanced_music_hide_cast_button_summary_on">Übertragen-Taste ist ausgeblendet</string>
<string name="revanced_music_hide_cast_button_summary_off">Übertragen-Taste wird angezeigt</string>
<string name="revanced_music_hide_history_button_title">Verlauf-Schaltfläche ausblenden</string>
<string name="revanced_music_hide_history_button_summary_on">Verlauf-Schaltfläche ist ausgeblendet</string>
<string name="revanced_music_hide_history_button_summary_off">Verlauf-Schaltfläche wird angezeigt</string>
<string name="revanced_music_hide_notification_button_title">Benachrichtigungsschaltfläche ausblenden</string>
<string name="revanced_music_hide_notification_button_summary_on">Benachrichtigungsschaltfläche wird ausgeblendet</string>
<string name="revanced_music_hide_notification_button_summary_off">Benachrichtigungsschaltfläche wird angezeigt</string>
<string name="revanced_music_hide_search_button_title">Suchschaltfläche ausblenden</string>
<string name="revanced_music_hide_search_button_summary_on">Suchschaltfläche wird ausgeblendet</string>
<string name="revanced_music_hide_search_button_summary_off">Suchschaltfläche wird angezeigt</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Kategorieleiste ausblenden</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,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 +164,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>
@@ -330,6 +338,9 @@ 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">Πόντοι Hype</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">Ενότητα «Εξερευνήστε το podcast»</string>
<string name="revanced_hide_podcast_section_summary_on">Κρυμμένη</string>
<string name="revanced_hide_podcast_section_summary_off">Εμφανίζεται</string>
@@ -773,15 +784,14 @@ Second \"item\" text"</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>
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<string name="revanced_hide_player_flyout_more_info_title">Μενού «Περισσότερα»</string>
<string name="revanced_hide_player_flyout_more_info_summary_on">Κρυμμένο</string>
<string name="revanced_hide_player_flyout_more_info_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_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_summary_on">Κρυμμένο</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_off">Εμφανίζεται</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>
@@ -1660,10 +1670,19 @@ Second \"item\" text"</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Η μόνιμη επανάληψη είναι ενεργοποιημένη</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Η μόνιμη επανάληψη είναι απενεργοποιημένη</string>
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">Κουμπί μετάδοσης</string>
<string name="revanced_music_hide_cast_button_summary_on">Κρυμμένο</string>
<string name="revanced_music_hide_cast_button_summary_off">Εμφανίζεται</string>
<string name="revanced_music_hide_history_button_title">Κουμπί ιστορικού</string>
<string name="revanced_music_hide_history_button_summary_on">Κρυμμένο</string>
<string name="revanced_music_hide_history_button_summary_off">Εμφανίζεται</string>
<string name="revanced_music_hide_notification_button_title">Κουμπί ειδοποιήσεων</string>
<string name="revanced_music_hide_notification_button_summary_on">Κρυμμένο</string>
<string name="revanced_music_hide_notification_button_summary_off">Εμφανίζεται</string>
<string name="revanced_music_hide_search_button_title">Κουμπί αναζήτησης</string>
<string name="revanced_music_hide_search_button_summary_on">Κρυμμένο</string>
<string name="revanced_music_hide_search_button_summary_off">Εμφανίζεται</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Γραμμή κατηγοριών</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,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 +164,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>
@@ -328,6 +336,9 @@ Si un doodle se está mostrando actualmente en tu región y este ajuste de ocult
<string name="revanced_hide_how_this_was_made_section_title">Ocultar \"Cómo se hizo este contenido\"</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">La sección Cómo se hizo este contenido está oculta</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">Se muestra la sección Cómo se hizo este contenido</string>
<string name="revanced_hide_hype_points_title">Ocultar puntos de Hype</string>
<string name="revanced_hide_hype_points_summary_on">Los puntos de Hype están ocultos</string>
<string name="revanced_hide_hype_points_summary_off">Los puntos de Hype están visibles</string>
<string name="revanced_hide_podcast_section_title">Ocultar \"Explora el pódcast\"</string>
<string name="revanced_hide_podcast_section_summary_on">La sección Explora el pódcast está oculta</string>
<string name="revanced_hide_podcast_section_summary_off">Se muestra la sección Explora el pódcast</string>
@@ -771,15 +782,14 @@ Si cambiar este ajuste no tiene efecto, intenta cambiar al modo incógnito."</st
<string name="revanced_hide_player_flyout_speed_title">Ocultar velocidad de reproducción</string>
<string name="revanced_hide_player_flyout_speed_summary_on">Menú de velocidad de reproducción oculto</string>
<string name="revanced_hide_player_flyout_speed_summary_off">Mostrar menú de velocidad de reproducción</string>
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<string name="revanced_hide_player_flyout_more_info_title">Ocultar Más información</string>
<string name="revanced_hide_player_flyout_more_info_summary_on">El menú Más información está oculto</string>
<string name="revanced_hide_player_flyout_more_info_summary_off">Se muestra el menú Más información</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">Ocultar pantalla de bloqueo</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_on">El menú de la pantalla de bloqueo está oculto</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_off">Se muestra el menú de pantalla de bloqueo</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">Ocultar Escuchar con YouTube Music</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_on">El menú Escuchar con YouTube Music está oculto</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_off">El menú Escuchar con YouTube Music está visible</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">Ocultar pista de audio</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">El menú de pista de audio está oculto</string>
@@ -1650,10 +1660,19 @@ La reproducción puede tartamudear o perder fotogramas"</string>
<string name="revanced_music_play_permanent_repeat_summary_on">La repetición permanente está habilitada</string>
<string name="revanced_music_play_permanent_repeat_summary_off">La repetición permanente está deshabilitada</string>
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">Ocultar el botón de emisión</string>
<string name="revanced_music_hide_cast_button_summary_on">El botón de emisión está oculto</string>
<string name="revanced_music_hide_cast_button_summary_off">El botón de emisión es visible</string>
<string name="revanced_music_hide_history_button_title">Ocultar el botón \"Historial\"</string>
<string name="revanced_music_hide_history_button_summary_on">El botón de Historial está oculto</string>
<string name="revanced_music_hide_history_button_summary_off">El botón de Historial es visible</string>
<string name="revanced_music_hide_notification_button_title">Ocultar el botón de notificación</string>
<string name="revanced_music_hide_notification_button_summary_on">El botón de notificación está oculto</string>
<string name="revanced_music_hide_notification_button_summary_off">Se muestra el botón de notificación</string>
<string name="revanced_music_hide_search_button_title">Ocultar el botón de búsqueda</string>
<string name="revanced_music_hide_search_button_summary_on">El botón de búsqueda está oculto</string>
<string name="revanced_music_hide_search_button_summary_off">Se muestra el botón de búsqueda</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Ocultar barra de categorías</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,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 +164,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>
@@ -328,6 +336,9 @@ Kui Doodle on teie piirkonnas praegu nähtav ja see peitmise seade on sisse lül
<string name="revanced_hide_how_this_was_made_section_title">Peida \"Kuidas see sisu loodi\"</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">Kuidas see sisu loodi jaotis on peidetud</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">Kuidas see sisu loodi jaotis on kuvatud</string>
<string name="revanced_hide_hype_points_title">Peida Hype\'i punktid</string>
<string name="revanced_hide_hype_points_summary_on">Hype\'i punktid on peidetud</string>
<string name="revanced_hide_hype_points_summary_off">Hype\'i punktid on nähtavad</string>
<string name="revanced_hide_podcast_section_title">Peida \"Avasta taskuhäälingut\"</string>
<string name="revanced_hide_podcast_section_summary_on">Avasta taskuhäälingut jaotis on peidetud</string>
<string name="revanced_hide_podcast_section_summary_off">Avasta taskuhäälingut jaotis on kuvatud</string>
@@ -771,15 +782,14 @@ Kui selle sätte muutmine ei avalda mõju, proovige lülituda Inkognito režiimi
<string name="revanced_hide_player_flyout_speed_title">Peida Esituse kiirus</string>
<string name="revanced_hide_player_flyout_speed_summary_on">Esituse kiiruse menüü on peidetud</string>
<string name="revanced_hide_player_flyout_speed_summary_off">Esituse kiiruse menüü on nähtav</string>
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<string name="revanced_hide_player_flyout_more_info_title">Peida Lisateave</string>
<string name="revanced_hide_player_flyout_more_info_summary_on">Lisateabe menüü on peidetud</string>
<string name="revanced_hide_player_flyout_more_info_summary_off">Lisateabe menüü on nähtav</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">Peida Ekraani lukustus</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_on">Ekraani lukustuse menüü on peidetud</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_off">Ekraani lukustuse menüü on nähtav</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">Peida Kuula YouTube Musicuga</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_on">Kuula YouTube Musicuga menüü on peidetud</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_off">Kuula YouTube Musicuga menüü on nähtav</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">Peida Helitraek</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">Helitraekide menüü on peidetud</string>
@@ -1661,10 +1671,19 @@ AV1-ga videotaasesitus võib hakitud olla või kaadreid vahele jätta."</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Püsiv kordus on lubatud</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Püsiv kordus on keelatud</string>
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">Peida edastusnupp</string>
<string name="revanced_music_hide_cast_button_summary_on">Edastusnupp on peidetud</string>
<string name="revanced_music_hide_cast_button_summary_off">Edastusnupp on nähtav</string>
<string name="revanced_music_hide_history_button_title">Peida ajaloo nupp</string>
<string name="revanced_music_hide_history_button_summary_on">Ajaloo nupp on peidetud</string>
<string name="revanced_music_hide_history_button_summary_off">Ajaloo nupp on nähtaval</string>
<string name="revanced_music_hide_notification_button_title">Peida teavituse nupp</string>
<string name="revanced_music_hide_notification_button_summary_on">Teavituse nupp on peidetud</string>
<string name="revanced_music_hide_notification_button_summary_off">Teavituse nupp on nähtav</string>
<string name="revanced_music_hide_search_button_title">Peida otsingunupp</string>
<string name="revanced_music_hide_search_button_summary_on">Otsingunupp on peidetud</string>
<string name="revanced_music_hide_search_button_summary_off">Otsingunupp on nähtav</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Peida kategooriariba</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -134,9 +133,8 @@ Second \"item\" text"</string>
<!-- 'Ambient mode' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Help & feedback' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Playback speed' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
@@ -268,7 +266,7 @@ Second \"item\" text"</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
</patch>
<patch id="layout.compactheader.hideCategoryBar">
</patch>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -181,9 +180,8 @@ Second \"item\" text"</string>
<!-- 'Ambient mode' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Help & feedback' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Playback speed' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
@@ -318,7 +316,7 @@ Second \"item\" text"</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
</patch>
<patch id="layout.compactheader.hideCategoryBar">
</patch>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,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 +164,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>
@@ -328,6 +336,9 @@ Jos Doodle näkyy tällä hetkellä alueellasi ja tämä piilotusasetus on käyt
<string name="revanced_hide_how_this_was_made_section_title">Piilota \"Miten sisältö on luotu\"</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">Miten sisältö on luotu -osio piilotetaan</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">Miten sisältö on luotu -osio näytetään</string>
<string name="revanced_hide_hype_points_title">Piilota Hype-pisteet</string>
<string name="revanced_hide_hype_points_summary_on">Hype-pisteet piilotetaan</string>
<string name="revanced_hide_hype_points_summary_off">Hype-pisteet näytetään</string>
<string name="revanced_hide_podcast_section_title">Piilota \"Tutustu podcastiin\"</string>
<string name="revanced_hide_podcast_section_summary_on">Tutustu podcastiin -osio piilotetaan</string>
<string name="revanced_hide_podcast_section_summary_off">Tutustu podcastiin -osio näytetään</string>
@@ -771,15 +782,14 @@ Jos tämän asetuksen muuttaminen ei tule voimaan, kokeile vaihtaa Incognito-til
<string name="revanced_hide_player_flyout_speed_title">Piilota Toistonopeus</string>
<string name="revanced_hide_player_flyout_speed_summary_on">Toistonopeusvalikko piilotetaan</string>
<string name="revanced_hide_player_flyout_speed_summary_off">Toistonopeusvalikko näytetään</string>
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<string name="revanced_hide_player_flyout_more_info_title">Piilota Lisätietoja</string>
<string name="revanced_hide_player_flyout_more_info_summary_on">Lisätietoja-valinta piilotetaan</string>
<string name="revanced_hide_player_flyout_more_info_summary_off">Lisätietoja-valinta näytetään </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">Piilota Näytön lukitus</string>
<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 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>
@@ -1661,10 +1671,19 @@ AV1-videon toisto saattaa pätkiä."</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Pysyvä toisto on käytössä</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Pysyvä toisto ei ole käytössä</string>
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">Piilota Cast-painike</string>
<string name="revanced_music_hide_cast_button_summary_on">Cast-painike piilotetaan</string>
<string name="revanced_music_hide_cast_button_summary_off">Cast-painike näytetään</string>
<string name="revanced_music_hide_history_button_title">Piilota historia-painike</string>
<string name="revanced_music_hide_history_button_summary_on">Historia-painike piilotetaan</string>
<string name="revanced_music_hide_history_button_summary_off">Historia-painike näytetään</string>
<string name="revanced_music_hide_notification_button_title">Piilota ilmoituspainike</string>
<string name="revanced_music_hide_notification_button_summary_on">Ilmoituspainike piilotetaan</string>
<string name="revanced_music_hide_notification_button_summary_off">Ilmoituspainike näytetään</string>
<string name="revanced_music_hide_search_button_title">Piilota hakupainike</string>
<string name="revanced_music_hide_search_button_summary_on">Hakupainike piilotetaan</string>
<string name="revanced_music_hide_search_button_summary_off">Hakupainike näytetään</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Piilota kategoriapalkki</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,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 +164,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>
@@ -328,6 +336,9 @@ Kung ang isang Doodle ay kasalukuyang ipinapakita sa iyong rehiyon at ang settin
<string name="revanced_hide_how_this_was_made_section_title">Itago ang \'Paano ginawa ang content na ito\'</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">Nakatago ang seksyon ng Paano ginawa ang content na ito</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">Ipinapakita ang seksyon ng Paano ginawa ang content na ito</string>
<string name="revanced_hide_hype_points_title">Itago ang mga Puntos ng Hype</string>
<string name="revanced_hide_hype_points_summary_on">Nakatago ang mga Puntos ng Hype</string>
<string name="revanced_hide_hype_points_summary_off">Ipinapakita ang mga Puntos ng Hype</string>
<string name="revanced_hide_podcast_section_title">Itago ang \'I-explore ang podcast\'</string>
<string name="revanced_hide_podcast_section_summary_on">Nakatago ang seksyon ng I-explore ang podcast</string>
<string name="revanced_hide_podcast_section_summary_off">Ipinapakita ang seksyon ng I-explore ang podcast</string>
@@ -769,15 +780,14 @@ Tandaan: Ang pagpapagana nito ay nagtatago rin ng mga ad ng video"</string>
<string name="revanced_hide_player_flyout_speed_title">Itago ang bilis ng pag-playback</string>
<string name="revanced_hide_player_flyout_speed_summary_on">Nakatago ang menu ng bilis ng pag-playback</string>
<string name="revanced_hide_player_flyout_speed_summary_off">Ang menu ng bilis ng pag-playback ay ipinapakita</string>
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<string name="revanced_hide_player_flyout_more_info_title">Itago ang Higit pang impormasyon</string>
<string name="revanced_hide_player_flyout_more_info_summary_on">Nakatago ang menu ng higit pang impormasyon</string>
<string name="revanced_hide_player_flyout_more_info_summary_off">Ang menu ng higit pang impormasyon ay ipinapakita</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">Itago ang Lock screen</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_on">Nakatago ang menu ng lock screen</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_off">Ipinapakita ang menu ng lock screen</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">Itago ang Makinig gamit ang YouTube Music</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_on">Nakatago ang menu ng Makinig gamit ang YouTube Music</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_off">Ipinapakita ang menu ng Makinig gamit ang 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">Itago ang Audio track</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">Nakatago ang menu ng audio track</string>
@@ -1659,10 +1669,19 @@ Maaaring mag-stutter o mag-drop ng frames ang pag-playback ng video na may AV1."
<string name="revanced_music_play_permanent_repeat_summary_on">Pinagana ang permanenteng pag-ulit</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Hindi pinagana ang permanenteng pag-ulit</string>
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">Itago ang pindutan ng Cast</string>
<string name="revanced_music_hide_cast_button_summary_on">Nakatago ang pindutan ng Cast</string>
<string name="revanced_music_hide_cast_button_summary_off">Ipinapakita ang pindutan ng Cast</string>
<string name="revanced_music_hide_history_button_title">Itago ang button ng history</string>
<string name="revanced_music_hide_history_button_summary_on">Nakatago ang button ng history</string>
<string name="revanced_music_hide_history_button_summary_off">Naka-display ang button ng history</string>
<string name="revanced_music_hide_notification_button_title">Itago ang button ng notification</string>
<string name="revanced_music_hide_notification_button_summary_on">Nakakubli ang button ng notification</string>
<string name="revanced_music_hide_notification_button_summary_off">Ipinapakita ang button ng notification</string>
<string name="revanced_music_hide_search_button_title">Itago ang button ng paghahanap</string>
<string name="revanced_music_hide_search_button_summary_on">Nakakubli ang button ng paghahanap</string>
<string name="revanced_music_hide_search_button_summary_off">Ipinapakita ang button ng paghahanap</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Itago ang category bar</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,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 +164,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>
@@ -328,6 +336,9 @@ Si un Doodle est actuellement affiché dans votre région et que cette option de
<string name="revanced_hide_how_this_was_made_section_title">Masquer \"Comment ce contenu a été créé\"</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">La section \"Comment ce contenu a été créé\" est masquée</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">La section \"Comment ce contenu a été créé\" est affichée</string>
<string name="revanced_hide_hype_points_title">Masquer les points Boost</string>
<string name="revanced_hide_hype_points_summary_on">Les points Boost sont masqués</string>
<string name="revanced_hide_hype_points_summary_off">Les points Boost sont affichés</string>
<string name="revanced_hide_podcast_section_title">Masquer \"Découvrir le podcast\"</string>
<string name="revanced_hide_podcast_section_summary_on">La section \"Découvrir le podcast\" est masquée</string>
<string name="revanced_hide_podcast_section_summary_off">La section \"Découvrir le podcast\" est affichée</string>
@@ -771,15 +782,14 @@ Si la modification de ce paramètre ne prend pas effet, essayez de passer en mod
<string name="revanced_hide_player_flyout_speed_title">Masquer \"Vitesse de lecture\"</string>
<string name="revanced_hide_player_flyout_speed_summary_on">Le menu Vitesse de lecture est masqué</string>
<string name="revanced_hide_player_flyout_speed_summary_off">Le menu Vitesse de lecture est affiché</string>
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<string name="revanced_hide_player_flyout_more_info_title">Masquer \"Plus d\'infos\"</string>
<string name="revanced_hide_player_flyout_more_info_summary_on">Le menu Plus d\'infos est masqué</string>
<string name="revanced_hide_player_flyout_more_info_summary_off">Le menu Plus d\'infos est affiché</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">Masquer \"Verrouiller l\'écran\"</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_on">Le menu Verrouiller l\'écran est masqué</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_off">Le menu Verrouiller l\'écran est affiché</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">Masquer \"Écouter avec YouTube Music\"</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_on">Le menu Écouter avec YouTube Music est masqué</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_off">Le menu Écouter avec YouTube Music est affiché</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">Masquer \"Piste audio\"</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">Le menu Piste audio est masqué</string>
@@ -1662,10 +1672,19 @@ La lecture vidéo avec AV1 peut être saccadée et des images peuvent être perd
<string name="revanced_music_play_permanent_repeat_summary_on">La lecture en boucle permanente est activée</string>
<string name="revanced_music_play_permanent_repeat_summary_off">La lecture en boucle permanente est désactivée</string>
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">Masquer le bouton Diffuser</string>
<string name="revanced_music_hide_cast_button_summary_on">Le bouton Diffuser est masqué</string>
<string name="revanced_music_hide_cast_button_summary_off">Le bouton Diffuser est affiché</string>
<string name="revanced_music_hide_history_button_title">Masquer le bouton Historique</string>
<string name="revanced_music_hide_history_button_summary_on">Le bouton Historique est masqué</string>
<string name="revanced_music_hide_history_button_summary_off">Le bouton Historique est affiché</string>
<string name="revanced_music_hide_notification_button_title">Masquer le bouton de notification</string>
<string name="revanced_music_hide_notification_button_summary_on">Le bouton de notification est masqué</string>
<string name="revanced_music_hide_notification_button_summary_off">Le bouton de notification est affiché</string>
<string name="revanced_music_hide_search_button_title">Masquer le bouton de recherche</string>
<string name="revanced_music_hide_search_button_summary_on">Le bouton de recherche est masqué</string>
<string name="revanced_music_hide_search_button_summary_off">Le bouton de recherche est affiché</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Masquer la barre des catégories</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,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 +164,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>
@@ -328,6 +336,9 @@ Má tá Doodle á thaispeáint faoi láthair i do réigiún agus má tá an tsu
<string name="revanced_hide_how_this_was_made_section_title">Folaigh \'Conas a rinneadh an t-ábhar seo\'</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">Tá an chuid Conas a rinneadh an t-ábhar seo i bhfolach</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">Taispeántar an chuid Conas a rinneadh an t-ábhar seo</string>
<string name="revanced_hide_hype_points_title">Folaigh pointí Hype</string>
<string name="revanced_hide_hype_points_summary_on">Tá pointí Hype i bhfolach</string>
<string name="revanced_hide_hype_points_summary_off">Taispeántar pointí Hype</string>
<string name="revanced_hide_podcast_section_title">Folaigh \'Déan iniúchadh ar an bpodchraoladh\'</string>
<string name="revanced_hide_podcast_section_summary_on">Tá an chuid Déan iniúchadh ar an bpodchraoladh i bhfolach</string>
<string name="revanced_hide_podcast_section_summary_off">Taispeántar an chuid Déan iniúchadh ar an bpodchraoladh</string>
@@ -769,15 +780,14 @@ Mura dtagann aon athrú ar an socrú seo, bain triail as mód Incognito a chur a
<string name="revanced_hide_player_flyout_speed_title">Folaigh luas athsheinm</string>
<string name="revanced_hide_player_flyout_speed_summary_on">Tá roghchlár luas athsheinm i bhfolach</string>
<string name="revanced_hide_player_flyout_speed_summary_off">Taispeántar roghchlár luas athsheinm</string>
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<string name="revanced_hide_player_flyout_more_info_title">Folaigh Tuilleadh eolais</string>
<string name="revanced_hide_player_flyout_more_info_summary_on">Tá tuilleadh eolais i bhfolach</string>
<string name="revanced_hide_player_flyout_more_info_summary_off">Taispeántar roghchlár tuilleadh eolais</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">Folaigh scáileán Glas</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_on">Tá roghchlár scáileán glas i bhfolach</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_off">Taispeántar roghchlár an scáileáin ghlasála</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">Folaigh Éist le YouTube Music</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_on">Tá roghchlár Éist le YouTube Music i bhfolach</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_off">Taispeántar an roghchlár Éist le 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">Folaigh Rian Fuaime</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">Tá roghchlár rian fuaime i bhfolach</string>
@@ -1659,10 +1669,19 @@ Dfhéadfadh sé go mbeadh stad nó go gcaillfí frámaí ag athsheinm físe l
<string name="revanced_music_play_permanent_repeat_summary_on">Tá athrá buan cumasaithe</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Tá athrá buan díchumasaithe</string>
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">Folaigh an cnaipe teilgthe</string>
<string name="revanced_music_hide_cast_button_summary_on">Tá an cnaipe teilgthe i bhfolach</string>
<string name="revanced_music_hide_cast_button_summary_off">Taispeántar an cnaipe teilgthe</string>
<string name="revanced_music_hide_history_button_title">Folaigh cnaipe na staire</string>
<string name="revanced_music_hide_history_button_summary_on">Tá cnaipe na staire i bhfolach</string>
<string name="revanced_music_hide_history_button_summary_off">Taispeántar cnaipe na staire</string>
<string name="revanced_music_hide_notification_button_title">Folaigh cnaipe fógraí</string>
<string name="revanced_music_hide_notification_button_summary_on">Tá cnaipe fógraí i bhfolach</string>
<string name="revanced_music_hide_notification_button_summary_off">Taispeántar cnaipe fógraí</string>
<string name="revanced_music_hide_search_button_title">Folaigh cnaipe cuardaigh</string>
<string name="revanced_music_hide_search_button_summary_on">Tá cnaipe cuardaigh i bhfolach</string>
<string name="revanced_music_hide_search_button_summary_off">Taispeántar an cnaipe cuardaigh</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Folaigh an barra catagóirí</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -134,9 +133,8 @@ Second \"item\" text"</string>
<!-- 'Ambient mode' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Help & feedback' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Playback speed' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
@@ -268,7 +266,7 @@ Second \"item\" text"</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
</patch>
<patch id="layout.compactheader.hideCategoryBar">
</patch>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -134,9 +133,8 @@ Second \"item\" text"</string>
<!-- 'Ambient mode' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Help & feedback' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Playback speed' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
@@ -268,7 +266,7 @@ Second \"item\" text"</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
</patch>
<patch id="layout.compactheader.hideCategoryBar">
</patch>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -136,9 +135,8 @@ Second \"item\" text"</string>
<!-- 'Ambient mode' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Help & feedback' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Playback speed' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
@@ -270,7 +268,7 @@ Second \"item\" text"</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
</patch>
<patch id="layout.compactheader.hideCategoryBar">
</patch>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -32,6 +31,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. -->
@@ -135,9 +135,8 @@ Second \"item\" text"</string>
<!-- 'Ambient mode' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Help & feedback' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Playback speed' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
@@ -269,7 +268,7 @@ Second \"item\" text"</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
</patch>
<patch id="layout.compactheader.hideCategoryBar">
</patch>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,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 +164,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>
@@ -328,6 +336,9 @@ Ha a Doodle jelenleg a régiódában látható, és ez a rejtés beállítás be
<string name="revanced_hide_how_this_was_made_section_title">A „Hogyan készült ez a tartalom” elrejtése</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">A Hogyan készült ez a tartalom szakasz rejtett</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">A Hogyan készült ez a tartalom szakasz látható</string>
<string name="revanced_hide_hype_points_title">Hype pontok elrejtése</string>
<string name="revanced_hide_hype_points_summary_on">A Hype pontok el vannak rejtve</string>
<string name="revanced_hide_hype_points_summary_off">A Hype pontok láthatóak</string>
<string name="revanced_hide_podcast_section_title">A „Podcast felfedezése” elrejtése</string>
<string name="revanced_hide_podcast_section_summary_on">A Podcast felfedezése szakasz rejtett</string>
<string name="revanced_hide_podcast_section_summary_off">A Podcast felfedezése szakasz látható</string>
@@ -771,15 +782,14 @@ Ha a beállítás módosítása nem lép életbe, próbáljon meg Inkognitó mó
<string name="revanced_hide_player_flyout_speed_title">Lejátszási sebesség elrejtése</string>
<string name="revanced_hide_player_flyout_speed_summary_on">A lejátszási sebesség menü el van rejtve</string>
<string name="revanced_hide_player_flyout_speed_summary_off">A lejátszási sebesség menü látható</string>
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<string name="revanced_hide_player_flyout_more_info_title">További információk elrejtése</string>
<string name="revanced_hide_player_flyout_more_info_summary_on"> A további információ menü el van rejtve</string>
<string name="revanced_hide_player_flyout_more_info_summary_off">A további információ menü megjelenik</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">Lezárási képernyő elrejtése</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_on">A lezárási képernyő menü el van rejtve</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_off">A lezárási képernyő menü megjelenik</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">\"Meghallgatás YouTube Music alkalmazással\" elrejtése</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_on">A(z) \"Meghallgatás YouTube Music alkalmazással\" menü rejtett</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_off">A(z) \"Meghallgatás YouTube Music alkalmazással\" menü megjelenítve</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">Hangsáv elrejtése</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">A hangsáv menü el van rejtve</string>
@@ -1658,10 +1668,19 @@ Az AV1-es videólejátszás akadozhat vagy képkockákat ejthet."</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Az állandó ismétlés engedélyezve van</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Az állandó ismétlés letiltva van</string>
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">Kivetítés gomb elrejtése</string>
<string name="revanced_music_hide_cast_button_summary_on">Kivetítés gomb elrejtve</string>
<string name="revanced_music_hide_cast_button_summary_off">Kivetítés gomb látható</string>
<string name="revanced_music_hide_history_button_title">Elrejti az előzmények gombot</string>
<string name="revanced_music_hide_history_button_summary_on">Az előzmények gomb rejtett</string>
<string name="revanced_music_hide_history_button_summary_off">Az előzmények gomb látható</string>
<string name="revanced_music_hide_notification_button_title">Értesítési gomb elrejtése</string>
<string name="revanced_music_hide_notification_button_summary_on">Az értesítési gomb el van rejtve</string>
<string name="revanced_music_hide_notification_button_summary_off">Az értesítési gomb látható</string>
<string name="revanced_music_hide_search_button_title">Keresés gomb elrejtése</string>
<string name="revanced_music_hide_search_button_summary_on">A keresés gomb el van rejtve</string>
<string name="revanced_music_hide_search_button_summary_off">A keresés gomb látható</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Kategóriasáv elrejtése</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,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 +164,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>
@@ -328,6 +336,9 @@ MicroG-ի համար մարտկոցի օպտիմալացումը անջատել
<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_summary_on">Բացահայտեք փոդքասթը բաժինը թաքցված է</string>
<string name="revanced_hide_podcast_section_summary_off">Բացահայտեք փոդքասթը բաժինը ցուցադրվում է</string>
@@ -771,15 +782,14 @@ MicroG-ի համար մարտկոցի օպտիմալացումը անջատել
<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>
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<string name="revanced_hide_player_flyout_more_info_title">Լրացուցիչ տեղեկությունը թաքցնել</string>
<string name="revanced_hide_player_flyout_more_info_summary_on">Լրացուցիչ տեղեկությունների մենյուը թաքցված է</string>
<string name="revanced_hide_player_flyout_more_info_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_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_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>
@@ -1662,10 +1672,19 @@ AV1-ով տեսանյութի նվագարկումը կարող է ընդհատ
<string name="revanced_music_play_permanent_repeat_summary_on">Մշտական կրկնությունը միացված է</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Մշտական կրկնությունը անջատված է</string>
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">Թաքցնել հեռարձակման կոճակը</string>
<string name="revanced_music_hide_cast_button_summary_on">Հեռարձակման կոճակը թաքնված է</string>
<string name="revanced_music_hide_cast_button_summary_off">Հեռարձակման կոճակը ցուցադրված է</string>
<string name="revanced_music_hide_history_button_title">Թաքցնել պատմության կոճակը</string>
<string name="revanced_music_hide_history_button_summary_on">Պատմության կոճակը թաքցված է</string>
<string name="revanced_music_hide_history_button_summary_off">Պատմության կոճակը ցուցադրված է</string>
<string name="revanced_music_hide_notification_button_title">Թաքցնել ծանուցման կոճակը</string>
<string name="revanced_music_hide_notification_button_summary_on">Ծանուցման կոճակը թաքցված է</string>
<string name="revanced_music_hide_notification_button_summary_off">Ծանուցման կոճակը ցուցադրվում է</string>
<string name="revanced_music_hide_search_button_title">Թաքցնել որոնման կոճակը</string>
<string name="revanced_music_hide_search_button_summary_on">Որոնման կոճակը թաքցված է</string>
<string name="revanced_music_hide_search_button_summary_off">Որոնման կոճակը ցուցադրվում է</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Թաքցնել կատեգորիաների վահանակը</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,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 +61,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 +164,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>
@@ -328,6 +336,9 @@ Jika Doodle saat ini ditampilkan di wilayah Anda dan pengaturan penyembunyi ini
<string name="revanced_hide_how_this_was_made_section_title">Sembunyikan \'Cara konten ini dibuat\'</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">Bagian Cara konten ini dibuat disembunyikan</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">Bagian Cara konten ini dibuat ditampilkan</string>
<string name="revanced_hide_hype_points_title">Sembunyikan Poin Hype</string>
<string name="revanced_hide_hype_points_summary_on">Poin Hype disembunyikan</string>
<string name="revanced_hide_hype_points_summary_off">Poin Hype ditampilkan</string>
<string name="revanced_hide_podcast_section_title">Sembunyikan \'Jelajahi podcast\'</string>
<string name="revanced_hide_podcast_section_summary_on">Bagian Jelajahi podcast disembunyikan</string>
<string name="revanced_hide_podcast_section_summary_off">Bagian Jelajahi podcast ditampilkan</string>
@@ -771,15 +782,14 @@ Jika mengubah setelan ini tidak berpengaruh, coba beralih ke mode Penyamaran."</
<string name="revanced_hide_player_flyout_speed_title">Sembunyikan Kecepatan pemutaran</string>
<string name="revanced_hide_player_flyout_speed_summary_on">Menu kecepatan pemutaran disembunyikan</string>
<string name="revanced_hide_player_flyout_speed_summary_off">Menu kecepatan pemutaran ditampilkan</string>
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<string name="revanced_hide_player_flyout_more_info_title">Sembunyikan Info selengkapnya</string>
<string name="revanced_hide_player_flyout_more_info_summary_on">Menu info selengkapnya disembunyikan</string>
<string name="revanced_hide_player_flyout_more_info_summary_off">Menu info selengkapnya ditampilkan</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">Sembunyikan Kunci layar</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_on">Menu kunci layar disembunyikan</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_off">Menu kunci layar ditampilkan</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">Sembunyikan Dengarkan dengan YouTube Music</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_on">Menu Dengarkan dengan YouTube Music disembunyikan</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_off">Menu Dengarkan dengan YouTube Music ditampilkan</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">Sembunyikan trek Audio</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">Menu trek audio disembunyikan</string>
@@ -1660,10 +1670,19 @@ Pemutaran video dengan AV1 mungkin tersendat atau kehilangan bingkai."</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Pengulangan permanen diaktifkan</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Pengulangan permanen dinonaktifkan</string>
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">Sembunyikan tombol transmisi</string>
<string name="revanced_music_hide_cast_button_summary_on">Tombol transmisi disembunyikan</string>
<string name="revanced_music_hide_cast_button_summary_off">Tombol transmisi ditampilkan</string>
<string name="revanced_music_hide_history_button_title">Sembunyikan tombol Riwayat</string>
<string name="revanced_music_hide_history_button_summary_on">Tombol Riwayat disembunyikan</string>
<string name="revanced_music_hide_history_button_summary_off">Tombol Riwayat ditampilkan</string>
<string name="revanced_music_hide_notification_button_title">Sembunyikan tombol notifikasi</string>
<string name="revanced_music_hide_notification_button_summary_on">Tombol notifikasi disembunyikan</string>
<string name="revanced_music_hide_notification_button_summary_off">Tombol notifikasi ditampilkan</string>
<string name="revanced_music_hide_search_button_title">Sembunyikan tombol pencarian</string>
<string name="revanced_music_hide_search_button_summary_on">Tombol pencarian disembunyikan</string>
<string name="revanced_music_hide_search_button_summary_off">Tombol pencarian ditampilkan</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Sembunyikan bilah kategori</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -134,9 +133,8 @@ Second \"item\" text"</string>
<!-- 'Ambient mode' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Help & feedback' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Playback speed' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
@@ -268,7 +266,7 @@ Second \"item\" text"</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
</patch>
<patch id="layout.compactheader.hideCategoryBar">
</patch>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,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 +164,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>
@@ -328,6 +336,9 @@ Se al momento un Doodle è visibile nella tua regione e questa impostazione nasc
<string name="revanced_hide_how_this_was_made_section_title">Nascondi \"Come è stato realizzato questo contenuto\"</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">La sezione Come è stato realizzato questo contenuto è nascosta</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">La sezione Come è stato realizzato questo contenuto è visibile</string>
<string name="revanced_hide_hype_points_title">Nascondi i punti Hype</string>
<string name="revanced_hide_hype_points_summary_on">I punti Hype sono nascosti</string>
<string name="revanced_hide_hype_points_summary_off">I punti Hype sono mostrati</string>
<string name="revanced_hide_podcast_section_title">Nascondi \"Esplora il podcast\"</string>
<string name="revanced_hide_podcast_section_summary_on">La sezione Esplora il podcast è nascosta</string>
<string name="revanced_hide_podcast_section_summary_off">La sezione Esplora il podcast è visibile</string>
@@ -771,15 +782,14 @@ Se la modifica di questa impostazione non ha effetto, prova a passare alla modal
<string name="revanced_hide_player_flyout_speed_title">Nascondi Velocità di riproduzione</string>
<string name="revanced_hide_player_flyout_speed_summary_on">Il menu Velocità di riproduzione è nascosto</string>
<string name="revanced_hide_player_flyout_speed_summary_off">Il menu Velocità di riproduzione è visibile</string>
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<string name="revanced_hide_player_flyout_more_info_title">Nascondi Maggiori Informazioni</string>
<string name="revanced_hide_player_flyout_more_info_summary_on">Il menu Maggiori Informazioni è nascosto</string>
<string name="revanced_hide_player_flyout_more_info_summary_off">Il menu Maggiori Informazioni è visibile</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">Nascondi Blocca schermo</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_on">Il menu Blocca Schermo è nascosto</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_off">Il menu Blocca Schermo è visibile</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">Nascondi Ascolta con YouTube Music</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_on">Il menu Ascolta con YouTube Music è nascosto</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_off">Il menu Ascolta con YouTube Music è visualizzato</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">Nascondi Traccia audio</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">Il menu Traccia audio è nascosto</string>
@@ -1660,10 +1670,19 @@ La riproduzione video con AV1 potrebbe rallentare o perdere fotogrammi."</string
<string name="revanced_music_play_permanent_repeat_summary_on">La ripetizione permanente è abilitata</string>
<string name="revanced_music_play_permanent_repeat_summary_off">La ripetizione permanente è disabilitata</string>
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">Nascondi pulsante trasmissione</string>
<string name="revanced_music_hide_cast_button_summary_on">Il pulsante di trasmissione è nascosto</string>
<string name="revanced_music_hide_cast_button_summary_off">Il pulsante di trasmissione è mostrato</string>
<string name="revanced_music_hide_history_button_title">Nascondi pulsante cronologia</string>
<string name="revanced_music_hide_history_button_summary_on">Il pulsante cronologia è nascosto</string>
<string name="revanced_music_hide_history_button_summary_off">Il pulsante cronologia è mostrato</string>
<string name="revanced_music_hide_notification_button_title">Nascondi pulsante notifica</string>
<string name="revanced_music_hide_notification_button_summary_on">Il pulsante di notifica è nascosto</string>
<string name="revanced_music_hide_notification_button_summary_off">Il pulsante di notifica è mostrato</string>
<string name="revanced_music_hide_search_button_title">Nascondi pulsante ricerca</string>
<string name="revanced_music_hide_search_button_summary_on">Il pulsante di ricerca è nascosto</string>
<string name="revanced_music_hide_search_button_summary_off">Il pulsante di ricerca è mostrato</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Nascondi barra delle categorie</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,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 +164,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,6 +336,9 @@ 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_summary_on">נקודות הייפ מוסתרות</string>
<string name="revanced_hide_hype_points_summary_off">נקודות הייפ מוצגות</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>
@@ -771,15 +782,14 @@ Second \"item\" text"</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>
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<string name="revanced_hide_player_flyout_more_info_title">הסתר מידע נוסף</string>
<string name="revanced_hide_player_flyout_more_info_summary_on">תפריט מידע נוסף מוסתר</string>
<string name="revanced_hide_player_flyout_more_info_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_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_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>
@@ -1663,10 +1673,19 @@ Second \"item\" text"</string>
<string name="revanced_music_play_permanent_repeat_summary_on">חזרה קבועה מופעלת</string>
<string name="revanced_music_play_permanent_repeat_summary_off">חזרה קבועה מושבתת</string>
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">הסתר לחצן שידור</string>
<string name="revanced_music_hide_cast_button_summary_on">לחצן השידור מוסתר</string>
<string name="revanced_music_hide_cast_button_summary_off">לחצן השידור מוצג</string>
<string name="revanced_music_hide_history_button_title">הסתר לחצן היסטוריה</string>
<string name="revanced_music_hide_history_button_summary_on">הלחצן \'היסטוריה\' מוסתר</string>
<string name="revanced_music_hide_history_button_summary_off">הלחצן \'היסטוריה\' מוצג</string>
<string name="revanced_music_hide_notification_button_title">הסתר לחצן התראה</string>
<string name="revanced_music_hide_notification_button_summary_on">לחצן ההתראה מוסתר</string>
<string name="revanced_music_hide_notification_button_summary_off">לחצן ההתראה מוצג</string>
<string name="revanced_music_hide_search_button_title">הסתר לחצן חיפוש</string>
<string name="revanced_music_hide_search_button_summary_on">לחצן החיפוש מוסתר</string>
<string name="revanced_music_hide_search_button_summary_off">לחצן החיפוש מוצג</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">הסתר סרגל קטגוריות</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,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 +164,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">ブール値 (オン / オフ) の 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 を保存しました</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">flags をリセットしました</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">flags をクリップボードにコピーしました</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">共有リンクを無害化</string>
@@ -324,22 +332,25 @@ YouTube Premium ユーザーの場合、この設定は必要ない可能性が
<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_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_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_summary_on">ハイプポイントは表示されません</string>
<string name="revanced_hide_hype_points_summary_off">ハイプポイントは表示されます</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_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>
@@ -773,15 +784,14 @@ YouTube Premium ユーザーの場合、この設定は必要ない可能性が
<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>
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<string name="revanced_hide_player_flyout_more_info_title">「詳細情報」を非表示</string>
<string name="revanced_hide_player_flyout_more_info_summary_on">「詳細情報」は表示されません</string>
<string name="revanced_hide_player_flyout_more_info_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_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_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>
@@ -1089,12 +1099,12 @@ YouTube Premium ユーザーの場合、この設定は必要ない可能性が
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_on">スキップボタンは、表示された数秒後に自動的に非表示になります</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_off">スキップボタンは、セグメントの開始から終了まで表示されます</string>
<string name="revanced_sb_auto_hide_skip_button_duration">スキップボタンの表示時間</string>
<string name="revanced_sb_auto_hide_skip_button_duration_sum">自動非表示設定のスキップボタンと「ハイライトまでスキップ」ボタンが表示される時間の長さ</string>
<string name="revanced_sb_auto_hide_skip_button_duration_sum">「ハイライトまでスキップボタンと「スキップボタンを自動的に非表示」がオンのときのその他のスキップボタンが、自動的に非表示になるまでの時間の長さ</string>
<string name="revanced_sb_general_skiptoast">自動スキップ時にトーストを表示</string>
<string name="revanced_sb_general_skiptoast_sum_on">セグメントが自動的にスキップされたときにトースト通知が表示されます。このトースト通知をタップすると、スキップを取り消すことができます</string>
<string name="revanced_sb_general_skiptoast_sum_off">セグメントが自動的にスキップされたときにトースト通知は表示されません。このトースト通知をタップすると、スキップを取り消すことができます</string>
<string name="revanced_sb_toast_on_skip_duration">スキップ トーストの表示時間</string>
<string name="revanced_sb_toast_on_skip_duration_sum">自動スキップ時にトースト通知が表示される時間の長さ</string>
<string name="revanced_sb_toast_on_skip_duration_sum">セグメントが自動的にスキップされたときに表示されるトースト通知が、自動的に非表示になるまでの時間の長さ</string>
<string name="revanced_sb_duration_1s">1 秒</string>
<string name="revanced_sb_duration_2s">2 秒</string>
<string name="revanced_sb_duration_3s">3 秒</string>
@@ -1146,36 +1156,36 @@ YouTube Premium ユーザーの場合、この設定は必要ない可能性が
<string name="revanced_sb_settings_import_successful">設定のインポートに成功しました</string>
<string name="revanced_sb_settings_import_failed">インポートに失敗しました: %s</string>
<string name="revanced_sb_settings_export_failed">エクスポートに失敗しました: %s</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning">"設定には、SponsorBlock の非公開ユーザー ID が含まれています。
<string name="revanced_sb_settings_revanced_export_user_id_warning">"あなたの設定テキストには、SponsorBlock の非公開ユーザー ID が含まれています。
このユーザー ID は、パスワードのようなものであり、決して共有すべきではありません。"</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning_dismiss">今後表示しない</string>
<string name="revanced_sb_diff_segments">セグメントに対する動作を変更</string>
<string name="revanced_sb_segments_sponsor">広告</string>
<string name="revanced_sb_segments_sponsor_sum">有料の宣伝 、有料の紹介、直接的な広告。自己宣伝や好意をもって行う、慈善活動、クリエーター、ウェブサイト、製品などの無償の紹介は含まれません</string>
<string name="revanced_sb_segments_sponsor">スポンサー (広告)</string>
<string name="revanced_sb_segments_sponsor_sum">有料の宣伝、有料の紹介、直接的な広告。自己宣伝や好意をもって行う、慈善活動、クリエーター、ウェブサイト、製品などの無償の紹介は、このカテゴリには含まれません</string>
<string name="revanced_sb_segments_selfpromo">無報酬の宣伝 / 自己宣伝</string>
<string name="revanced_sb_segments_selfpromo_sum">無報酬または自己宣伝である、という点以外は「広告」と同様です。商品、寄付、コラボ相手に関する宣伝などを含みます</string>
<string name="revanced_sb_segments_interaction">視聴者への催促 (登録など)</string>
<string name="revanced_sb_segments_interaction_sum">動画内に挿入される視聴者への高評価、チャンネル登録、フォローなどの時間的に短い催促。時間的に長い催促またはイベントなどの個別具体的なものに関する催促は、「視聴者への催促」ではなく「自己宣伝」に分類すべきです</string>
<string name="revanced_sb_segments_selfpromo_sum">無報酬または自己宣伝である、という点以外は「スポンサー」と同様です。商品、寄付、コラボ相手に関する宣伝などを含みます</string>
<string name="revanced_sb_segments_interaction">視聴者への催促 (登録)</string>
<string name="revanced_sb_segments_interaction_sum">動画内に挿入される高評価、チャンネル登録、フォローなどを視聴者にうながす短時間の催促。時間的に長い場合またはイベントなどの個別具体的なものに関する催促の場合は、このカテゴリではなく「自己宣伝」に分類すべきです</string>
<string name="revanced_sb_segments_highlight">ハイライト</string>
<string name="revanced_sb_segments_highlight_sum">動画の中で最も重要な場面</string>
<string name="revanced_sb_segments_intro">幕間 / オープニング (OP)</string>
<string name="revanced_sb_segments_intro_sum">実際のコンテンツを含まない区間。一時停止、静止画、繰り返しアニメーションなど。情報を含むトランジッション (場面転換) は、このカテゴリではありません</string>
<string name="revanced_sb_segments_intro_sum">実際のコンテンツを含まない区間。一時停止、静止画、繰り返しアニメーションなど。情報を含むトランジッション (場面転換) は、このカテゴリには含まれません</string>
<string name="revanced_sb_segments_outro">終了画面 / クレジット (ED)</string>
<string name="revanced_sb_segments_outro_sum">クレジットまたは YouTube の終了画面が表示される場面。情報を含む結論、まとめ部分は、このカテゴリには含まれません</string>
<string name="revanced_sb_segments_outro_sum">クレジットまたは YouTube の終了画面が表示される場面。情報を含む結論、まとめ部分は、このカテゴリには含まれません</string>
<string name="revanced_sb_segments_hook">フック / あいさつ</string>
<string name="revanced_sb_segments_hook_sum">今後の動画のナレーション付きの予告編、および開幕と別れのあいさつ。重複しない内容や情報を追加する場面は含まれません</string>
<string name="revanced_sb_segments_hook_sum">今後の動画のナレーション付きの予告編、および開幕と別れのあいさつ。他の部分に存在しない内容や情報を追加する場面は、このカテゴリには含まれません</string>
<string name="revanced_sb_segments_preview">予告編 / 総集編</string>
<string name="revanced_sb_segments_preview_sum">その動画またはシリーズ内の他の動画で過去に起きたこと、または今後起こることを示すクリップのコレクション。このクリップ群に含まれるすべての情報は、同じ動画の他の部分や他の動画で繰り返されます</string>
<string name="revanced_sb_segments_preview_sum">その動画またはシリーズ内の他の動画で過去に起きたこと、または今後起こることを示すクリップのコレクション。このクリップ群に含まれるすべての情報は、同じ動画の他の部分やシリーズ内の他の動画で繰り返されます</string>
<string name="revanced_sb_segments_filler">余談 / 冗談</string>
<string name="revanced_sb_segments_filler_sum">動画の本筋を理解するために必要のない脱線的な場面または冗談。コンテキストや背景情報を提供する場面は含まれません</string>
<string name="revanced_sb_segments_filler_sum">動画の本筋を理解するために必要のない脱線的な場面または冗談。コンテキストや背景情報を提供する場面は、このカテゴリには含まれません</string>
<string name="revanced_sb_segments_nomusic">音楽: 楽曲以外の区間</string>
<string name="revanced_sb_segments_nomusic_sum">ミュージック ビデオ専用。ミュージック ビデオの中で楽曲が流れていない区間であり、公式や他のメディアの音源に存在しない区間</string>
<string name="revanced_sb_segments_nomusic_sum">ミュージック ビデオ専用。ミュージック ビデオの中で楽曲が流れていない区間であり、公式や他のメディアの音源に存在しない部分</string>
<string name="revanced_sb_skip_button_compact">スキップ</string>
<string name="revanced_sb_skip_button_compact_highlight">ハイライト</string>
<string name="revanced_sb_skip_button_sponsor"> 広告をスキップ</string>
<string name="revanced_sb_skip_button_selfpromo">自己宣伝をスキップ</string>
<string name="revanced_sb_skip_button_interaction">催促をスキップ</string>
<string name="revanced_sb_skip_button_interaction">登録をスキップ</string>
<string name="revanced_sb_skip_button_highlight">ハイライトまでスキップ</string>
<string name="revanced_sb_skip_button_intro_beginning">OP をスキップ</string>
<string name="revanced_sb_skip_button_intro_middle">幕間をスキップ</string>
@@ -1188,20 +1198,20 @@ YouTube Premium ユーザーの場合、この設定は必要ない可能性が
<string name="revanced_sb_skip_button_filler">余談をスキップ</string>
<string name="revanced_sb_skip_button_nomusic">楽曲以外をスキップ</string>
<string name="revanced_sb_skip_button_unsubmitted">セグメントをスキップ</string>
<string name="revanced_sb_skipped_sponsor">広告をスキップしました</string>
<string name="revanced_sb_skipped_sponsor">スポンサー (広告) をスキップしました</string>
<string name="revanced_sb_skipped_selfpromo">自己宣伝をスキップしました</string>
<string name="revanced_sb_skipped_interaction">催促をスキップしました</string>
<string name="revanced_sb_skipped_interaction">視聴者への催促 (登録) をスキップしました</string>
<string name="revanced_sb_skipped_highlight">ハイライトまでスキップしました</string>
<string name="revanced_sb_skipped_intro_beginning">OP をスキップしました</string>
<string name="revanced_sb_skipped_intro_beginning">オープニング (OP) をスキップしました</string>
<string name="revanced_sb_skipped_intro_middle">幕間をスキップしました</string>
<string name="revanced_sb_skipped_intro_end">幕間をスキップしました</string>
<string name="revanced_sb_skipped_outro">ED をスキップしました</string>
<string name="revanced_sb_skipped_outro">エンディング (ED) をスキップしました</string>
<string name="revanced_sb_skipped_hook">フックをスキップしました</string>
<string name="revanced_sb_skipped_preview_beginning">予告編をスキップしました</string>
<string name="revanced_sb_skipped_preview_middle">予告編をスキップしました</string>
<string name="revanced_sb_skipped_preview_end">総集編をスキップしました</string>
<string name="revanced_sb_skipped_filler">余談をスキップしました</string>
<string name="revanced_sb_skipped_nomusic">楽曲以外をスキップしました</string>
<string name="revanced_sb_skipped_nomusic">楽曲以外の区間をスキップしました</string>
<string name="revanced_sb_skipped_unsubmitted">未送信のセグメントをスキップしました</string>
<string name="revanced_sb_skipped_multiple_segments">複数のセグメントをスキップしました</string>
<string name="revanced_sb_skip_automatically">自動的にスキップ</string>
@@ -1478,7 +1488,7 @@ Automotive レイアウト
<string name="revanced_alt_thumbnail_dearrow_error_generic">DeArrow は一時的に利用できません</string>
</patch>
<patch id="misc.announcements.announcementsPatch">
<string name="revanced_announcements_title">ReVanced のお知らせを表示</string>
<string name="revanced_announcements_title">ReVanced からのお知らせを表示</string>
<string name="revanced_announcements_summary_on">アプリの起動時にお知らせが表示されます</string>
<string name="revanced_announcements_summary_off">アプリの起動時にお知らせは表示されません</string>
<string name="revanced_announcements_enabled_summary">アプリの起動時にお知らせを表示します</string>
@@ -1663,10 +1673,19 @@ AV1 での動画再生は、カクつくまたはコマ落ちが発生する場
<string name="revanced_music_play_permanent_repeat_summary_on">常時リピートは有効です\n\nリピート設定が保存され常時適用されます</string>
<string name="revanced_music_play_permanent_repeat_summary_off">常時リピートは無効です\n\nリピート設定は保存されず毎回リセットされます</string>
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">キャストボタンを非表示</string>
<string name="revanced_music_hide_cast_button_summary_on">キャストボタンはプレーヤー オーバーレイに表示されません</string>
<string name="revanced_music_hide_cast_button_summary_off">キャストボタンはプレーヤー オーバーレイに表示されます</string>
<string name="revanced_music_hide_history_button_title">履歴ボタンを非表示</string>
<string name="revanced_music_hide_history_button_summary_on">履歴ボタンは表示されません</string>
<string name="revanced_music_hide_history_button_summary_off">履歴ボタンは表示されます</string>
<string name="revanced_music_hide_notification_button_title">通知ボタンを非表示</string>
<string name="revanced_music_hide_notification_button_summary_on">通知ボタンは表示されません</string>
<string name="revanced_music_hide_notification_button_summary_off">通知ボタンは表示されます</string>
<string name="revanced_music_hide_search_button_title">検索ボタンを非表示</string>
<string name="revanced_music_hide_search_button_summary_on">検索ボタンは表示されません</string>
<string name="revanced_music_hide_search_button_summary_off">検索ボタンは表示されます</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">カテゴリバーを非表示</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -134,9 +133,8 @@ Second \"item\" text"</string>
<!-- 'Ambient mode' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Help & feedback' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Playback speed' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
@@ -268,7 +266,7 @@ Second \"item\" text"</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
</patch>
<patch id="layout.compactheader.hideCategoryBar">
</patch>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -134,9 +133,8 @@ Second \"item\" text"</string>
<!-- 'Ambient mode' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Help & feedback' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Playback speed' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
@@ -268,7 +266,7 @@ Second \"item\" text"</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
</patch>
<patch id="layout.compactheader.hideCategoryBar">
</patch>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -134,9 +133,8 @@ Second \"item\" text"</string>
<!-- 'Ambient mode' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Help & feedback' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Playback speed' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
@@ -268,7 +266,7 @@ Second \"item\" text"</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
</patch>
<patch id="layout.compactheader.hideCategoryBar">
</patch>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -149,9 +148,8 @@ Second \"item\" text"</string>
<!-- 'Ambient mode' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Help & feedback' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Playback speed' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
@@ -283,7 +281,7 @@ Second \"item\" text"</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
</patch>
<patch id="layout.compactheader.hideCategoryBar">
</patch>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,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 +164,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,31 +324,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_podcast_section_title">팟캐스트 살펴보기 섹션 숨기기</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_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>
@@ -628,65 +639,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>
@@ -694,26 +705,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">"만들기 버튼과 알림 버튼의 위치를 교환합니다
알려진 문제점:
@@ -740,47 +751,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>
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<string name="revanced_hide_player_flyout_more_info_title">콘텐츠 더보기 메뉴 숨기기</string>
<string name="revanced_hide_player_flyout_more_info_summary_on">콘텐츠 더보기 메뉴가 숨겨집니다</string>
<string name="revanced_hide_player_flyout_more_info_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_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'. -->
@@ -788,13 +798,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>
@@ -849,14 +859,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>
@@ -960,12 +970,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>
@@ -1668,10 +1678,19 @@ AV1이 사용된 동영상 재생이 끊기거나 프레임이 손실될 수 있
<string name="revanced_music_play_permanent_repeat_summary_on">영구적인 반복을 활성화합니다</string>
<string name="revanced_music_play_permanent_repeat_summary_off">영구적인 반복을 비활성화합니다</string>
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">크롬캐스트 버튼 숨기기</string>
<string name="revanced_music_hide_cast_button_summary_on">크롬캐스트 버튼이 숨겨집니다</string>
<string name="revanced_music_hide_cast_button_summary_off">크롬캐스트 버튼이 표시됩니다</string>
<string name="revanced_music_hide_history_button_title">기록 버튼 숨기기</string>
<string name="revanced_music_hide_history_button_summary_on">기록 버튼이 숨겨집니다</string>
<string name="revanced_music_hide_history_button_summary_off">기록 버튼이 표시됩니다</string>
<string name="revanced_music_hide_notification_button_title">알림 버튼 숨기기</string>
<string name="revanced_music_hide_notification_button_summary_on">알림 버튼이 숨겨집니다</string>
<string name="revanced_music_hide_notification_button_summary_off">알림 버튼이 표시됩니다</string>
<string name="revanced_music_hide_search_button_title">검색 버튼 숨기기</string>
<string name="revanced_music_hide_search_button_summary_on">검색 버튼이 숨겨집니다</string>
<string name="revanced_music_hide_search_button_summary_off">검색 버튼이 표시됩니다</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">카테고리 바 숨기기</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -134,9 +133,8 @@ Second \"item\" text"</string>
<!-- 'Ambient mode' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Help & feedback' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Playback speed' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
@@ -268,7 +266,7 @@ Second \"item\" text"</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
</patch>
<patch id="layout.compactheader.hideCategoryBar">
</patch>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -134,9 +133,8 @@ Second \"item\" text"</string>
<!-- 'Ambient mode' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Help & feedback' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Playback speed' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
@@ -268,7 +266,7 @@ Second \"item\" text"</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
</patch>
<patch id="layout.compactheader.hideCategoryBar">
</patch>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,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 +164,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>
@@ -328,6 +336,9 @@ Jei „Doodle“ šiuo metu rodomas jūsu regione ir šis paslėpimo nustatymas
<string name="revanced_hide_how_this_was_made_section_title">Slėpti „Kaip buvo sukurtas šis turinys“</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">Skyrius „Kaip buvo sukurtas šis turinys“ yra paslėptas</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">Skyrius „Kaip buvo sukurtas šis turinys“ yra rodomas</string>
<string name="revanced_hide_hype_points_title">Slėpti „Hype“ taškus</string>
<string name="revanced_hide_hype_points_summary_on">„Hype“ taškai paslėpti</string>
<string name="revanced_hide_hype_points_summary_off">„Hype“ taškai rodomi</string>
<string name="revanced_hide_podcast_section_title">Slėpti „Naršyti podcast\'ą“</string>
<string name="revanced_hide_podcast_section_summary_on">Skyrius „Naršyti podcast\'ą“ yra paslėptas</string>
<string name="revanced_hide_podcast_section_summary_off">Skyrius „Naršyti podcast\'ą“ yra rodomas</string>
@@ -771,15 +782,14 @@ Jei pakeitus šį nustatymą neįsigalioja, pabandykite perjungti į inkognito r
<string name="revanced_hide_player_flyout_speed_title">Slėpti Vaizdo įrašo atkūrimo greitį</string>
<string name="revanced_hide_player_flyout_speed_summary_on">Vaizdo įrašo atkūrimo greičio meniu yra paslėptas</string>
<string name="revanced_hide_player_flyout_speed_summary_off">Vaizdo įrašo atkūrimo greičio meniu yra rodomas</string>
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<string name="revanced_hide_player_flyout_more_info_title">Slėpti Daugiau informacijos</string>
<string name="revanced_hide_player_flyout_more_info_summary_on">Daugiau informacijos meniu yra paslėptas</string>
<string name="revanced_hide_player_flyout_more_info_summary_off">Daugiau informacijos meniu yra rodomas</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">Slėpti Ekrano užraktą</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_on">Ekrano užrakto meniu yra paslėptas</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_off">Ekrano užrakto meniu yra rodomas</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">Slėpti Klausytis su „YouTube Music“</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_on">„Klausytis su „YouTube Music““ meniu yra paslėptas</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_off">„Klausytis su „YouTube Music““ meniu yra rodomas</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">Slėpti Garso takelius</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">Garso takelių meniu yra paslėptas</string>
@@ -1662,10 +1672,19 @@ Vaizdo įrašo atkūrimas su AV1 gali strigti arba praleisti kadrus."</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Nuolatinis kartojimas įjungtas</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Nuolatinis kartojimas išjungtas</string>
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">Slėpti transliavimo mygtuką</string>
<string name="revanced_music_hide_cast_button_summary_on">Transliavimo mygtukas paslėptas</string>
<string name="revanced_music_hide_cast_button_summary_off">Transliavimo mygtukas rodomas</string>
<string name="revanced_music_hide_history_button_title">Slėpti istorijos mygtuką</string>
<string name="revanced_music_hide_history_button_summary_on">Istorijos mygtukas paslėptas</string>
<string name="revanced_music_hide_history_button_summary_off">Istorijos mygtukas rodomas</string>
<string name="revanced_music_hide_notification_button_title">Slėpti pranešimų mygtuką</string>
<string name="revanced_music_hide_notification_button_summary_on">Pranešimų mygtukas paslėptas</string>
<string name="revanced_music_hide_notification_button_summary_off">Pranešimų mygtukas rodomas</string>
<string name="revanced_music_hide_search_button_title">Slėpti paieškos mygtuką</string>
<string name="revanced_music_hide_search_button_summary_on">Paieškos mygtukas paslėptas</string>
<string name="revanced_music_hide_search_button_summary_off">Paieškos mygtukas rodomas</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Slėpti kategorijų juostą</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!--
All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,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 +164,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>
@@ -328,6 +336,9 @@ Ja Doodle pašlaik tiek rādīts jūsu reģionā un šis slēpšanas iestatījum
<string name="revanced_hide_how_this_was_made_section_title">Paslēpt \"Kā šis saturs tika veidots\"</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">Sadaļa \"Kā šis saturs tika veidots\" ir paslēpta</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">Sadaļa \"Kā šis saturs tika veidots\" ir redzama</string>
<string name="revanced_hide_hype_points_title">Slēpt Hype punktus</string>
<string name="revanced_hide_hype_points_summary_on">Hype punkti ir slēpti</string>
<string name="revanced_hide_hype_points_summary_off">Hype punkti ir redzami</string>
<string name="revanced_hide_podcast_section_title">Paslēpt sadaļu \"Izpētiet podkāstu\"</string>
<string name="revanced_hide_podcast_section_summary_on">Sadaļa \"Izpētiet podkāstu\" ir paslēpta</string>
<string name="revanced_hide_podcast_section_summary_off">Sadaļa \"Izpētiet podkāstu\" ir redzama</string>
@@ -771,15 +782,14 @@ Ja šī iestatījuma maiņa nestājas spēkā, mēģiniet pārslēgties uz inkog
<string name="revanced_hide_player_flyout_speed_title">Paslēpt Atskaņošanas ātrumu</string>
<string name="revanced_hide_player_flyout_speed_summary_on">Atskaņošanas ātruma izvēlne ir paslēpta</string>
<string name="revanced_hide_player_flyout_speed_summary_off">Atskaņošanas ātruma izvēlne ir redzama</string>
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<string name="revanced_hide_player_flyout_more_info_title">Paslēpt Papildus informāciju</string>
<string name="revanced_hide_player_flyout_more_info_summary_on">Papildus informācijas izvēlne ir paslēpta</string>
<string name="revanced_hide_player_flyout_more_info_summary_off">Papildus informācijas izvēlne ir redzama</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">Paslēpt Bloķēt ekrānu</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_on">Bloķēt ekrāna izvēlne ir paslēpta</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_off">Bloķēt ekrāna izvēlne ir redzama</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">Paslēpt klausīties ar YouTube Music</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_on">Izvēlne \"Klausīties ar YouTube Music\" ir paslēpta</string>
<string name="revanced_hide_player_flyout_listen_with_youtube_music_summary_off">Izvēlne \"Klausīties ar YouTube Music\" ir redzama</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">Paslēpt Audio ceļu</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">Audio ceļa izvēlne ir paslēpta</string>
@@ -1662,10 +1672,19 @@ AV1 video atskaņošana var raustīties vai izlaist kadrus."</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Pastāvīgā atkārtošana ir iespējota</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Pastāvīgā atkārtošana ir atspējota</string>
</patch>
<patch id="layout.castbutton.hideCastButton">
<patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">Slēpt apraides pogu</string>
<string name="revanced_music_hide_cast_button_summary_on">Apraides poga ir paslēpta</string>
<string name="revanced_music_hide_cast_button_summary_off">Apraides poga ir redzama</string>
<string name="revanced_music_hide_history_button_title">Slēpt vēstures pogu</string>
<string name="revanced_music_hide_history_button_summary_on">Vēstures poga ir slēpta</string>
<string name="revanced_music_hide_history_button_summary_off">Vēstures poga ir redzama</string>
<string name="revanced_music_hide_notification_button_title">Slēpt paziņojumu pogu</string>
<string name="revanced_music_hide_notification_button_summary_on">Paziņojumu poga ir paslēpta</string>
<string name="revanced_music_hide_notification_button_summary_off">Paziņojumu poga ir redzama</string>
<string name="revanced_music_hide_search_button_title">Slēpt meklēšanas pogu</string>
<string name="revanced_music_hide_search_button_summary_on">Meklēšanas poga ir paslēpta</string>
<string name="revanced_music_hide_search_button_summary_off">Meklēšanas poga ir redzama</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Slēpt kategoriju joslu</string>

Some files were not shown because too many files have changed in this diff Show More