chore: Merge branch dev
to main
(#5079)
This commit is contained in:
56
CHANGELOG.md
56
CHANGELOG.md
@ -1,3 +1,59 @@
|
|||||||
|
# [5.26.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v5.26.0-dev.7...v5.26.0-dev.8) (2025-06-04)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **YouTube - Hide Shorts components:** Disable A/B player that prevents hiding buttons ([#5104](https://github.com/ReVanced/revanced-patches/issues/5104)) ([835b7bd](https://github.com/ReVanced/revanced-patches/commit/835b7bd7bd667abd632822c98898972e5124dbb6))
|
||||||
|
|
||||||
|
# [5.26.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.26.0-dev.6...v5.26.0-dev.7) (2025-06-04)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* **YouTube - Hide Shorts components:** Add option to hide comment panel ([#5102](https://github.com/ReVanced/revanced-patches/issues/5102)) ([22b9bee](https://github.com/ReVanced/revanced-patches/commit/22b9beedd3243a8d6a5635f591b91cdcf307be37))
|
||||||
|
|
||||||
|
# [5.26.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.26.0-dev.5...v5.26.0-dev.6) (2025-06-03)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* **Sync for Reddit:** Add `Fix post thumbnails` patch ([e1ec30c](https://github.com/ReVanced/revanced-patches/commit/e1ec30c5b07560a39d7b8ab293b0c1f39fd59ef2))
|
||||||
|
|
||||||
|
# [5.26.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.26.0-dev.4...v5.26.0-dev.5) (2025-06-03)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **Spotify - Custom theme:** Apply accent color in more places ([#5039](https://github.com/ReVanced/revanced-patches/issues/5039)) ([9357887](https://github.com/ReVanced/revanced-patches/commit/9357887b6fca7aaf34dfb0163645b6a998e1db76))
|
||||||
|
|
||||||
|
# [5.26.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.26.0-dev.3...v5.26.0-dev.4) (2025-06-03)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* **Spotify:** Add `Hide Create button` patch ([#5062](https://github.com/ReVanced/revanced-patches/issues/5062)) ([3201681](https://github.com/ReVanced/revanced-patches/commit/32016819d2adbdfdd5e028941d56feda36d20b00))
|
||||||
|
|
||||||
|
# [5.26.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.26.0-dev.2...v5.26.0-dev.3) (2025-06-01)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* **YouTube - Playback Speed:** Use modern custom speed dialog ([#5069](https://github.com/ReVanced/revanced-patches/issues/5069)) ([9a1e6ca](https://github.com/ReVanced/revanced-patches/commit/9a1e6ca178d9833ee2c681fb130b9290a4e89cd8))
|
||||||
|
|
||||||
|
# [5.26.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.26.0-dev.1...v5.26.0-dev.2) (2025-06-01)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **YouTube:** Support A/B Shorts layout for RYD and component hiding ([#5081](https://github.com/ReVanced/revanced-patches/issues/5081)) ([8ecacaa](https://github.com/ReVanced/revanced-patches/commit/8ecacaad27162d9380014a9a13ac9220b12257b2))
|
||||||
|
|
||||||
|
# [5.26.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.25.0...v5.26.0-dev.1) (2025-05-30)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* **Proton Mail:** Add `Remove free accounts limit` patch ([#4970](https://github.com/ReVanced/revanced-patches/issues/4970)) ([b0440ad](https://github.com/ReVanced/revanced-patches/commit/b0440ad6af0e190e516974ce896dcc54c8d2e122))
|
||||||
|
|
||||||
# [5.25.0](https://github.com/ReVanced/revanced-patches/compare/v5.24.0...v5.25.0) (2025-05-29)
|
# [5.25.0](https://github.com/ReVanced/revanced-patches/compare/v5.24.0...v5.25.0) (2025-05-29)
|
||||||
|
|
||||||
|
|
||||||
|
@ -71,9 +71,7 @@ final class PlayerRoutes {
|
|||||||
return innerTubeBody.toString();
|
return innerTubeBody.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@SuppressWarnings("SameParameterValue")
|
||||||
* @noinspection SameParameterValue
|
|
||||||
*/
|
|
||||||
static HttpURLConnection getPlayerResponseConnectionFromRoute(Route.CompiledRoute route, ClientType clientType) throws IOException {
|
static HttpURLConnection getPlayerResponseConnectionFromRoute(Route.CompiledRoute route, ClientType clientType) throws IOException {
|
||||||
var connection = Requester.getConnectionFromCompiledRoute(YT_API_URL, route);
|
var connection = Requester.getConnectionFromCompiledRoute(YT_API_URL, route);
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ android {
|
|||||||
}
|
}
|
||||||
|
|
||||||
compileOptions {
|
compileOptions {
|
||||||
sourceCompatibility = JavaVersion.VERSION_11
|
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||||
targetCompatibility = JavaVersion.VERSION_11
|
targetCompatibility = JavaVersion.VERSION_1_8
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,51 @@
|
|||||||
|
package app.revanced.extension.spotify.layout.hide.createbutton;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import app.revanced.extension.shared.Utils;
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
public final class HideCreateButtonPatch {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A list of ids of resources which contain the Create button title.
|
||||||
|
*/
|
||||||
|
private static final List<String> CREATE_BUTTON_TITLE_RES_ID_LIST = List.of(
|
||||||
|
Integer.toString(Utils.getResourceIdentifier("navigationbar_musicappitems_create_title", "string"))
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The old id of the resource which contained the Create button title. Used in older versions of the app.
|
||||||
|
*/
|
||||||
|
private static final int OLD_CREATE_BUTTON_TITLE_RES_ID =
|
||||||
|
Utils.getResourceIdentifier("bottom_navigation_bar_create_tab_title", "string");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Injection point. This method is called on every navigation bar item to check whether it is the Create button.
|
||||||
|
* If the navigation bar item is the Create button, it returns null to erase it.
|
||||||
|
* The method fingerprint used to patch ensures we can safely return null here.
|
||||||
|
*/
|
||||||
|
public static Object returnNullIfIsCreateButton(Object navigationBarItem) {
|
||||||
|
if (navigationBarItem == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
String stringifiedNavigationBarItem = navigationBarItem.toString();
|
||||||
|
boolean isCreateButton = CREATE_BUTTON_TITLE_RES_ID_LIST.stream()
|
||||||
|
.anyMatch(stringifiedNavigationBarItem::contains);
|
||||||
|
|
||||||
|
if (isCreateButton) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return navigationBarItem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Injection point. Called in older versions of the app. Returns whether the old navigation bar item is the old
|
||||||
|
* Create button.
|
||||||
|
*/
|
||||||
|
public static boolean isOldCreateButton(int oldNavigationBarItemTitleResId) {
|
||||||
|
return oldNavigationBarItemTitleResId == OLD_CREATE_BUTTON_TITLE_RES_ID;
|
||||||
|
}
|
||||||
|
}
|
@ -8,15 +8,54 @@ import app.revanced.extension.shared.Utils;
|
|||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public final class CustomThemePatch {
|
public final class CustomThemePatch {
|
||||||
|
|
||||||
|
private static final int BACKGROUND_COLOR = getColorFromString("@color/gray_7");
|
||||||
|
private static final int BACKGROUND_COLOR_SECONDARY = getColorFromString("@color/gray_15");
|
||||||
|
private static final int ACCENT_COLOR = getColorFromString("@color/spotify_green_157");
|
||||||
|
private static final int ACCENT_PRESSED_COLOR =
|
||||||
|
getColorFromString("@color/dark_brightaccent_background_press");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Injection point.
|
* Returns an int representation of the color resource or hex code.
|
||||||
*/
|
*/
|
||||||
public static long getThemeColor(String colorString) {
|
private static int getColorFromString(String colorString) {
|
||||||
try {
|
try {
|
||||||
return Utils.getColorFromString(colorString);
|
return Utils.getColorFromString(colorString);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
Logger.printException(() -> "Invalid custom color: " + colorString, ex);
|
Logger.printException(() -> "Invalid color string: " + colorString, ex);
|
||||||
return Color.BLACK;
|
return Color.BLACK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Injection point. Returns an int representation of the replaced color from the original color.
|
||||||
|
*/
|
||||||
|
public static int replaceColor(int originalColor) {
|
||||||
|
switch (originalColor) {
|
||||||
|
// Playlist background color.
|
||||||
|
case 0xFF121212:
|
||||||
|
return BACKGROUND_COLOR;
|
||||||
|
|
||||||
|
// Share menu background color.
|
||||||
|
case 0xFF1F1F1F:
|
||||||
|
// Home category pills background color.
|
||||||
|
case 0xFF333333:
|
||||||
|
// Settings header background color.
|
||||||
|
case 0xFF282828:
|
||||||
|
// Spotify Connect device list background color.
|
||||||
|
case 0xFF2A2A2A:
|
||||||
|
return BACKGROUND_COLOR_SECONDARY;
|
||||||
|
|
||||||
|
// Some Lottie animations have a color that's slightly off due to rounding errors.
|
||||||
|
case 0xFF1ED760: case 0xFF1ED75F:
|
||||||
|
// Intermediate color used in some animations, same rounding issue.
|
||||||
|
case 0xFF1DB954: case 0xFF1CB854:
|
||||||
|
return ACCENT_COLOR;
|
||||||
|
|
||||||
|
case 0xFF1ABC54:
|
||||||
|
return ACCENT_PRESSED_COLOR;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return originalColor;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@ import java.util.Map;
|
|||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
import app.revanced.extension.shared.Logger;
|
import app.revanced.extension.shared.Logger;
|
||||||
|
import app.revanced.extension.shared.Utils;
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public final class UnlockPremiumPatch {
|
public final class UnlockPremiumPatch {
|
||||||
@ -22,15 +23,15 @@ public final class UnlockPremiumPatch {
|
|||||||
private static final boolean IS_SPOTIFY_LEGACY_APP_TARGET;
|
private static final boolean IS_SPOTIFY_LEGACY_APP_TARGET;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
boolean legacy;
|
boolean isLegacy;
|
||||||
try {
|
try {
|
||||||
Class.forName(SPOTIFY_MAIN_ACTIVITY_LEGACY);
|
Class.forName(SPOTIFY_MAIN_ACTIVITY_LEGACY);
|
||||||
legacy = true;
|
isLegacy = true;
|
||||||
} catch (ClassNotFoundException ex) {
|
} catch (ClassNotFoundException ex) {
|
||||||
legacy = false;
|
isLegacy = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
IS_SPOTIFY_LEGACY_APP_TARGET = legacy;
|
IS_SPOTIFY_LEGACY_APP_TARGET = isLegacy;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class OverrideAttribute {
|
private static class OverrideAttribute {
|
||||||
@ -61,11 +62,12 @@ public final class UnlockPremiumPatch {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final List<OverrideAttribute> OVERRIDES = List.of(
|
private static final List<OverrideAttribute> PREMIUM_OVERRIDES = List.of(
|
||||||
// Disables player and app ads.
|
// Disables player and app ads.
|
||||||
new OverrideAttribute("ads", FALSE),
|
new OverrideAttribute("ads", FALSE),
|
||||||
// Works along on-demand, allows playing any song without restriction.
|
// Works along on-demand, allows playing any song without restriction.
|
||||||
new OverrideAttribute("player-license", "premium"),
|
new OverrideAttribute("player-license", "premium"),
|
||||||
|
new OverrideAttribute("player-license-v2", "premium", !IS_SPOTIFY_LEGACY_APP_TARGET),
|
||||||
// Disables shuffle being initially enabled when first playing a playlist.
|
// Disables shuffle being initially enabled when first playing a playlist.
|
||||||
new OverrideAttribute("shuffle", FALSE),
|
new OverrideAttribute("shuffle", FALSE),
|
||||||
// Allows playing any song on-demand, without a shuffled order.
|
// Allows playing any song on-demand, without a shuffled order.
|
||||||
@ -91,18 +93,46 @@ public final class UnlockPremiumPatch {
|
|||||||
new OverrideAttribute("tablet-free", FALSE, false)
|
new OverrideAttribute("tablet-free", FALSE, false)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A list of home sections feature types ids which should be removed. These ids match the ones from the protobuf
|
||||||
|
* response which delivers home sections.
|
||||||
|
*/
|
||||||
private static final List<Integer> REMOVED_HOME_SECTIONS = List.of(
|
private static final List<Integer> REMOVED_HOME_SECTIONS = List.of(
|
||||||
Section.VIDEO_BRAND_AD_FIELD_NUMBER,
|
Section.VIDEO_BRAND_AD_FIELD_NUMBER,
|
||||||
Section.IMAGE_BRAND_AD_FIELD_NUMBER
|
Section.IMAGE_BRAND_AD_FIELD_NUMBER
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A list of lists which contain strings that match whether a context menu item should be filtered out.
|
||||||
|
* The main approach used is matching context menu items by the id of their text resource.
|
||||||
|
*/
|
||||||
|
private static final List<List<String>> FILTERED_CONTEXT_MENU_ITEMS_BY_STRINGS = List.of(
|
||||||
|
// "Listen to music ad-free" upsell on playlists.
|
||||||
|
List.of(getResourceIdentifier("context_menu_remove_ads")),
|
||||||
|
// "Listen to music ad-free" upsell on albums.
|
||||||
|
List.of(getResourceIdentifier("playlist_entity_reinventfree_adsfree_context_menu_item")),
|
||||||
|
// "Start a Jam" context menu item, but only filtered if the user does not have premium and the item is
|
||||||
|
// being used as a Premium upsell (ad).
|
||||||
|
List.of(
|
||||||
|
getResourceIdentifier("group_session_context_menu_start"),
|
||||||
|
"isPremiumUpsell=true"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Utility method for returning resources ids as strings.
|
||||||
|
*/
|
||||||
|
private static String getResourceIdentifier(String resourceIdentifierName) {
|
||||||
|
return Integer.toString(Utils.getResourceIdentifier(resourceIdentifierName, "id"));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Injection point. Override account attributes.
|
* Injection point. Override account attributes.
|
||||||
*/
|
*/
|
||||||
public static void overrideAttribute(Map<String, /*AccountAttribute*/ Object> attributes) {
|
public static void overrideAttributes(Map<String, /*AccountAttribute*/ Object> attributes) {
|
||||||
try {
|
try {
|
||||||
for (var override : OVERRIDES) {
|
for (OverrideAttribute override : PREMIUM_OVERRIDES) {
|
||||||
var attribute = attributes.get(override.key);
|
Object attribute = attributes.get(override.key);
|
||||||
if (attribute == null) {
|
if (attribute == null) {
|
||||||
if (override.isExpected) {
|
if (override.isExpected) {
|
||||||
Logger.printException(() -> "'" + override.key + "' expected but not found");
|
Logger.printException(() -> "'" + override.key + "' expected but not found");
|
||||||
@ -117,12 +147,12 @@ public final class UnlockPremiumPatch {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
Logger.printException(() -> "overrideAttribute failure", ex);
|
Logger.printException(() -> "overrideAttributes failure", ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Injection point. Remove station data from Google assistant URI.
|
* Injection point. Remove station data from Google Assistant URI.
|
||||||
*/
|
*/
|
||||||
public static String removeStationString(String spotifyUriOrUrl) {
|
public static String removeStationString(String spotifyUriOrUrl) {
|
||||||
return spotifyUriOrUrl.replace("spotify:station:", "spotify:");
|
return spotifyUriOrUrl.replace("spotify:station:", "spotify:");
|
||||||
@ -130,7 +160,7 @@ public final class UnlockPremiumPatch {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Injection point. Remove ads sections from home.
|
* Injection point. Remove ads sections from home.
|
||||||
* Depends on patching protobuffer list remove method.
|
* Depends on patching abstract protobuf list ensureIsMutable method.
|
||||||
*/
|
*/
|
||||||
public static void removeHomeSections(List<Section> sections) {
|
public static void removeHomeSections(List<Section> sections) {
|
||||||
try {
|
try {
|
||||||
@ -139,4 +169,17 @@ public final class UnlockPremiumPatch {
|
|||||||
Logger.printException(() -> "Remove home sections failure", ex);
|
Logger.printException(() -> "Remove home sections failure", ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Injection point. Returns whether the context menu item is a Premium ad.
|
||||||
|
*/
|
||||||
|
public static boolean isFilteredContextMenuItem(Object contextMenuItem) {
|
||||||
|
if (contextMenuItem == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
String stringifiedContextMenuItem = contextMenuItem.toString();
|
||||||
|
return FILTERED_CONTEXT_MENU_ITEMS_BY_STRINGS.stream()
|
||||||
|
.anyMatch(filters -> filters.stream().allMatch(stringifiedContextMenuItem::contains));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,11 +7,11 @@ android {
|
|||||||
compileSdk = 34
|
compileSdk = 34
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdk = 26
|
minSdk = 24
|
||||||
}
|
}
|
||||||
|
|
||||||
compileOptions {
|
compileOptions {
|
||||||
sourceCompatibility = JavaVersion.VERSION_17
|
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||||
targetCompatibility = JavaVersion.VERSION_17
|
targetCompatibility = JavaVersion.VERSION_1_8
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -105,6 +105,14 @@ public class ThemeHelper {
|
|||||||
return isDarkTheme() ? getLightThemeColor() : getDarkThemeColor();
|
return isDarkTheme() ? getLightThemeColor() : getDarkThemeColor();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int getDialogBackgroundColor() {
|
||||||
|
final String colorName = isDarkTheme()
|
||||||
|
? "yt_black1"
|
||||||
|
: "yt_white1";
|
||||||
|
|
||||||
|
return Utils.getColorFromString(colorName);
|
||||||
|
}
|
||||||
|
|
||||||
public static int getToolbarBackgroundColor() {
|
public static int getToolbarBackgroundColor() {
|
||||||
final String colorName = isDarkTheme()
|
final String colorName = isDarkTheme()
|
||||||
? "yt_black3"
|
? "yt_black3"
|
||||||
|
@ -686,7 +686,7 @@ public final class AlternativeThumbnailsPatch {
|
|||||||
? "" : fullUrl.substring(imageExtensionEndIndex);
|
? "" : fullUrl.substring(imageExtensionEndIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @noinspection SameParameterValue */
|
@SuppressWarnings("SameParameterValue")
|
||||||
String createStillsUrl(@NonNull ThumbnailQuality qualityToUse, boolean includeViewTracking) {
|
String createStillsUrl(@NonNull ThumbnailQuality qualityToUse, boolean includeViewTracking) {
|
||||||
// Images could be upgraded to webp if they are not already, but this fails quite often,
|
// Images could be upgraded to webp if they are not already, but this fails quite often,
|
||||||
// especially for new videos uploaded in the last hour.
|
// especially for new videos uploaded in the last hour.
|
||||||
|
@ -152,11 +152,13 @@ public class ReturnYouTubeDislikePatch {
|
|||||||
return original; // No need to check for Shorts in the context.
|
return original; // No need to check for Shorts in the context.
|
||||||
}
|
}
|
||||||
|
|
||||||
if (conversionContextString.contains("|shorts_dislike_button.eml")) {
|
if (Utils.containsAny(conversionContextString,
|
||||||
|
"|shorts_dislike_button.eml", "|reel_dislike_button.eml")) {
|
||||||
return getShortsSpan(original, true);
|
return getShortsSpan(original, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (conversionContextString.contains("|shorts_like_button.eml")) {
|
if (Utils.containsAny(conversionContextString,
|
||||||
|
"|shorts_like_button.eml", "|reel_like_button.eml")) {
|
||||||
if (!Utils.containsNumber(original)) {
|
if (!Utils.containsNumber(original)) {
|
||||||
Logger.printDebug(() -> "Replacing hidden likes count");
|
Logger.printDebug(() -> "Replacing hidden likes count");
|
||||||
return getShortsSpan(original, false);
|
return getShortsSpan(original, false);
|
||||||
@ -361,6 +363,11 @@ public class ReturnYouTubeDislikePatch {
|
|||||||
if (videoId.equals(lastPrefetchedVideoId)) {
|
if (videoId.equals(lastPrefetchedVideoId)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (!Utils.isNetworkConnected()) {
|
||||||
|
Logger.printDebug(() -> "Cannot pre-fetch RYD, network is not connected");
|
||||||
|
lastPrefetchedVideoId = null;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final boolean videoIdIsShort = VideoInformation.lastPlayerResponseIsShort();
|
final boolean videoIdIsShort = VideoInformation.lastPlayerResponseIsShort();
|
||||||
// Shorts shelf in home and subscription feed causes player response hook to be called,
|
// Shorts shelf in home and subscription feed causes player response hook to be called,
|
||||||
@ -415,6 +422,12 @@ public class ReturnYouTubeDislikePatch {
|
|||||||
}
|
}
|
||||||
Logger.printDebug(() -> "New video id: " + videoId + " playerType: " + currentPlayerType);
|
Logger.printDebug(() -> "New video id: " + videoId + " playerType: " + currentPlayerType);
|
||||||
|
|
||||||
|
if (!Utils.isNetworkConnected()) {
|
||||||
|
Logger.printDebug(() -> "Cannot fetch RYD, network is not connected");
|
||||||
|
currentVideoData = null;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ReturnYouTubeDislike data = ReturnYouTubeDislike.getFetchForVideoId(videoId);
|
ReturnYouTubeDislike data = ReturnYouTubeDislike.getFetchForVideoId(videoId);
|
||||||
// Pre-emptively set the data to short status.
|
// Pre-emptively set the data to short status.
|
||||||
// Required to prevent Shorts data from being used on a minimized video in incognito mode.
|
// Required to prevent Shorts data from being used on a minimized video in incognito mode.
|
||||||
|
@ -354,4 +354,23 @@ public final class VideoInformation {
|
|||||||
return videoTime >= videoLength && videoLength > 0;
|
return videoTime >= videoLength && videoLength > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Overrides the current playback speed.
|
||||||
|
* Rest of the implementation added by patch.
|
||||||
|
*/
|
||||||
|
public static void overridePlaybackSpeed(float speedOverride) {
|
||||||
|
Logger.printDebug(() -> "Overriding playback speed to: " + speedOverride);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Injection point.
|
||||||
|
*
|
||||||
|
* @param newlyLoadedPlaybackSpeed The current playback speed.
|
||||||
|
*/
|
||||||
|
public static void setPlaybackSpeed(float newlyLoadedPlaybackSpeed) {
|
||||||
|
if (playbackSpeed != newlyLoadedPlaybackSpeed) {
|
||||||
|
Logger.printDebug(() -> "Video speed changed: " + newlyLoadedPlaybackSpeed);
|
||||||
|
playbackSpeed = newlyLoadedPlaybackSpeed;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,18 +10,11 @@ import app.revanced.extension.youtube.settings.Settings;
|
|||||||
*/
|
*/
|
||||||
public final class PlaybackSpeedMenuFilterPatch extends Filter {
|
public final class PlaybackSpeedMenuFilterPatch extends Filter {
|
||||||
|
|
||||||
/**
|
|
||||||
* Old litho based speed selection menu.
|
|
||||||
*/
|
|
||||||
public static volatile boolean isOldPlaybackSpeedMenuVisible;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 0.05x speed selection menu.
|
* 0.05x speed selection menu.
|
||||||
*/
|
*/
|
||||||
public static volatile boolean isPlaybackRateSelectorMenuVisible;
|
public static volatile boolean isPlaybackRateSelectorMenuVisible;
|
||||||
|
|
||||||
private final StringFilterGroup oldPlaybackMenuGroup;
|
|
||||||
|
|
||||||
public PlaybackSpeedMenuFilterPatch() {
|
public PlaybackSpeedMenuFilterPatch() {
|
||||||
// 0.05x litho speed menu.
|
// 0.05x litho speed menu.
|
||||||
var playbackRateSelectorGroup = new StringFilterGroup(
|
var playbackRateSelectorGroup = new StringFilterGroup(
|
||||||
@ -29,22 +22,13 @@ public final class PlaybackSpeedMenuFilterPatch extends Filter {
|
|||||||
"playback_rate_selector_menu_sheet.eml-js"
|
"playback_rate_selector_menu_sheet.eml-js"
|
||||||
);
|
);
|
||||||
|
|
||||||
// Old litho based speed menu.
|
addPathCallbacks(playbackRateSelectorGroup);
|
||||||
oldPlaybackMenuGroup = new StringFilterGroup(
|
|
||||||
Settings.CUSTOM_SPEED_MENU,
|
|
||||||
"playback_speed_sheet_content.eml-js");
|
|
||||||
|
|
||||||
addPathCallbacks(playbackRateSelectorGroup, oldPlaybackMenuGroup);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
|
boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
|
||||||
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
|
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
|
||||||
if (matchedGroup == oldPlaybackMenuGroup) {
|
isPlaybackRateSelectorMenuVisible = true;
|
||||||
isOldPlaybackSpeedMenuVisible = true;
|
|
||||||
} else {
|
|
||||||
isPlaybackRateSelectorMenuVisible = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -143,12 +143,14 @@ public final class ShortsFilter extends Filter {
|
|||||||
|
|
||||||
StringFilterGroup likeButton = new StringFilterGroup(
|
StringFilterGroup likeButton = new StringFilterGroup(
|
||||||
Settings.HIDE_SHORTS_LIKE_BUTTON,
|
Settings.HIDE_SHORTS_LIKE_BUTTON,
|
||||||
"shorts_like_button.eml"
|
"shorts_like_button.eml",
|
||||||
|
"reel_like_button.eml"
|
||||||
);
|
);
|
||||||
|
|
||||||
StringFilterGroup dislikeButton = new StringFilterGroup(
|
StringFilterGroup dislikeButton = new StringFilterGroup(
|
||||||
Settings.HIDE_SHORTS_DISLIKE_BUTTON,
|
Settings.HIDE_SHORTS_DISLIKE_BUTTON,
|
||||||
"shorts_dislike_button.eml"
|
"shorts_dislike_button.eml",
|
||||||
|
"reel_dislike_button.eml"
|
||||||
);
|
);
|
||||||
|
|
||||||
joinButton = new StringFilterGroup(
|
joinButton = new StringFilterGroup(
|
||||||
@ -168,12 +170,13 @@ public final class ShortsFilter extends Filter {
|
|||||||
|
|
||||||
shortsActionBar = new StringFilterGroup(
|
shortsActionBar = new StringFilterGroup(
|
||||||
null,
|
null,
|
||||||
"shorts_action_bar.eml"
|
"shorts_action_bar.eml",
|
||||||
|
"reel_action_bar.eml"
|
||||||
);
|
);
|
||||||
|
|
||||||
actionButton = new StringFilterGroup(
|
actionButton = new StringFilterGroup(
|
||||||
null,
|
null,
|
||||||
// Can be simply 'button.eml' or 'shorts_video_action_button.eml'
|
// Can be simply 'button.eml', 'shorts_video_action_button.eml' or 'reel_action_button.eml'
|
||||||
"button.eml"
|
"button.eml"
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -195,15 +198,18 @@ public final class ShortsFilter extends Filter {
|
|||||||
videoActionButtonGroupList.addAll(
|
videoActionButtonGroupList.addAll(
|
||||||
new ByteArrayFilterGroup(
|
new ByteArrayFilterGroup(
|
||||||
Settings.HIDE_SHORTS_COMMENTS_BUTTON,
|
Settings.HIDE_SHORTS_COMMENTS_BUTTON,
|
||||||
"reel_comment_button"
|
"reel_comment_button",
|
||||||
|
"youtube_shorts_comment_outline"
|
||||||
),
|
),
|
||||||
new ByteArrayFilterGroup(
|
new ByteArrayFilterGroup(
|
||||||
Settings.HIDE_SHORTS_SHARE_BUTTON,
|
Settings.HIDE_SHORTS_SHARE_BUTTON,
|
||||||
"reel_share_button"
|
"reel_share_button",
|
||||||
|
"youtube_shorts_share_outline"
|
||||||
),
|
),
|
||||||
new ByteArrayFilterGroup(
|
new ByteArrayFilterGroup(
|
||||||
Settings.HIDE_SHORTS_REMIX_BUTTON,
|
Settings.HIDE_SHORTS_REMIX_BUTTON,
|
||||||
"reel_remix_button"
|
"reel_remix_button",
|
||||||
|
"youtube_shorts_remix_outline"
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -211,6 +217,12 @@ public final class ShortsFilter extends Filter {
|
|||||||
// Suggested actions.
|
// Suggested actions.
|
||||||
//
|
//
|
||||||
suggestedActionsGroupList.addAll(
|
suggestedActionsGroupList.addAll(
|
||||||
|
new ByteArrayFilterGroup(
|
||||||
|
Settings.HIDE_SHORTS_COMMENT_PANEL,
|
||||||
|
// Preview comment that can popup while a Short is playing.
|
||||||
|
// Uses no bundled icons, and instead the users profile photo is shown.
|
||||||
|
"shorts-comments-panel"
|
||||||
|
),
|
||||||
new ByteArrayFilterGroup(
|
new ByteArrayFilterGroup(
|
||||||
Settings.HIDE_SHORTS_SHOP_BUTTON,
|
Settings.HIDE_SHORTS_SHOP_BUTTON,
|
||||||
"yt_outline_bag_"
|
"yt_outline_bag_"
|
||||||
|
@ -1,24 +1,57 @@
|
|||||||
package app.revanced.extension.youtube.patches.playback.speed;
|
package app.revanced.extension.youtube.patches.playback.speed;
|
||||||
|
|
||||||
import static app.revanced.extension.shared.StringRef.str;
|
import static app.revanced.extension.shared.StringRef.str;
|
||||||
|
import static app.revanced.extension.shared.Utils.dipToPixels;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
|
import android.app.Dialog;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.res.Configuration;
|
||||||
|
import android.graphics.Canvas;
|
||||||
|
import android.graphics.ColorFilter;
|
||||||
|
import android.graphics.Paint;
|
||||||
|
import android.graphics.PixelFormat;
|
||||||
|
import android.graphics.PorterDuff;
|
||||||
|
import android.graphics.Rect;
|
||||||
|
import android.graphics.Typeface;
|
||||||
|
import android.graphics.drawable.Drawable;
|
||||||
|
import android.graphics.drawable.ShapeDrawable;
|
||||||
|
import android.graphics.drawable.shapes.RoundRectShape;
|
||||||
|
import android.icu.text.NumberFormat;
|
||||||
import android.support.v7.widget.RecyclerView;
|
import android.support.v7.widget.RecyclerView;
|
||||||
|
import android.view.animation.Animation;
|
||||||
|
import android.view.Gravity;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.view.ViewParent;
|
import android.view.ViewParent;
|
||||||
|
import android.view.Window;
|
||||||
|
import android.view.WindowManager;
|
||||||
|
import android.widget.Button;
|
||||||
|
import android.widget.FrameLayout;
|
||||||
|
import android.widget.GridLayout;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
|
import android.widget.SeekBar;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import java.lang.ref.WeakReference;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
import app.revanced.extension.shared.Logger;
|
import app.revanced.extension.shared.Logger;
|
||||||
import app.revanced.extension.shared.Utils;
|
import app.revanced.extension.shared.Utils;
|
||||||
|
import app.revanced.extension.youtube.ThemeHelper;
|
||||||
|
import app.revanced.extension.youtube.patches.VideoInformation;
|
||||||
import app.revanced.extension.youtube.patches.components.PlaybackSpeedMenuFilterPatch;
|
import app.revanced.extension.youtube.patches.components.PlaybackSpeedMenuFilterPatch;
|
||||||
import app.revanced.extension.youtube.settings.Settings;
|
import app.revanced.extension.youtube.settings.Settings;
|
||||||
|
import app.revanced.extension.youtube.shared.PlayerType;
|
||||||
|
import kotlin.Unit;
|
||||||
|
import kotlin.jvm.functions.Function1;
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public class CustomPlaybackSpeedPatch {
|
public class CustomPlaybackSpeedPatch {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Maximum playback speed, exclusive value. Custom speeds must be less than this value.
|
* Maximum playback speed, inclusive. Custom speeds must be this or less.
|
||||||
* <p>
|
* <p>
|
||||||
* Going over 8x does not increase the actual playback speed any higher,
|
* Going over 8x does not increase the actual playback speed any higher,
|
||||||
* and the UI selector starts flickering and acting weird.
|
* and the UI selector starts flickering and acting weird.
|
||||||
@ -26,6 +59,11 @@ public class CustomPlaybackSpeedPatch {
|
|||||||
*/
|
*/
|
||||||
public static final float PLAYBACK_SPEED_MAXIMUM = 8;
|
public static final float PLAYBACK_SPEED_MAXIMUM = 8;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Scale used to convert user speed to {@link android.widget.ProgressBar#setProgress(int)}.
|
||||||
|
*/
|
||||||
|
private static final float PROGRESS_BAR_VALUE_SCALE = 100;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tap and hold speed.
|
* Tap and hold speed.
|
||||||
*/
|
*/
|
||||||
@ -34,16 +72,28 @@ public class CustomPlaybackSpeedPatch {
|
|||||||
/**
|
/**
|
||||||
* Custom playback speeds.
|
* Custom playback speeds.
|
||||||
*/
|
*/
|
||||||
public static float[] customPlaybackSpeeds;
|
public static final float[] customPlaybackSpeeds;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The last time the old playback menu was forcefully called.
|
* Formats speeds to UI strings.
|
||||||
*/
|
*/
|
||||||
private static long lastTimeOldPlaybackMenuInvoked;
|
private static final NumberFormat speedFormatter = NumberFormat.getNumberInstance();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Weak reference to the currently open dialog.
|
||||||
|
*/
|
||||||
|
private static WeakReference<Dialog> currentDialog = new WeakReference<>(null);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Minimum and maximum custom playback speeds of {@link #customPlaybackSpeeds}.
|
||||||
|
*/
|
||||||
|
private static final float customPlaybackSpeedsMin, customPlaybackSpeedsMax;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
final float holdSpeed = Settings.SPEED_TAP_AND_HOLD.get();
|
// Cap at 2 decimals (rounds automatically).
|
||||||
|
speedFormatter.setMaximumFractionDigits(2);
|
||||||
|
|
||||||
|
final float holdSpeed = Settings.SPEED_TAP_AND_HOLD.get();
|
||||||
if (holdSpeed > 0 && holdSpeed <= PLAYBACK_SPEED_MAXIMUM) {
|
if (holdSpeed > 0 && holdSpeed <= PLAYBACK_SPEED_MAXIMUM) {
|
||||||
TAP_AND_HOLD_SPEED = holdSpeed;
|
TAP_AND_HOLD_SPEED = holdSpeed;
|
||||||
} else {
|
} else {
|
||||||
@ -51,7 +101,9 @@ public class CustomPlaybackSpeedPatch {
|
|||||||
TAP_AND_HOLD_SPEED = Settings.SPEED_TAP_AND_HOLD.resetToDefault();
|
TAP_AND_HOLD_SPEED = Settings.SPEED_TAP_AND_HOLD.resetToDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
loadCustomSpeeds();
|
customPlaybackSpeeds = loadCustomSpeeds();
|
||||||
|
customPlaybackSpeedsMin = customPlaybackSpeeds[0];
|
||||||
|
customPlaybackSpeedsMax = customPlaybackSpeeds[customPlaybackSpeeds.length - 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -65,37 +117,41 @@ public class CustomPlaybackSpeedPatch {
|
|||||||
Utils.showToastLong(str("revanced_custom_playback_speeds_invalid", PLAYBACK_SPEED_MAXIMUM));
|
Utils.showToastLong(str("revanced_custom_playback_speeds_invalid", PLAYBACK_SPEED_MAXIMUM));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void loadCustomSpeeds() {
|
private static float[] loadCustomSpeeds() {
|
||||||
try {
|
try {
|
||||||
String[] speedStrings = Settings.CUSTOM_PLAYBACK_SPEEDS.get().split("\\s+");
|
// Automatically replace commas with periods,
|
||||||
|
// if the user added speeds in a localized format.
|
||||||
|
String[] speedStrings = Settings.CUSTOM_PLAYBACK_SPEEDS.get()
|
||||||
|
.replace(',', '.').split("\\s+");
|
||||||
Arrays.sort(speedStrings);
|
Arrays.sort(speedStrings);
|
||||||
if (speedStrings.length == 0) {
|
if (speedStrings.length == 0) {
|
||||||
throw new IllegalArgumentException();
|
throw new IllegalArgumentException();
|
||||||
}
|
}
|
||||||
|
|
||||||
customPlaybackSpeeds = new float[speedStrings.length];
|
float[] speeds = new float[speedStrings.length];
|
||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (String speedString : speedStrings) {
|
for (String speedString : speedStrings) {
|
||||||
final float speedFloat = Float.parseFloat(speedString);
|
final float speedFloat = Float.parseFloat(speedString);
|
||||||
if (speedFloat <= 0 || arrayContains(customPlaybackSpeeds, speedFloat)) {
|
if (speedFloat <= 0 || arrayContains(speeds, speedFloat)) {
|
||||||
throw new IllegalArgumentException();
|
throw new IllegalArgumentException();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (speedFloat >= PLAYBACK_SPEED_MAXIMUM) {
|
if (speedFloat > PLAYBACK_SPEED_MAXIMUM) {
|
||||||
showInvalidCustomSpeedToast();
|
showInvalidCustomSpeedToast();
|
||||||
Settings.CUSTOM_PLAYBACK_SPEEDS.resetToDefault();
|
Settings.CUSTOM_PLAYBACK_SPEEDS.resetToDefault();
|
||||||
loadCustomSpeeds();
|
return loadCustomSpeeds();
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
customPlaybackSpeeds[i++] = speedFloat;
|
speeds[i++] = speedFloat;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return speeds;
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
Logger.printInfo(() -> "parse error", ex);
|
Logger.printInfo(() -> "Parse error", ex);
|
||||||
Utils.showToastLong(str("revanced_custom_playback_speeds_parse_exception"));
|
Utils.showToastShort(str("revanced_custom_playback_speeds_parse_exception"));
|
||||||
Settings.CUSTOM_PLAYBACK_SPEEDS.resetToDefault();
|
Settings.CUSTOM_PLAYBACK_SPEEDS.resetToDefault();
|
||||||
loadCustomSpeeds();
|
return loadCustomSpeeds();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -113,38 +169,28 @@ public class CustomPlaybackSpeedPatch {
|
|||||||
recyclerView.getViewTreeObserver().addOnDrawListener(() -> {
|
recyclerView.getViewTreeObserver().addOnDrawListener(() -> {
|
||||||
try {
|
try {
|
||||||
if (PlaybackSpeedMenuFilterPatch.isPlaybackRateSelectorMenuVisible) {
|
if (PlaybackSpeedMenuFilterPatch.isPlaybackRateSelectorMenuVisible) {
|
||||||
if (hideLithoMenuAndShowOldSpeedMenu(recyclerView, 5)) {
|
if (hideLithoMenuAndShowCustomSpeedMenu(recyclerView, 5)) {
|
||||||
PlaybackSpeedMenuFilterPatch.isPlaybackRateSelectorMenuVisible = false;
|
PlaybackSpeedMenuFilterPatch.isPlaybackRateSelectorMenuVisible = false;
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
Logger.printException(() -> "isPlaybackRateSelectorMenuVisible failure", ex);
|
Logger.printException(() -> "onFlyoutMenuCreate failure", ex);
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
if (PlaybackSpeedMenuFilterPatch.isOldPlaybackSpeedMenuVisible) {
|
|
||||||
if (hideLithoMenuAndShowOldSpeedMenu(recyclerView, 8)) {
|
|
||||||
PlaybackSpeedMenuFilterPatch.isOldPlaybackSpeedMenuVisible = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (Exception ex) {
|
|
||||||
Logger.printException(() -> "isOldPlaybackSpeedMenuVisible failure", ex);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean hideLithoMenuAndShowOldSpeedMenu(RecyclerView recyclerView, int expectedChildCount) {
|
@SuppressWarnings("SameParameterValue")
|
||||||
|
private static boolean hideLithoMenuAndShowCustomSpeedMenu(RecyclerView recyclerView, int expectedChildCount) {
|
||||||
if (recyclerView.getChildCount() == 0) {
|
if (recyclerView.getChildCount() == 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
View firstChild = recyclerView.getChildAt(0);
|
View firstChild = recyclerView.getChildAt(0);
|
||||||
if (!(firstChild instanceof ViewGroup PlaybackSpeedParentView)) {
|
if (!(firstChild instanceof ViewGroup playbackSpeedParentView)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PlaybackSpeedParentView.getChildCount() != expectedChildCount) {
|
if (playbackSpeedParentView.getChildCount() != expectedChildCount) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -168,23 +214,418 @@ public class CustomPlaybackSpeedPatch {
|
|||||||
((ViewGroup) parentView3rd).setVisibility(View.GONE);
|
((ViewGroup) parentView3rd).setVisibility(View.GONE);
|
||||||
((ViewGroup) parentView4th).setVisibility(View.GONE);
|
((ViewGroup) parentView4th).setVisibility(View.GONE);
|
||||||
|
|
||||||
// Close the litho speed menu and show the old one.
|
// Close the litho speed menu and show the modern custom speed dialog.
|
||||||
showOldPlaybackSpeedMenu();
|
showModernCustomPlaybackSpeedDialog(recyclerView.getContext());
|
||||||
|
Logger.printDebug(() -> "Modern playback speed dialog shown");
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void showOldPlaybackSpeedMenu() {
|
/**
|
||||||
// This method is sometimes used multiple times.
|
* Displays a modern custom dialog for adjusting video playback speed.
|
||||||
// To prevent this, ignore method reuse within 1 second.
|
* <p>
|
||||||
final long now = System.currentTimeMillis();
|
* This method creates a dialog with a slider, plus/minus buttons, and preset speed buttons
|
||||||
if (now - lastTimeOldPlaybackMenuInvoked < 1000) {
|
* to allow the user to modify the video playback speed. The dialog is styled with rounded
|
||||||
Logger.printDebug(() -> "Ignoring call to showOldPlaybackSpeedMenu");
|
* corners and themed colors, positioned at the bottom of the screen. The playback speed
|
||||||
return;
|
* can be adjusted in 0.05 increments using the slider or buttons, or set directly to preset
|
||||||
}
|
* values. The dialog updates the displayed speed in real-time and applies changes to the
|
||||||
lastTimeOldPlaybackMenuInvoked = now;
|
* video playback. The dialog is dismissed if the player enters Picture-in-Picture (PiP) mode.
|
||||||
Logger.printDebug(() -> "Old video quality menu shown");
|
*/
|
||||||
|
@SuppressLint("SetTextI18n")
|
||||||
|
public static void showModernCustomPlaybackSpeedDialog(Context context) {
|
||||||
|
// Create a dialog without a theme for custom appearance.
|
||||||
|
Dialog dialog = new Dialog(context);
|
||||||
|
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); // Remove default title bar.
|
||||||
|
|
||||||
// Rest of the implementation added by patch.
|
// Store the dialog reference.
|
||||||
|
currentDialog = new WeakReference<>(dialog);
|
||||||
|
|
||||||
|
// Create main vertical LinearLayout for dialog content.
|
||||||
|
LinearLayout mainLayout = new LinearLayout(context);
|
||||||
|
mainLayout.setOrientation(LinearLayout.VERTICAL);
|
||||||
|
|
||||||
|
// Preset size constants.
|
||||||
|
final int dip4 = dipToPixels(4); // Height for handle bar.
|
||||||
|
final int dip5 = dipToPixels(5);
|
||||||
|
final int dip6 = dipToPixels(6); // Padding for mainLayout from bottom.
|
||||||
|
final int dip8 = dipToPixels(8); // Padding for mainLayout from left and right.
|
||||||
|
final int dip20 = dipToPixels(20);
|
||||||
|
final int dip32 = dipToPixels(32); // Height for in-rows speed buttons.
|
||||||
|
final int dip36 = dipToPixels(36); // Height for minus and plus buttons.
|
||||||
|
final int dip40 = dipToPixels(40); // Width for handle bar.
|
||||||
|
final int dip60 = dipToPixels(60); // Height for speed button container.
|
||||||
|
|
||||||
|
mainLayout.setPadding(dip5, dip8, dip5, dip8);
|
||||||
|
|
||||||
|
// Set rounded rectangle background for the main layout.
|
||||||
|
RoundRectShape roundRectShape = new RoundRectShape(
|
||||||
|
createCornerRadii(12), null, null);
|
||||||
|
ShapeDrawable background = new ShapeDrawable(roundRectShape);
|
||||||
|
background.getPaint().setColor(ThemeHelper.getDialogBackgroundColor());
|
||||||
|
mainLayout.setBackground(background);
|
||||||
|
|
||||||
|
// Add handle bar at the top.
|
||||||
|
View handleBar = new View(context);
|
||||||
|
ShapeDrawable handleBackground = new ShapeDrawable(new RoundRectShape(
|
||||||
|
createCornerRadii(4), null, null));
|
||||||
|
handleBackground.getPaint().setColor(getAdjustedBackgroundColor(true));
|
||||||
|
handleBar.setBackground(handleBackground);
|
||||||
|
LinearLayout.LayoutParams handleParams = new LinearLayout.LayoutParams(
|
||||||
|
dip40, // handle bar width.
|
||||||
|
dip4 // handle bar height.
|
||||||
|
);
|
||||||
|
handleParams.gravity = Gravity.CENTER_HORIZONTAL; // Center horizontally.
|
||||||
|
handleParams.setMargins(0, 0, 0, dip20); // 20dp bottom margins.
|
||||||
|
handleBar.setLayoutParams(handleParams);
|
||||||
|
// Add handle bar view to main layout.
|
||||||
|
mainLayout.addView(handleBar);
|
||||||
|
|
||||||
|
// Display current playback speed.
|
||||||
|
TextView currentSpeedText = new TextView(context);
|
||||||
|
float currentSpeed = VideoInformation.getPlaybackSpeed();
|
||||||
|
// Initially show with only 0 minimum digits, so 1.0 shows as 1x
|
||||||
|
currentSpeedText.setText(formatSpeedStringX(currentSpeed, 0));
|
||||||
|
currentSpeedText.setTextColor(ThemeHelper.getForegroundColor());
|
||||||
|
currentSpeedText.setTextSize(16);
|
||||||
|
currentSpeedText.setTypeface(Typeface.DEFAULT_BOLD);
|
||||||
|
currentSpeedText.setGravity(Gravity.CENTER);
|
||||||
|
LinearLayout.LayoutParams textParams = new LinearLayout.LayoutParams(
|
||||||
|
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
|
||||||
|
textParams.setMargins(0, 0, 0, 0);
|
||||||
|
currentSpeedText.setLayoutParams(textParams);
|
||||||
|
// Add current speed text view to main layout.
|
||||||
|
mainLayout.addView(currentSpeedText);
|
||||||
|
|
||||||
|
// Create horizontal layout for slider and +/- buttons.
|
||||||
|
LinearLayout sliderLayout = new LinearLayout(context);
|
||||||
|
sliderLayout.setOrientation(LinearLayout.HORIZONTAL);
|
||||||
|
sliderLayout.setGravity(Gravity.CENTER_VERTICAL);
|
||||||
|
sliderLayout.setPadding(dip5, dip5, dip5, dip5); // 5dp padding.
|
||||||
|
|
||||||
|
// Create minus button.
|
||||||
|
Button minusButton = new Button(context, null, 0); // Disable default theme style.
|
||||||
|
minusButton.setText(""); // No text on button.
|
||||||
|
ShapeDrawable minusBackground = new ShapeDrawable(new RoundRectShape(createCornerRadii(20), null, null));
|
||||||
|
minusBackground.getPaint().setColor(getAdjustedBackgroundColor(false));
|
||||||
|
minusButton.setBackground(minusBackground);
|
||||||
|
OutlineSymbolDrawable minusDrawable = new OutlineSymbolDrawable(false); // Minus symbol.
|
||||||
|
minusButton.setForeground(minusDrawable);
|
||||||
|
LinearLayout.LayoutParams minusParams = new LinearLayout.LayoutParams(dip36, dip36);
|
||||||
|
minusParams.setMargins(0, 0, dip5, 0); // 5dp to slider.
|
||||||
|
minusButton.setLayoutParams(minusParams);
|
||||||
|
|
||||||
|
// Create slider for speed adjustment.
|
||||||
|
SeekBar speedSlider = new SeekBar(context);
|
||||||
|
speedSlider.setMax(speedToProgressValue(customPlaybackSpeedsMax));
|
||||||
|
speedSlider.setProgress(speedToProgressValue(currentSpeed));
|
||||||
|
speedSlider.getProgressDrawable().setColorFilter(
|
||||||
|
ThemeHelper.getForegroundColor(), PorterDuff.Mode.SRC_IN); // Theme progress bar.
|
||||||
|
speedSlider.getThumb().setColorFilter(
|
||||||
|
ThemeHelper.getForegroundColor(), PorterDuff.Mode.SRC_IN); // Theme slider thumb.
|
||||||
|
LinearLayout.LayoutParams sliderParams = new LinearLayout.LayoutParams(
|
||||||
|
0, LinearLayout.LayoutParams.WRAP_CONTENT, 1f);
|
||||||
|
sliderParams.setMargins(dip5, 0, dip5, 0); // 5dp to -/+ buttons.
|
||||||
|
speedSlider.setLayoutParams(sliderParams);
|
||||||
|
|
||||||
|
// Create plus button.
|
||||||
|
Button plusButton = new Button(context, null, 0); // Disable default theme style.
|
||||||
|
plusButton.setText(""); // No text on button.
|
||||||
|
ShapeDrawable plusBackground = new ShapeDrawable(new RoundRectShape(
|
||||||
|
createCornerRadii(20), null, null));
|
||||||
|
plusBackground.getPaint().setColor(getAdjustedBackgroundColor(false));
|
||||||
|
plusButton.setBackground(plusBackground);
|
||||||
|
OutlineSymbolDrawable plusDrawable = new OutlineSymbolDrawable(true); // Plus symbol.
|
||||||
|
plusButton.setForeground(plusDrawable);
|
||||||
|
LinearLayout.LayoutParams plusParams = new LinearLayout.LayoutParams(dip36, dip36);
|
||||||
|
plusParams.setMargins(dip5, 0, 0, 0); // 5dp to slider.
|
||||||
|
plusButton.setLayoutParams(plusParams);
|
||||||
|
|
||||||
|
// Add -/+ and slider views to slider layout.
|
||||||
|
sliderLayout.addView(minusButton);
|
||||||
|
sliderLayout.addView(speedSlider);
|
||||||
|
sliderLayout.addView(plusButton);
|
||||||
|
|
||||||
|
LinearLayout.LayoutParams sliderLayoutParams = new LinearLayout.LayoutParams(
|
||||||
|
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
|
||||||
|
sliderLayoutParams.setMargins(0, 0, 0, dip5); // 5dp bottom margin.
|
||||||
|
sliderLayout.setLayoutParams(sliderLayoutParams);
|
||||||
|
|
||||||
|
// Add slider layout to main layout.
|
||||||
|
mainLayout.addView(sliderLayout);
|
||||||
|
|
||||||
|
Function<Float, Void> userSelectedSpeed = newSpeed -> {
|
||||||
|
final float roundedSpeed = roundSpeedToNearestIncrement(newSpeed);
|
||||||
|
if (VideoInformation.getPlaybackSpeed() == roundedSpeed) {
|
||||||
|
// Nothing has changed. New speed rounds to the current speed.
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
VideoInformation.overridePlaybackSpeed(roundedSpeed);
|
||||||
|
RememberPlaybackSpeedPatch.userSelectedPlaybackSpeed(roundedSpeed);
|
||||||
|
currentSpeedText.setText(formatSpeedStringX(roundedSpeed, 2)); // Update display.
|
||||||
|
speedSlider.setProgress(speedToProgressValue(roundedSpeed)); // Update slider.
|
||||||
|
return null;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Set listener for slider to update playback speed.
|
||||||
|
speedSlider.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
|
||||||
|
@Override
|
||||||
|
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
|
||||||
|
if (fromUser) {
|
||||||
|
// Convert from progress value to video playback speed.
|
||||||
|
userSelectedSpeed.apply(customPlaybackSpeedsMin + (progress / PROGRESS_BAR_VALUE_SCALE));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStartTrackingTouch(SeekBar seekBar) {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStopTrackingTouch(SeekBar seekBar) {}
|
||||||
|
});
|
||||||
|
|
||||||
|
minusButton.setOnClickListener(v -> userSelectedSpeed.apply(
|
||||||
|
VideoInformation.getPlaybackSpeed() - 0.05f));
|
||||||
|
plusButton.setOnClickListener(v -> userSelectedSpeed.apply(
|
||||||
|
VideoInformation.getPlaybackSpeed() + 0.05f));
|
||||||
|
|
||||||
|
// Create GridLayout for preset speed buttons.
|
||||||
|
GridLayout gridLayout = new GridLayout(context);
|
||||||
|
gridLayout.setColumnCount(5); // 5 columns for speed buttons.
|
||||||
|
gridLayout.setAlignmentMode(GridLayout.ALIGN_BOUNDS);
|
||||||
|
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(0, 0, 0, 0); // No margins around GridLayout.
|
||||||
|
gridLayout.setLayoutParams(gridParams);
|
||||||
|
|
||||||
|
// For all buttons show at least 1 zero in decimal (2 -> "2.0").
|
||||||
|
speedFormatter.setMinimumFractionDigits(1);
|
||||||
|
|
||||||
|
// Add buttons for each preset playback speed.
|
||||||
|
for (float speed : customPlaybackSpeeds) {
|
||||||
|
// Container for button and optional label.
|
||||||
|
FrameLayout buttonContainer = new FrameLayout(context);
|
||||||
|
|
||||||
|
// Set layout parameters for each grid cell.
|
||||||
|
GridLayout.LayoutParams containerParams = new GridLayout.LayoutParams();
|
||||||
|
containerParams.width = 0; // Equal width for columns.
|
||||||
|
containerParams.columnSpec = GridLayout.spec(GridLayout.UNDEFINED, 1, 1f);
|
||||||
|
containerParams.setMargins(dip5, 0, dip5, 0); // Button margins.
|
||||||
|
containerParams.height = dip60; // Fixed height for button and label.
|
||||||
|
buttonContainer.setLayoutParams(containerParams);
|
||||||
|
|
||||||
|
// Create speed button.
|
||||||
|
Button speedButton = new Button(context, null, 0);
|
||||||
|
speedButton.setText(speedFormatter.format(speed)); // Do not use 'x' speed format.
|
||||||
|
speedButton.setTextColor(ThemeHelper.getForegroundColor());
|
||||||
|
speedButton.setTextSize(12);
|
||||||
|
speedButton.setAllCaps(false);
|
||||||
|
speedButton.setGravity(Gravity.CENTER);
|
||||||
|
|
||||||
|
ShapeDrawable buttonBackground = new ShapeDrawable(new RoundRectShape(
|
||||||
|
createCornerRadii(20), null, null));
|
||||||
|
buttonBackground.getPaint().setColor(getAdjustedBackgroundColor(false));
|
||||||
|
speedButton.setBackground(buttonBackground);
|
||||||
|
speedButton.setPadding(dip5, dip5, dip5, dip5);
|
||||||
|
|
||||||
|
// Center button vertically and stretch horizontally in container.
|
||||||
|
FrameLayout.LayoutParams buttonParams = new FrameLayout.LayoutParams(
|
||||||
|
FrameLayout.LayoutParams.MATCH_PARENT, dip32, Gravity.CENTER);
|
||||||
|
speedButton.setLayoutParams(buttonParams);
|
||||||
|
|
||||||
|
// Add speed buttons view to buttons container layout.
|
||||||
|
buttonContainer.addView(speedButton);
|
||||||
|
|
||||||
|
// Add "Normal" label for 1.0x speed.
|
||||||
|
if (speed == 1.0f) {
|
||||||
|
TextView normalLabel = new TextView(context);
|
||||||
|
// Use same 'Normal' string as stock YouTube.
|
||||||
|
normalLabel.setText(str("normal_playback_rate_label"));
|
||||||
|
normalLabel.setTextColor(ThemeHelper.getForegroundColor());
|
||||||
|
normalLabel.setTextSize(10);
|
||||||
|
normalLabel.setGravity(Gravity.CENTER);
|
||||||
|
|
||||||
|
FrameLayout.LayoutParams labelParams = new FrameLayout.LayoutParams(
|
||||||
|
FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT,
|
||||||
|
Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL);
|
||||||
|
labelParams.bottomMargin = 0; // Position label below button.
|
||||||
|
normalLabel.setLayoutParams(labelParams);
|
||||||
|
|
||||||
|
buttonContainer.addView(normalLabel);
|
||||||
|
}
|
||||||
|
|
||||||
|
speedButton.setOnClickListener(v -> userSelectedSpeed.apply(speed));
|
||||||
|
|
||||||
|
gridLayout.addView(buttonContainer);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add in-rows speed buttons layout to main layout.
|
||||||
|
mainLayout.addView(gridLayout);
|
||||||
|
|
||||||
|
// Wrap mainLayout in another LinearLayout for side margins.
|
||||||
|
LinearLayout wrapperLayout = new LinearLayout(context);
|
||||||
|
wrapperLayout.setOrientation(LinearLayout.VERTICAL);
|
||||||
|
wrapperLayout.setPadding(dip8, 0, dip8, 0); // 8dp side margins.
|
||||||
|
wrapperLayout.addView(mainLayout);
|
||||||
|
dialog.setContentView(wrapperLayout);
|
||||||
|
|
||||||
|
// Configure dialog window to appear at the bottom.
|
||||||
|
Window window = dialog.getWindow();
|
||||||
|
if (window != null) {
|
||||||
|
WindowManager.LayoutParams params = window.getAttributes();
|
||||||
|
params.gravity = Gravity.BOTTOM; // Position at bottom of screen.
|
||||||
|
params.y = dip6; // 6dp margin from bottom.
|
||||||
|
// In landscape, use the smaller dimension (height) as portrait width.
|
||||||
|
int portraitWidth = context.getResources().getDisplayMetrics().widthPixels;
|
||||||
|
if (context.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
|
||||||
|
portraitWidth = Math.min(
|
||||||
|
portraitWidth,
|
||||||
|
context.getResources().getDisplayMetrics().heightPixels);
|
||||||
|
}
|
||||||
|
params.width = portraitWidth; // Use portrait width.
|
||||||
|
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
|
||||||
|
window.setAttributes(params);
|
||||||
|
window.setBackgroundDrawable(null); // Remove default dialog background.
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create observer for PlayerType changes.
|
||||||
|
Function1<PlayerType, Unit> playerTypeObserver = new Function1<>() {
|
||||||
|
@Override
|
||||||
|
public Unit invoke(PlayerType type) {
|
||||||
|
Dialog current = currentDialog.get();
|
||||||
|
if (current == null || !current.isShowing()) {
|
||||||
|
// Should never happen.
|
||||||
|
PlayerType.getOnChange().removeObserver(this);
|
||||||
|
Logger.printException(() -> "Removing player type listener as dialog is null or closed");
|
||||||
|
} else if (type == PlayerType.WATCH_WHILE_PICTURE_IN_PICTURE) {
|
||||||
|
current.dismiss();
|
||||||
|
Logger.printDebug(() -> "Playback speed dialog dismissed due to PiP mode");
|
||||||
|
}
|
||||||
|
return Unit.INSTANCE;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Add observer to dismiss dialog when entering PiP mode.
|
||||||
|
PlayerType.getOnChange().addObserver(playerTypeObserver);
|
||||||
|
|
||||||
|
// Remove observer when dialog is dismissed.
|
||||||
|
dialog.setOnDismissListener(d -> {
|
||||||
|
PlayerType.getOnChange().removeObserver(playerTypeObserver);
|
||||||
|
Logger.printDebug(() -> "PlayerType observer removed on dialog dismiss");
|
||||||
|
});
|
||||||
|
|
||||||
|
// Apply slide-in animation when showing the dialog.
|
||||||
|
final int fadeDurationFast = Utils.getResourceInteger("fade_duration_fast");
|
||||||
|
Animation slideInABottomAnimation = Utils.getResourceAnimation("slide_in_bottom");
|
||||||
|
slideInABottomAnimation.setDuration(fadeDurationFast);
|
||||||
|
mainLayout.startAnimation(slideInABottomAnimation);
|
||||||
|
|
||||||
|
dialog.show(); // Display the dialog.
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates an array of corner radii for a rounded rectangle shape.
|
||||||
|
*
|
||||||
|
* @param dp The radius in density-independent pixels (dp) to apply to all corners.
|
||||||
|
* @return An array of eight float values representing the corner radii
|
||||||
|
* (top-left, top-right, bottom-right, bottom-left).
|
||||||
|
*/
|
||||||
|
private static float[] createCornerRadii(float dp) {
|
||||||
|
final float radius = dipToPixels(dp);
|
||||||
|
return new float[]{radius, radius, radius, radius, radius, radius, radius, radius};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param speed The playback speed value to format.
|
||||||
|
* @return A string representation of the speed with 'x' (e.g. "1.25x" or "1.00x").
|
||||||
|
*/
|
||||||
|
private static String formatSpeedStringX(float speed, int minimumFractionDigits) {
|
||||||
|
speedFormatter.setMinimumFractionDigits(minimumFractionDigits);
|
||||||
|
return speedFormatter.format(speed) + 'x';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return user speed converted to a value for {@link SeekBar#setProgress(int)}.
|
||||||
|
*/
|
||||||
|
private static int speedToProgressValue(float speed) {
|
||||||
|
return (int) ((speed - customPlaybackSpeedsMin) * PROGRESS_BAR_VALUE_SCALE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Rounds the given playback speed to the nearest 0.05 increment and ensures it is within valid bounds.
|
||||||
|
*
|
||||||
|
* @param speed The playback speed to round.
|
||||||
|
* @return The rounded speed, constrained to the specified bounds.
|
||||||
|
*/
|
||||||
|
private static float roundSpeedToNearestIncrement(float speed) {
|
||||||
|
// Round to nearest 0.05 speed.
|
||||||
|
final float roundedSpeed = Math.round(speed / 0.05f) * 0.05f;
|
||||||
|
return Utils.clamp(roundedSpeed, 0.05f, PLAYBACK_SPEED_MAXIMUM);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adjusts the background color based on the current theme.
|
||||||
|
*
|
||||||
|
* @param isHandleBar If true, applies a stronger darkening factor (0.9) for the handle bar in light theme;
|
||||||
|
* if false, applies a standard darkening factor (0.95) for other elements in light theme.
|
||||||
|
* @return A modified background color, lightened by 20% for dark themes or darkened by 5% (or 10% for handle bar)
|
||||||
|
* for light themes to ensure visual contrast.
|
||||||
|
*/
|
||||||
|
public static int getAdjustedBackgroundColor(boolean isHandleBar) {
|
||||||
|
final int baseColor = ThemeHelper.getDialogBackgroundColor();
|
||||||
|
float darkThemeFactor = isHandleBar ? 1.25f : 1.115f; // 1.25f for handleBar, 1.115f for others in dark theme.
|
||||||
|
float lightThemeFactor = isHandleBar ? 0.9f : 0.95f; // 0.9f for handleBar, 0.95f for others in light theme.
|
||||||
|
return ThemeHelper.isDarkTheme()
|
||||||
|
? ThemeHelper.adjustColorBrightness(baseColor, darkThemeFactor) // Lighten for dark theme.
|
||||||
|
: ThemeHelper.adjustColorBrightness(baseColor, lightThemeFactor); // Darken for light theme.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Custom Drawable for rendering outlined plus and minus symbols on buttons.
|
||||||
|
*/
|
||||||
|
class OutlineSymbolDrawable extends Drawable {
|
||||||
|
private final boolean isPlus; // Determines if the symbol is a plus or minus.
|
||||||
|
private final Paint paint;
|
||||||
|
|
||||||
|
OutlineSymbolDrawable(boolean isPlus) {
|
||||||
|
this.isPlus = isPlus;
|
||||||
|
paint = new Paint(Paint.ANTI_ALIAS_FLAG); // Enable anti-aliasing for smooth rendering.
|
||||||
|
paint.setColor(ThemeHelper.getForegroundColor());
|
||||||
|
paint.setStyle(Paint.Style.STROKE); // Use stroke style for outline.
|
||||||
|
paint.setStrokeWidth(dipToPixels(1)); // 1dp stroke width.
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void draw(Canvas canvas) {
|
||||||
|
Rect bounds = getBounds();
|
||||||
|
final int width = bounds.width();
|
||||||
|
final int height = bounds.height();
|
||||||
|
final float centerX = width / 2f; // Center X coordinate.
|
||||||
|
final float centerY = height / 2f; // Center Y coordinate.
|
||||||
|
final float size = Math.min(width, height) * 0.25f; // Symbol size is 25% of button dimensions.
|
||||||
|
|
||||||
|
// Draw horizontal line for both plus and minus symbols.
|
||||||
|
canvas.drawLine(centerX - size, centerY, centerX + size, centerY, paint);
|
||||||
|
if (isPlus) {
|
||||||
|
// Draw vertical line for plus symbol.
|
||||||
|
canvas.drawLine(centerX, centerY - size, centerX, centerY + size, paint);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setAlpha(int alpha) {
|
||||||
|
paint.setAlpha(alpha);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setColorFilter(ColorFilter colorFilter) {
|
||||||
|
paint.setColorFilter(colorFilter);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getOpacity() {
|
||||||
|
return PixelFormat.TRANSLUCENT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -33,10 +33,10 @@ public final class RememberPlaybackSpeedPatch {
|
|||||||
public static void userSelectedPlaybackSpeed(float playbackSpeed) {
|
public static void userSelectedPlaybackSpeed(float playbackSpeed) {
|
||||||
try {
|
try {
|
||||||
if (Settings.REMEMBER_PLAYBACK_SPEED_LAST_SELECTED.get()) {
|
if (Settings.REMEMBER_PLAYBACK_SPEED_LAST_SELECTED.get()) {
|
||||||
// With the 0.05x menu, if the speed is set by integrations to higher than 2.0x
|
// With the 0.05x menu, if the speed is set by a patch to higher than 2.0x
|
||||||
// then the menu will allow increasing without bounds but the max speed is
|
// then the menu will allow increasing without bounds but the max speed is
|
||||||
// still capped to under 8.0x.
|
// still capped to 8.0x.
|
||||||
playbackSpeed = Math.min(playbackSpeed, CustomPlaybackSpeedPatch.PLAYBACK_SPEED_MAXIMUM - 0.05f);
|
playbackSpeed = Math.min(playbackSpeed, CustomPlaybackSpeedPatch.PLAYBACK_SPEED_MAXIMUM);
|
||||||
|
|
||||||
// Prevent toast spamming if using the 0.05x adjustments.
|
// Prevent toast spamming if using the 0.05x adjustments.
|
||||||
// Show exactly one toast after the user stops interacting with the speed menu.
|
// Show exactly one toast after the user stops interacting with the speed menu.
|
||||||
@ -57,7 +57,7 @@ public final class RememberPlaybackSpeedPatch {
|
|||||||
}
|
}
|
||||||
Settings.PLAYBACK_SPEED_DEFAULT.save(finalPlaybackSpeed);
|
Settings.PLAYBACK_SPEED_DEFAULT.save(finalPlaybackSpeed);
|
||||||
|
|
||||||
Utils.showToastLong(str("revanced_remember_playback_speed_toast", (finalPlaybackSpeed + "x")));
|
Utils.showToastShort(str("revanced_remember_playback_speed_toast", (finalPlaybackSpeed + "x")));
|
||||||
}, TOAST_DELAY_MILLISECONDS);
|
}, TOAST_DELAY_MILLISECONDS);
|
||||||
}
|
}
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
|
@ -60,7 +60,7 @@ public final class SeekbarColorPatch {
|
|||||||
* this is the color value of {@link Settings#SEEKBAR_CUSTOM_COLOR_PRIMARY}.
|
* this is the color value of {@link Settings#SEEKBAR_CUSTOM_COLOR_PRIMARY}.
|
||||||
* Otherwise this is {@link #ORIGINAL_SEEKBAR_COLOR}.
|
* Otherwise this is {@link #ORIGINAL_SEEKBAR_COLOR}.
|
||||||
*/
|
*/
|
||||||
private static int customSeekbarColor = ORIGINAL_SEEKBAR_COLOR;
|
private static final int customSeekbarColor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Custom seekbar hue, saturation, and brightness values.
|
* Custom seekbar hue, saturation, and brightness values.
|
||||||
@ -77,24 +77,25 @@ public final class SeekbarColorPatch {
|
|||||||
Color.colorToHSV(ORIGINAL_SEEKBAR_COLOR, hsv);
|
Color.colorToHSV(ORIGINAL_SEEKBAR_COLOR, hsv);
|
||||||
ORIGINAL_SEEKBAR_COLOR_BRIGHTNESS = hsv[2];
|
ORIGINAL_SEEKBAR_COLOR_BRIGHTNESS = hsv[2];
|
||||||
|
|
||||||
if (SEEKBAR_CUSTOM_COLOR_ENABLED) {
|
customSeekbarColor = SEEKBAR_CUSTOM_COLOR_ENABLED
|
||||||
loadCustomSeekbarColor();
|
? loadCustomSeekbarColor()
|
||||||
}
|
: ORIGINAL_SEEKBAR_COLOR;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void loadCustomSeekbarColor() {
|
private static int loadCustomSeekbarColor() {
|
||||||
try {
|
try {
|
||||||
customSeekbarColor = Color.parseColor(Settings.SEEKBAR_CUSTOM_COLOR_PRIMARY.get());
|
final int color = Color.parseColor(Settings.SEEKBAR_CUSTOM_COLOR_PRIMARY.get());
|
||||||
Color.colorToHSV(customSeekbarColor, customSeekbarColorHSV);
|
Color.colorToHSV(color, customSeekbarColorHSV);
|
||||||
|
customSeekbarColorGradient[0] = color;
|
||||||
customSeekbarColorGradient[0] = customSeekbarColor;
|
|
||||||
customSeekbarColorGradient[1] = Color.parseColor(Settings.SEEKBAR_CUSTOM_COLOR_ACCENT.get());
|
customSeekbarColorGradient[1] = Color.parseColor(Settings.SEEKBAR_CUSTOM_COLOR_ACCENT.get());
|
||||||
|
|
||||||
|
return color;
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
Utils.showToastShort(str("revanced_seekbar_custom_color_invalid"));
|
Utils.showToastShort(str("revanced_seekbar_custom_color_invalid"));
|
||||||
Settings.SEEKBAR_CUSTOM_COLOR_PRIMARY.resetToDefault();
|
Settings.SEEKBAR_CUSTOM_COLOR_PRIMARY.resetToDefault();
|
||||||
Settings.SEEKBAR_CUSTOM_COLOR_ACCENT.resetToDefault();
|
Settings.SEEKBAR_CUSTOM_COLOR_ACCENT.resetToDefault();
|
||||||
|
|
||||||
loadCustomSeekbarColor();
|
return loadCustomSeekbarColor();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,6 +115,7 @@ public final class SeekbarColorPatch {
|
|||||||
: (int) channel3Bits;
|
: (int) channel3Bits;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("SameParameterValue")
|
||||||
private static String get9BitStyleIdentifier(int color24Bit) {
|
private static String get9BitStyleIdentifier(int color24Bit) {
|
||||||
final int r3 = colorChannelTo3Bits(Color.red(color24Bit));
|
final int r3 = colorChannelTo3Bits(Color.red(color24Bit));
|
||||||
final int g3 = colorChannelTo3Bits(Color.green(color24Bit));
|
final int g3 = colorChannelTo3Bits(Color.green(color24Bit));
|
||||||
|
@ -63,7 +63,7 @@ public class Settings extends BaseSettings {
|
|||||||
public static final BooleanSetting CUSTOM_SPEED_MENU = new BooleanSetting("revanced_custom_speed_menu", TRUE);
|
public static final BooleanSetting CUSTOM_SPEED_MENU = new BooleanSetting("revanced_custom_speed_menu", TRUE);
|
||||||
public static final FloatSetting PLAYBACK_SPEED_DEFAULT = new FloatSetting("revanced_playback_speed_default", -2.0f);
|
public static final FloatSetting PLAYBACK_SPEED_DEFAULT = new FloatSetting("revanced_playback_speed_default", -2.0f);
|
||||||
public static final StringSetting CUSTOM_PLAYBACK_SPEEDS = new StringSetting("revanced_custom_playback_speeds",
|
public static final StringSetting CUSTOM_PLAYBACK_SPEEDS = new StringSetting("revanced_custom_playback_speeds",
|
||||||
"0.25\n0.5\n0.75\n0.9\n0.95\n1.0\n1.05\n1.1\n1.25\n1.5\n1.75\n2.0\n3.0\n4.0\n5.0", true);
|
"0.25\n0.5\n0.75\n1.0\n1.25\n1.5\n1.75\n2.0\n2.5\n3.0\n4.0\n5.0\n6.0\n7.0\n8.0", true);
|
||||||
// Audio
|
// Audio
|
||||||
public static final BooleanSetting FORCE_ORIGINAL_AUDIO = new BooleanSetting("revanced_force_original_audio", FALSE, new ForceOriginalAudioAvailability());
|
public static final BooleanSetting FORCE_ORIGINAL_AUDIO = new BooleanSetting("revanced_force_original_audio", FALSE, new ForceOriginalAudioAvailability());
|
||||||
|
|
||||||
@ -275,6 +275,7 @@ public class Settings extends BaseSettings {
|
|||||||
public static final BooleanSetting HIDE_SHORTS_SEARCH = new BooleanSetting("revanced_hide_shorts_search", FALSE);
|
public static final BooleanSetting HIDE_SHORTS_SEARCH = new BooleanSetting("revanced_hide_shorts_search", FALSE);
|
||||||
public static final BooleanSetting HIDE_SHORTS_SEARCH_SUGGESTIONS = new BooleanSetting("revanced_hide_shorts_search_suggestions", TRUE);
|
public static final BooleanSetting HIDE_SHORTS_SEARCH_SUGGESTIONS = new BooleanSetting("revanced_hide_shorts_search_suggestions", TRUE);
|
||||||
public static final BooleanSetting HIDE_SHORTS_SHARE_BUTTON = new BooleanSetting("revanced_hide_shorts_share_button", FALSE);
|
public static final BooleanSetting HIDE_SHORTS_SHARE_BUTTON = new BooleanSetting("revanced_hide_shorts_share_button", FALSE);
|
||||||
|
public static final BooleanSetting HIDE_SHORTS_COMMENT_PANEL = new BooleanSetting("revanced_hide_shorts_comment_panel", TRUE);
|
||||||
public static final BooleanSetting HIDE_SHORTS_SHOP_BUTTON = new BooleanSetting("revanced_hide_shorts_shop_button", TRUE);
|
public static final BooleanSetting HIDE_SHORTS_SHOP_BUTTON = new BooleanSetting("revanced_hide_shorts_shop_button", TRUE);
|
||||||
public static final BooleanSetting HIDE_SHORTS_SOUND_BUTTON = new BooleanSetting("revanced_hide_shorts_sound_button", FALSE);
|
public static final BooleanSetting HIDE_SHORTS_SOUND_BUTTON = new BooleanSetting("revanced_hide_shorts_sound_button", FALSE);
|
||||||
public static final BooleanSetting HIDE_SHORTS_SOUND_METADATA_LABEL = new BooleanSetting("revanced_hide_shorts_sound_metadata_label", FALSE);
|
public static final BooleanSetting HIDE_SHORTS_SOUND_METADATA_LABEL = new BooleanSetting("revanced_hide_shorts_sound_metadata_label", FALSE);
|
||||||
|
@ -5,9 +5,13 @@ import android.view.View;
|
|||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
import app.revanced.extension.shared.Logger;
|
import app.revanced.extension.shared.Logger;
|
||||||
|
import app.revanced.extension.youtube.patches.VideoInformation;
|
||||||
import app.revanced.extension.youtube.patches.playback.speed.CustomPlaybackSpeedPatch;
|
import app.revanced.extension.youtube.patches.playback.speed.CustomPlaybackSpeedPatch;
|
||||||
import app.revanced.extension.youtube.settings.Settings;
|
import app.revanced.extension.youtube.settings.Settings;
|
||||||
|
|
||||||
|
import static app.revanced.extension.shared.StringRef.str;
|
||||||
|
import static app.revanced.extension.shared.Utils.showToastShort;
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public class PlaybackSpeedDialogButton {
|
public class PlaybackSpeedDialogButton {
|
||||||
@Nullable
|
@Nullable
|
||||||
@ -23,8 +27,27 @@ public class PlaybackSpeedDialogButton {
|
|||||||
"revanced_playback_speed_dialog_button",
|
"revanced_playback_speed_dialog_button",
|
||||||
"revanced_playback_speed_dialog_button_placeholder",
|
"revanced_playback_speed_dialog_button_placeholder",
|
||||||
Settings.PLAYBACK_SPEED_DIALOG_BUTTON::get,
|
Settings.PLAYBACK_SPEED_DIALOG_BUTTON::get,
|
||||||
view -> CustomPlaybackSpeedPatch.showOldPlaybackSpeedMenu(),
|
view -> {
|
||||||
null
|
try {
|
||||||
|
CustomPlaybackSpeedPatch.showModernCustomPlaybackSpeedDialog(view.getContext());
|
||||||
|
} catch (Exception ex) {
|
||||||
|
Logger.printException(() -> "speed button onClick failure", ex);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
view -> {
|
||||||
|
try {
|
||||||
|
final float speed = (!Settings.REMEMBER_PLAYBACK_SPEED_LAST_SELECTED.get() ||
|
||||||
|
VideoInformation.getPlaybackSpeed() == Settings.PLAYBACK_SPEED_DEFAULT.get())
|
||||||
|
? 1.0f
|
||||||
|
: Settings.PLAYBACK_SPEED_DEFAULT.get();
|
||||||
|
|
||||||
|
VideoInformation.overridePlaybackSpeed(speed);
|
||||||
|
showToastShort(str("revanced_custom_playback_speeds_reset_toast", (speed + "x")));
|
||||||
|
} catch (Exception ex) {
|
||||||
|
Logger.printException(() -> "speed button reset failure", ex);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
);
|
);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
Logger.printException(() -> "initializeButton failure", ex);
|
Logger.printException(() -> "initializeButton failure", ex);
|
||||||
|
@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M
|
|||||||
org.gradle.parallel = true
|
org.gradle.parallel = true
|
||||||
android.useAndroidX = true
|
android.useAndroidX = true
|
||||||
kotlin.code.style = official
|
kotlin.code.style = official
|
||||||
version = 5.25.0
|
version = 5.26.0-dev.8
|
||||||
|
58
package-lock.json
generated
58
package-lock.json
generated
@ -9,7 +9,7 @@
|
|||||||
"@semantic-release/changelog": "^6.0.3",
|
"@semantic-release/changelog": "^6.0.3",
|
||||||
"@semantic-release/git": "^10.0.1",
|
"@semantic-release/git": "^10.0.1",
|
||||||
"gradle-semantic-release-plugin": "^1.10.1",
|
"gradle-semantic-release-plugin": "^1.10.1",
|
||||||
"semantic-release": "^24.2.1"
|
"semantic-release": "^24.2.5"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/code-frame": {
|
"node_modules/@babel/code-frame": {
|
||||||
@ -1964,9 +1964,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/chalk": {
|
"node_modules/chalk": {
|
||||||
"version": "5.3.0",
|
"version": "5.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz",
|
||||||
"integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
|
"integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -3460,9 +3460,9 @@
|
|||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
"node_modules/marked": {
|
"node_modules/marked": {
|
||||||
"version": "12.0.2",
|
"version": "15.0.12",
|
||||||
"resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/marked/-/marked-15.0.12.tgz",
|
||||||
"integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==",
|
"integrity": "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"bin": {
|
"bin": {
|
||||||
@ -3473,24 +3473,38 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/marked-terminal": {
|
"node_modules/marked-terminal": {
|
||||||
"version": "7.1.0",
|
"version": "7.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-7.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-7.3.0.tgz",
|
||||||
"integrity": "sha512-+pvwa14KZL74MVXjYdPR3nSInhGhNvPce/3mqLVZT2oUvt654sL1XImFuLZ1pkA866IYZ3ikDTOFUIC7XzpZZg==",
|
"integrity": "sha512-t4rBvPsHc57uE/2nJOLmMbZCQ4tgAccAED3ngXQqW6g+TxA488JzJ+FK3lQkzBQOI1mRV/r/Kq+1ZlJ4D0owQw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ansi-escapes": "^7.0.0",
|
"ansi-escapes": "^7.0.0",
|
||||||
"chalk": "^5.3.0",
|
"ansi-regex": "^6.1.0",
|
||||||
|
"chalk": "^5.4.1",
|
||||||
"cli-highlight": "^2.1.11",
|
"cli-highlight": "^2.1.11",
|
||||||
"cli-table3": "^0.6.5",
|
"cli-table3": "^0.6.5",
|
||||||
"node-emoji": "^2.1.3",
|
"node-emoji": "^2.2.0",
|
||||||
"supports-hyperlinks": "^3.0.0"
|
"supports-hyperlinks": "^3.1.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=16.0.0"
|
"node": ">=16.0.0"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"marked": ">=1 <14"
|
"marked": ">=1 <16"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/marked-terminal/node_modules/ansi-regex": {
|
||||||
|
"version": "6.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
|
||||||
|
"integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/chalk/ansi-regex?sponsor=1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/meow": {
|
"node_modules/meow": {
|
||||||
@ -3607,9 +3621,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/node-emoji": {
|
"node_modules/node-emoji": {
|
||||||
"version": "2.1.3",
|
"version": "2.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.2.0.tgz",
|
||||||
"integrity": "sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==",
|
"integrity": "sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -6760,9 +6774,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/semantic-release": {
|
"node_modules/semantic-release": {
|
||||||
"version": "24.2.1",
|
"version": "24.2.5",
|
||||||
"resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-24.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-24.2.5.tgz",
|
||||||
"integrity": "sha512-z0/3cutKNkLQ4Oy0HTi3lubnjTsdjjgOqmxdPjeYWe6lhFqUPfwslZxRHv3HDZlN4MhnZitb9SLihDkZNxOXfQ==",
|
"integrity": "sha512-9xV49HNY8C0/WmPWxTlaNleiXhWb//qfMzG2c5X8/k7tuWcu8RssbuS+sujb/h7PiWSXv53mrQvV9hrO9b7vuQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -6784,8 +6798,8 @@
|
|||||||
"hosted-git-info": "^8.0.0",
|
"hosted-git-info": "^8.0.0",
|
||||||
"import-from-esm": "^2.0.0",
|
"import-from-esm": "^2.0.0",
|
||||||
"lodash-es": "^4.17.21",
|
"lodash-es": "^4.17.21",
|
||||||
"marked": "^12.0.0",
|
"marked": "^15.0.0",
|
||||||
"marked-terminal": "^7.0.0",
|
"marked-terminal": "^7.3.0",
|
||||||
"micromatch": "^4.0.2",
|
"micromatch": "^4.0.2",
|
||||||
"p-each-series": "^3.0.0",
|
"p-each-series": "^3.0.0",
|
||||||
"p-reduce": "^3.0.0",
|
"p-reduce": "^3.0.0",
|
||||||
|
@ -4,6 +4,6 @@
|
|||||||
"@semantic-release/changelog": "^6.0.3",
|
"@semantic-release/changelog": "^6.0.3",
|
||||||
"@semantic-release/git": "^10.0.1",
|
"@semantic-release/git": "^10.0.1",
|
||||||
"gradle-semantic-release-plugin": "^1.10.1",
|
"gradle-semantic-release-plugin": "^1.10.1",
|
||||||
"semantic-release": "^24.2.1"
|
"semantic-release": "^24.2.5"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -448,6 +448,10 @@ public final class app/revanced/patches/primevideo/misc/permissions/RenamePermis
|
|||||||
public static final fun getRenamePermissionsPatch ()Lapp/revanced/patcher/patch/ResourcePatch;
|
public static final fun getRenamePermissionsPatch ()Lapp/revanced/patcher/patch/ResourcePatch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final class app/revanced/patches/protonmail/account/RemoveFreeAccountsLimitPatchKt {
|
||||||
|
public static final fun getRemoveFreeAccountsLimitPatch ()Lapp/revanced/patcher/patch/ResourcePatch;
|
||||||
|
}
|
||||||
|
|
||||||
public final class app/revanced/patches/protonmail/signature/RemoveSentFromSignaturePatchKt {
|
public final class app/revanced/patches/protonmail/signature/RemoveSentFromSignaturePatchKt {
|
||||||
public static final fun getRemoveSentFromSignaturePatch ()Lapp/revanced/patcher/patch/ResourcePatch;
|
public static final fun getRemoveSentFromSignaturePatch ()Lapp/revanced/patcher/patch/ResourcePatch;
|
||||||
}
|
}
|
||||||
@ -571,6 +575,10 @@ public final class app/revanced/patches/reddit/customclients/sync/syncforreddit/
|
|||||||
public static final fun getFixSLinksPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getFixSLinksPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final class app/revanced/patches/reddit/customclients/sync/syncforreddit/fix/thumbnail/FixPostThumbnailsPatchKt {
|
||||||
|
public static final fun getFixPostThumbnailsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
|
}
|
||||||
|
|
||||||
public final class app/revanced/patches/reddit/customclients/sync/syncforreddit/fix/user/UseUserEndpointPatchKt {
|
public final class app/revanced/patches/reddit/customclients/sync/syncforreddit/fix/user/UseUserEndpointPatchKt {
|
||||||
public static final fun getUseUserEndpointPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getUseUserEndpointPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
@ -589,6 +597,7 @@ public final class app/revanced/patches/reddit/layout/disablescreenshotpopup/Dis
|
|||||||
|
|
||||||
public final class app/revanced/patches/reddit/layout/premiumicon/UnlockPremiumIconPatchKt {
|
public final class app/revanced/patches/reddit/layout/premiumicon/UnlockPremiumIconPatchKt {
|
||||||
public static final fun getUnlockPremiumIconPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getUnlockPremiumIconPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
|
public static final fun getUnlockPremiumIconsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class app/revanced/patches/reddit/misc/extension/ExtensionPatchKt {
|
public final class app/revanced/patches/reddit/misc/extension/ExtensionPatchKt {
|
||||||
@ -868,6 +877,10 @@ public final class app/revanced/patches/soundcloud/offlinesync/EnableOfflineSync
|
|||||||
public static final fun getEnableOfflineSync ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getEnableOfflineSync ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final class app/revanced/patches/spotify/layout/hide/createbutton/HideCreateButtonPatchKt {
|
||||||
|
public static final fun getHideCreateButtonPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
|
}
|
||||||
|
|
||||||
public final class app/revanced/patches/spotify/layout/theme/CustomThemePatchKt {
|
public final class app/revanced/patches/spotify/layout/theme/CustomThemePatchKt {
|
||||||
public static final fun getCustomThemePatch ()Lapp/revanced/patcher/patch/ResourcePatch;
|
public static final fun getCustomThemePatch ()Lapp/revanced/patcher/patch/ResourcePatch;
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@ import app.revanced.patcher.patch.stringOption
|
|||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
val spoofBuildInfoPatch = bytecodePatch(
|
val spoofBuildInfoPatch = bytecodePatch(
|
||||||
name = "Spoof build info",
|
name = "Spoof build info",
|
||||||
description = "Spoof the information about the current build.",
|
description = "Spoofs the information about the current build.",
|
||||||
use = false,
|
use = false,
|
||||||
) {
|
) {
|
||||||
val board by stringOption(
|
val board by stringOption(
|
||||||
@ -141,14 +141,14 @@ val spoofBuildInfoPatch = bytecodePatch(
|
|||||||
val socManufacturer by stringOption(
|
val socManufacturer by stringOption(
|
||||||
key = "soc-manufacturer",
|
key = "soc-manufacturer",
|
||||||
default = null,
|
default = null,
|
||||||
title = "SOC Manufacturer",
|
title = "SOC manufacturer",
|
||||||
description = "The manufacturer of the device's primary system-on-chip.",
|
description = "The manufacturer of the device's primary system-on-chip.",
|
||||||
)
|
)
|
||||||
|
|
||||||
val socModel by stringOption(
|
val socModel by stringOption(
|
||||||
key = "soc-model",
|
key = "soc-model",
|
||||||
default = null,
|
default = null,
|
||||||
title = "SOC Model",
|
title = "SOC model",
|
||||||
description = "The model name of the device's primary system-on-chip.",
|
description = "The model name of the device's primary system-on-chip.",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -36,12 +36,12 @@ val spoofSimCountryPatch = bytecodePatch(
|
|||||||
|
|
||||||
val networkCountryIso by isoCountryPatchOption(
|
val networkCountryIso by isoCountryPatchOption(
|
||||||
"networkCountryIso",
|
"networkCountryIso",
|
||||||
"Network ISO Country Code",
|
"Network ISO country code",
|
||||||
)
|
)
|
||||||
|
|
||||||
val simCountryIso by isoCountryPatchOption(
|
val simCountryIso by isoCountryPatchOption(
|
||||||
"simCountryIso",
|
"simCountryIso",
|
||||||
"Sim ISO Country Code",
|
"SIM ISO country code",
|
||||||
)
|
)
|
||||||
|
|
||||||
dependsOn(
|
dependsOn(
|
||||||
|
@ -5,7 +5,7 @@ import app.revanced.patcher.patch.bytecodePatch
|
|||||||
|
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
val unlockPremiumPatch = bytecodePatch(
|
val unlockPremiumPatch = bytecodePatch(
|
||||||
name = "Unlock premium",
|
name = "Unlock Premium",
|
||||||
) {
|
) {
|
||||||
compatibleWith("com.adobe.lrmobile"("10.0.2"))
|
compatibleWith("com.adobe.lrmobile"("10.0.2"))
|
||||||
|
|
||||||
|
@ -0,0 +1,21 @@
|
|||||||
|
package app.revanced.patches.protonmail.account
|
||||||
|
|
||||||
|
import app.revanced.patcher.patch.resourcePatch
|
||||||
|
import app.revanced.util.findElementByAttributeValueOrThrow
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
val removeFreeAccountsLimitPatch = resourcePatch(
|
||||||
|
name = "Remove free accounts limit",
|
||||||
|
description = "Removes the limit for maximum free accounts logged in.",
|
||||||
|
) {
|
||||||
|
compatibleWith("ch.protonmail.android")
|
||||||
|
|
||||||
|
execute {
|
||||||
|
document("res/values/integers.xml").use { document ->
|
||||||
|
document.documentElement.childNodes.findElementByAttributeValueOrThrow(
|
||||||
|
"name",
|
||||||
|
"core_feature_auth_user_check_max_free_user_count",
|
||||||
|
).textContent = Int.MAX_VALUE.toString()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -39,4 +39,4 @@ val removeSentFromSignaturePatch = resourcePatch(
|
|||||||
|
|
||||||
if (!foundString) throw PatchException("Could not find 'sent from' string in resources")
|
if (!foundString) throw PatchException("Could not find 'sent from' string in resources")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,12 @@
|
|||||||
|
package app.revanced.patches.reddit.customclients.sync.syncforreddit.fix.thumbnail
|
||||||
|
|
||||||
|
import app.revanced.patcher.fingerprint
|
||||||
|
import com.android.tools.smali.dexlib2.AccessFlags
|
||||||
|
|
||||||
|
internal val customImageViewLoadFingerprint = fingerprint {
|
||||||
|
accessFlags(AccessFlags.PUBLIC)
|
||||||
|
parameters("Ljava/lang/String;", "Z", "Z", "I", "I")
|
||||||
|
custom { _, classDef ->
|
||||||
|
classDef.endsWith("CustomImageView;")
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
package app.revanced.patches.reddit.customclients.sync.syncforreddit.fix.thumbnail
|
||||||
|
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||||
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
val fixPostThumbnailsPatch = bytecodePatch(
|
||||||
|
name = "Fix post thumbnails",
|
||||||
|
description = "Fixes loading post thumbnails by correcting their URLs.",
|
||||||
|
) {
|
||||||
|
|
||||||
|
compatibleWith(
|
||||||
|
"com.laurencedawson.reddit_sync",
|
||||||
|
"com.laurencedawson.reddit_sync.pro",
|
||||||
|
"com.laurencedawson.reddit_sync.dev"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Image URLs contain escaped ampersands (&), let's replace these with unescaped ones (&).
|
||||||
|
execute {
|
||||||
|
customImageViewLoadFingerprint.method.addInstructions(
|
||||||
|
0,
|
||||||
|
"""
|
||||||
|
# url = url.replace("&", "&");
|
||||||
|
const-string v0, "&"
|
||||||
|
const-string v1, "&"
|
||||||
|
invoke-virtual { p1, v0, v1 }, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
|
||||||
|
move-result-object p1
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
@ -4,9 +4,9 @@ import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
|||||||
import app.revanced.patcher.patch.bytecodePatch
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
|
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
val unlockPremiumIconPatch = bytecodePatch(
|
val unlockPremiumIconsPatch = bytecodePatch(
|
||||||
name = "Unlock premium Reddit icons",
|
name = "Unlock Premium icons",
|
||||||
description = "Unlocks the premium Reddit icons.",
|
description = "Unlocks the Reddit Premium icons.",
|
||||||
) {
|
) {
|
||||||
compatibleWith("com.reddit.frontpage")
|
compatibleWith("com.reddit.frontpage")
|
||||||
|
|
||||||
@ -20,3 +20,9 @@ val unlockPremiumIconPatch = bytecodePatch(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated("Patch was renamed", ReplaceWith("unlockPremiumIconsPatch"))
|
||||||
|
@Suppress("unused")
|
||||||
|
val unlockPremiumIconPatch = bytecodePatch{
|
||||||
|
dependsOn(unlockPremiumIconsPatch)
|
||||||
|
}
|
@ -8,7 +8,7 @@ import java.util.logging.Logger
|
|||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
val disableLicenseCheckPatch = bytecodePatch(
|
val disableLicenseCheckPatch = bytecodePatch(
|
||||||
name = "Disable Pairip license check",
|
name = "Disable Pairip license check",
|
||||||
description = "Disable Play Integrity Protect (Pairip) client-side license check.",
|
description = "Disables Play Integrity API (Pairip) client-side license check.",
|
||||||
use = false
|
use = false
|
||||||
) {
|
) {
|
||||||
|
|
||||||
|
@ -0,0 +1,28 @@
|
|||||||
|
package app.revanced.patches.spotify.layout.hide.createbutton
|
||||||
|
|
||||||
|
import app.revanced.patcher.fingerprint
|
||||||
|
import app.revanced.util.getReference
|
||||||
|
import app.revanced.util.indexOfFirstInstruction
|
||||||
|
import com.android.tools.smali.dexlib2.AccessFlags
|
||||||
|
import com.android.tools.smali.dexlib2.Opcode
|
||||||
|
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||||
|
|
||||||
|
internal val navigationBarItemSetClassFingerprint = fingerprint {
|
||||||
|
strings("NavigationBarItemSet(")
|
||||||
|
}
|
||||||
|
|
||||||
|
internal val navigationBarItemSetConstructorFingerprint = fingerprint {
|
||||||
|
accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR)
|
||||||
|
// Make sure the method checks whether navigation bar items are null before adding them.
|
||||||
|
// If this is not true, then we cannot patch the method and potentially transform the parameters into null.
|
||||||
|
opcodes(Opcode.IF_EQZ, Opcode.INVOKE_VIRTUAL)
|
||||||
|
custom { method, _ ->
|
||||||
|
method.indexOfFirstInstruction {
|
||||||
|
getReference<MethodReference>()?.name == "add"
|
||||||
|
} >= 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal val oldNavigationBarAddItemFingerprint = fingerprint {
|
||||||
|
strings("Bottom navigation tabs exceeds maximum of 5 tabs")
|
||||||
|
}
|
@ -0,0 +1,110 @@
|
|||||||
|
package app.revanced.patches.spotify.layout.hide.createbutton
|
||||||
|
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||||
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
|
import app.revanced.patcher.util.smali.ExternalLabel
|
||||||
|
import app.revanced.patches.spotify.misc.extension.sharedExtensionPatch
|
||||||
|
import app.revanced.patches.spotify.shared.IS_SPOTIFY_LEGACY_APP_TARGET
|
||||||
|
import app.revanced.util.getReference
|
||||||
|
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||||
|
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
|
||||||
|
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||||
|
import java.util.logging.Logger
|
||||||
|
|
||||||
|
private const val EXTENSION_CLASS_DESCRIPTOR =
|
||||||
|
"Lapp/revanced/extension/spotify/layout/hide/createbutton/HideCreateButtonPatch;"
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
val hideCreateButtonPatch = bytecodePatch(
|
||||||
|
name = "Hide Create button",
|
||||||
|
description = "Hides the \"Create\" button in the navigation bar."
|
||||||
|
) {
|
||||||
|
compatibleWith("com.spotify.music")
|
||||||
|
|
||||||
|
dependsOn(sharedExtensionPatch)
|
||||||
|
|
||||||
|
execute {
|
||||||
|
if (IS_SPOTIFY_LEGACY_APP_TARGET) {
|
||||||
|
Logger.getLogger(this::class.java.name).warning(
|
||||||
|
"Create button does not exist in legacy app target. No changes applied."
|
||||||
|
)
|
||||||
|
return@execute
|
||||||
|
}
|
||||||
|
|
||||||
|
val oldNavigationBarAddItemMethod = oldNavigationBarAddItemFingerprint.originalMethodOrNull
|
||||||
|
// Only throw the fingerprint error when oldNavigationBarAddItemMethod does not exist.
|
||||||
|
val navigationBarItemSetClassDef = if (oldNavigationBarAddItemMethod == null) {
|
||||||
|
navigationBarItemSetClassFingerprint.originalClassDef
|
||||||
|
} else {
|
||||||
|
navigationBarItemSetClassFingerprint.originalClassDefOrNull
|
||||||
|
}
|
||||||
|
|
||||||
|
if (navigationBarItemSetClassDef != null) {
|
||||||
|
// Main patch for newest and most versions.
|
||||||
|
// The NavigationBarItemSet constructor accepts multiple parameters which represent each navigation bar item.
|
||||||
|
// Each item is manually checked whether it is not null and then added to a LinkedHashSet.
|
||||||
|
// Since the order of the items can differ, we are required to check every parameter to see whether it is the
|
||||||
|
// Create button. So, for every parameter passed to the method, invoke our extension method and overwrite it
|
||||||
|
// to null in case it is the Create button.
|
||||||
|
navigationBarItemSetConstructorFingerprint.match(navigationBarItemSetClassDef).method.apply {
|
||||||
|
// Add 1 to the index because the first parameter register is `this`.
|
||||||
|
val parameterTypesWithRegister = parameterTypes.mapIndexed { index, parameterType ->
|
||||||
|
parameterType to (index + 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
val returnNullIfIsCreateButtonDescriptor =
|
||||||
|
"$EXTENSION_CLASS_DESCRIPTOR->returnNullIfIsCreateButton(Ljava/lang/Object;)Ljava/lang/Object;"
|
||||||
|
|
||||||
|
parameterTypesWithRegister.reversed().forEach { (parameterType, parameterRegister) ->
|
||||||
|
addInstructions(
|
||||||
|
0,
|
||||||
|
"""
|
||||||
|
invoke-static { p$parameterRegister }, $returnNullIfIsCreateButtonDescriptor
|
||||||
|
move-result-object p$parameterRegister
|
||||||
|
check-cast p$parameterRegister, $parameterType
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (oldNavigationBarAddItemMethod != null) {
|
||||||
|
// In case an older version of the app is being patched, hook the old method which adds navigation bar items.
|
||||||
|
// Return null early if the navigation bar item title resource id is old Create button title resource id.
|
||||||
|
oldNavigationBarAddItemFingerprint.methodOrNull?.apply {
|
||||||
|
val getNavigationBarItemTitleStringIndex = indexOfFirstInstructionOrThrow {
|
||||||
|
val reference = getReference<MethodReference>()
|
||||||
|
reference?.definingClass == "Landroid/content/res/Resources;" && reference.name == "getString"
|
||||||
|
}
|
||||||
|
// This register is a parameter register, so it can be used at the start of the method when adding
|
||||||
|
// the new instructions.
|
||||||
|
val oldNavigationBarItemTitleResIdRegister =
|
||||||
|
getInstruction<FiveRegisterInstruction>(getNavigationBarItemTitleStringIndex).registerD
|
||||||
|
|
||||||
|
// The instruction where the normal method logic starts.
|
||||||
|
val firstInstruction = getInstruction(0)
|
||||||
|
|
||||||
|
val isOldCreateButtonDescriptor =
|
||||||
|
"$EXTENSION_CLASS_DESCRIPTOR->isOldCreateButton(I)Z"
|
||||||
|
|
||||||
|
addInstructionsWithLabels(
|
||||||
|
0,
|
||||||
|
"""
|
||||||
|
invoke-static { v$oldNavigationBarItemTitleResIdRegister }, $isOldCreateButtonDescriptor
|
||||||
|
move-result v0
|
||||||
|
|
||||||
|
# If this navigation bar item is not the Create button, jump to the normal method logic.
|
||||||
|
if-eqz v0, :normal-method-logic
|
||||||
|
|
||||||
|
# Return null early because this method return value is a BottomNavigationItemView.
|
||||||
|
const/4 v0, 0
|
||||||
|
return-object v0
|
||||||
|
""",
|
||||||
|
ExternalLabel("normal-method-logic", firstInstruction)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -2,65 +2,19 @@ package app.revanced.patches.spotify.layout.theme
|
|||||||
|
|
||||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||||
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||||
import app.revanced.patcher.fingerprint
|
|
||||||
import app.revanced.patcher.patch.booleanOption
|
import app.revanced.patcher.patch.booleanOption
|
||||||
import app.revanced.patcher.patch.bytecodePatch
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
import app.revanced.patcher.patch.resourcePatch
|
import app.revanced.patcher.patch.resourcePatch
|
||||||
import app.revanced.patcher.patch.stringOption
|
import app.revanced.patcher.patch.stringOption
|
||||||
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
|
|
||||||
import app.revanced.patches.spotify.misc.extension.IS_SPOTIFY_LEGACY_APP_TARGET
|
|
||||||
import app.revanced.patches.spotify.misc.extension.sharedExtensionPatch
|
import app.revanced.patches.spotify.misc.extension.sharedExtensionPatch
|
||||||
|
import app.revanced.patches.spotify.shared.IS_SPOTIFY_LEGACY_APP_TARGET
|
||||||
import app.revanced.util.*
|
import app.revanced.util.*
|
||||||
import com.android.tools.smali.dexlib2.AccessFlags
|
|
||||||
import com.android.tools.smali.dexlib2.Opcode
|
|
||||||
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||||
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
|
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||||
import org.w3c.dom.Element
|
import org.w3c.dom.Element
|
||||||
|
|
||||||
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/spotify/layout/theme/CustomThemePatch;"
|
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/spotify/layout/theme/CustomThemePatch;"
|
||||||
|
|
||||||
internal val spotifyBackgroundColor = stringOption(
|
|
||||||
key = "backgroundColor",
|
|
||||||
default = "@android:color/black",
|
|
||||||
title = "Primary background color",
|
|
||||||
description = "The background color. Can be a hex color or a resource reference.",
|
|
||||||
required = true,
|
|
||||||
)
|
|
||||||
|
|
||||||
internal val overridePlayerGradientColor = booleanOption(
|
|
||||||
key = "overridePlayerGradientColor",
|
|
||||||
default = false,
|
|
||||||
title = "Override player gradient color",
|
|
||||||
description = "Apply primary background color to the player gradient color, which changes dynamically with the song.",
|
|
||||||
required = false
|
|
||||||
)
|
|
||||||
|
|
||||||
internal val spotifyBackgroundColorSecondary = stringOption(
|
|
||||||
key = "backgroundColorSecondary",
|
|
||||||
default = "#FF121212",
|
|
||||||
title = "Secondary background color",
|
|
||||||
description =
|
|
||||||
"The secondary background color. (e.g. playlist list in home, player artist, song credits). Can be a hex color or a resource reference.",
|
|
||||||
required = true,
|
|
||||||
)
|
|
||||||
|
|
||||||
internal val spotifyAccentColor = stringOption(
|
|
||||||
key = "accentColor",
|
|
||||||
default = "#FF1ED760",
|
|
||||||
title = "Accent color",
|
|
||||||
description = "The accent color ('Spotify green' by default). Can be a hex color or a resource reference.",
|
|
||||||
required = true,
|
|
||||||
)
|
|
||||||
|
|
||||||
internal val spotifyAccentColorPressed = stringOption(
|
|
||||||
key = "accentColorPressed",
|
|
||||||
default = "#FF169C46",
|
|
||||||
title = "Pressed dark theme accent color",
|
|
||||||
description =
|
|
||||||
"The color when accented buttons are pressed, by default slightly darker than accent. Can be a hex color or a resource reference.",
|
|
||||||
required = true,
|
|
||||||
)
|
|
||||||
|
|
||||||
private val customThemeBytecodePatch = bytecodePatch {
|
private val customThemeBytecodePatch = bytecodePatch {
|
||||||
dependsOn(sharedExtensionPatch)
|
dependsOn(sharedExtensionPatch)
|
||||||
|
|
||||||
@ -71,60 +25,60 @@ private val customThemeBytecodePatch = bytecodePatch {
|
|||||||
return@execute
|
return@execute
|
||||||
}
|
}
|
||||||
|
|
||||||
fun MutableMethod.addColorChangeInstructions(literal: Long, colorString: String) {
|
val colorSpaceUtilsClassDef = colorSpaceUtilsClassFingerprint.originalClassDef
|
||||||
val index = indexOfFirstLiteralInstructionOrThrow(literal)
|
|
||||||
val register = getInstruction<OneRegisterInstruction>(index).registerA
|
// Hook a util method that converts ARGB to RGBA in the sRGB color space to replace hardcoded accent colors.
|
||||||
|
convertArgbToRgbaFingerprint.match(colorSpaceUtilsClassDef).method.apply {
|
||||||
|
addInstructions(
|
||||||
|
0,
|
||||||
|
"""
|
||||||
|
long-to-int p0, p0
|
||||||
|
invoke-static { p0 }, $EXTENSION_CLASS_DESCRIPTOR->replaceColor(I)I
|
||||||
|
move-result p0
|
||||||
|
int-to-long p0, p0
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Lottie JSON parser method. It parses the JSON Lottie animation into its own class,
|
||||||
|
// including the solid color of it.
|
||||||
|
parseLottieJsonFingerprint.method.apply {
|
||||||
|
val invokeParseColorIndex = indexOfFirstInstructionOrThrow {
|
||||||
|
val reference = getReference<MethodReference>()
|
||||||
|
reference?.definingClass == "Landroid/graphics/Color;"
|
||||||
|
&& reference.name == "parseColor"
|
||||||
|
}
|
||||||
|
val parsedColorRegister = getInstruction<OneRegisterInstruction>(invokeParseColorIndex + 1).registerA
|
||||||
|
|
||||||
|
val replaceColorDescriptor = "$EXTENSION_CLASS_DESCRIPTOR->replaceColor(I)I"
|
||||||
|
|
||||||
addInstructions(
|
addInstructions(
|
||||||
index + 1,
|
invokeParseColorIndex + 2,
|
||||||
"""
|
"""
|
||||||
const-string v$register, "$colorString"
|
# Use invoke-static/range because the register number is too large.
|
||||||
invoke-static { v$register }, $EXTENSION_CLASS_DESCRIPTOR->getThemeColor(Ljava/lang/String;)J
|
invoke-static/range { v$parsedColorRegister .. v$parsedColorRegister }, $replaceColorDescriptor
|
||||||
move-result-wide v$register
|
move-result v$parsedColorRegister
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
val encoreColorsClassName = with(encoreThemeFingerprint.originalMethod) {
|
// Lottie animated color parser.
|
||||||
// "Encore" colors are referenced right before the value of POSITIVE_INFINITY is returned.
|
parseAnimatedColorFingerprint.method.apply {
|
||||||
// Begin the instruction find using the index of where POSITIVE_INFINITY is set into the register.
|
val invokeArgbIndex = indexOfFirstInstructionOrThrow {
|
||||||
val positiveInfinityIndex = indexOfFirstLiteralInstructionOrThrow(
|
val reference = getReference<MethodReference>()
|
||||||
Float.POSITIVE_INFINITY
|
reference?.definingClass == "Landroid/graphics/Color;"
|
||||||
)
|
&& reference.name == "argb"
|
||||||
val encoreColorsFieldReferenceIndex = indexOfFirstInstructionReversedOrThrow(
|
|
||||||
positiveInfinityIndex,
|
|
||||||
Opcode.SGET_OBJECT
|
|
||||||
)
|
|
||||||
|
|
||||||
getInstruction(encoreColorsFieldReferenceIndex)
|
|
||||||
.getReference<FieldReference>()!!.definingClass
|
|
||||||
}
|
|
||||||
|
|
||||||
val encoreColorsConstructorFingerprint = fingerprint {
|
|
||||||
accessFlags(AccessFlags.STATIC, AccessFlags.CONSTRUCTOR)
|
|
||||||
custom { method, classDef ->
|
|
||||||
classDef.type == encoreColorsClassName &&
|
|
||||||
method.containsLiteralInstruction(PLAYLIST_BACKGROUND_COLOR_LITERAL)
|
|
||||||
}
|
}
|
||||||
|
val argbColorRegister = getInstruction<OneRegisterInstruction>(invokeArgbIndex + 1).registerA
|
||||||
|
|
||||||
|
addInstructions(
|
||||||
|
invokeArgbIndex + 2,
|
||||||
|
"""
|
||||||
|
invoke-static { v$argbColorRegister }, $EXTENSION_CLASS_DESCRIPTOR->replaceColor(I)I
|
||||||
|
move-result v$argbColorRegister
|
||||||
|
"""
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
val backgroundColor by spotifyBackgroundColor
|
|
||||||
val backgroundColorSecondary by spotifyBackgroundColorSecondary
|
|
||||||
|
|
||||||
encoreColorsConstructorFingerprint.method.apply {
|
|
||||||
addColorChangeInstructions(PLAYLIST_BACKGROUND_COLOR_LITERAL, backgroundColor!!)
|
|
||||||
addColorChangeInstructions(SHARE_MENU_BACKGROUND_COLOR_LITERAL, backgroundColorSecondary!!)
|
|
||||||
}
|
|
||||||
|
|
||||||
homeCategoryPillColorsFingerprint.method.addColorChangeInstructions(
|
|
||||||
HOME_CATEGORY_PILL_COLOR_LITERAL,
|
|
||||||
backgroundColorSecondary!!
|
|
||||||
)
|
|
||||||
|
|
||||||
settingsHeaderColorFingerprint.method.addColorChangeInstructions(
|
|
||||||
SETTINGS_HEADER_COLOR_LITERAL,
|
|
||||||
backgroundColorSecondary!!
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -138,11 +92,48 @@ val customThemePatch = resourcePatch(
|
|||||||
|
|
||||||
dependsOn(customThemeBytecodePatch)
|
dependsOn(customThemeBytecodePatch)
|
||||||
|
|
||||||
val backgroundColor by spotifyBackgroundColor()
|
val backgroundColor by stringOption(
|
||||||
val overridePlayerGradientColor by overridePlayerGradientColor()
|
key = "backgroundColor",
|
||||||
val backgroundColorSecondary by spotifyBackgroundColorSecondary()
|
default = "@android:color/black",
|
||||||
val accentColor by spotifyAccentColor()
|
title = "Primary background color",
|
||||||
val accentColorPressed by spotifyAccentColorPressed()
|
description = "The background color. Can be a hex color or a resource reference.",
|
||||||
|
required = true,
|
||||||
|
)
|
||||||
|
|
||||||
|
val overridePlayerGradientColor by booleanOption(
|
||||||
|
key = "overridePlayerGradientColor",
|
||||||
|
default = false,
|
||||||
|
title = "Override player gradient color",
|
||||||
|
description =
|
||||||
|
"Apply primary background color to the player gradient color, which changes dynamically with the song.",
|
||||||
|
required = false,
|
||||||
|
)
|
||||||
|
|
||||||
|
val backgroundColorSecondary by stringOption(
|
||||||
|
key = "backgroundColorSecondary",
|
||||||
|
default = "#FF121212",
|
||||||
|
title = "Secondary background color",
|
||||||
|
description = "The secondary background color. (e.g. playlist list in home, player artist, song credits). " +
|
||||||
|
"Can be a hex color or a resource reference.\",",
|
||||||
|
required = true,
|
||||||
|
)
|
||||||
|
|
||||||
|
val accentColor by stringOption(
|
||||||
|
key = "accentColor",
|
||||||
|
default = "#FF1ED760",
|
||||||
|
title = "Accent color",
|
||||||
|
description = "The accent color ('Spotify green' by default). Can be a hex color or a resource reference.",
|
||||||
|
required = true,
|
||||||
|
)
|
||||||
|
|
||||||
|
val accentColorPressed by stringOption(
|
||||||
|
key = "accentColorPressed",
|
||||||
|
default = "#FF1ABC54",
|
||||||
|
title = "Pressed dark theme accent color",
|
||||||
|
description = "The color when accented buttons are pressed, by default slightly darker than accent. " +
|
||||||
|
"Can be a hex color or a resource reference.",
|
||||||
|
required = true,
|
||||||
|
)
|
||||||
|
|
||||||
execute {
|
execute {
|
||||||
document("res/values/colors.xml").use { document ->
|
document("res/values/colors.xml").use { document ->
|
||||||
@ -161,34 +152,41 @@ val customThemePatch = resourcePatch(
|
|||||||
}
|
}
|
||||||
|
|
||||||
node.textContent = when (name) {
|
node.textContent = when (name) {
|
||||||
|
// Main background color.
|
||||||
|
"gray_7",
|
||||||
|
// Left sidebar background color in tablet mode.
|
||||||
|
"gray_10",
|
||||||
// Gradient next to user photo and "All" in home page.
|
// Gradient next to user photo and "All" in home page.
|
||||||
"dark_base_background_base",
|
"dark_base_background_base",
|
||||||
// Main background.
|
// "Add account", "Settings and privacy", "View Profile" left sidebar background color.
|
||||||
"gray_7",
|
|
||||||
// Left sidebar background in tablet mode.
|
|
||||||
"gray_10",
|
|
||||||
// "Add account", "Settings and privacy", "View Profile" left sidebar background.
|
|
||||||
"dark_base_background_elevated_base",
|
"dark_base_background_elevated_base",
|
||||||
// Song/player gradient start/end color.
|
// Song/player gradient start/end color.
|
||||||
"bg_gradient_start_color", "bg_gradient_end_color",
|
"bg_gradient_start_color", "bg_gradient_end_color",
|
||||||
// Login screen background and gradient start.
|
// Login screen background color and gradient start.
|
||||||
"sthlm_blk", "sthlm_blk_grad_start",
|
"sthlm_blk", "sthlm_blk_grad_start",
|
||||||
// Misc.
|
// Misc.
|
||||||
"image_placeholder_color",
|
"image_placeholder_color",
|
||||||
-> backgroundColor
|
-> backgroundColor
|
||||||
|
|
||||||
// Track credits, merch background in song player.
|
// "About the artist" background color in song player.
|
||||||
|
"gray_15",
|
||||||
|
// Track credits, merch background color in song player.
|
||||||
"track_credits_card_bg", "benefit_list_default_color", "merch_card_background",
|
"track_credits_card_bg", "benefit_list_default_color", "merch_card_background",
|
||||||
// Playlist list background in home page.
|
// Playlist list background in home page.
|
||||||
"opacity_white_10",
|
"opacity_white_10",
|
||||||
// "About the artist" background in song player.
|
|
||||||
"gray_15",
|
|
||||||
// "What's New" pills background.
|
// "What's New" pills background.
|
||||||
"dark_base_background_tinted_highlight"
|
"dark_base_background_tinted_highlight"
|
||||||
-> backgroundColorSecondary
|
-> backgroundColorSecondary
|
||||||
|
|
||||||
"dark_brightaccent_background_base", "dark_base_text_brightaccent", "green_light" -> accentColor
|
"dark_brightaccent_background_base",
|
||||||
"dark_brightaccent_background_press" -> accentColorPressed
|
"dark_base_text_brightaccent",
|
||||||
|
"green_light",
|
||||||
|
"spotify_green_157"
|
||||||
|
-> accentColor
|
||||||
|
|
||||||
|
"dark_brightaccent_background_press"
|
||||||
|
-> accentColorPressed
|
||||||
|
|
||||||
else -> continue
|
else -> continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -198,8 +196,8 @@ val customThemePatch = resourcePatch(
|
|||||||
document("res/drawable/start_screen_gradient.xml").use { document ->
|
document("res/drawable/start_screen_gradient.xml").use { document ->
|
||||||
val gradientNode = document.getElementsByTagName("gradient").item(0) as Element
|
val gradientNode = document.getElementsByTagName("gradient").item(0) as Element
|
||||||
|
|
||||||
gradientNode.setAttribute("android:startColor", backgroundColor)
|
gradientNode.setAttribute("android:startColor", "@color/gray_7")
|
||||||
gradientNode.setAttribute("android:endColor", backgroundColor)
|
gradientNode.setAttribute("android:endColor", "@color/gray_7")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,30 +4,25 @@ import app.revanced.patcher.fingerprint
|
|||||||
import app.revanced.util.containsLiteralInstruction
|
import app.revanced.util.containsLiteralInstruction
|
||||||
import com.android.tools.smali.dexlib2.AccessFlags
|
import com.android.tools.smali.dexlib2.AccessFlags
|
||||||
|
|
||||||
internal val encoreThemeFingerprint = fingerprint {
|
internal val colorSpaceUtilsClassFingerprint = fingerprint {
|
||||||
strings("Encore theme was not provided.") // Partial string match.
|
strings("The specified color must be encoded in an RGB color space.") // Partial string match.
|
||||||
custom { method, _ ->
|
|
||||||
method.name == "invoke"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal const val PLAYLIST_BACKGROUND_COLOR_LITERAL = 0xFF121212
|
internal val convertArgbToRgbaFingerprint = fingerprint {
|
||||||
internal const val SHARE_MENU_BACKGROUND_COLOR_LITERAL = 0xFF1F1F1F
|
accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC, AccessFlags.FINAL)
|
||||||
internal const val HOME_CATEGORY_PILL_COLOR_LITERAL = 0xFF333333
|
returns("J")
|
||||||
internal const val SETTINGS_HEADER_COLOR_LITERAL = 0xFF282828
|
parameters("J")
|
||||||
|
|
||||||
internal val homeCategoryPillColorsFingerprint = fingerprint{
|
|
||||||
accessFlags(AccessFlags.STATIC, AccessFlags.CONSTRUCTOR)
|
|
||||||
custom { method, _ ->
|
|
||||||
method.containsLiteralInstruction(HOME_CATEGORY_PILL_COLOR_LITERAL) &&
|
|
||||||
method.containsLiteralInstruction(0x33000000)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal val settingsHeaderColorFingerprint = fingerprint {
|
internal val parseLottieJsonFingerprint = fingerprint {
|
||||||
accessFlags(AccessFlags.STATIC, AccessFlags.CONSTRUCTOR)
|
strings("Unsupported matte type: ")
|
||||||
|
}
|
||||||
|
|
||||||
|
internal val parseAnimatedColorFingerprint = fingerprint {
|
||||||
|
parameters("L", "F")
|
||||||
|
returns("Ljava/lang/Object;")
|
||||||
custom { method, _ ->
|
custom { method, _ ->
|
||||||
method.containsLiteralInstruction(SETTINGS_HEADER_COLOR_LITERAL) &&
|
method.containsLiteralInstruction(255.0) &&
|
||||||
method.containsLiteralInstruction(0)
|
method.containsLiteralInstruction(1.0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,15 +1,18 @@
|
|||||||
package app.revanced.patches.spotify.misc
|
package app.revanced.patches.spotify.misc
|
||||||
|
|
||||||
import app.revanced.patcher.fingerprint
|
import app.revanced.patcher.fingerprint
|
||||||
import app.revanced.patches.spotify.misc.extension.IS_SPOTIFY_LEGACY_APP_TARGET
|
import app.revanced.patcher.patch.BytecodePatchContext
|
||||||
|
import app.revanced.patches.spotify.shared.IS_SPOTIFY_LEGACY_APP_TARGET
|
||||||
import app.revanced.util.getReference
|
import app.revanced.util.getReference
|
||||||
import app.revanced.util.indexOfFirstInstruction
|
import app.revanced.util.indexOfFirstInstruction
|
||||||
import com.android.tools.smali.dexlib2.AccessFlags
|
import com.android.tools.smali.dexlib2.AccessFlags
|
||||||
import com.android.tools.smali.dexlib2.Opcode
|
import com.android.tools.smali.dexlib2.Opcode
|
||||||
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
|
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
|
||||||
|
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||||
import com.android.tools.smali.dexlib2.iface.reference.TypeReference
|
import com.android.tools.smali.dexlib2.iface.reference.TypeReference
|
||||||
|
|
||||||
internal val accountAttributeFingerprint = fingerprint {
|
context(BytecodePatchContext)
|
||||||
|
internal val accountAttributeFingerprint get() = fingerprint {
|
||||||
custom { _, classDef ->
|
custom { _, classDef ->
|
||||||
classDef.type == if (IS_SPOTIFY_LEGACY_APP_TARGET) {
|
classDef.type == if (IS_SPOTIFY_LEGACY_APP_TARGET) {
|
||||||
"Lcom/spotify/useraccount/v1/AccountAttribute;"
|
"Lcom/spotify/useraccount/v1/AccountAttribute;"
|
||||||
@ -19,7 +22,8 @@ internal val accountAttributeFingerprint = fingerprint {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal val productStateProtoGetMapFingerprint = fingerprint {
|
context(BytecodePatchContext)
|
||||||
|
internal val productStateProtoGetMapFingerprint get() = fingerprint {
|
||||||
returns("Ljava/util/Map;")
|
returns("Ljava/util/Map;")
|
||||||
custom { _, classDef ->
|
custom { _, classDef ->
|
||||||
classDef.type == if (IS_SPOTIFY_LEGACY_APP_TARGET) {
|
classDef.type == if (IS_SPOTIFY_LEGACY_APP_TARGET) {
|
||||||
@ -34,9 +38,22 @@ internal val buildQueryParametersFingerprint = fingerprint {
|
|||||||
strings("trackRows", "device_type:tablet")
|
strings("trackRows", "device_type:tablet")
|
||||||
}
|
}
|
||||||
|
|
||||||
internal val contextMenuExperimentsFingerprint = fingerprint {
|
internal val contextMenuViewModelClassFingerprint = fingerprint {
|
||||||
|
strings("ContextMenuViewModel(header=")
|
||||||
|
}
|
||||||
|
|
||||||
|
internal val contextMenuViewModelAddItemFingerprint = fingerprint {
|
||||||
parameters("L")
|
parameters("L")
|
||||||
strings("remove_ads_upsell_enabled")
|
returns("V")
|
||||||
|
custom { method, _ ->
|
||||||
|
method.indexOfFirstInstruction {
|
||||||
|
getReference<MethodReference>()?.name == "add"
|
||||||
|
} >= 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal val getViewModelFingerprint = fingerprint {
|
||||||
|
custom { method, _ -> method.name == "getViewModel" }
|
||||||
}
|
}
|
||||||
|
|
||||||
internal val contextFromJsonFingerprint = fingerprint {
|
internal val contextFromJsonFingerprint = fingerprint {
|
||||||
@ -47,15 +64,15 @@ internal val contextFromJsonFingerprint = fingerprint {
|
|||||||
Opcode.MOVE_RESULT_OBJECT,
|
Opcode.MOVE_RESULT_OBJECT,
|
||||||
Opcode.INVOKE_STATIC
|
Opcode.INVOKE_STATIC
|
||||||
)
|
)
|
||||||
custom { methodDef, classDef ->
|
custom { method, classDef ->
|
||||||
methodDef.name == "fromJson" &&
|
method.name == "fromJson" &&
|
||||||
classDef.endsWith("voiceassistants/playermodels/ContextJsonAdapter;")
|
classDef.endsWith("voiceassistants/playermodels/ContextJsonAdapter;")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal val readPlayerOptionOverridesFingerprint = fingerprint {
|
internal val readPlayerOptionOverridesFingerprint = fingerprint {
|
||||||
custom { methodDef, classDef ->
|
custom { method, classDef ->
|
||||||
methodDef.name == "readPlayerOptionOverrides" &&
|
method.name == "readPlayerOptionOverrides" &&
|
||||||
classDef.endsWith("voiceassistants/playermodels/PreparePlayOptionsJsonAdapter;")
|
classDef.endsWith("voiceassistants/playermodels/PreparePlayOptionsJsonAdapter;")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -91,7 +108,8 @@ internal val homeStructureGetSectionsFingerprint = fingerprint {
|
|||||||
internal fun reactivexFunctionApplyWithClassInitFingerprint(className: String) = fingerprint {
|
internal fun reactivexFunctionApplyWithClassInitFingerprint(className: String) = fingerprint {
|
||||||
returns("Ljava/lang/Object;")
|
returns("Ljava/lang/Object;")
|
||||||
parameters("Ljava/lang/Object;")
|
parameters("Ljava/lang/Object;")
|
||||||
custom { method, _ -> method.name == "apply" && method.indexOfFirstInstruction {
|
custom { method, _ ->
|
||||||
|
method.name == "apply" && method.indexOfFirstInstruction {
|
||||||
opcode == Opcode.NEW_INSTANCE && getReference<TypeReference>()?.type?.endsWith(className) == true
|
opcode == Opcode.NEW_INSTANCE && getReference<TypeReference>()?.type?.endsWith(className) == true
|
||||||
} >= 0
|
} >= 0
|
||||||
}
|
}
|
||||||
|
@ -2,20 +2,21 @@ package app.revanced.patches.spotify.misc
|
|||||||
|
|
||||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
|
||||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
|
||||||
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.removeInstruction
|
||||||
import app.revanced.patcher.extensions.InstructionExtensions.removeInstructions
|
import app.revanced.patcher.extensions.InstructionExtensions.removeInstructions
|
||||||
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
|
|
||||||
import app.revanced.patcher.patch.PatchException
|
import app.revanced.patcher.patch.PatchException
|
||||||
import app.revanced.patcher.patch.bytecodePatch
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
import app.revanced.patcher.util.proxy.mutableTypes.MutableClass
|
import app.revanced.patcher.util.proxy.mutableTypes.MutableClass
|
||||||
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
|
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
|
||||||
import app.revanced.patches.spotify.misc.extension.IS_SPOTIFY_LEGACY_APP_TARGET
|
import app.revanced.patcher.util.smali.ExternalLabel
|
||||||
import app.revanced.patches.spotify.misc.extension.sharedExtensionPatch
|
import app.revanced.patches.spotify.misc.extension.sharedExtensionPatch
|
||||||
|
import app.revanced.patches.spotify.shared.IS_SPOTIFY_LEGACY_APP_TARGET
|
||||||
import app.revanced.util.*
|
import app.revanced.util.*
|
||||||
import app.revanced.util.toPublicAccessFlags
|
import app.revanced.util.toPublicAccessFlags
|
||||||
import com.android.tools.smali.dexlib2.Opcode
|
import com.android.tools.smali.dexlib2.Opcode
|
||||||
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
|
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
|
||||||
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
|
||||||
import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
|
import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
|
||||||
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
|
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
|
||||||
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||||
@ -26,7 +27,7 @@ private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/spotify/
|
|||||||
|
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
val unlockPremiumPatch = bytecodePatch(
|
val unlockPremiumPatch = bytecodePatch(
|
||||||
name = "Unlock Spotify Premium",
|
name = "Unlock Premium",
|
||||||
description = "Unlocks Spotify Premium features. Server-sided features like downloading songs are still locked.",
|
description = "Unlocks Spotify Premium features. Server-sided features like downloading songs are still locked.",
|
||||||
) {
|
) {
|
||||||
compatibleWith("com.spotify.music")
|
compatibleWith("com.spotify.music")
|
||||||
@ -60,7 +61,7 @@ val unlockPremiumPatch = bytecodePatch(
|
|||||||
addInstruction(
|
addInstruction(
|
||||||
getAttributesMapIndex + 1,
|
getAttributesMapIndex + 1,
|
||||||
"invoke-static { v$attributesMapRegister }, " +
|
"invoke-static { v$attributesMapRegister }, " +
|
||||||
"$EXTENSION_CLASS_DESCRIPTOR->overrideAttribute(Ljava/util/Map;)V"
|
"$EXTENSION_CLASS_DESCRIPTOR->overrideAttributes(Ljava/util/Map;)V"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -71,7 +72,7 @@ val unlockPremiumPatch = bytecodePatch(
|
|||||||
buildQueryParametersFingerprint.stringMatches!!.first().index, Opcode.IF_EQZ
|
buildQueryParametersFingerprint.stringMatches!!.first().index, Opcode.IF_EQZ
|
||||||
)
|
)
|
||||||
|
|
||||||
replaceInstruction(addQueryParameterConditionIndex, "nop")
|
removeInstruction(addQueryParameterConditionIndex)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -119,14 +120,42 @@ val unlockPremiumPatch = bytecodePatch(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Disable the "Spotify Premium" upsell experiment in context menus.
|
val contextMenuViewModelClassDef = contextMenuViewModelClassFingerprint.originalClassDef
|
||||||
contextMenuExperimentsFingerprint.method.apply {
|
|
||||||
val moveIsEnabledIndex = indexOfFirstInstructionOrThrow(
|
|
||||||
contextMenuExperimentsFingerprint.stringMatches!!.first().index, Opcode.MOVE_RESULT
|
|
||||||
)
|
|
||||||
val isUpsellEnabledRegister = getInstruction<OneRegisterInstruction>(moveIsEnabledIndex).registerA
|
|
||||||
|
|
||||||
replaceInstruction(moveIsEnabledIndex, "const/4 v$isUpsellEnabledRegister, 0")
|
// Hook the method which adds context menu items and return before adding if the item is a Premium ad.
|
||||||
|
contextMenuViewModelAddItemFingerprint.match(contextMenuViewModelClassDef).method.apply {
|
||||||
|
val contextMenuItemClassType = parameterTypes.first()
|
||||||
|
val contextMenuItemClassDef = classes.find {
|
||||||
|
it.type == contextMenuItemClassType
|
||||||
|
} ?: throw PatchException("Could not find context menu item class.")
|
||||||
|
|
||||||
|
// The class returned by ContextMenuItem->getViewModel, which represents the actual context menu item.
|
||||||
|
val viewModelClassType = getViewModelFingerprint.match(contextMenuItemClassDef).originalMethod.returnType
|
||||||
|
|
||||||
|
// The instruction where the normal method logic starts.
|
||||||
|
val firstInstruction = getInstruction(0)
|
||||||
|
|
||||||
|
val isFilteredContextMenuItemDescriptor =
|
||||||
|
"$EXTENSION_CLASS_DESCRIPTOR->isFilteredContextMenuItem(Ljava/lang/Object;)Z"
|
||||||
|
|
||||||
|
addInstructionsWithLabels(
|
||||||
|
0,
|
||||||
|
"""
|
||||||
|
# The first parameter is the context menu item being added.
|
||||||
|
# Invoke getViewModel to get the actual context menu item.
|
||||||
|
invoke-interface { p1 }, $contextMenuItemClassType->getViewModel()$viewModelClassType
|
||||||
|
move-result-object v0
|
||||||
|
|
||||||
|
# Check if this context menu item should be filtered out.
|
||||||
|
invoke-static { v0 }, $isFilteredContextMenuItemDescriptor
|
||||||
|
move-result v0
|
||||||
|
|
||||||
|
# If this context menu item should not be filtered out, jump to the normal method logic.
|
||||||
|
if-eqz v0, :normal-method-logic
|
||||||
|
return-void
|
||||||
|
""",
|
||||||
|
ExternalLabel("normal-method-logic", firstInstruction)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,21 +1,5 @@
|
|||||||
package app.revanced.patches.spotify.misc.extension
|
package app.revanced.patches.spotify.misc.extension
|
||||||
|
|
||||||
import app.revanced.patcher.patch.bytecodePatch
|
|
||||||
import app.revanced.patches.shared.misc.extension.sharedExtensionPatch
|
import app.revanced.patches.shared.misc.extension.sharedExtensionPatch
|
||||||
import app.revanced.patches.spotify.shared.SPOTIFY_MAIN_ACTIVITY_LEGACY
|
|
||||||
|
|
||||||
/**
|
val sharedExtensionPatch = sharedExtensionPatch("spotify", mainActivityOnCreateHook)
|
||||||
* If patching a legacy 8.x target. This may also be set if patching slightly older/newer app targets,
|
|
||||||
* but the only legacy target of interest is 8.6.98.900 as it's the last version that
|
|
||||||
* supports Spotify integration on Kenwood/Pioneer car stereos.
|
|
||||||
*/
|
|
||||||
internal var IS_SPOTIFY_LEGACY_APP_TARGET = false
|
|
||||||
|
|
||||||
val sharedExtensionPatch = bytecodePatch {
|
|
||||||
dependsOn(sharedExtensionPatch("spotify", mainActivityOnCreateHook))
|
|
||||||
|
|
||||||
execute {
|
|
||||||
IS_SPOTIFY_LEGACY_APP_TARGET = mainActivityOnCreateHook.fingerprint
|
|
||||||
.originalClassDef.type == SPOTIFY_MAIN_ACTIVITY_LEGACY
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -1,41 +1,41 @@
|
|||||||
package app.revanced.patches.spotify.misc.privacy
|
package app.revanced.patches.spotify.misc.privacy
|
||||||
|
|
||||||
import app.revanced.patcher.fingerprint
|
import app.revanced.patcher.fingerprint
|
||||||
import app.revanced.util.literal
|
import app.revanced.util.literal
|
||||||
import com.android.tools.smali.dexlib2.AccessFlags
|
import com.android.tools.smali.dexlib2.AccessFlags
|
||||||
|
|
||||||
internal val shareCopyUrlFingerprint = fingerprint {
|
internal val shareCopyUrlFingerprint = fingerprint {
|
||||||
returns("Ljava/lang/Object;")
|
returns("Ljava/lang/Object;")
|
||||||
parameters("Ljava/lang/Object;")
|
parameters("Ljava/lang/Object;")
|
||||||
strings("clipboard", "Spotify Link")
|
strings("clipboard", "Spotify Link")
|
||||||
custom { method, _ ->
|
custom { method, _ ->
|
||||||
method.name == "invokeSuspend"
|
method.name == "invokeSuspend"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal val shareCopyUrlLegacyFingerprint = fingerprint {
|
internal val shareCopyUrlLegacyFingerprint = fingerprint {
|
||||||
returns("Ljava/lang/Object;")
|
returns("Ljava/lang/Object;")
|
||||||
parameters("Ljava/lang/Object;")
|
parameters("Ljava/lang/Object;")
|
||||||
strings("clipboard", "createNewSession failed")
|
strings("clipboard", "createNewSession failed")
|
||||||
custom { method, _ ->
|
custom { method, _ ->
|
||||||
method.name == "apply"
|
method.name == "apply"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal val formatAndroidShareSheetUrlFingerprint = fingerprint {
|
internal val formatAndroidShareSheetUrlFingerprint = fingerprint {
|
||||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC)
|
accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC)
|
||||||
returns("Ljava/lang/String;")
|
returns("Ljava/lang/String;")
|
||||||
parameters("L", "Ljava/lang/String;")
|
parameters("L", "Ljava/lang/String;")
|
||||||
literal {
|
literal {
|
||||||
'\n'.code.toLong()
|
'\n'.code.toLong()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal val formatAndroidShareSheetUrlLegacyFingerprint = fingerprint {
|
internal val formatAndroidShareSheetUrlLegacyFingerprint = fingerprint {
|
||||||
accessFlags(AccessFlags.PUBLIC)
|
accessFlags(AccessFlags.PUBLIC)
|
||||||
returns("Ljava/lang/String;")
|
returns("Ljava/lang/String;")
|
||||||
parameters("Lcom/spotify/share/social/sharedata/ShareData;", "Ljava/lang/String;")
|
parameters("Lcom/spotify/share/social/sharedata/ShareData;", "Ljava/lang/String;")
|
||||||
literal {
|
literal {
|
||||||
'\n'.code.toLong()
|
'\n'.code.toLong()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,70 +1,70 @@
|
|||||||
package app.revanced.patches.spotify.misc.privacy
|
package app.revanced.patches.spotify.misc.privacy
|
||||||
|
|
||||||
import app.revanced.patcher.Fingerprint
|
import app.revanced.patcher.Fingerprint
|
||||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||||
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||||
import app.revanced.patcher.patch.bytecodePatch
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
import app.revanced.patches.spotify.misc.extension.IS_SPOTIFY_LEGACY_APP_TARGET
|
import app.revanced.patches.spotify.misc.extension.sharedExtensionPatch
|
||||||
import app.revanced.patches.spotify.misc.extension.sharedExtensionPatch
|
import app.revanced.patches.spotify.shared.IS_SPOTIFY_LEGACY_APP_TARGET
|
||||||
import app.revanced.util.getReference
|
import app.revanced.util.getReference
|
||||||
import app.revanced.util.indexOfFirstInstructionOrThrow
|
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||||
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
|
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
|
||||||
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||||
|
|
||||||
private const val EXTENSION_CLASS_DESCRIPTOR =
|
private const val EXTENSION_CLASS_DESCRIPTOR =
|
||||||
"Lapp/revanced/extension/spotify/misc/privacy/SanitizeSharingLinksPatch;"
|
"Lapp/revanced/extension/spotify/misc/privacy/SanitizeSharingLinksPatch;"
|
||||||
|
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
val sanitizeSharingLinksPatch = bytecodePatch(
|
val sanitizeSharingLinksPatch = bytecodePatch(
|
||||||
name = "Sanitize sharing links",
|
name = "Sanitize sharing links",
|
||||||
description = "Removes the tracking query parameters from links before they are shared.",
|
description = "Removes the tracking query parameters from links before they are shared.",
|
||||||
) {
|
) {
|
||||||
compatibleWith("com.spotify.music")
|
compatibleWith("com.spotify.music")
|
||||||
|
|
||||||
dependsOn(sharedExtensionPatch)
|
dependsOn(sharedExtensionPatch)
|
||||||
|
|
||||||
execute {
|
execute {
|
||||||
val extensionMethodDescriptor = "$EXTENSION_CLASS_DESCRIPTOR->" +
|
val extensionMethodDescriptor = "$EXTENSION_CLASS_DESCRIPTOR->" +
|
||||||
"sanitizeUrl(Ljava/lang/String;)Ljava/lang/String;"
|
"sanitizeUrl(Ljava/lang/String;)Ljava/lang/String;"
|
||||||
|
|
||||||
val copyFingerprint = if (IS_SPOTIFY_LEGACY_APP_TARGET) {
|
val copyFingerprint = if (IS_SPOTIFY_LEGACY_APP_TARGET) {
|
||||||
shareCopyUrlLegacyFingerprint
|
shareCopyUrlLegacyFingerprint
|
||||||
} else {
|
} else {
|
||||||
shareCopyUrlFingerprint
|
shareCopyUrlFingerprint
|
||||||
}
|
}
|
||||||
|
|
||||||
copyFingerprint.method.apply {
|
copyFingerprint.method.apply {
|
||||||
val newPlainTextInvokeIndex = indexOfFirstInstructionOrThrow {
|
val newPlainTextInvokeIndex = indexOfFirstInstructionOrThrow {
|
||||||
getReference<MethodReference>()?.name == "newPlainText"
|
getReference<MethodReference>()?.name == "newPlainText"
|
||||||
}
|
}
|
||||||
val register = getInstruction<FiveRegisterInstruction>(newPlainTextInvokeIndex).registerD
|
val urlRegister = getInstruction<FiveRegisterInstruction>(newPlainTextInvokeIndex).registerD
|
||||||
|
|
||||||
addInstructions(
|
addInstructions(
|
||||||
newPlainTextInvokeIndex,
|
newPlainTextInvokeIndex,
|
||||||
"""
|
"""
|
||||||
invoke-static { v$register }, $extensionMethodDescriptor
|
invoke-static { v$urlRegister }, $extensionMethodDescriptor
|
||||||
move-result-object v$register
|
move-result-object v$urlRegister
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Android native share sheet is used for all other quick share types (X, WhatsApp, etc).
|
// Android native share sheet is used for all other quick share types (X, WhatsApp, etc).
|
||||||
val shareUrlParameter : String
|
val shareUrlParameter : String
|
||||||
val shareSheetFingerprint : Fingerprint
|
val shareSheetFingerprint : Fingerprint
|
||||||
if (IS_SPOTIFY_LEGACY_APP_TARGET) {
|
if (IS_SPOTIFY_LEGACY_APP_TARGET) {
|
||||||
shareSheetFingerprint = formatAndroidShareSheetUrlLegacyFingerprint
|
shareSheetFingerprint = formatAndroidShareSheetUrlLegacyFingerprint
|
||||||
shareUrlParameter = "p2"
|
shareUrlParameter = "p2"
|
||||||
} else {
|
} else {
|
||||||
shareSheetFingerprint = formatAndroidShareSheetUrlFingerprint
|
shareSheetFingerprint = formatAndroidShareSheetUrlFingerprint
|
||||||
shareUrlParameter = "p1"
|
shareUrlParameter = "p1"
|
||||||
}
|
}
|
||||||
|
|
||||||
shareSheetFingerprint.method.addInstructions(
|
shareSheetFingerprint.method.addInstructions(
|
||||||
0,
|
0,
|
||||||
"""
|
"""
|
||||||
invoke-static { $shareUrlParameter }, $extensionMethodDescriptor
|
invoke-static { $shareUrlParameter }, $extensionMethodDescriptor
|
||||||
move-result-object $shareUrlParameter
|
move-result-object $shareUrlParameter
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
package app.revanced.patches.spotify.misc.widgets
|
package app.revanced.patches.spotify.misc.widgets
|
||||||
|
|
||||||
import app.revanced.patcher.patch.bytecodePatch
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
|
import app.revanced.patches.spotify.shared.IS_SPOTIFY_LEGACY_APP_TARGET
|
||||||
import app.revanced.util.returnEarly
|
import app.revanced.util.returnEarly
|
||||||
|
import java.util.logging.Logger
|
||||||
|
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
val fixThirdPartyLaunchersWidgets = bytecodePatch(
|
val fixThirdPartyLaunchersWidgets = bytecodePatch(
|
||||||
@ -11,6 +13,14 @@ val fixThirdPartyLaunchersWidgets = bytecodePatch(
|
|||||||
compatibleWith("com.spotify.music")
|
compatibleWith("com.spotify.music")
|
||||||
|
|
||||||
execute {
|
execute {
|
||||||
|
if (IS_SPOTIFY_LEGACY_APP_TARGET) {
|
||||||
|
// The permission check does not exist in legacy versions.
|
||||||
|
Logger.getLogger(this::class.java.name).warning(
|
||||||
|
"Legacy app target does not have any third party launcher restrictions. No changes applied."
|
||||||
|
)
|
||||||
|
return@execute
|
||||||
|
}
|
||||||
|
|
||||||
// Only system app launchers are granted the BIND_APPWIDGET permission.
|
// Only system app launchers are granted the BIND_APPWIDGET permission.
|
||||||
// Override the method that checks for it to always return true, as this permission is not actually required
|
// Override the method that checks for it to always return true, as this permission is not actually required
|
||||||
// for the widgets to work.
|
// for the widgets to work.
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package app.revanced.patches.spotify.shared
|
package app.revanced.patches.spotify.shared
|
||||||
|
|
||||||
import app.revanced.patcher.fingerprint
|
import app.revanced.patcher.fingerprint
|
||||||
|
import app.revanced.patcher.patch.BytecodePatchContext
|
||||||
|
import app.revanced.patches.spotify.misc.extension.mainActivityOnCreateHook
|
||||||
|
|
||||||
private const val SPOTIFY_MAIN_ACTIVITY = "Lcom/spotify/music/SpotifyMainActivity;"
|
private const val SPOTIFY_MAIN_ACTIVITY = "Lcom/spotify/music/SpotifyMainActivity;"
|
||||||
|
|
||||||
@ -15,3 +17,18 @@ internal val mainActivityOnCreateFingerprint = fingerprint {
|
|||||||
|| classDef.type == SPOTIFY_MAIN_ACTIVITY_LEGACY)
|
|| classDef.type == SPOTIFY_MAIN_ACTIVITY_LEGACY)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private var isLegacyAppTarget: Boolean? = null
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If patching a legacy 8.x target. This may also be set if patching slightly older/newer app targets,
|
||||||
|
* but the only legacy target of interest is 8.6.98.900 as it's the last version that
|
||||||
|
* supports Spotify integration on Kenwood/Pioneer car stereos.
|
||||||
|
*/
|
||||||
|
context(BytecodePatchContext)
|
||||||
|
internal val IS_SPOTIFY_LEGACY_APP_TARGET get(): Boolean {
|
||||||
|
if (isLegacyAppTarget == null) {
|
||||||
|
isLegacyAppTarget = mainActivityOnCreateHook.fingerprint.originalClassDef.type == SPOTIFY_MAIN_ACTIVITY_LEGACY
|
||||||
|
}
|
||||||
|
return isLegacyAppTarget!!
|
||||||
|
}
|
||||||
|
@ -74,3 +74,21 @@ internal val setPivotBarVisibilityParentFingerprint = fingerprint {
|
|||||||
parameters("Z")
|
parameters("Z")
|
||||||
strings("FEnotifications_inbox")
|
strings("FEnotifications_inbox")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal val shortsExperimentalPlayerFeatureFlagFingerprint = fingerprint {
|
||||||
|
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||||
|
returns("Z")
|
||||||
|
parameters()
|
||||||
|
literal {
|
||||||
|
45677719L
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal val renderNextUIFeatureFlagFingerprint = fingerprint {
|
||||||
|
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||||
|
returns("Z")
|
||||||
|
parameters()
|
||||||
|
literal {
|
||||||
|
45649743L
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -18,6 +18,7 @@ import app.revanced.patches.youtube.misc.litho.filter.addLithoFilter
|
|||||||
import app.revanced.patches.youtube.misc.litho.filter.lithoFilterPatch
|
import app.revanced.patches.youtube.misc.litho.filter.lithoFilterPatch
|
||||||
import app.revanced.patches.youtube.misc.navigation.navigationBarHookPatch
|
import app.revanced.patches.youtube.misc.navigation.navigationBarHookPatch
|
||||||
import app.revanced.patches.youtube.misc.playservice.is_19_41_or_greater
|
import app.revanced.patches.youtube.misc.playservice.is_19_41_or_greater
|
||||||
|
import app.revanced.patches.youtube.misc.playservice.is_20_07_or_greater
|
||||||
import app.revanced.patches.youtube.misc.playservice.versionCheckPatch
|
import app.revanced.patches.youtube.misc.playservice.versionCheckPatch
|
||||||
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
|
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
|
||||||
import app.revanced.patches.youtube.misc.settings.settingsPatch
|
import app.revanced.patches.youtube.misc.settings.settingsPatch
|
||||||
@ -26,6 +27,7 @@ import app.revanced.util.forEachLiteralValueInstruction
|
|||||||
import app.revanced.util.getReference
|
import app.revanced.util.getReference
|
||||||
import app.revanced.util.indexOfFirstInstructionOrThrow
|
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||||
import app.revanced.util.indexOfFirstLiteralInstruction
|
import app.revanced.util.indexOfFirstLiteralInstruction
|
||||||
|
import app.revanced.util.returnLate
|
||||||
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||||
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||||
|
|
||||||
@ -90,6 +92,7 @@ private val hideShortsComponentsResourcePatch = resourcePatch {
|
|||||||
SwitchPreference("revanced_hide_shorts_paused_overlay_buttons"),
|
SwitchPreference("revanced_hide_shorts_paused_overlay_buttons"),
|
||||||
|
|
||||||
// Suggested actions.
|
// Suggested actions.
|
||||||
|
SwitchPreference("revanced_hide_shorts_comment_panel"),
|
||||||
SwitchPreference("revanced_hide_shorts_save_sound_button"),
|
SwitchPreference("revanced_hide_shorts_save_sound_button"),
|
||||||
SwitchPreference("revanced_hide_shorts_use_template_button"),
|
SwitchPreference("revanced_hide_shorts_use_template_button"),
|
||||||
SwitchPreference("revanced_hide_shorts_upcoming_button"),
|
SwitchPreference("revanced_hide_shorts_upcoming_button"),
|
||||||
@ -251,5 +254,27 @@ val hideShortsComponentsPatch = bytecodePatch(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// endregion
|
// endregion
|
||||||
|
|
||||||
|
// region Disable experimental Shorts flags.
|
||||||
|
|
||||||
|
// Flags might be present in earlier targets, but they are not found in 19.47.53.
|
||||||
|
// If these flags are forced on, the experimental layout is still not used and
|
||||||
|
// it appears the features requires additional server side data to fully use.
|
||||||
|
if (is_20_07_or_greater) {
|
||||||
|
// Experimental Shorts player uses Android native buttons and not Litho,
|
||||||
|
// and the layout is provided by the server.
|
||||||
|
//
|
||||||
|
// Since the buttons are native components and not Litho, it should be possible to
|
||||||
|
// fix the RYD Shorts loading delay by asynchronously loading RYD and updating
|
||||||
|
// the button text after RYD has loaded.
|
||||||
|
shortsExperimentalPlayerFeatureFlagFingerprint.method.returnLate(true)
|
||||||
|
|
||||||
|
// Experimental UI renderer must also be disabled since it requires the
|
||||||
|
// experimental Shorts player. If this is enabled but Shorts player
|
||||||
|
// is disabled then the app crashes when the Shorts player is opened.
|
||||||
|
renderNextUIFeatureFlagFingerprint.method.returnLate(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
// endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -123,3 +123,13 @@ internal val playbackSpeedMenuSpeedChangedFingerprint = fingerprint {
|
|||||||
Opcode.RETURN_OBJECT,
|
Opcode.RETURN_OBJECT,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal val playbackSpeedClassFingerprint = fingerprint {
|
||||||
|
accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC)
|
||||||
|
returns("L")
|
||||||
|
parameters("L")
|
||||||
|
opcodes(
|
||||||
|
Opcode.RETURN_OBJECT
|
||||||
|
)
|
||||||
|
strings("PLAYBACK_RATE_MENU_BOTTOM_SHEET_FRAGMENT")
|
||||||
|
}
|
||||||
|
@ -7,6 +7,7 @@ import app.revanced.patcher.patch.bytecodePatch
|
|||||||
import app.revanced.patcher.util.proxy.mutableTypes.MutableClass
|
import app.revanced.patcher.util.proxy.mutableTypes.MutableClass
|
||||||
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
|
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
|
||||||
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMutable
|
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMutable
|
||||||
|
import app.revanced.patcher.util.smali.toInstructions
|
||||||
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
||||||
import app.revanced.patches.youtube.shared.newVideoQualityChangedFingerprint
|
import app.revanced.patches.youtube.shared.newVideoQualityChangedFingerprint
|
||||||
import app.revanced.patches.youtube.video.playerresponse.Hook
|
import app.revanced.patches.youtube.video.playerresponse.Hook
|
||||||
@ -16,6 +17,8 @@ import app.revanced.patches.youtube.video.videoid.hookBackgroundPlayVideoId
|
|||||||
import app.revanced.patches.youtube.video.videoid.hookPlayerResponseVideoId
|
import app.revanced.patches.youtube.video.videoid.hookPlayerResponseVideoId
|
||||||
import app.revanced.patches.youtube.video.videoid.hookVideoId
|
import app.revanced.patches.youtube.video.videoid.hookVideoId
|
||||||
import app.revanced.patches.youtube.video.videoid.videoIdPatch
|
import app.revanced.patches.youtube.video.videoid.videoIdPatch
|
||||||
|
import app.revanced.util.addInstructionsAtControlFlowLabel
|
||||||
|
import app.revanced.util.addStaticFieldToExtension
|
||||||
import app.revanced.util.getReference
|
import app.revanced.util.getReference
|
||||||
import app.revanced.util.indexOfFirstInstructionOrThrow
|
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||||
import com.android.tools.smali.dexlib2.AccessFlags
|
import com.android.tools.smali.dexlib2.AccessFlags
|
||||||
@ -29,6 +32,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
|
|||||||
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
|
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
|
||||||
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||||
import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
|
import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
|
||||||
|
import com.android.tools.smali.dexlib2.immutable.ImmutableMethodImplementation
|
||||||
import com.android.tools.smali.dexlib2.immutable.ImmutableMethodParameter
|
import com.android.tools.smali.dexlib2.immutable.ImmutableMethodParameter
|
||||||
import com.android.tools.smali.dexlib2.util.MethodUtil
|
import com.android.tools.smali.dexlib2.util.MethodUtil
|
||||||
|
|
||||||
@ -189,6 +193,72 @@ val videoInformationPatch = bytecodePatch(
|
|||||||
proxy(classes.first { it.type == setPlaybackSpeedMethodReference.definingClass })
|
proxy(classes.first { it.type == setPlaybackSpeedMethodReference.definingClass })
|
||||||
.mutableClass.methods.first { it.name == setPlaybackSpeedMethodReference.name }
|
.mutableClass.methods.first { it.name == setPlaybackSpeedMethodReference.name }
|
||||||
setPlaybackSpeedMethodIndex = 0
|
setPlaybackSpeedMethodIndex = 0
|
||||||
|
|
||||||
|
// Add override playback speed method.
|
||||||
|
onPlaybackSpeedItemClickFingerprint.classDef.methods.add(
|
||||||
|
ImmutableMethod(
|
||||||
|
definingClass,
|
||||||
|
"overridePlaybackSpeed",
|
||||||
|
listOf(ImmutableMethodParameter("F", annotations, null)),
|
||||||
|
"V",
|
||||||
|
AccessFlags.PUBLIC.value or AccessFlags.PUBLIC.value,
|
||||||
|
annotations,
|
||||||
|
null,
|
||||||
|
ImmutableMethodImplementation(
|
||||||
|
4,
|
||||||
|
"""
|
||||||
|
# Check if the playback speed is not auto (-2.0f)
|
||||||
|
const/4 v0, 0x0
|
||||||
|
cmpg-float v0, v3, v0
|
||||||
|
if-lez v0, :ignore
|
||||||
|
|
||||||
|
# Get the container class field.
|
||||||
|
iget-object v0, v2, $setPlaybackSpeedContainerClassFieldReference
|
||||||
|
|
||||||
|
# For some reason, in YouTube 19.44.39 this value is sometimes null.
|
||||||
|
if-eqz v0, :ignore
|
||||||
|
|
||||||
|
# Get the field from its class.
|
||||||
|
iget-object v1, v0, $setPlaybackSpeedClassFieldReference
|
||||||
|
|
||||||
|
# Invoke setPlaybackSpeed on that class.
|
||||||
|
invoke-virtual {v1, v3}, $setPlaybackSpeedMethodReference
|
||||||
|
|
||||||
|
:ignore
|
||||||
|
return-void
|
||||||
|
""".toInstructions(), null, null
|
||||||
|
)
|
||||||
|
).toMutable()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
playbackSpeedClassFingerprint.method.apply {
|
||||||
|
val index = indexOfFirstInstructionOrThrow(Opcode.RETURN_OBJECT)
|
||||||
|
val register = getInstruction<OneRegisterInstruction>(index).registerA
|
||||||
|
val playbackSpeedClass = this.returnType
|
||||||
|
|
||||||
|
// Set playback speed class.
|
||||||
|
addInstructionsAtControlFlowLabel(
|
||||||
|
index,
|
||||||
|
"sput-object v$register, $EXTENSION_CLASS_DESCRIPTOR->playbackSpeedClass:$playbackSpeedClass"
|
||||||
|
)
|
||||||
|
|
||||||
|
val smaliInstructions =
|
||||||
|
"""
|
||||||
|
if-eqz v0, :ignore
|
||||||
|
invoke-virtual {v0, p0}, $playbackSpeedClass->overridePlaybackSpeed(F)V
|
||||||
|
return-void
|
||||||
|
:ignore
|
||||||
|
nop
|
||||||
|
"""
|
||||||
|
|
||||||
|
addStaticFieldToExtension(
|
||||||
|
EXTENSION_CLASS_DESCRIPTOR,
|
||||||
|
"overridePlaybackSpeed",
|
||||||
|
"playbackSpeedClass",
|
||||||
|
playbackSpeedClass,
|
||||||
|
smaliInstructions
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle new playback speed menu.
|
// Handle new playback speed menu.
|
||||||
|
@ -1,19 +1,11 @@
|
|||||||
package app.revanced.patches.youtube.video.speed.custom
|
package app.revanced.patches.youtube.video.speed.custom
|
||||||
|
|
||||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
|
|
||||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
|
|
||||||
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||||
import app.revanced.patcher.extensions.InstructionExtensions.instructions
|
|
||||||
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
|
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
|
||||||
import app.revanced.patcher.patch.bytecodePatch
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
import app.revanced.patcher.patch.resourcePatch
|
|
||||||
import app.revanced.patcher.util.proxy.mutableTypes.MutableField.Companion.toMutable
|
|
||||||
import app.revanced.patches.all.misc.resources.addResources
|
import app.revanced.patches.all.misc.resources.addResources
|
||||||
import app.revanced.patches.all.misc.resources.addResourcesPatch
|
import app.revanced.patches.all.misc.resources.addResourcesPatch
|
||||||
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.InputType
|
import app.revanced.patches.shared.misc.settings.preference.InputType
|
||||||
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
|
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
|
||||||
import app.revanced.patches.shared.misc.settings.preference.TextPreference
|
import app.revanced.patches.shared.misc.settings.preference.TextPreference
|
||||||
@ -27,27 +19,11 @@ import app.revanced.patches.youtube.misc.recyclerviewtree.hook.addRecyclerViewTr
|
|||||||
import app.revanced.patches.youtube.misc.recyclerviewtree.hook.recyclerViewTreeHookPatch
|
import app.revanced.patches.youtube.misc.recyclerviewtree.hook.recyclerViewTreeHookPatch
|
||||||
import app.revanced.patches.youtube.misc.settings.settingsPatch
|
import app.revanced.patches.youtube.misc.settings.settingsPatch
|
||||||
import app.revanced.patches.youtube.video.speed.settingsMenuVideoSpeedGroup
|
import app.revanced.patches.youtube.video.speed.settingsMenuVideoSpeedGroup
|
||||||
import app.revanced.util.*
|
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||||
import com.android.tools.smali.dexlib2.AccessFlags
|
import app.revanced.util.indexOfFirstLiteralInstruction
|
||||||
|
import app.revanced.util.indexOfFirstLiteralInstructionOrThrow
|
||||||
import com.android.tools.smali.dexlib2.iface.instruction.NarrowLiteralInstruction
|
import com.android.tools.smali.dexlib2.iface.instruction.NarrowLiteralInstruction
|
||||||
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||||
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
|
|
||||||
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
|
||||||
import com.android.tools.smali.dexlib2.immutable.ImmutableField
|
|
||||||
|
|
||||||
internal var speedUnavailableId = -1L
|
|
||||||
private set
|
|
||||||
|
|
||||||
private val customPlaybackSpeedResourcePatch = resourcePatch {
|
|
||||||
dependsOn(resourceMappingPatch)
|
|
||||||
|
|
||||||
execute {
|
|
||||||
speedUnavailableId = resourceMappings[
|
|
||||||
"string",
|
|
||||||
"varispeed_unavailable_message",
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private const val FILTER_CLASS_DESCRIPTOR =
|
private const val FILTER_CLASS_DESCRIPTOR =
|
||||||
"Lapp/revanced/extension/youtube/patches/components/PlaybackSpeedMenuFilterPatch;"
|
"Lapp/revanced/extension/youtube/patches/components/PlaybackSpeedMenuFilterPatch;"
|
||||||
@ -64,8 +40,7 @@ internal val customPlaybackSpeedPatch = bytecodePatch(
|
|||||||
addResourcesPatch,
|
addResourcesPatch,
|
||||||
lithoFilterPatch,
|
lithoFilterPatch,
|
||||||
versionCheckPatch,
|
versionCheckPatch,
|
||||||
recyclerViewTreeHookPatch,
|
recyclerViewTreeHookPatch
|
||||||
customPlaybackSpeedResourcePatch
|
|
||||||
)
|
)
|
||||||
|
|
||||||
execute {
|
execute {
|
||||||
@ -87,38 +62,6 @@ internal val customPlaybackSpeedPatch = bytecodePatch(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Replace the speeds float array with custom speeds.
|
|
||||||
speedArrayGeneratorFingerprint.method.apply {
|
|
||||||
val sizeCallIndex = indexOfFirstInstructionOrThrow { getReference<MethodReference>()?.name == "size" }
|
|
||||||
val sizeCallResultRegister = getInstruction<OneRegisterInstruction>(sizeCallIndex + 1).registerA
|
|
||||||
|
|
||||||
replaceInstruction(sizeCallIndex + 1, "const/4 v$sizeCallResultRegister, 0x0")
|
|
||||||
|
|
||||||
val arrayLengthConstIndex = indexOfFirstLiteralInstructionOrThrow(7)
|
|
||||||
val arrayLengthConstDestination = getInstruction<OneRegisterInstruction>(arrayLengthConstIndex).registerA
|
|
||||||
val playbackSpeedsArrayType = "$EXTENSION_CLASS_DESCRIPTOR->customPlaybackSpeeds:[F"
|
|
||||||
|
|
||||||
addInstructions(
|
|
||||||
arrayLengthConstIndex + 1,
|
|
||||||
"""
|
|
||||||
sget-object v$arrayLengthConstDestination, $playbackSpeedsArrayType
|
|
||||||
array-length v$arrayLengthConstDestination, v$arrayLengthConstDestination
|
|
||||||
""",
|
|
||||||
)
|
|
||||||
|
|
||||||
val originalArrayFetchIndex = indexOfFirstInstructionOrThrow {
|
|
||||||
val reference = getReference<FieldReference>()
|
|
||||||
reference?.type == "[F" && reference.definingClass.endsWith("/PlayerConfigModel;")
|
|
||||||
}
|
|
||||||
val originalArrayFetchDestination =
|
|
||||||
getInstruction<OneRegisterInstruction>(originalArrayFetchIndex).registerA
|
|
||||||
|
|
||||||
replaceInstruction(
|
|
||||||
originalArrayFetchIndex,
|
|
||||||
"sget-object v$originalArrayFetchDestination, $playbackSpeedsArrayType",
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Override the min/max speeds that can be used.
|
// Override the min/max speeds that can be used.
|
||||||
speedLimiterFingerprint.method.apply {
|
speedLimiterFingerprint.method.apply {
|
||||||
val limitMinIndex = indexOfFirstLiteralInstructionOrThrow(0.25f)
|
val limitMinIndex = indexOfFirstLiteralInstructionOrThrow(0.25f)
|
||||||
@ -135,47 +78,7 @@ internal val customPlaybackSpeedPatch = bytecodePatch(
|
|||||||
replaceInstruction(limitMaxIndex, "const/high16 v$limitMaxRegister, 8.0f")
|
replaceInstruction(limitMaxIndex, "const/high16 v$limitMaxRegister, 8.0f")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add a static INSTANCE field to the class.
|
// Close the unpatched playback dialog and show the modern custom dialog.
|
||||||
// This is later used to call "showOldPlaybackSpeedMenu" on the instance.
|
|
||||||
|
|
||||||
val instanceField = ImmutableField(
|
|
||||||
getOldPlaybackSpeedsFingerprint.originalClassDef.type,
|
|
||||||
"INSTANCE",
|
|
||||||
getOldPlaybackSpeedsFingerprint.originalClassDef.type,
|
|
||||||
AccessFlags.PUBLIC.value or AccessFlags.STATIC.value,
|
|
||||||
null,
|
|
||||||
null,
|
|
||||||
null,
|
|
||||||
).toMutable()
|
|
||||||
|
|
||||||
getOldPlaybackSpeedsFingerprint.classDef.staticFields.add(instanceField)
|
|
||||||
// Set the INSTANCE field to the instance of the class.
|
|
||||||
// In order to prevent a conflict with another patch, add the instruction at index 1.
|
|
||||||
getOldPlaybackSpeedsFingerprint.method.addInstruction(1, "sput-object p0, $instanceField")
|
|
||||||
|
|
||||||
// Get the "showOldPlaybackSpeedMenu" method.
|
|
||||||
// This is later called on the field INSTANCE.
|
|
||||||
val showOldPlaybackSpeedMenuMethod = showOldPlaybackSpeedMenuFingerprint.match(
|
|
||||||
getOldPlaybackSpeedsFingerprint.classDef,
|
|
||||||
).method.toString()
|
|
||||||
|
|
||||||
// Insert the call to the "showOldPlaybackSpeedMenu" method on the field INSTANCE.
|
|
||||||
showOldPlaybackSpeedMenuExtensionFingerprint.method.apply {
|
|
||||||
addInstructionsWithLabels(
|
|
||||||
instructions.lastIndex,
|
|
||||||
"""
|
|
||||||
sget-object v0, $instanceField
|
|
||||||
if-nez v0, :not_null
|
|
||||||
return-void
|
|
||||||
:not_null
|
|
||||||
invoke-virtual { v0 }, $showOldPlaybackSpeedMenuMethod
|
|
||||||
""",
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
// region Force old video quality menu.
|
|
||||||
// This is necessary, because there is no known way of adding custom playback speeds to the new menu.
|
|
||||||
|
|
||||||
addRecyclerViewTreeHook(EXTENSION_CLASS_DESCRIPTOR)
|
addRecyclerViewTreeHook(EXTENSION_CLASS_DESCRIPTOR)
|
||||||
|
|
||||||
// Required to check if the playback speed menu is currently shown.
|
// Required to check if the playback speed menu is currently shown.
|
||||||
|
@ -1,30 +1,9 @@
|
|||||||
package app.revanced.patches.youtube.video.speed.custom
|
package app.revanced.patches.youtube.video.speed.custom
|
||||||
|
|
||||||
import app.revanced.patcher.fingerprint
|
import app.revanced.patcher.fingerprint
|
||||||
import app.revanced.util.literal
|
|
||||||
import com.android.tools.smali.dexlib2.AccessFlags
|
import com.android.tools.smali.dexlib2.AccessFlags
|
||||||
import com.android.tools.smali.dexlib2.Opcode
|
import com.android.tools.smali.dexlib2.Opcode
|
||||||
|
|
||||||
internal val getOldPlaybackSpeedsFingerprint = fingerprint {
|
|
||||||
parameters("[L", "I")
|
|
||||||
strings("menu_item_playback_speed")
|
|
||||||
}
|
|
||||||
|
|
||||||
internal val showOldPlaybackSpeedMenuFingerprint = fingerprint {
|
|
||||||
literal { speedUnavailableId }
|
|
||||||
}
|
|
||||||
|
|
||||||
internal val showOldPlaybackSpeedMenuExtensionFingerprint = fingerprint {
|
|
||||||
custom { method, _ -> method.name == "showOldPlaybackSpeedMenu" }
|
|
||||||
}
|
|
||||||
|
|
||||||
internal val speedArrayGeneratorFingerprint = fingerprint {
|
|
||||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC)
|
|
||||||
returns("[L")
|
|
||||||
parameters("Lcom/google/android/libraries/youtube/innertube/model/player/PlayerResponseModel;")
|
|
||||||
strings("0.0#")
|
|
||||||
}
|
|
||||||
|
|
||||||
internal val speedLimiterFingerprint = fingerprint {
|
internal val speedLimiterFingerprint = fingerprint {
|
||||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||||
returns("V")
|
returns("V")
|
||||||
|
@ -10,6 +10,7 @@ import app.revanced.patcher.extensions.InstructionExtensions.removeInstruction
|
|||||||
import app.revanced.patcher.patch.BytecodePatchContext
|
import app.revanced.patcher.patch.BytecodePatchContext
|
||||||
import app.revanced.patcher.patch.PatchException
|
import app.revanced.patcher.patch.PatchException
|
||||||
import app.revanced.patcher.util.proxy.mutableTypes.MutableClass
|
import app.revanced.patcher.util.proxy.mutableTypes.MutableClass
|
||||||
|
import app.revanced.patcher.util.proxy.mutableTypes.MutableField.Companion.toMutable
|
||||||
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
|
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
|
||||||
import app.revanced.patcher.util.smali.ExternalLabel
|
import app.revanced.patcher.util.smali.ExternalLabel
|
||||||
import app.revanced.patches.shared.misc.mapping.get
|
import app.revanced.patches.shared.misc.mapping.get
|
||||||
@ -31,6 +32,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.ThreeRegisterInstructio
|
|||||||
import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
|
import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
|
||||||
import com.android.tools.smali.dexlib2.iface.instruction.WideLiteralInstruction
|
import com.android.tools.smali.dexlib2.iface.instruction.WideLiteralInstruction
|
||||||
import com.android.tools.smali.dexlib2.iface.reference.Reference
|
import com.android.tools.smali.dexlib2.iface.reference.Reference
|
||||||
|
import com.android.tools.smali.dexlib2.immutable.ImmutableField
|
||||||
import com.android.tools.smali.dexlib2.util.MethodUtil
|
import com.android.tools.smali.dexlib2.util.MethodUtil
|
||||||
import java.util.EnumSet
|
import java.util.EnumSet
|
||||||
|
|
||||||
@ -962,6 +964,43 @@ private fun MutableMethod.overrideReturnValue(value: String, returnLate: Boolean
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal fun BytecodePatchContext.addStaticFieldToExtension(
|
||||||
|
className: String,
|
||||||
|
methodName: String,
|
||||||
|
fieldName: String,
|
||||||
|
objectClass: String,
|
||||||
|
smaliInstructions: String
|
||||||
|
) {
|
||||||
|
val classDef = classes.find { classDef -> classDef.type == className }
|
||||||
|
?: throw PatchException("No matching methods found in: $className")
|
||||||
|
val mutableClass = proxy(classDef).mutableClass
|
||||||
|
|
||||||
|
val objectCall = "$mutableClass->$fieldName:$objectClass"
|
||||||
|
|
||||||
|
mutableClass.apply {
|
||||||
|
methods.first { method -> method.name == methodName }.apply {
|
||||||
|
staticFields.add(
|
||||||
|
ImmutableField(
|
||||||
|
definingClass,
|
||||||
|
fieldName,
|
||||||
|
objectClass,
|
||||||
|
AccessFlags.PUBLIC.value or AccessFlags.STATIC.value,
|
||||||
|
null,
|
||||||
|
annotations,
|
||||||
|
null
|
||||||
|
).toMutable()
|
||||||
|
)
|
||||||
|
|
||||||
|
addInstructionsWithLabels(
|
||||||
|
0,
|
||||||
|
"""
|
||||||
|
sget-object v0, $objectCall
|
||||||
|
""" + smaliInstructions
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the custom condition for this fingerprint to check for a literal value.
|
* Set the custom condition for this fingerprint to check for a literal value.
|
||||||
*
|
*
|
||||||
|
@ -35,7 +35,7 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_settings_submenu_title">الإعدادات</string>
|
<string name="revanced_settings_submenu_title">الإعدادات</string>
|
||||||
<string name="revanced_settings_confirm_user_dialog_title">هل ترغب في المتابعة؟</string>
|
<string name="revanced_settings_confirm_user_dialog_title">هل ترغب في المتابعة؟</string>
|
||||||
<string name="revanced_settings_reset">إعادة التعيين</string>
|
<string name="revanced_settings_reset">إعادة التعيين</string>
|
||||||
<string name="revanced_settings_reset_color">إعادة تعيين اللون</string>
|
<string name="revanced_settings_reset_color">Reset color</string>
|
||||||
<string name="revanced_settings_color_invalid">لون غير صالح</string>
|
<string name="revanced_settings_color_invalid">لون غير صالح</string>
|
||||||
<string name="revanced_settings_restart_title">تحديث وإعادة التشغيل</string>
|
<string name="revanced_settings_restart_title">تحديث وإعادة التشغيل</string>
|
||||||
<string name="revanced_settings_restart">إعادة التشغيل</string>
|
<string name="revanced_settings_restart">إعادة التشغيل</string>
|
||||||
@ -750,6 +750,9 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_shorts_location_label_title">إخفاء تسمية الموقع</string>
|
<string name="revanced_hide_shorts_location_label_title">إخفاء تسمية الموقع</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">تم إخفاء تسمية الموقع</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">تم إخفاء تسمية الموقع</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">يتم عرض تسمية الموقع</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">يتم عرض تسمية الموقع</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">إخفاء لوحة التعليقات</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">تم إخفاء لوحة التعليقات</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">يتم عرض لوحة التعليقات</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">إخفاء زر حفظ الموسيقى</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">إخفاء زر حفظ الموسيقى</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">تم إخفاء زر حفظ الموسيقى</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">تم إخفاء زر حفظ الموسيقى</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">يتم عرض زر حفظ الموسيقى</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">يتم عرض زر حفظ الموسيقى</string>
|
||||||
@ -1398,7 +1401,7 @@ Second \"item\" text"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">عرض زر مربع حوار السرعة</string>
|
<string name="revanced_playback_speed_dialog_button_title">عرض زر مربع حوار السرعة</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">يتم عرض الزر</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">الزر معروض. انقر مع الاستمرار لإعادة ضبط سرعة التشغيل إلى الوضع الافتراضي</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">لا يتم عرض الزر</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">لا يتم عرض الزر</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1410,6 +1413,7 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">يجب أن تكون سرعات التشغيل المخصصة أقل من %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">يجب أن تكون سرعات التشغيل المخصصة أقل من %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">سرعة التشغيل المخصصة غير صالحة</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">سرعة التشغيل المخصصة غير صالحة</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">تلقائي</string>
|
<string name="revanced_custom_playback_speeds_auto">تلقائي</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">تمت إعادة ضبط سرعة التشغيل إلى: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">سرعة النقر مع الاستمرار المخصصة</string>
|
<string name="revanced_speed_tap_and_hold_title">سرعة النقر مع الاستمرار المخصصة</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">سرعة التشغيل بين 0-8</string>
|
<string name="revanced_speed_tap_and_hold_summary">سرعة التشغيل بين 0-8</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_settings_submenu_title">Tənzimləmələr</string>
|
<string name="revanced_settings_submenu_title">Tənzimləmələr</string>
|
||||||
<string name="revanced_settings_confirm_user_dialog_title">Davam etmək istəyirsiniz?</string>
|
<string name="revanced_settings_confirm_user_dialog_title">Davam etmək istəyirsiniz?</string>
|
||||||
<string name="revanced_settings_reset">Sıfırla</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>
|
||||||
<string name="revanced_settings_restart_title">Yenilə və yenidən başlat</string>
|
<string name="revanced_settings_restart_title">Yenilə və yenidən başlat</string>
|
||||||
<string name="revanced_settings_restart">Yenidən başlat</string>
|
<string name="revanced_settings_restart">Yenidən başlat</string>
|
||||||
<string name="revanced_settings_import">İdxal et</string>
|
<string name="revanced_settings_import">İdxal et</string>
|
||||||
@ -115,6 +117,11 @@ Davam et düyməsinə toxun və optimallaşdırma dəyişikliklərin qəbul et."
|
|||||||
<string name="revanced_debug_protobuffer_title">Bufer protokol jurnalı</string>
|
<string name="revanced_debug_protobuffer_title">Bufer protokol jurnalı</string>
|
||||||
<string name="revanced_debug_protobuffer_summary_on">Sazlama jurnallarına protokol buferi daxildir</string>
|
<string name="revanced_debug_protobuffer_summary_on">Sazlama jurnallarına protokol buferi daxildir</string>
|
||||||
<string name="revanced_debug_protobuffer_summary_off">Sazlama jurnallarına protokol buferi daxil deyil</string>
|
<string name="revanced_debug_protobuffer_summary_off">Sazlama jurnallarına protokol buferi daxil deyil</string>
|
||||||
|
<string name="revanced_debug_protobuffer_user_dialog_message">"Bu seçimi aktivləşdirmə bəzi UI quruluşları üçün ekran mətni də olmaqla əlavə tərtibat bazasını daxil edəcək.
|
||||||
|
|
||||||
|
Bu, xüsusi filtrlər yaradarkən quruluşları müəyyən etməyə kömək edə bilər.
|
||||||
|
|
||||||
|
Hər halda, bunu aktivləşdirmə IP ünvanınız kimi bəzi istifadəçi məlumatın da daxil edəcək."</string>
|
||||||
<string name="revanced_debug_stacktrace_title">Yığın izləri jurnalı</string>
|
<string name="revanced_debug_stacktrace_title">Yığın izləri jurnalı</string>
|
||||||
<string name="revanced_debug_stacktrace_summary_on">Sazlama jurnalına yığın izləri daxildir</string>
|
<string name="revanced_debug_stacktrace_summary_on">Sazlama jurnalına yığın izləri daxildir</string>
|
||||||
<string name="revanced_debug_stacktrace_summary_off">Sazlama jurnalına yığın izləri daxil deyil</string>
|
<string name="revanced_debug_stacktrace_summary_off">Sazlama jurnalına yığın izləri daxil deyil</string>
|
||||||
@ -124,6 +131,15 @@ Davam et düyməsinə toxun və optimallaşdırma dəyişikliklərin qəbul et."
|
|||||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"Xəta ani bildirişlərin qapatmaq, bütün ReVanced xəta bildirişlərin gizlədir.
|
<string name="revanced_debug_toast_on_error_user_dialog_message">"Xəta ani bildirişlərin qapatmaq, bütün ReVanced xəta bildirişlərin gizlədir.
|
||||||
|
|
||||||
Gözlənilməz hallardan xəbərdar olmayacaqsınız."</string>
|
Gözlənilməz hallardan xəbərdar olmayacaqsınız."</string>
|
||||||
|
<string name="revanced_debug_export_logs_to_clipboard_title">Sazlama qeydlərini ixrac edin</string>
|
||||||
|
<string name="revanced_debug_export_logs_to_clipboard_summary">ReVanced sazlama qeydlərini buferə köçürür</string>
|
||||||
|
<string name="revanced_debug_logs_disabled">Sazlama qeydi qapalıdır</string>
|
||||||
|
<string name="revanced_debug_logs_none_found">Qeydlər tapılmadı</string>
|
||||||
|
<string name="revanced_debug_logs_copied_to_clipboard">Qeydlər köçürüldü</string>
|
||||||
|
<string name="revanced_debug_logs_failed_to_export">Qeydləri ixrac etmək alınmadı: $s</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>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||||
<string name="revanced_hide_album_cards_title">Albom kartlarını gizlət</string>
|
<string name="revanced_hide_album_cards_title">Albom kartlarını gizlət</string>
|
||||||
@ -475,6 +491,10 @@ Ekranın sağ tərəfində düzünə sürüşdürərək səs səviyyəsini tənz
|
|||||||
<string name="revanced_swipe_overlay_background_opacity_title">Sürüşdürmə cildi arxa plan qeyri-şəffaflığı</string>
|
<string name="revanced_swipe_overlay_background_opacity_title">Sürüşdürmə cildi arxa plan qeyri-şəffaflığı</string>
|
||||||
<string name="revanced_swipe_overlay_background_opacity_summary">0-100 arası qeyri-şəffaflıq dəyəri</string>
|
<string name="revanced_swipe_overlay_background_opacity_summary">0-100 arası qeyri-şəffaflıq dəyəri</string>
|
||||||
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">Sürüşmə qeyri-şəffaflığı 0-100 arası olmalıdır</string>
|
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">Sürüşmə qeyri-şəffaflığı 0-100 arası olmalıdır</string>
|
||||||
|
<string name="revanced_swipe_overlay_progress_brightness_color_title">Sürüşdürmə örtüyü parlaqlıq rəngi</string>
|
||||||
|
<string name="revanced_swipe_overlay_progress_brightness_color_summary">Parlaqlığa nəzarət üçün irəliləyiş zolağının rəngi</string>
|
||||||
|
<string name="revanced_swipe_overlay_progress_volume_color_title">Sürüşdürmə örtüyü səs səviyyəsi rəngi</string>
|
||||||
|
<string name="revanced_swipe_overlay_progress_volume_color_summary">Səs səviyyəsinə nəzarət üçün irəliləyiş zolağının rəngi</string>
|
||||||
<string name="revanced_swipe_text_overlay_size_title">Sürüşdürmə örtüyü mətn ölçüsü</string>
|
<string name="revanced_swipe_text_overlay_size_title">Sürüşdürmə örtüyü mətn ölçüsü</string>
|
||||||
<string name="revanced_swipe_text_overlay_size_summary">Sürüşmə üçün mətn ölçüsü 1-30 arasındadır</string>
|
<string name="revanced_swipe_text_overlay_size_summary">Sürüşmə üçün mətn ölçüsü 1-30 arasındadır</string>
|
||||||
<string name="revanced_swipe_text_overlay_size_invalid_toast">Mətn ölçüsü 1-30 arası olmalıdır</string>
|
<string name="revanced_swipe_text_overlay_size_invalid_toast">Mətn ölçüsü 1-30 arası olmalıdır</string>
|
||||||
@ -1317,7 +1337,20 @@ Bunu aktivləşdirmə daha yüksək video keyfiyyətləri əngəlin silə bilər
|
|||||||
<string name="microg_settings_summary">GmsCore üçün Tənzimləmələr</string>
|
<string name="microg_settings_summary">GmsCore üçün Tənzimləmələr</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||||
|
<string name="revanced_disable_haptic_feedback_title">Əks-əlaqə reaksiyası</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_summary">Əks-əlaqə reaksiyasını dəyişdir</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_chapters_title">Fəsillər reaksiyasın qapat</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_chapters_summary_on">Fəsillər reaksiyası qapalıdır</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_chapters_summary_off">Fəsillər reaksiyası aktivdir</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_precise_seeking_title">Dəqiq axtarış reaksiyasın qapat</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_on">Dəqiq axtarış reaksiyası qapalıdır</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_off">Dəqiq axtarış reaksiyası aktivdir</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_seek_undo_title">Axtarış geriyə reaksiyasın qapat</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_seek_undo_summary_on">Axtarış geri reaksiyası qapalıdır</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_seek_undo_summary_off">Axtarış geri reaksiyası aktivdir</string>
|
||||||
<string name="revanced_disable_haptic_feedback_zoom_title">Yaxınlaşdırma reaksiyasın qapat</string>
|
<string name="revanced_disable_haptic_feedback_zoom_title">Yaxınlaşdırma reaksiyasın qapat</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_zoom_summary_on">Yaxınlaşdırma reaksiyası qapalıdır</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_zoom_summary_off">Yaxınlaşdırma reaksiyası aktivdir</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||||
<string name="microg_offline_account_login_error">Bu yaxınlarda hesabınıza giriş məlumatlarınızı dəyişmisinizsə, MicroG-ni silin və təkrar quraşdırın.</string>
|
<string name="microg_offline_account_login_error">Bu yaxınlarda hesabınıza giriş məlumatlarınızı dəyişmisinizsə, MicroG-ni silin və təkrar quraşdırın.</string>
|
||||||
@ -1364,7 +1397,7 @@ Bunu aktivləşdirmə daha yüksək video keyfiyyətləri əngəlin silə bilər
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Sürət dialoq düyməsini göstər</string>
|
<string name="revanced_playback_speed_dialog_button_title">Sürət dialoq düyməsini göstər</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Düymə göstərilir</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Düymə göstərilir. Oynatma sürətin standart olaraq qaytarmaq üçün toxunub saxla</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Düymə göstərilmir</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Düymə göstərilmir</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1376,6 +1409,7 @@ Bunu aktivləşdirmə daha yüksək video keyfiyyətləri əngəlin silə bilər
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Fərdi sürətlər %s dəyərindən az olmalıdır</string>
|
<string name="revanced_custom_playback_speeds_invalid">Fərdi sürətlər %s dəyərindən az olmalıdır</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Fərdi oynatma sürətləri etibarsızdır</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Fərdi oynatma sürətləri etibarsızdır</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Avtomatik</string>
|
<string name="revanced_custom_playback_speeds_auto">Avtomatik</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Oynatma sürəti sıfırlandı: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Xüsusi toxunma və saxlanılma sürəti</string>
|
<string name="revanced_speed_tap_and_hold_title">Xüsusi toxunma və saxlanılma sürəti</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">0-8 arası oynatma sürəti</string>
|
<string name="revanced_speed_tap_and_hold_summary">0-8 arası oynatma sürəti</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -750,6 +750,9 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Схаваць метку месцазнаходжання</string>
|
<string name="revanced_hide_shorts_location_label_title">Схаваць метку месцазнаходжання</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Метка месцазнаходжання схавана</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Метка месцазнаходжання схавана</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Паказана метка месцазнаходжання</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Паказана метка месцазнаходжання</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Схаваць панэль каментарыяў</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">Панель каментарыяў схаваная</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">Панэль каментарыяў паказана</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Схаваць кнопку «Захаваць музыку»</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Схаваць кнопку «Захаваць музыку»</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Кнопка захавання музыкі схавана</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Кнопка захавання музыкі схавана</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Кнопка захавання музыкі паказана</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Кнопка захавання музыкі паказана</string>
|
||||||
@ -1399,7 +1402,7 @@ Second \"item\" text"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Паказаць дыялогавую кнопку хуткасці</string>
|
<string name="revanced_playback_speed_dialog_button_title">Паказаць дыялогавую кнопку хуткасці</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Паказана кнопка</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Кнопка паказана. Націсніце і ўтрымлівайце, каб скінуць хуткасць прайгравання да стандартнай</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Кнопка не паказваецца</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Кнопка не паказваецца</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1411,6 +1414,7 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Нестандартныя хуткасці павінны быць менш за %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">Нестандартныя хуткасці павінны быць менш за %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Несапраўдныя нестандартныя хуткасці прайгравання</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Несапраўдныя нестандартныя хуткасці прайгравання</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Аўто</string>
|
<string name="revanced_custom_playback_speeds_auto">Аўто</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Хуткасць прайгравання скінута да: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Уласны хуткасць націску і ўтрымання</string>
|
<string name="revanced_speed_tap_and_hold_title">Уласны хуткасць націску і ўтрымання</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">Хуткасць прайгравання між 0-8</string>
|
<string name="revanced_speed_tap_and_hold_summary">Хуткасць прайгравання між 0-8</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -750,6 +750,9 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Етикет за местоположение</string>
|
<string name="revanced_hide_shorts_location_label_title">Етикет за местоположение</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Етикет за местоположение е скрит</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Етикет за местоположение е скрит</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Етикет за местоположение се показва</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Етикет за местоположение се показва</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Скриване на панела за коментари</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">Панелът за коментари е скрит</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">Панелът за коментари е показан</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Скриване на бутона Save music</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Скриване на бутона Save music</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Бутонът за запазване на музика е скрит</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Бутонът за запазване на музика е скрит</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Показан е бутонът за запазване на музика</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Показан е бутонът за запазване на музика</string>
|
||||||
@ -1398,7 +1401,7 @@ Second \"item\" text"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Показване бутон за скорост</string>
|
<string name="revanced_playback_speed_dialog_button_title">Показване бутон за скорост</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Бутона \"Уведоми ме\" се показва.</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Бутонът е показан. Докоснете и задръжте, за да върнете скоростта на възпроизвеждане към стойността по подразбиране</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Бутонът не е показан</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Бутонът не е показан</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1410,6 +1413,7 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Персонализираните скорости трябва да са по-малки от %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">Персонализираните скорости трябва да са по-малки от %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Невалидни персонализирани скорости на възпроизвеждане</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Невалидни персонализирани скорости на възпроизвеждане</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Авто</string>
|
<string name="revanced_custom_playback_speeds_auto">Авто</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Скоростта на възпроизвеждане е нулирана на: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Персонализирана скорост при докосване и задържане</string>
|
<string name="revanced_speed_tap_and_hold_title">Персонализирана скорост при докосване и задържане</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">Скорост на възпроизвеждане между 0-8</string>
|
<string name="revanced_speed_tap_and_hold_summary">Скорост на възпроизвеждане между 0-8</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -746,6 +746,9 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
|||||||
<string name="revanced_hide_shorts_location_label_title">অবস্থান লেবেল লুকান</string>
|
<string name="revanced_hide_shorts_location_label_title">অবস্থান লেবেল লুকান</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">অবস্থান লেবেল লুকিয়ে রয়েছে</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">অবস্থান লেবেল লুকিয়ে রয়েছে</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">অবস্থান লেবেল প্রদর্শিত হয়েছে</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">অবস্থান লেবেল প্রদর্শিত হয়েছে</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">মন্তব্য প্যানেল লুকান</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">মন্তব্য প্যানেল লুকানো আছে</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">মন্তব্য প্যানেল দেখানো হয়েছে</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">সেভ মিউজিক বোতামটি লুকান</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">সেভ মিউজিক বোতামটি লুকান</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Save music বোতাম লুকানো আছে</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Save music বোতাম লুকানো আছে</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Save music বোতাম দেখানো হচ্ছে</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Save music বোতাম দেখানো হচ্ছে</string>
|
||||||
@ -1394,7 +1397,7 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">স্পিড ডায়ালগ বোতাম দেখান</string>
|
<string name="revanced_playback_speed_dialog_button_title">স্পিড ডায়ালগ বোতাম দেখান</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">বোতাম প্রদর্শিত হয়েছে</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">বোতামটি দেখানো হয়েছে। প্লেব্যাক স্পীড ডিফল্টে রিসেট করতে ট্যাপ করে ধরে রাখুন।</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">বোতাম প্রদর্শিত হয়নি</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">বোতাম প্রদর্শিত হয়নি</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1406,6 +1409,7 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">কাস্টম গতি %s এর চেয়ে কম হতে হবে</string>
|
<string name="revanced_custom_playback_speeds_invalid">কাস্টম গতি %s এর চেয়ে কম হতে হবে</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">অবৈধ কাস্টম প্লেব্যাক গতি</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">অবৈধ কাস্টম প্লেব্যাক গতি</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">স্বতস্ফূর্তভাবে</string>
|
<string name="revanced_custom_playback_speeds_auto">স্বতস্ফূর্তভাবে</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">প্লেব্যাক গতি রিসেট করা হয়েছে: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">কাস্টম ট্যাপ এন্ড হোল্ড স্পিড</string>
|
<string name="revanced_speed_tap_and_hold_title">কাস্টম ট্যাপ এন্ড হোল্ড স্পিড</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">০-৮ এর মধ্যে প্লেব্যাক স্পিড</string>
|
<string name="revanced_speed_tap_and_hold_summary">০-৮ এর মধ্যে প্লেব্যাক স্পিড</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -750,6 +750,9 @@ Per mostrar el menú de la pista d'àudio, canvieu \"Suplanta els fluxos de víd
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Amaga l\'etiqueta de ubicació</string>
|
<string name="revanced_hide_shorts_location_label_title">Amaga l\'etiqueta de ubicació</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">L\'etiqueta de ubicació està oculta</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">L\'etiqueta de ubicació està oculta</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">L\'etiqueta de ubicació es mostra</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">L\'etiqueta de ubicació es mostra</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Amaga el panell de comentaris</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">El panell de comentaris està ocult</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">Es mostra el panell de comentaris</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Amaga el botó Desa música</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Amaga el botó Desa música</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">El botó de desar música està ocult</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">El botó de desar música està ocult</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">El botó de desar música es mostra</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">El botó de desar música es mostra</string>
|
||||||
@ -1397,7 +1400,7 @@ Si actives aquesta opció, es poden desbloquejar qualitats de vídeo més altes"
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Mostra el botó del diàleg de velocitat</string>
|
<string name="revanced_playback_speed_dialog_button_title">Mostra el botó del diàleg de velocitat</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">El botó es mostra</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Es mostra el botó. Toqueu i manteniu premut per restablir la velocitat de reproducció per defecte</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">El botó no es mostra</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">El botó no es mostra</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1409,6 +1412,7 @@ Si actives aquesta opció, es poden desbloquejar qualitats de vídeo més altes"
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Les velocitats personalitzades han de ser inferiors a %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">Les velocitats personalitzades han de ser inferiors a %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Velocitats de reproducció personalitzades no vàlides</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Velocitats de reproducció personalitzades no vàlides</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Automàtic</string>
|
<string name="revanced_custom_playback_speeds_auto">Automàtic</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Velocitat de reproducció restablerta a: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Velocitat personalitzada de mantenir premut</string>
|
<string name="revanced_speed_tap_and_hold_title">Velocitat personalitzada de mantenir premut</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">Velocitat de reproducció entre 0 i 8</string>
|
<string name="revanced_speed_tap_and_hold_summary">Velocitat de reproducció entre 0 i 8</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -750,6 +750,9 @@ Chcete-li zobrazit nabídku zvukové stopy, změňte možnost „Zfalšovat stre
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Skrýt štítek umístění</string>
|
<string name="revanced_hide_shorts_location_label_title">Skrýt štítek umístění</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Štítek umístění je skrytý</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Štítek umístění je skrytý</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Štítek umístění je zobrazen</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Štítek umístění je zobrazen</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Skrýt panel Komentáře</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">Panel komentářů je skrytý</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">Panel Komentáře je zobrazen</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Skrýt tlačítko Uložit hudbu</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Skrýt tlačítko Uložit hudbu</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Tlačítko Uložit hudbu je skryté</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Tlačítko Uložit hudbu je skryté</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Tlačítko Uložit hudbu je zobrazeno</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Tlačítko Uložit hudbu je zobrazeno</string>
|
||||||
@ -1397,7 +1400,7 @@ Povolením této funkce lze odemknout vyšší kvality videa"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Zobrazit tlačítko dialogu rychlosti</string>
|
<string name="revanced_playback_speed_dialog_button_title">Zobrazit tlačítko dialogu rychlosti</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Tlačítko je zobrazeno</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Tlačítko je zobrazeno. Klepnutím a podržením obnovíte výchozí rychlost přehrávání</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Tlačítko se nezobrazuje</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Tlačítko se nezobrazuje</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1409,6 +1412,7 @@ Povolením této funkce lze odemknout vyšší kvality videa"</string>
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Vlastní rychlosti musí být menší než %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">Vlastní rychlosti musí být menší než %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Neplatné vlastní rychlosti přehrávání</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Neplatné vlastní rychlosti přehrávání</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Automaticky</string>
|
<string name="revanced_custom_playback_speeds_auto">Automaticky</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Rychlost přehrávání obnovena na: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Vlastní rychlost stisknutí a podržení</string>
|
<string name="revanced_speed_tap_and_hold_title">Vlastní rychlost stisknutí a podržení</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">Rychlost přehrávání 0 až 8</string>
|
<string name="revanced_speed_tap_and_hold_summary">Rychlost přehrávání 0 až 8</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -169,6 +169,8 @@ Du modtager ikke notifikationer om uventede hændelser."</string>
|
|||||||
<string name="revanced_hide_join_membership_button_summary_off">Knappen er vist</string>
|
<string name="revanced_hide_join_membership_button_summary_off">Knappen er vist</string>
|
||||||
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
|
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
|
||||||
<string name="revanced_hide_for_you_shelf_title">Skjul hylden \"Til dig\"</string>
|
<string name="revanced_hide_for_you_shelf_title">Skjul hylden \"Til dig\"</string>
|
||||||
|
<string name="revanced_hide_for_you_shelf_summary_on">Hylde på kanalsiden er skjult</string>
|
||||||
|
<string name="revanced_hide_for_you_shelf_summary_off">Hylde på kanalsiden vises</string>
|
||||||
<!-- 'Notify me' should be translated using the same localized wording YouTube displays.
|
<!-- 'Notify me' should be translated using the same localized wording YouTube displays.
|
||||||
This item appear in the subscription feed for future livestreams or unreleased videos. -->
|
This item appear in the subscription feed for future livestreams or unreleased videos. -->
|
||||||
<string name="revanced_hide_notify_me_button_title">Skjul knappen \'Underret mig\'</string>
|
<string name="revanced_hide_notify_me_button_title">Skjul knappen \'Underret mig\'</string>
|
||||||
@ -196,6 +198,8 @@ Du modtager ikke notifikationer om uventede hændelser."</string>
|
|||||||
<string name="revanced_hide_chips_shelf_summary_on">Chips hylde er skjult</string>
|
<string name="revanced_hide_chips_shelf_summary_on">Chips hylde er skjult</string>
|
||||||
<string name="revanced_hide_chips_shelf_summary_off">Chips hylde er vist</string>
|
<string name="revanced_hide_chips_shelf_summary_off">Chips hylde er vist</string>
|
||||||
<string name="revanced_hide_expandable_chip_title">Skjul udvidelige kort under videoer</string>
|
<string name="revanced_hide_expandable_chip_title">Skjul udvidelige kort under videoer</string>
|
||||||
|
<string name="revanced_hide_expandable_chip_summary_on">Udvidelseskort er skjult</string>
|
||||||
|
<string name="revanced_hide_expandable_chip_summary_off">Udvidelseskort vises</string>
|
||||||
<string name="revanced_hide_community_posts_title">Skjul fællesskabs indlæg</string>
|
<string name="revanced_hide_community_posts_title">Skjul fællesskabs indlæg</string>
|
||||||
<string name="revanced_hide_community_posts_summary_on">Fællesskabs indlæg er skjult</string>
|
<string name="revanced_hide_community_posts_summary_on">Fællesskabs indlæg er skjult</string>
|
||||||
<string name="revanced_hide_community_posts_summary_off">Fællesskabs indlæg er vist</string>
|
<string name="revanced_hide_community_posts_summary_off">Fællesskabs indlæg er vist</string>
|
||||||
@ -211,6 +215,7 @@ Du modtager ikke notifikationer om uventede hændelser."</string>
|
|||||||
<string name="revanced_hide_community_guidelines_title">Skjul fællesskabs retningslinjer</string>
|
<string name="revanced_hide_community_guidelines_title">Skjul fællesskabs retningslinjer</string>
|
||||||
<string name="revanced_hide_community_guidelines_summary_on">Fællesskabets retningslinjer er skjult</string>
|
<string name="revanced_hide_community_guidelines_summary_on">Fællesskabets retningslinjer er skjult</string>
|
||||||
<string name="revanced_hide_community_guidelines_summary_off">Der er opstillet EF-retningslinjer</string>
|
<string name="revanced_hide_community_guidelines_summary_off">Der er opstillet EF-retningslinjer</string>
|
||||||
|
<string name="revanced_hide_subscribers_community_guidelines_title">Skjul retningslinjer for abonnenter</string>
|
||||||
<string name="revanced_hide_subscribers_community_guidelines_summary_on">Abonnenter community retningslinjer er skjult</string>
|
<string name="revanced_hide_subscribers_community_guidelines_summary_on">Abonnenter community retningslinjer er skjult</string>
|
||||||
<string name="revanced_hide_subscribers_community_guidelines_summary_off">Abonnenter community retningslinjer er vist</string>
|
<string name="revanced_hide_subscribers_community_guidelines_summary_off">Abonnenter community retningslinjer er vist</string>
|
||||||
<string name="revanced_hide_channel_member_shelf_title">Skjul kanalmedlems hylde</string>
|
<string name="revanced_hide_channel_member_shelf_title">Skjul kanalmedlems hylde</string>
|
||||||
@ -255,10 +260,25 @@ Du modtager ikke notifikationer om uventede hændelser."</string>
|
|||||||
<string name="revanced_hide_ask_section_title">Skjul Spørg</string>
|
<string name="revanced_hide_ask_section_title">Skjul Spørg</string>
|
||||||
<string name="revanced_hide_ask_section_summary_on">Spørgsmål sektionen er skjult</string>
|
<string name="revanced_hide_ask_section_summary_on">Spørgsmål sektionen er skjult</string>
|
||||||
<string name="revanced_hide_ask_section_summary_off">Spørgsmål sektionen vises</string>
|
<string name="revanced_hide_ask_section_summary_off">Spørgsmål sektionen vises</string>
|
||||||
|
<string name="revanced_hide_attributes_section_title">Skjul attributter</string>
|
||||||
|
<string name="revanced_hide_attributes_section_summary_on">Fremhævede steder, spil, musik og sektioner med omtalte personer er skjult</string>
|
||||||
|
<string name="revanced_hide_attributes_section_summary_off">Fremhævede steder, spil, musik og sektioner med omtalte personer vises</string>
|
||||||
|
<string name="revanced_hide_chapters_section_title">Skjul kapitler</string>
|
||||||
<string name="revanced_hide_chapters_section_summary_on">Kapitler sektion er skjult</string>
|
<string name="revanced_hide_chapters_section_summary_on">Kapitler sektion er skjult</string>
|
||||||
<string name="revanced_hide_chapters_section_summary_off">Kapitel afsnit er vist</string>
|
<string name="revanced_hide_chapters_section_summary_off">Kapitel afsnit er vist</string>
|
||||||
|
<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_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>
|
||||||
|
<string name="revanced_hide_info_cards_section_title">Skjul infokort</string>
|
||||||
<string name="revanced_hide_info_cards_section_summary_on">Info-kort sektion er skjult</string>
|
<string name="revanced_hide_info_cards_section_summary_on">Info-kort sektion er skjult</string>
|
||||||
<string name="revanced_hide_info_cards_section_summary_off">Info-kort sektion er vist</string>
|
<string name="revanced_hide_info_cards_section_summary_off">Info-kort sektion er vist</string>
|
||||||
|
<string name="revanced_hide_key_concepts_section_title">Skjul \"Nøglebegreber\"</string>
|
||||||
|
<string name="revanced_hide_key_concepts_section_summary_on">Nøglebegrebssektionen er skjult</string>
|
||||||
|
<string name="revanced_hide_key_concepts_section_summary_off">Nøglebegrebssektionen vises</string>
|
||||||
|
<string name="revanced_hide_transcript_section_title">Skjul udskrift</string>
|
||||||
<string name="revanced_hide_transcript_section_summary_on">Afsnittet er skjult</string>
|
<string name="revanced_hide_transcript_section_summary_on">Afsnittet er skjult</string>
|
||||||
<string name="revanced_hide_transcript_section_summary_off">Afsnittet er vist</string>
|
<string name="revanced_hide_transcript_section_summary_off">Afsnittet er vist</string>
|
||||||
<string name="revanced_hide_description_components_screen_title">Video beskrivelse</string>
|
<string name="revanced_hide_description_components_screen_title">Video beskrivelse</string>
|
||||||
@ -283,10 +303,17 @@ Du modtager ikke notifikationer om uventede hændelser."</string>
|
|||||||
<string name="revanced_hide_comments_ai_summary_summary_on">Kommentar-oversigt er skjult</string>
|
<string name="revanced_hide_comments_ai_summary_summary_on">Kommentar-oversigt er skjult</string>
|
||||||
<string name="revanced_hide_comments_ai_summary_summary_off">Kommentar-oversigt er vist</string>
|
<string name="revanced_hide_comments_ai_summary_summary_off">Kommentar-oversigt er vist</string>
|
||||||
<string name="revanced_hide_comments_by_members_header_title">Skjul \'Kommentarer fra medlemmer\' header</string>
|
<string name="revanced_hide_comments_by_members_header_title">Skjul \'Kommentarer fra medlemmer\' header</string>
|
||||||
|
<string name="revanced_hide_comments_by_members_header_summary_on">Kommentarer fra medlemmers overskrift er skjult</string>
|
||||||
|
<string name="revanced_hide_comments_by_members_header_summary_off">Kommentarer fra medlemmers overskrift vises</string>
|
||||||
<string name="revanced_hide_comments_section_title">Skjul kommentarsektion</string>
|
<string name="revanced_hide_comments_section_title">Skjul kommentarsektion</string>
|
||||||
<string name="revanced_hide_comments_section_summary_on">Kommentarer sektion er skjult</string>
|
<string name="revanced_hide_comments_section_summary_on">Kommentarer sektion er skjult</string>
|
||||||
<string name="revanced_hide_comments_section_summary_off">Kommentarer sektion er vist</string>
|
<string name="revanced_hide_comments_section_summary_off">Kommentarer sektion er vist</string>
|
||||||
<string name="revanced_hide_comments_create_a_short_button_title">Skjul knappen \"Opret en Short\"</string>
|
<string name="revanced_hide_comments_create_a_short_button_title">Skjul knappen \"Opret en Short\"</string>
|
||||||
|
<string name="revanced_hide_comments_create_a_short_button_summary_on">Opret en Short knap er skjult</string>
|
||||||
|
<string name="revanced_hide_comments_create_a_short_button_summary_off">Opret en Short knap vises</string>
|
||||||
|
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Skjul emoji- og tidsstempelknapper</string>
|
||||||
|
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Emoji- og tidsstempelknapper er skjult</string>
|
||||||
|
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Emoji- og tidsstempelknapper vises</string>
|
||||||
<string name="revanced_hide_comments_preview_comment_title">Skjul forhåndsvisning kommentar</string>
|
<string name="revanced_hide_comments_preview_comment_title">Skjul forhåndsvisning kommentar</string>
|
||||||
<string name="revanced_hide_comments_preview_comment_summary_on">Forhåndsvisning kommentar er skjult</string>
|
<string name="revanced_hide_comments_preview_comment_summary_on">Forhåndsvisning kommentar er skjult</string>
|
||||||
<string name="revanced_hide_comments_preview_comment_summary_off">Forhåndsvis kommentar er vist</string>
|
<string name="revanced_hide_comments_preview_comment_summary_off">Forhåndsvis kommentar er vist</string>
|
||||||
@ -370,8 +397,12 @@ Denne funktion er kun tilgængelig for ældre enheder"</string>
|
|||||||
<string name="revanced_hide_player_store_shelf_summary_on">Shopping hylde er skjult</string>
|
<string name="revanced_hide_player_store_shelf_summary_on">Shopping hylde er skjult</string>
|
||||||
<string name="revanced_hide_player_store_shelf_summary_off">Shopping hylde er vist</string>
|
<string name="revanced_hide_player_store_shelf_summary_off">Shopping hylde er vist</string>
|
||||||
<string name="revanced_hide_shopping_links_title">Skjul shopping links i video beskrivelse</string>
|
<string name="revanced_hide_shopping_links_title">Skjul shopping links i video beskrivelse</string>
|
||||||
|
<string name="revanced_hide_shopping_links_summary_on">Shopping links i videobeskrivelsen er skjult</string>
|
||||||
|
<string name="revanced_hide_shopping_links_summary_off">Shopping links i videobeskrivelsen vises</string>
|
||||||
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<string name="revanced_hide_visit_store_button_title">Skjul knappen \'Besøg butik\' på kanalsider</string>
|
<string name="revanced_hide_visit_store_button_title">Skjul knappen \'Besøg butik\' på kanalsider</string>
|
||||||
|
<string name="revanced_hide_visit_store_button_summary_on">Knap på kanalsiden er skjult</string>
|
||||||
|
<string name="revanced_hide_visit_store_button_summary_off">Knap på kanalsiden vises</string>
|
||||||
<string name="revanced_hide_web_search_results_title">Skjul søgeresultater</string>
|
<string name="revanced_hide_web_search_results_title">Skjul søgeresultater</string>
|
||||||
<string name="revanced_hide_web_search_results_summary_on">Websøgeresultater er skjult</string>
|
<string name="revanced_hide_web_search_results_summary_on">Websøgeresultater er skjult</string>
|
||||||
<string name="revanced_hide_web_search_results_summary_off">Websøgeresultater vises</string>
|
<string name="revanced_hide_web_search_results_summary_off">Websøgeresultater vises</string>
|
||||||
@ -411,6 +442,8 @@ Denne funktion er kun tilgængelig for ældre enheder"</string>
|
|||||||
<string name="revanced_external_downloader_screen_title">Eksterne downloads</string>
|
<string name="revanced_external_downloader_screen_title">Eksterne downloads</string>
|
||||||
<string name="revanced_external_downloader_screen_summary">Indstillinger for brug af en ekstern downloader</string>
|
<string name="revanced_external_downloader_screen_summary">Indstillinger for brug af en ekstern downloader</string>
|
||||||
<string name="revanced_external_downloader_title">Vis ekstern download-knap</string>
|
<string name="revanced_external_downloader_title">Vis ekstern download-knap</string>
|
||||||
|
<string name="revanced_external_downloader_summary_on">Download-knappen i afspilleren vises</string>
|
||||||
|
<string name="revanced_external_downloader_summary_off">Download-knappen i afspilleren vises ikke</string>
|
||||||
<!-- 'download action button' should be translated using the same wording as the translation of 'revanced_hide_download_button_title' -->
|
<!-- 'download action button' should be translated using the same wording as the translation of 'revanced_hide_download_button_title' -->
|
||||||
<string name="revanced_external_downloader_action_button_title">Overskriv knappen Download-handling</string>
|
<string name="revanced_external_downloader_action_button_title">Overskriv knappen Download-handling</string>
|
||||||
<string name="revanced_external_downloader_action_button_summary_on">Download-knappen åbner din eksterne downloader</string>
|
<string name="revanced_external_downloader_action_button_summary_on">Download-knappen åbner din eksterne downloader</string>
|
||||||
@ -489,6 +522,7 @@ Juster lydstyrken ved at swipe lodret i højre side af skærmen"</string>
|
|||||||
<patch id="layout.buttons.action.hideButtonsPatch">
|
<patch id="layout.buttons.action.hideButtonsPatch">
|
||||||
<string name="revanced_hide_buttons_screen_title">Handlingsknapper</string>
|
<string name="revanced_hide_buttons_screen_title">Handlingsknapper</string>
|
||||||
<string name="revanced_hide_buttons_screen_summary">Skjul eller vis knapper under videoer</string>
|
<string name="revanced_hide_buttons_screen_summary">Skjul eller vis knapper under videoer</string>
|
||||||
|
<string name="revanced_disable_like_subscribe_glow_title">Deaktiver Like og Abonner-knappen glød</string>
|
||||||
<string name="revanced_disable_like_subscribe_glow_summary_on">Lykke- og abonnér-knappen gløder ikke, når den nævnes</string>
|
<string name="revanced_disable_like_subscribe_glow_summary_on">Lykke- og abonnér-knappen gløder ikke, når den nævnes</string>
|
||||||
<string name="revanced_disable_like_subscribe_glow_summary_off">Lykke- og abonnér-knappen gløder, når den nævnes</string>
|
<string name="revanced_disable_like_subscribe_glow_summary_off">Lykke- og abonnér-knappen gløder, når den nævnes</string>
|
||||||
<string name="revanced_hide_like_dislike_button_title">Skjul Like og Dislike</string>
|
<string name="revanced_hide_like_dislike_button_title">Skjul Like og Dislike</string>
|
||||||
@ -716,6 +750,9 @@ For at vise lydspormenuen skal du ændre \"Spoof videostream\" til iOS TV"</stri
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Skjul placeringsetiket</string>
|
<string name="revanced_hide_shorts_location_label_title">Skjul placeringsetiket</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Placeringsetiket er skjult</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Placeringsetiket er skjult</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Placeringsetiket er vist</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Placeringsetiket er vist</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Skjul kommentarfeltet</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">Kommentarfeltet er skjult</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">Kommentarfeltet vises</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Skjul knappen Gem musik</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Skjul knappen Gem musik</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Gem musik knap er skjult</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Gem musik knap er skjult</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Gem musik knap er vist</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Gem musik knap er vist</string>
|
||||||
@ -823,6 +860,7 @@ Indstillinger → Afspilning → Afspil næste video automatisk"</string>
|
|||||||
<!-- Toast shown if network connection times out. Translations of this should not be longer than the original English or the text can be clipped and not entirely shown. -->
|
<!-- Toast shown if network connection times out. Translations of this should not be longer than the original English or the text can be clipped and not entirely shown. -->
|
||||||
<string name="revanced_ryd_failure_connection_timeout">Dislikerer midlertidigt ikke tilgængelig (API-timeout ud)</string>
|
<string name="revanced_ryd_failure_connection_timeout">Dislikerer midlertidigt ikke tilgængelig (API-timeout ud)</string>
|
||||||
<string name="revanced_ryd_failure_connection_status_code">Dislikationer er ikke tilgængelige (status %d)</string>
|
<string name="revanced_ryd_failure_connection_status_code">Dislikationer er ikke tilgængelige (status %d)</string>
|
||||||
|
<string name="revanced_ryd_failure_client_rate_limit_requested">Synes ikke godt om er ikke tilgængelige (klient API-grænse)</string>
|
||||||
<string name="revanced_ryd_failure_generic">Dislikationer ikke tilgængelige (%s)</string>
|
<string name="revanced_ryd_failure_generic">Dislikationer ikke tilgængelige (%s)</string>
|
||||||
<!-- Toast shown if the user enables RYD while a video is opened, and then tries to vote for the video. -->
|
<!-- Toast shown if the user enables RYD while a video is opened, and then tries to vote for the video. -->
|
||||||
<string name="revanced_ryd_failure_ryd_enabled_while_playing_video_then_user_voted">Genindlæs video for at stemme ved hjælp af Return YouTube Dislike</string>
|
<string name="revanced_ryd_failure_ryd_enabled_while_playing_video_then_user_voted">Genindlæs video for at stemme ved hjælp af Return YouTube Dislike</string>
|
||||||
@ -831,7 +869,13 @@ Indstillinger → Afspilning → Afspil næste video automatisk"</string>
|
|||||||
<string name="revanced_ryd_enabled_summary_on">Dislikationer vises</string>
|
<string name="revanced_ryd_enabled_summary_on">Dislikationer vises</string>
|
||||||
<string name="revanced_ryd_enabled_summary_off">Dislikationer vises ikke</string>
|
<string name="revanced_ryd_enabled_summary_off">Dislikationer vises ikke</string>
|
||||||
<string name="revanced_ryd_shorts_title">Vis ikke på Shorts</string>
|
<string name="revanced_ryd_shorts_title">Vis ikke på Shorts</string>
|
||||||
|
<string name="revanced_ryd_shorts_summary_on">"Synes ikke godt om på Shorts vises
|
||||||
|
|
||||||
|
Begrænsning: Synes ikke godt om vises muligvis ikke i inkognitotilstand"</string>
|
||||||
|
<string name="revanced_ryd_shorts_summary_off">Synes ikke godt om på Shorts vises ikke</string>
|
||||||
<string name="revanced_ryd_dislike_percentage_title">Synes ikke som procent</string>
|
<string name="revanced_ryd_dislike_percentage_title">Synes ikke som procent</string>
|
||||||
|
<string name="revanced_ryd_dislike_percentage_summary_on">Synes ikke godt om vises som en procentdel</string>
|
||||||
|
<string name="revanced_ryd_dislike_percentage_summary_off">Synes ikke godt om vises som et tal</string>
|
||||||
<!-- Translations should use language similar to 'revanced_sb_enable_compact_skip_button' -->
|
<!-- Translations should use language similar to 'revanced_sb_enable_compact_skip_button' -->
|
||||||
<string name="revanced_ryd_compact_layout_title">Kompakt like-knap</string>
|
<string name="revanced_ryd_compact_layout_title">Kompakt like-knap</string>
|
||||||
<string name="revanced_ryd_compact_layout_summary_on">Lideknap stylet for mindste bredde</string>
|
<string name="revanced_ryd_compact_layout_summary_on">Lideknap stylet for mindste bredde</string>
|
||||||
@ -892,15 +936,20 @@ Denne funktion fungerer bedst med en videokvalitet på 720p eller lavere og ved
|
|||||||
<string name="revanced_sb_square_layout_sum_on">Knapper og kontrolelementer er firkantede</string>
|
<string name="revanced_sb_square_layout_sum_on">Knapper og kontrolelementer er firkantede</string>
|
||||||
<string name="revanced_sb_square_layout_sum_off">Knapper og kontrolelementer er afrundede</string>
|
<string name="revanced_sb_square_layout_sum_off">Knapper og kontrolelementer er afrundede</string>
|
||||||
<!-- Translations should use language similar to 'revanced_ryd_compact_layout_title' -->
|
<!-- Translations should use language similar to 'revanced_ryd_compact_layout_title' -->
|
||||||
|
<string name="revanced_sb_enable_compact_skip_button">Brug kompakt Spring over-knap</string>
|
||||||
<string name="revanced_sb_enable_compact_skip_button_sum_on">Skip knap stylet for mindste bredde</string>
|
<string name="revanced_sb_enable_compact_skip_button_sum_on">Skip knap stylet for mindste bredde</string>
|
||||||
<string name="revanced_sb_enable_compact_skip_button_sum_off">Skip knap stylet for bedste udseende</string>
|
<string name="revanced_sb_enable_compact_skip_button_sum_off">Skip knap stylet for bedste udseende</string>
|
||||||
|
<string name="revanced_sb_enable_auto_hide_skip_segment_button">Skjul automatisk Spring over-knap</string>
|
||||||
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_on">Skip knap skjuler efter et par sekunder</string>
|
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_on">Skip knap skjuler efter et par sekunder</string>
|
||||||
|
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_off">Spring over-knappen vises for hele segmentet</string>
|
||||||
|
<string name="revanced_sb_general_skiptoast">Vis en toast ved spring</string>
|
||||||
<string name="revanced_sb_general_skiptoast_sum_on">Toast vises, når et segment automatisk springes over. Tryk her for at se et eksempel</string>
|
<string name="revanced_sb_general_skiptoast_sum_on">Toast vises, når et segment automatisk springes over. Tryk her for at se et eksempel</string>
|
||||||
<string name="revanced_sb_general_skiptoast_sum_off">Toast er ikke vist. Tryk her for at se et eksempel</string>
|
<string name="revanced_sb_general_skiptoast_sum_off">Toast er ikke vist. Tryk her for at se et eksempel</string>
|
||||||
<string name="revanced_sb_general_time_without">Vis videolængde uden segmenter</string>
|
<string name="revanced_sb_general_time_without">Vis videolængde uden segmenter</string>
|
||||||
<string name="revanced_sb_general_time_without_sum_on">Videolængde minus alle segmenter, vist i parentes ved siden af den fulde videolængde</string>
|
<string name="revanced_sb_general_time_without_sum_on">Videolængde minus alle segmenter, vist i parentes ved siden af den fulde videolængde</string>
|
||||||
<string name="revanced_sb_general_time_without_sum_off">Fuld videolængde vist</string>
|
<string name="revanced_sb_general_time_without_sum_off">Fuld videolængde vist</string>
|
||||||
<string name="revanced_sb_create_segment_category">Opretter nye segmenter</string>
|
<string name="revanced_sb_create_segment_category">Opretter nye segmenter</string>
|
||||||
|
<string name="revanced_sb_enable_create_segment">Vis Opret nyt segment-knap</string>
|
||||||
<string name="revanced_sb_enable_create_segment_sum_on">Opret ny segmentknap vises</string>
|
<string name="revanced_sb_enable_create_segment_sum_on">Opret ny segmentknap vises</string>
|
||||||
<string name="revanced_sb_enable_create_segment_sum_off">Opret ny segmentknap vises ikke</string>
|
<string name="revanced_sb_enable_create_segment_sum_off">Opret ny segmentknap vises ikke</string>
|
||||||
<string name="revanced_sb_general_adjusting">Juster nyt segment trin</string>
|
<string name="revanced_sb_general_adjusting">Juster nyt segment trin</string>
|
||||||
@ -994,6 +1043,7 @@ Dit bruger-id er som en adgangskode, og det må aldrig deles.
|
|||||||
<string name="revanced_sb_skipped_multiple_segments">Oversprunget over flere segmenter</string>
|
<string name="revanced_sb_skipped_multiple_segments">Oversprunget over flere segmenter</string>
|
||||||
<string name="revanced_sb_skip_automatically">Spring automatisk over</string>
|
<string name="revanced_sb_skip_automatically">Spring automatisk over</string>
|
||||||
<string name="revanced_sb_skip_automatically_once">Spring automatisk over én gang</string>
|
<string name="revanced_sb_skip_automatically_once">Spring automatisk over én gang</string>
|
||||||
|
<string name="revanced_sb_skip_showbutton">Vis en Spring over-knap</string>
|
||||||
<string name="revanced_sb_skip_seekbaronly">Vis i søgelinjen</string>
|
<string name="revanced_sb_skip_seekbaronly">Vis i søgelinjen</string>
|
||||||
<string name="revanced_sb_skip_ignore">Deaktivér</string>
|
<string name="revanced_sb_skip_ignore">Deaktivér</string>
|
||||||
<string name="revanced_sb_submit_failed_invalid">Kan ikke indsende segment: %s</string>
|
<string name="revanced_sb_submit_failed_invalid">Kan ikke indsende segment: %s</string>
|
||||||
@ -1021,6 +1071,9 @@ Eksisterer allerede"</string>
|
|||||||
<string name="revanced_sb_new_segment_disabled_category">Kategori er deaktiveret i indstillinger. Aktivér kategori for at indsende.</string>
|
<string name="revanced_sb_new_segment_disabled_category">Kategori er deaktiveret i indstillinger. Aktivér kategori for at indsende.</string>
|
||||||
<string name="revanced_sb_new_segment_title">Nyt SponsorBlock segment</string>
|
<string name="revanced_sb_new_segment_title">Nyt SponsorBlock segment</string>
|
||||||
<string name="revanced_sb_new_segment_mark_time_as_question">Sæt %s som start eller afslutning af et nyt segment?</string>
|
<string name="revanced_sb_new_segment_mark_time_as_question">Sæt %s som start eller afslutning af et nyt segment?</string>
|
||||||
|
<string name="revanced_sb_new_segment_mark_start">Start</string>
|
||||||
|
<string name="revanced_sb_new_segment_mark_end">Slut</string>
|
||||||
|
<string name="revanced_sb_new_segment_now">Nu</string>
|
||||||
<string name="revanced_sb_new_segment_time_start">Tidspunkt for segmentet begynder på</string>
|
<string name="revanced_sb_new_segment_time_start">Tidspunkt for segmentet begynder på</string>
|
||||||
<string name="revanced_sb_new_segment_time_end">Tidspunkt for segmentet slutter på</string>
|
<string name="revanced_sb_new_segment_time_end">Tidspunkt for segmentet slutter på</string>
|
||||||
<string name="revanced_sb_new_segment_confirm_title">Er tiderne korrekte?</string>
|
<string name="revanced_sb_new_segment_confirm_title">Er tiderne korrekte?</string>
|
||||||
@ -1041,6 +1094,7 @@ Er du klar til at indsende?"</string>
|
|||||||
<string name="revanced_sb_new_segment_edit_by_hand_parse_error">Ugyldig tid givet</string>
|
<string name="revanced_sb_new_segment_edit_by_hand_parse_error">Ugyldig tid givet</string>
|
||||||
<string name="revanced_sb_stats_title">Statistik</string>
|
<string name="revanced_sb_stats_title">Statistik</string>
|
||||||
<!-- Shown in the settings preferences, and translations can be any text length. -->
|
<!-- Shown in the settings preferences, and translations can be any text length. -->
|
||||||
|
<string name="revanced_sb_stats_connection_failure">Statistikker er midlertidigt ikke tilgængelige (API er nede)</string>
|
||||||
<string name="revanced_sb_stats_loading">Indlæser...</string>
|
<string name="revanced_sb_stats_loading">Indlæser...</string>
|
||||||
<string name="revanced_sb_stats_sb_disabled">SponsorBloker er deaktiveret</string>
|
<string name="revanced_sb_stats_sb_disabled">SponsorBloker er deaktiveret</string>
|
||||||
<string name="revanced_sb_stats_username">Dit brugernavn: <b>%s</b></string>
|
<string name="revanced_sb_stats_username">Dit brugernavn: <b>%s</b></string>
|
||||||
@ -1093,6 +1147,7 @@ Hvis det senere slås fra, anbefales det at rydde app-dataene for at forhindre U
|
|||||||
This is because the 'General layout' menu uses alphabetic sorting, and it functionally works better if the spoof target selector appears below the 'Spoof app version' UI switch -->
|
This is because the 'General layout' menu uses alphabetic sorting, and it functionally works better if the spoof target selector appears below the 'Spoof app version' UI switch -->
|
||||||
<string name="revanced_spoof_app_version_target_title">Spoof app version mål</string>
|
<string name="revanced_spoof_app_version_target_title">Spoof app version mål</string>
|
||||||
<string name="revanced_spoof_app_version_target_entry_1">19.35.36 - Gendan gamle Shorts player ikoner</string>
|
<string name="revanced_spoof_app_version_target_entry_1">19.35.36 - Gendan gamle Shorts player ikoner</string>
|
||||||
|
<string name="revanced_spoof_app_version_target_entry_2">19.01.34 - Gendan gamle navigationsikoner</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.startpage.changeStartPagePatch">
|
<patch id="layout.startpage.changeStartPagePatch">
|
||||||
<string name="revanced_change_start_page_title">Skift startside</string>
|
<string name="revanced_change_start_page_title">Skift startside</string>
|
||||||
@ -1250,9 +1305,13 @@ Tryk her for at lære mere om DeArrow"</string>
|
|||||||
<string name="revanced_alt_thumbnail_stills_time_entry_2">Midten af video</string>
|
<string name="revanced_alt_thumbnail_stills_time_entry_2">Midten af video</string>
|
||||||
<string name="revanced_alt_thumbnail_stills_time_entry_3">Slut på video</string>
|
<string name="revanced_alt_thumbnail_stills_time_entry_3">Slut på video</string>
|
||||||
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
|
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
|
||||||
|
<string name="revanced_alt_thumbnail_dearrow_error">DeArrow er midlertidigt ikke tilgængelig (statuskode: %s)</string>
|
||||||
|
<string name="revanced_alt_thumbnail_dearrow_error_generic">DeArrow er midlertidigt ikke tilgængelig</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="misc.announcements.announcementsPatch">
|
<patch id="misc.announcements.announcementsPatch">
|
||||||
<string name="revanced_announcements_title">Vis ReVanced meddelelser</string>
|
<string name="revanced_announcements_title">Vis ReVanced meddelelser</string>
|
||||||
|
<string name="revanced_announcements_summary_on">Meddelelser ved opstart vises</string>
|
||||||
|
<string name="revanced_announcements_summary_off">Meddelelser ved opstart vises ikke</string>
|
||||||
<string name="revanced_announcements_enabled_summary">Vis meddelelser ved opstart</string>
|
<string name="revanced_announcements_enabled_summary">Vis meddelelser ved opstart</string>
|
||||||
<string name="revanced_announcements_connection_failed">Kunne ikke forbinde til udbyder af annonceringer</string>
|
<string name="revanced_announcements_connection_failed">Kunne ikke forbinde til udbyder af annonceringer</string>
|
||||||
<string name="revanced_announcements_dialog_dismiss">Luk</string>
|
<string name="revanced_announcements_dialog_dismiss">Luk</string>
|
||||||
@ -1342,7 +1401,7 @@ Aktivering af dette kan låse op for højere videokvalitet"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Vis hastigheds dialogknap</string>
|
<string name="revanced_playback_speed_dialog_button_title">Vis hastigheds dialogknap</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Knap vises</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Knappen vises. Tryk og hold for at nulstille afspilningshastigheden til standard.</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Knap vises ikke</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Knap vises ikke</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1354,6 +1413,7 @@ Aktivering af dette kan låse op for højere videokvalitet"</string>
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Brugerdefinerede hastigheder skal være mindre end %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">Brugerdefinerede hastigheder skal være mindre end %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Ugyldige brugerdefinerede afspilningshastigheder</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Ugyldige brugerdefinerede afspilningshastigheder</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Automatisk</string>
|
<string name="revanced_custom_playback_speeds_auto">Automatisk</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Afspilningshastighed nulstillet til: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Brugerdefineret hastighed, når du holder den nede</string>
|
<string name="revanced_speed_tap_and_hold_title">Brugerdefineret hastighed, når du holder den nede</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">Afspilningshastighed mellem 0-8</string>
|
<string name="revanced_speed_tap_and_hold_summary">Afspilningshastighed mellem 0-8</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -743,6 +743,9 @@ Um das Audiotrack-Menü anzuzeigen, ändere \"Video-Streams fälschen\" zu iOS T
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Standortbezeichnung ausblenden</string>
|
<string name="revanced_hide_shorts_location_label_title">Standortbezeichnung ausblenden</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Ortsbezeichnung ist ausgeblendet</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Ortsbezeichnung ist ausgeblendet</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Ortsbezeichnung wird angezeigt</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Ortsbezeichnung wird angezeigt</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Kommentarbereich ausblenden</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">Das Kommentarfeld ist ausgeblendet</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">Kommentarbereich wird angezeigt</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">\'Musik speichern\'-Button ausblenden</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">\'Musik speichern\'-Button ausblenden</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Musikspeicher Button ist ausgeblendet</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Musikspeicher Button ist ausgeblendet</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Musikspeicher Button wird angezeigt</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Musikspeicher Button wird angezeigt</string>
|
||||||
@ -1391,7 +1394,7 @@ Durch Aktivieren dieser Option können höhere Videoqualitäten freigeschaltet w
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Zeige Geschwindigkeitsdialog Taste</string>
|
<string name="revanced_playback_speed_dialog_button_title">Zeige Geschwindigkeitsdialog Taste</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Button wird angezeigt</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Die Schaltfläche wird angezeigt. Tippen und halten, um die Wiedergabegeschwindigkeit auf die Standardeinstellung zurückzusetzen.</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Button wird nicht angezeigt</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Button wird nicht angezeigt</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1403,6 +1406,7 @@ Durch Aktivieren dieser Option können höhere Videoqualitäten freigeschaltet w
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Benutzerdefinierte Geschwindigkeiten müssen kleiner als %s sein</string>
|
<string name="revanced_custom_playback_speeds_invalid">Benutzerdefinierte Geschwindigkeiten müssen kleiner als %s sein</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Ungültige benutzerdefinierte Wiedergabegeschwindigkeiten</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Ungültige benutzerdefinierte Wiedergabegeschwindigkeiten</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Autom</string>
|
<string name="revanced_custom_playback_speeds_auto">Autom</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Wiedergabegeschwindigkeit zurückgesetzt auf: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Benutzerdefinierte Geschwindigkeit bei Tippen und Halten</string>
|
<string name="revanced_speed_tap_and_hold_title">Benutzerdefinierte Geschwindigkeit bei Tippen und Halten</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">Abspielgeschwindigkeit zwischen 0-8x</string>
|
<string name="revanced_speed_tap_and_hold_summary">Abspielgeschwindigkeit zwischen 0-8x</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -752,6 +752,9 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Ετικέτα τοποθεσίας</string>
|
<string name="revanced_hide_shorts_location_label_title">Ετικέτα τοποθεσίας</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Κρυμμένη</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Κρυμμένη</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Εμφανίζεται</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Εμφανίζεται</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Απόκρυψη πίνακα σχολίων</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">Η καρτέλα σχολίων είναι κρυμμένη</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">Εμφανίζεται ο πίνακας σχολίων</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Κουμπί «Αποθήκευση μουσικής»</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Κουμπί «Αποθήκευση μουσικής»</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Κρυμμένο</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Κρυμμένο</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Εμφανίζεται</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Εμφανίζεται</string>
|
||||||
@ -1397,7 +1400,7 @@ Second \"item\" text"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Εμφάνιση κουμπιού αλλαγής ταχύτητας</string>
|
<string name="revanced_playback_speed_dialog_button_title">Εμφάνιση κουμπιού αλλαγής ταχύτητας</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Το κουμπί εμφανίζεται</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Το κουμπί εμφανίζεται. Πατήστε παρατεταμένα για επαναφορά της ταχύτητας αναπαραγωγής στην προεπιλογή</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Το κουμπί δεν εμφανίζεται</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Το κουμπί δεν εμφανίζεται</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1409,6 +1412,7 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Οι ταχύτητες πρέπει να είναι μικρότερες από %sx</string>
|
<string name="revanced_custom_playback_speeds_invalid">Οι ταχύτητες πρέπει να είναι μικρότερες από %sx</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Μη έγκυρες προσαρμοσμένες ταχύτητες αναπαραγωγής</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Μη έγκυρες προσαρμοσμένες ταχύτητες αναπαραγωγής</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Αυτόματη</string>
|
<string name="revanced_custom_playback_speeds_auto">Αυτόματη</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Η ταχύτητα αναπαραγωγής επαναφέρθηκε σε: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Προσαρμοσμένη ταχύτητα παρατεταμένου πατήματος</string>
|
<string name="revanced_speed_tap_and_hold_title">Προσαρμοσμένη ταχύτητα παρατεταμένου πατήματος</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">Ταχύτητα αναπαραγωγής μεταξύ 0-8</string>
|
<string name="revanced_speed_tap_and_hold_summary">Ταχύτητα αναπαραγωγής μεταξύ 0-8</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -747,6 +747,9 @@ Para mostrar el menú de la pista de audio, cambia \"Suplantar transmisiones de
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Ocultar etiqueta de ubicación</string>
|
<string name="revanced_hide_shorts_location_label_title">Ocultar etiqueta de ubicación</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Etiqueta de ubicación oculta</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Etiqueta de ubicación oculta</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Etiqueta de ubicación mostrada</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Etiqueta de ubicación mostrada</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Ocultar el panel de comentarios</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">El panel de comentarios est oculto</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">Se muestra el panel de comentarios</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Ocultar el botón Guardar música</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Ocultar el botón Guardar música</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">El botón Guardar música está oculto</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">El botón Guardar música está oculto</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Mostrar el botón de guardar música</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Mostrar el botón de guardar música</string>
|
||||||
@ -1386,7 +1389,7 @@ Habilitar esto puede desbloquear calidades de vídeo más altas"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Mostrar botón de diálogo de velocidad</string>
|
<string name="revanced_playback_speed_dialog_button_title">Mostrar botón de diálogo de velocidad</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Se muestra el botón</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Se muestra el botón. Mantén pulsado para restablecer la velocidad de reproducción predeterminada</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">El botón no se muestra</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">El botón no se muestra</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1398,6 +1401,7 @@ Habilitar esto puede desbloquear calidades de vídeo más altas"</string>
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Las velocidades personalizadas deben ser menores que %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">Las velocidades personalizadas deben ser menores que %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Velocidades de reproducción personalizadas no válidas</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Velocidades de reproducción personalizadas no válidas</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Automático</string>
|
<string name="revanced_custom_playback_speeds_auto">Automático</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Velocidad de reproducción restablecida a: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Velocidad personalizada al tocar y mantener</string>
|
<string name="revanced_speed_tap_and_hold_title">Velocidad personalizada al tocar y mantener</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">Velocidad de reproducción entre 0-8</string>
|
<string name="revanced_speed_tap_and_hold_summary">Velocidad de reproducción entre 0-8</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -750,6 +750,9 @@ Heliriba menüü kuvamiseks muutke valikut „Võltsitud videovoogedastus“ vä
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Peida asukoha silt</string>
|
<string name="revanced_hide_shorts_location_label_title">Peida asukoha silt</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Asukoha silt on peidetud</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Asukoha silt on peidetud</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Asukoha silt on nähtav</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Asukoha silt on nähtav</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Peida kommentaaripaneel</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">Kommentaaripaneel on peidetud</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">Kommentaaripaneel on nähtaval</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Peida Salvesta muusika nupp</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Peida Salvesta muusika nupp</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Muusika salvestamise nupp on peidetud</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Muusika salvestamise nupp on peidetud</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Muusika salvestamise nupp on nähtav</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Muusika salvestamise nupp on nähtav</string>
|
||||||
@ -1398,7 +1401,7 @@ Selle lubamine võib avada kõrgema video kvaliteedi"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Kuva kiiruse dialoogi nupp</string>
|
<string name="revanced_playback_speed_dialog_button_title">Kuva kiiruse dialoogi nupp</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Nupp kuvatakse</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Nupp on nähtaval. Puudutage ja hoidke all, et taastada taasesituse kiirus vaikeväärtusele</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Nuppi ei kuvata</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Nuppi ei kuvata</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1410,6 +1413,7 @@ Selle lubamine võib avada kõrgema video kvaliteedi"</string>
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Kohandatud kiirused peavad olema alla %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">Kohandatud kiirused peavad olema alla %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Kehtetud kohandatud video taasesituse kiirused</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Kehtetud kohandatud video taasesituse kiirused</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Automaatne</string>
|
<string name="revanced_custom_playback_speeds_auto">Automaatne</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Taasesituse kiirus on lähtestatud: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Kohandatud puuduta ja hoia kiiruse tase</string>
|
<string name="revanced_speed_tap_and_hold_title">Kohandatud puuduta ja hoia kiiruse tase</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">Taasesituse kiirus vahemikus 0-8</string>
|
<string name="revanced_speed_tap_and_hold_summary">Taasesituse kiirus vahemikus 0-8</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -36,6 +36,7 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_settings_confirm_user_dialog_title">Haluatko jatkaa?</string>
|
<string name="revanced_settings_confirm_user_dialog_title">Haluatko jatkaa?</string>
|
||||||
<string name="revanced_settings_reset">Nollaa</string>
|
<string name="revanced_settings_reset">Nollaa</string>
|
||||||
<string name="revanced_settings_reset_color">Nollaa väri</string>
|
<string name="revanced_settings_reset_color">Nollaa väri</string>
|
||||||
|
<string name="revanced_settings_color_invalid">Virheellinen väri</string>
|
||||||
<string name="revanced_settings_restart_title">Päivitä ja käynnistä uudelleen</string>
|
<string name="revanced_settings_restart_title">Päivitä ja käynnistä uudelleen</string>
|
||||||
<string name="revanced_settings_restart">Käynnistä uudelleen</string>
|
<string name="revanced_settings_restart">Käynnistä uudelleen</string>
|
||||||
<string name="revanced_settings_import">Tuo</string>
|
<string name="revanced_settings_import">Tuo</string>
|
||||||
@ -91,7 +92,7 @@ Napauta jatka-painiketta ja salli optimoinnin muutokset."</string>
|
|||||||
<string name="revanced_settings_screen_03_feed_title">Syöte</string>
|
<string name="revanced_settings_screen_03_feed_title">Syöte</string>
|
||||||
<string name="revanced_settings_screen_04_general_title">Yleiset</string>
|
<string name="revanced_settings_screen_04_general_title">Yleiset</string>
|
||||||
<string name="revanced_settings_screen_05_player_title">Soitin</string>
|
<string name="revanced_settings_screen_05_player_title">Soitin</string>
|
||||||
<string name="revanced_settings_screen_07_seekbar_title">Liukusäädin</string>
|
<string name="revanced_settings_screen_07_seekbar_title">Etenemispalkki</string>
|
||||||
<string name="revanced_settings_screen_08_swipe_controls_title">Pyyhkäisyohjaus</string>
|
<string name="revanced_settings_screen_08_swipe_controls_title">Pyyhkäisyohjaus</string>
|
||||||
<string name="revanced_settings_screen_11_misc_title">Sekalaiset</string>
|
<string name="revanced_settings_screen_11_misc_title">Sekalaiset</string>
|
||||||
<string name="revanced_settings_screen_12_video_title">Video</string>
|
<string name="revanced_settings_screen_12_video_title">Video</string>
|
||||||
@ -116,6 +117,11 @@ Napauta jatka-painiketta ja salli optimoinnin muutokset."</string>
|
|||||||
<string name="revanced_debug_protobuffer_title">Loki protokollan puskuri</string>
|
<string name="revanced_debug_protobuffer_title">Loki protokollan puskuri</string>
|
||||||
<string name="revanced_debug_protobuffer_summary_on">Virheenkorjauslokit sisältävät proto-puskurin</string>
|
<string name="revanced_debug_protobuffer_summary_on">Virheenkorjauslokit sisältävät proto-puskurin</string>
|
||||||
<string name="revanced_debug_protobuffer_summary_off">Virheenkorjauslokit eivät sisällä proto-puskuria</string>
|
<string name="revanced_debug_protobuffer_summary_off">Virheenkorjauslokit eivät sisällä proto-puskuria</string>
|
||||||
|
<string name="revanced_debug_protobuffer_user_dialog_message">"Tämän asetuksen käyttöönotto kirjaa lisätietoja asettelusta, mm. joidenkin käyttöliittymäkomponenttien näyttötekstiä.
|
||||||
|
|
||||||
|
Tämä voi auttaa komponenttien tunnistamisessa, kun luot mukautettuja suodattimia.
|
||||||
|
|
||||||
|
Tämän käyttöönotto kirjaa myös joitakin käyttäjätietoja, kuten IP-osoitteesi."</string>
|
||||||
<string name="revanced_debug_stacktrace_title">Loki pinojäljet</string>
|
<string name="revanced_debug_stacktrace_title">Loki pinojäljet</string>
|
||||||
<string name="revanced_debug_stacktrace_summary_on">Vianetsintälokit sisältävät pinojäljet</string>
|
<string name="revanced_debug_stacktrace_summary_on">Vianetsintälokit sisältävät pinojäljet</string>
|
||||||
<string name="revanced_debug_stacktrace_summary_off">Vianetsintälokit eivät sisällä pinojälkiä</string>
|
<string name="revanced_debug_stacktrace_summary_off">Vianetsintälokit eivät sisällä pinojälkiä</string>
|
||||||
@ -125,6 +131,15 @@ Napauta jatka-painiketta ja salli optimoinnin muutokset."</string>
|
|||||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"Virheilmoitusten poistaminen käytöstä piilottaa kaikki ReVancedin virheilmoitukset.
|
<string name="revanced_debug_toast_on_error_user_dialog_message">"Virheilmoitusten poistaminen käytöstä piilottaa kaikki ReVancedin virheilmoitukset.
|
||||||
|
|
||||||
Et saa ilmoituksia odottamattomista tapahtumista."</string>
|
Et saa ilmoituksia odottamattomista tapahtumista."</string>
|
||||||
|
<string name="revanced_debug_export_logs_to_clipboard_title">Vie virheenkorjauslokit</string>
|
||||||
|
<string name="revanced_debug_export_logs_to_clipboard_summary">Kopioi ReVancedin virheenkorjauslokit leikepöydälle</string>
|
||||||
|
<string name="revanced_debug_logs_disabled">Virheenkorjausloki ei ole käytössä</string>
|
||||||
|
<string name="revanced_debug_logs_none_found">Lokeja ei löytynyt</string>
|
||||||
|
<string name="revanced_debug_logs_copied_to_clipboard">Lokit kopioitu</string>
|
||||||
|
<string name="revanced_debug_logs_failed_to_export">Lokien vienti epäonnistui: $s</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>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||||
<string name="revanced_hide_album_cards_title">Piilota albumikortit</string>
|
<string name="revanced_hide_album_cards_title">Piilota albumikortit</string>
|
||||||
@ -163,6 +178,8 @@ Et saa ilmoituksia odottamattomista tapahtumista."</string>
|
|||||||
<string name="revanced_hide_notify_me_button_summary_off">Painike näytetään</string>
|
<string name="revanced_hide_notify_me_button_summary_off">Painike näytetään</string>
|
||||||
<!-- 'People also watched' and 'You might also like' should be translated using the same localized wording YouTube displays. -->
|
<!-- 'People also watched' and 'You might also like' should be translated using the same localized wording YouTube displays. -->
|
||||||
<string name="revanced_hide_search_result_recommendation_labels_title">Piilota videosuositusten otsikot</string>
|
<string name="revanced_hide_search_result_recommendation_labels_title">Piilota videosuositusten otsikot</string>
|
||||||
|
<string name="revanced_hide_search_result_recommendation_labels_summary_on">\"Ihmiset katsoivat myös\"- ja \"Saatat pitää myös\" -tunnisteet on piilotettu</string>
|
||||||
|
<string name="revanced_hide_search_result_recommendation_labels_summary_off">\"Ihmiset katsoivat myös\"- ja \"Saatat pitää myös\" -tunnisteet näytetään</string>
|
||||||
<!-- 'Show more' should be translated with the same localized wording that YouTube displays.
|
<!-- 'Show more' should be translated with the same localized wording that YouTube displays.
|
||||||
This button usually appears when searching for a YT creator. -->
|
This button usually appears when searching for a YT creator. -->
|
||||||
<string name="revanced_hide_show_more_button_title">Piilota \"Näytä lisää\" -painike</string>
|
<string name="revanced_hide_show_more_button_title">Piilota \"Näytä lisää\" -painike</string>
|
||||||
@ -240,6 +257,9 @@ Et saa ilmoituksia odottamattomista tapahtumista."</string>
|
|||||||
<string name="revanced_hide_ai_generated_video_summary_section_title">Piilota \"tekoälyn luoma videoyhteenveto\"</string>
|
<string name="revanced_hide_ai_generated_video_summary_section_title">Piilota \"tekoälyn luoma videoyhteenveto\"</string>
|
||||||
<string name="revanced_hide_ai_generated_video_summary_section_summary_on">Videon yhteenveto-osio on piilotettu</string>
|
<string name="revanced_hide_ai_generated_video_summary_section_summary_on">Videon yhteenveto-osio on piilotettu</string>
|
||||||
<string name="revanced_hide_ai_generated_video_summary_section_summary_off">Videon yhteenveto-osio näytetään</string>
|
<string name="revanced_hide_ai_generated_video_summary_section_summary_off">Videon yhteenveto-osio näytetään</string>
|
||||||
|
<string name="revanced_hide_ask_section_title">Piilota Ask</string>
|
||||||
|
<string name="revanced_hide_ask_section_summary_on">Ask-osio on piilotettu</string>
|
||||||
|
<string name="revanced_hide_ask_section_summary_off">Ask-osio näytetään</string>
|
||||||
<string name="revanced_hide_attributes_section_title">Piilota Määritteet</string>
|
<string name="revanced_hide_attributes_section_title">Piilota Määritteet</string>
|
||||||
<string name="revanced_hide_attributes_section_summary_on">Esitellyt paikat, Pelit, Musiikki ja Mainitut ihmiset -osiot on piilotettu</string>
|
<string name="revanced_hide_attributes_section_summary_on">Esitellyt paikat, Pelit, Musiikki ja Mainitut ihmiset -osiot on piilotettu</string>
|
||||||
<string name="revanced_hide_attributes_section_summary_off">Esitellyt paikat, Pelit, Musiikki ja Mainitut ihmiset -osiot näytetään</string>
|
<string name="revanced_hide_attributes_section_summary_off">Esitellyt paikat, Pelit, Musiikki ja Mainitut ihmiset -osiot näytetään</string>
|
||||||
@ -433,26 +453,26 @@ Tämä ominaisuus on käytettävissä vain vanhemmilla laitteilla"</string>
|
|||||||
<string name="revanced_external_downloader_not_installed_warning">%s ei ole asennettu. Asenna se.</string>
|
<string name="revanced_external_downloader_not_installed_warning">%s ei ole asennettu. Asenna se.</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
|
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
|
||||||
<string name="revanced_disable_precise_seeking_gesture_title">Poista tarkka hakuele käytöstä</string>
|
<string name="revanced_disable_precise_seeking_gesture_title">Poista tarkka etsintäele käytöstä</string>
|
||||||
<string name="revanced_disable_precise_seeking_gesture_summary_on">Ele ei ole käytössä</string>
|
<string name="revanced_disable_precise_seeking_gesture_summary_on">Ele ei ole käytössä</string>
|
||||||
<string name="revanced_disable_precise_seeking_gesture_summary_off">Ele on käytössä</string>
|
<string name="revanced_disable_precise_seeking_gesture_summary_off">Ele on käytössä</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="interaction.seekbar.enableSeekbarTappingPatch">
|
<patch id="interaction.seekbar.enableSeekbarTappingPatch">
|
||||||
<string name="revanced_seekbar_tapping_title">Ota kelaus napauttamalla käyttöön</string>
|
<string name="revanced_seekbar_tapping_title">Ota etsintä napauttamalla käyttöön</string>
|
||||||
<string name="revanced_seekbar_tapping_summary_on">Kelaus napauttamalla on käytössä</string>
|
<string name="revanced_seekbar_tapping_summary_on">Etsintä napauttamalla on käytössä</string>
|
||||||
<string name="revanced_seekbar_tapping_summary_off">Kelaus napauttamalla ei ole käytössä</string>
|
<string name="revanced_seekbar_tapping_summary_off">Etsintä napauttamalla ei ole käytössä</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="interaction.swipecontrols.swipeControlsResourcePatch">
|
<patch id="interaction.swipecontrols.swipeControlsResourcePatch">
|
||||||
<string name="revanced_swipe_brightness_title">Ota kirkkauden ele käyttöön</string>
|
<string name="revanced_swipe_brightness_title">Ota kirkkauden ele käyttöön</string>
|
||||||
<string name="revanced_swipe_brightness_summary_on">"Koko näytön kirkkauden pyyhkäisy on käytössä
|
<string name="revanced_swipe_brightness_summary_on">"Koko näytön kirkkauspyyhkäisy on käytössä
|
||||||
|
|
||||||
Säädä kirkkautta pyyhkäisemällä pystysuoraan näytön vasemmalla puolella"</string>
|
Säädä kirkkautta pyyhkäisemällä pystysuoraan näytön vasemmalla puolella"</string>
|
||||||
<string name="revanced_swipe_brightness_summary_off">Koko näytön kirkkauden pyyhkäisy ei ole käytössä</string>
|
<string name="revanced_swipe_brightness_summary_off">Koko näytön kirkkauspyyhkäisy ei ole käytössä</string>
|
||||||
<string name="revanced_swipe_volume_title">Ota äänenvoimakkuuden ele käyttöön</string>
|
<string name="revanced_swipe_volume_title">Ota äänenvoimakkuuden ele käyttöön</string>
|
||||||
<string name="revanced_swipe_volume_summary_on">"Koko näytön äänenvoimakkuuden pyyhkäisy on käytössä
|
<string name="revanced_swipe_volume_summary_on">"Koko näytön äänenvoimakkuuspyyhkäisy on käytössä
|
||||||
|
|
||||||
Säädä äänenvoimakkuutta pyyhkäisemällä pystysuoraan näytön oikealta puolella"</string>
|
Säädä äänenvoimakkuutta pyyhkäisemällä pystysuoraan näytön oikealta puolella"</string>
|
||||||
<string name="revanced_swipe_volume_summary_off">Koko näytön äänenvoimakkuuden pyyhkäisy ei ole käytössä</string>
|
<string name="revanced_swipe_volume_summary_off">Koko näytön äänenvoimakkuuspyyhkäisy ei ole käytössä</string>
|
||||||
<string name="revanced_swipe_press_to_engage_title">Ota pyyhkäise painamalla -ele käyttöön</string>
|
<string name="revanced_swipe_press_to_engage_title">Ota pyyhkäise painamalla -ele käyttöön</string>
|
||||||
<string name="revanced_swipe_press_to_engage_summary_on">Pyyhkäise painamalla -ele on käytössä</string>
|
<string name="revanced_swipe_press_to_engage_summary_on">Pyyhkäise painamalla -ele on käytössä</string>
|
||||||
<string name="revanced_swipe_press_to_engage_summary_off">Pyyhkäise painamalla -ele ei ole käytössä</string>
|
<string name="revanced_swipe_press_to_engage_summary_off">Pyyhkäise painamalla -ele ei ole käytössä</string>
|
||||||
@ -466,19 +486,23 @@ Säädä äänenvoimakkuutta pyyhkäisemällä pystysuoraan näytön oikealta pu
|
|||||||
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_on">Automaattinen kirkkaus otetaan käyttöön pyyhkäisemällä alhaisimpaan arvoon</string>
|
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_on">Automaattinen kirkkaus otetaan käyttöön pyyhkäisemällä alhaisimpaan arvoon</string>
|
||||||
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_off">Pienimpään arvoon alas pyyhkäiseminen ei ota käyttöön automaattista kirkkautta</string>
|
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_off">Pienimpään arvoon alas pyyhkäiseminen ei ota käyttöön automaattista kirkkautta</string>
|
||||||
<string name="revanced_swipe_lowest_value_enable_auto_brightness_overlay_text">Automaattinen</string>
|
<string name="revanced_swipe_lowest_value_enable_auto_brightness_overlay_text">Automaattinen</string>
|
||||||
<string name="revanced_swipe_overlay_timeout_title">Pyyhkäisypeittokuvan aikakatkaisu</string>
|
<string name="revanced_swipe_overlay_timeout_title">Pyyhkäisyn peittokuvan aikakatkaisu</string>
|
||||||
<string name="revanced_swipe_overlay_timeout_summary">Kuinka monta millisekuntia ikkuna on näkyvissä</string>
|
<string name="revanced_swipe_overlay_timeout_summary">Kuinka monta millisekuntia ikkuna on näkyvissä</string>
|
||||||
<string name="revanced_swipe_overlay_background_opacity_title">Pyyhkäisypeittokuvan taustan läpinäkymättömyys</string>
|
<string name="revanced_swipe_overlay_background_opacity_title">Pyyhkäisyn peittokuvan taustan läpinäkymättömyys</string>
|
||||||
<string name="revanced_swipe_overlay_background_opacity_summary">Läpinäkymättömyysarvo 0–100 välillä</string>
|
<string name="revanced_swipe_overlay_background_opacity_summary">Läpinäkymättömyysarvo 0–100 välillä</string>
|
||||||
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">Pyyhkäisypeittokuvan läpinäkymättömyyden tulee olla 0–100 välillä</string>
|
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">Pyyhkäisyn peittokuvan läpinäkymättömyyden tulee olla 0–100 välillä</string>
|
||||||
<string name="revanced_swipe_text_overlay_size_title">Pyyhkäisypeittokuvan tekstin koko</string>
|
<string name="revanced_swipe_overlay_progress_brightness_color_title">Kirkkauspyyhkäisyn peittokuvan väri</string>
|
||||||
<string name="revanced_swipe_text_overlay_size_summary">Pyyhkäisypeittokuvan tekstin koko 1–30 välillä</string>
|
<string name="revanced_swipe_overlay_progress_brightness_color_summary">Kirkkauden liukusäätimien väri</string>
|
||||||
|
<string name="revanced_swipe_overlay_progress_volume_color_title">Äänenvoimakkuuspyyhkäisyn peittokuvan väri</string>
|
||||||
|
<string name="revanced_swipe_overlay_progress_volume_color_summary">Äänenvoimakkuuden liukusäätimien väri</string>
|
||||||
|
<string name="revanced_swipe_text_overlay_size_title">Pyyhkäisyn peittokuvan tekstin koko</string>
|
||||||
|
<string name="revanced_swipe_text_overlay_size_summary">Pyyhkäisyn peittokuvan tekstin koko 1–30 välillä</string>
|
||||||
<string name="revanced_swipe_text_overlay_size_invalid_toast">Tekstin koon tulee olla 1–30 välillä</string>
|
<string name="revanced_swipe_text_overlay_size_invalid_toast">Tekstin koon tulee olla 1–30 välillä</string>
|
||||||
<string name="revanced_swipe_threshold_title">Pyyhkäisyn kynnysraja</string>
|
<string name="revanced_swipe_threshold_title">Pyyhkäisyn kynnysraja</string>
|
||||||
<string name="revanced_swipe_threshold_summary">Pyyhkäisyä varten tarvittavan kynnyksen määrä</string>
|
<string name="revanced_swipe_threshold_summary">Pyyhkäisyä varten tarvittavan kynnyksen määrä</string>
|
||||||
<string name="revanced_swipe_volume_sensitivity_title">Äänenvoimakkuuden pyyhkäisyn herkkyys</string>
|
<string name="revanced_swipe_volume_sensitivity_title">Äänenvoimakkuuspyyhkäisyn herkkyys</string>
|
||||||
<string name="revanced_swipe_volume_sensitivity_summary">Kuinka paljon äänenvoimakkuus muuttuu pyyhkäisyä kohden</string>
|
<string name="revanced_swipe_volume_sensitivity_summary">Kuinka paljon äänenvoimakkuus muuttuu pyyhkäisyä kohden</string>
|
||||||
<string name="revanced_swipe_overlay_style_title">Pyyhkäisypeittokuvan tyyli</string>
|
<string name="revanced_swipe_overlay_style_title">Pyyhkäisyn peittokuvan tyyli</string>
|
||||||
<string name="revanced_swipe_overlay_style_entry_1">Vaakasuuntainen peittokuva</string>
|
<string name="revanced_swipe_overlay_style_entry_1">Vaakasuuntainen peittokuva</string>
|
||||||
<string name="revanced_swipe_overlay_style_entry_2">Vaakasuuntainen peittokuva (minimaalinen – ylhäällä)</string>
|
<string name="revanced_swipe_overlay_style_entry_2">Vaakasuuntainen peittokuva (minimaalinen – ylhäällä)</string>
|
||||||
<string name="revanced_swipe_overlay_style_entry_3">Vaakasuuntainen peittokuva (minimaalinen – keskellä)</string>
|
<string name="revanced_swipe_overlay_style_entry_3">Vaakasuuntainen peittokuva (minimaalinen – keskellä)</string>
|
||||||
@ -527,6 +551,9 @@ Säädä äänenvoimakkuutta pyyhkäisemällä pystysuoraan näytön oikealta pu
|
|||||||
<string name="revanced_hide_thanks_button_summary_off">Kiitos-painike näytetään</string>
|
<string name="revanced_hide_thanks_button_summary_off">Kiitos-painike näytetään</string>
|
||||||
<!-- 'Ask' should be translated with the same localized wording that YouTube displays.
|
<!-- 'Ask' should be translated with the same localized wording that YouTube displays.
|
||||||
Button only shows if the user ip is from specific region such as the USA or EU. -->
|
Button only shows if the user ip is from specific region such as the USA or EU. -->
|
||||||
|
<string name="revanced_hide_ask_button_title">Piilota Ask</string>
|
||||||
|
<string name="revanced_hide_ask_button_summary_on">Ask-painike on piilotettu</string>
|
||||||
|
<string name="revanced_hide_ask_button_summary_off">Ask-painike näytetään</string>
|
||||||
<!-- 'Clip' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Clip' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<string name="revanced_hide_clip_button_title">Piilota Klippi</string>
|
<string name="revanced_hide_clip_button_title">Piilota Klippi</string>
|
||||||
<string name="revanced_hide_clip_button_summary_on">Klippi-painike on piilotettu</string>
|
<string name="revanced_hide_clip_button_summary_on">Klippi-painike on piilotettu</string>
|
||||||
@ -676,12 +703,12 @@ Jos haluat nähdä sen, aseta \"Naamioi videovirrat\" iOS TV:ksi"</string>
|
|||||||
<string name="revanced_disable_rolling_number_animations_summary_off">Vierivät numerot animoidaan</string>
|
<string name="revanced_disable_rolling_number_animations_summary_off">Vierivät numerot animoidaan</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.hide.seekbar.hideSeekbarPatch">
|
<patch id="layout.hide.seekbar.hideSeekbarPatch">
|
||||||
<string name="revanced_hide_seekbar_title">Piilota liukusäädin videosoittimessa</string>
|
<string name="revanced_hide_seekbar_title">Piilota etenemispalkki videosoittimessa</string>
|
||||||
<string name="revanced_hide_seekbar_summary_on">Videosoittimen liukusäädin on piilotettu</string>
|
<string name="revanced_hide_seekbar_summary_on">Videosoittimen etenemispalkki on piilotettu</string>
|
||||||
<string name="revanced_hide_seekbar_summary_off">Videosoittimen liukusäädin näytetään</string>
|
<string name="revanced_hide_seekbar_summary_off">Videosoittimen etenemispalkki näytetään</string>
|
||||||
<string name="revanced_hide_seekbar_thumbnail_title">Piilota liukusäädin videon pikkukuvissa</string>
|
<string name="revanced_hide_seekbar_thumbnail_title">Piilota etenemispalkki videon pikkukuvissa</string>
|
||||||
<string name="revanced_hide_seekbar_thumbnail_summary_on">Pikkukuvan liukusäädin on piilotettu</string>
|
<string name="revanced_hide_seekbar_thumbnail_summary_on">Pikkukuvan etenemispalkki on piilotettu</string>
|
||||||
<string name="revanced_hide_seekbar_thumbnail_summary_off">Pikkukuvan liukusäädin näytetään</string>
|
<string name="revanced_hide_seekbar_thumbnail_summary_off">Pikkukuvan etenemispalkki näytetään</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.hide.shorts.hideShortsComponentsResourcePatch">
|
<patch id="layout.hide.shorts.hideShortsComponentsResourcePatch">
|
||||||
<string name="revanced_shorts_player_screen_title">Shorts-soitin</string>
|
<string name="revanced_shorts_player_screen_title">Shorts-soitin</string>
|
||||||
@ -882,18 +909,18 @@ Rajoitus: Ei-tykkäykset eivät välttämättä näy incognito-tilassa"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.seekbar.seekbarThumbnailsPatch">
|
<patch id="layout.seekbar.seekbarThumbnailsPatch">
|
||||||
<string name="revanced_seekbar_thumbnails_high_quality_title">Ota korkealaatuiset pikkukuvat käyttöön</string>
|
<string name="revanced_seekbar_thumbnails_high_quality_title">Ota korkealaatuiset pikkukuvat käyttöön</string>
|
||||||
<string name="revanced_seekbar_thumbnails_high_quality_summary_on">Liukusäätimen pikkukuvat ovat korkealaatuisia</string>
|
<string name="revanced_seekbar_thumbnails_high_quality_summary_on">Etenemispalkin pikkukuvat ovat korkealaatuisia</string>
|
||||||
<string name="revanced_seekbar_thumbnails_high_quality_summary_off">Liukusäätimen pikkukuvat ovat keskilaatuisia</string>
|
<string name="revanced_seekbar_thumbnails_high_quality_summary_off">Etenemispalkin pikkukuvat ovat keskilaatuisia</string>
|
||||||
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_on">Koko näytön liukusäätimen pikkukuvat ovat korkealaatuisia</string>
|
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_on">Koko näytön etenemispalkin pikkukuvat ovat korkealaatuisia</string>
|
||||||
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_off">Koko näytön liukusäätimen pikkukuvat ovat keskilaatuisia</string>
|
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_off">Koko näytön etenemispalkin pikkukuvat ovat keskilaatuisia</string>
|
||||||
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">"Tämä palauttaa myös pienoiskuvat livestriimeissä, joilla ei ole liukusäätimen pikkukuvia.
|
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">"Tämä palauttaa myös pienoiskuvat livestriimeissä, joilla ei ole etenemispalkin pikkukuvia.
|
||||||
|
|
||||||
Liukusäätimen pikkukuvat käyttävät samaa laatua kuin nykyinen video.
|
Etenemispalkin pikkukuvat käyttävät samaa laatua kuin nykyinen video.
|
||||||
|
|
||||||
Tämä ominaisuus toimii parhaiten, kun videon laatu on 720p tai alhaisempi ja kun käytössä on erittäin nopea Internet-yhteys."</string>
|
Tämä ominaisuus toimii parhaiten, kun videon laatu on 720p tai alhaisempi ja kun käytössä on erittäin nopea Internet-yhteys."</string>
|
||||||
<string name="revanced_restore_old_seekbar_thumbnails_title">Palauta vanhat liukusäätimen pikkukuvat</string>
|
<string name="revanced_restore_old_seekbar_thumbnails_title">Palauta vanhat etenemispalkin pikkukuvat</string>
|
||||||
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">Liukusäätimen pikkukuvat näkyvät liukusäätimen yläpuolella</string>
|
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">Etenemispalkin pikkukuvat näkyvät etenemispalkin yläpuolella</string>
|
||||||
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">Liukusäätimen pikkukuvat näkyvät kokoruututilassa</string>
|
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">Etenemispalkin pikkukuvat näkyvät kokoruututilassa</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.sponsorblock.sponsorBlockResourcePatch">
|
<patch id="layout.sponsorblock.sponsorBlockResourcePatch">
|
||||||
<string name="revanced_sb_enable_sb">Ota SponsorBlock käyttöön</string>
|
<string name="revanced_sb_enable_sb">Ota SponsorBlock käyttöön</string>
|
||||||
@ -1014,7 +1041,7 @@ UserID on kuin salasana, eikä sitä pidä jakaa kenellekään.
|
|||||||
<string name="revanced_sb_skip_automatically">Ohita automaattisesti</string>
|
<string name="revanced_sb_skip_automatically">Ohita automaattisesti</string>
|
||||||
<string name="revanced_sb_skip_automatically_once">Ohita automaattisesti kerran</string>
|
<string name="revanced_sb_skip_automatically_once">Ohita automaattisesti kerran</string>
|
||||||
<string name="revanced_sb_skip_showbutton">Näytä Ohita-painike</string>
|
<string name="revanced_sb_skip_showbutton">Näytä Ohita-painike</string>
|
||||||
<string name="revanced_sb_skip_seekbaronly">Näytä liukusäätimessä</string>
|
<string name="revanced_sb_skip_seekbaronly">Näytä etenemispalkissa</string>
|
||||||
<string name="revanced_sb_skip_ignore">Poista käytöstä</string>
|
<string name="revanced_sb_skip_ignore">Poista käytöstä</string>
|
||||||
<string name="revanced_sb_submit_failed_invalid">Osiota ei voitu lähettää: %s</string>
|
<string name="revanced_sb_submit_failed_invalid">Osiota ei voitu lähettää: %s</string>
|
||||||
<string name="revanced_sb_submit_failed_timeout">SponsorBlock on tilapäisesti poissa käytöstä</string>
|
<string name="revanced_sb_submit_failed_timeout">SponsorBlock on tilapäisesti poissa käytöstä</string>
|
||||||
@ -1226,14 +1253,14 @@ Pyyhkäise laajentaaksesi tai sulkeaksesi"</string>
|
|||||||
<string name="revanced_gradient_loading_screen_title">Ota liukuvärillinen latausruutu käyttöön</string>
|
<string name="revanced_gradient_loading_screen_title">Ota liukuvärillinen latausruutu käyttöön</string>
|
||||||
<string name="revanced_gradient_loading_screen_summary_on">Latausruudulla on liukuvärillinen tausta</string>
|
<string name="revanced_gradient_loading_screen_summary_on">Latausruudulla on liukuvärillinen tausta</string>
|
||||||
<string name="revanced_gradient_loading_screen_summary_off">Latausruudulla on yksivärinen tausta</string>
|
<string name="revanced_gradient_loading_screen_summary_off">Latausruudulla on yksivärinen tausta</string>
|
||||||
<string name="revanced_seekbar_custom_color_title">Ota oma liukusäätimen väri käyttöön</string>
|
<string name="revanced_seekbar_custom_color_title">Ota oma etenemispalkin väri käyttöön</string>
|
||||||
<string name="revanced_seekbar_custom_color_summary_on">Oma liukusäätimen väri näytetään</string>
|
<string name="revanced_seekbar_custom_color_summary_on">Oma etenemispalkin väri näytetään</string>
|
||||||
<string name="revanced_seekbar_custom_color_summary_off">Alkuperäinen liukusäätimen väri näytetään</string>
|
<string name="revanced_seekbar_custom_color_summary_off">Alkuperäinen etenemispalkin väri näytetään</string>
|
||||||
<string name="revanced_seekbar_custom_color_primary_title">Oma liukusäätimen väri</string>
|
<string name="revanced_seekbar_custom_color_primary_title">Oma etenemispalkin väri</string>
|
||||||
<string name="revanced_seekbar_custom_color_primary_summary">Liukusäätimen väri</string>
|
<string name="revanced_seekbar_custom_color_primary_summary">Etenemispalkin väri</string>
|
||||||
<string name="revanced_seekbar_custom_color_accent_title">Oma liukusäätimen korostusväri</string>
|
<string name="revanced_seekbar_custom_color_accent_title">Oma etenemispalkin korostusväri</string>
|
||||||
<string name="revanced_seekbar_custom_color_accent_summary">Liukusäätimen korostusväri</string>
|
<string name="revanced_seekbar_custom_color_accent_summary">Etenemispalkin korostusväri</string>
|
||||||
<string name="revanced_seekbar_custom_color_invalid">Virheellinen liukusäätimen väriarvo</string>
|
<string name="revanced_seekbar_custom_color_invalid">Virheellinen etenemispalkin väriarvo</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
|
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
|
||||||
<string name="revanced_bypass_image_region_restrictions_title">Ohita kuvien alueelliset rajoitukset</string>
|
<string name="revanced_bypass_image_region_restrictions_title">Ohita kuvien alueelliset rajoitukset</string>
|
||||||
@ -1311,7 +1338,20 @@ Tämä voi avata korkealaatuisemmat videot"</string>
|
|||||||
<string name="microg_settings_summary">GmsCoren asetukset</string>
|
<string name="microg_settings_summary">GmsCoren asetukset</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||||
|
<string name="revanced_disable_haptic_feedback_title">Haptinen palaute</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_summary">Muuta haptista palautetta</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_chapters_title">Poista videon osien haptiikka käytöstä</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_chapters_summary_on">Videon osien haptiikka ei ole käytössä</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_chapters_summary_off">Videon osien haptiikka on käytössä</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_precise_seeking_title">Poista tarkan etsintäeleen haptiikka käytöstä</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_on">Tarkan etsinnän haptiikka ei ole käytössä</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_off">Tarkan etsinnän haptiikka on käytössä</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_seek_undo_title">Poista etsinnän kumoamisen haptiikka käytöstä</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_seek_undo_summary_on">Etsinnän kumoamisen haptiikka ei ole käytössä</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_seek_undo_summary_off">Etsinnän kumoamisen haptiikka on käytössä</string>
|
||||||
<string name="revanced_disable_haptic_feedback_zoom_title">Poista zoomaushaptiikka käytöstä</string>
|
<string name="revanced_disable_haptic_feedback_zoom_title">Poista zoomaushaptiikka käytöstä</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_zoom_summary_on">Zoomaushaptiikka ei ole käytössä</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_zoom_summary_off">Zoomaushaptiikka on käytössä</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||||
<string name="microg_offline_account_login_error">Jos olet äskettäin muuttanut tilisi kirjautumistietoja, poista ja asenna MicroG uudelleen.</string>
|
<string name="microg_offline_account_login_error">Jos olet äskettäin muuttanut tilisi kirjautumistietoja, poista ja asenna MicroG uudelleen.</string>
|
||||||
@ -1358,7 +1398,6 @@ Tämä voi avata korkealaatuisemmat videot"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Näytä nopeuden valintapainike</string>
|
<string name="revanced_playback_speed_dialog_button_title">Näytä nopeuden valintapainike</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Painike näytetään</string>
|
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Painiketta ei näytetä</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Painiketta ei näytetä</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
|
@ -748,6 +748,9 @@ Upang ipakita ang menu ng Audio track, baguhin ang 'Spoof video streams' sa iOS
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Itago ang label ng lokasyon</string>
|
<string name="revanced_hide_shorts_location_label_title">Itago ang label ng lokasyon</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Nakatago ang label ng lokasyon</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Nakatago ang label ng lokasyon</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Ipinapakita ang label ng lokasyon</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Ipinapakita ang label ng lokasyon</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Itago ang panel ng Komento</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">Nakatago ang panel ng mga komento</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">Ipinapakita ang panel ng Komento</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Itago ang Save music button</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Itago ang Save music button</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Ang buton ng pag-save ng musika ay nakatago</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Ang buton ng pag-save ng musika ay nakatago</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Ang buton ng pag-save ng musika ay ipinapakita</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Ang buton ng pag-save ng musika ay ipinapakita</string>
|
||||||
@ -1396,7 +1399,7 @@ Ang pagpapagana nito ay maaaring magbukas ng mas mataas na kalidad ng video"</st
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Ipakita ang pindutan ng dialog ng bilis</string>
|
<string name="revanced_playback_speed_dialog_button_title">Ipakita ang pindutan ng dialog ng bilis</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Ang pindutan ay ipinapakita</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Ipinapakita ang button. I-tap at i-hold para i-reset ang bilis ng pag-playback sa default</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Hindi ipinapakita ang button</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Hindi ipinapakita ang button</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1408,6 +1411,7 @@ Ang pagpapagana nito ay maaaring magbukas ng mas mataas na kalidad ng video"</st
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Ang mga custom na bilis ay dapat na mas mababa sa %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">Ang mga custom na bilis ay dapat na mas mababa sa %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Hindi wastong custom na bilis ng paglalaro</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Hindi wastong custom na bilis ng paglalaro</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Awtomatik</string>
|
<string name="revanced_custom_playback_speeds_auto">Awtomatik</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Na-reset ang bilis ng pag-playback sa: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Custom speed para sa pag-tap at pag-hold</string>
|
<string name="revanced_speed_tap_and_hold_title">Custom speed para sa pag-tap at pag-hold</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">Tugtugin ang bilis ng playback sa pagitan ng 0-8</string>
|
<string name="revanced_speed_tap_and_hold_summary">Tugtugin ang bilis ng playback sa pagitan ng 0-8</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -750,6 +750,9 @@ Pour afficher le menu Piste audio, définissez \"Falsifier les flux vidéo\" sur
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Masquer le libellé de lieu</string>
|
<string name="revanced_hide_shorts_location_label_title">Masquer le libellé de lieu</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Le libellé de lieu est masqué</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Le libellé de lieu est masqué</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Le libellé de lieu est affiché</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Le libellé de lieu est affiché</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Masquer le panneau de commentaire</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">Le panneau de commentaire est masqué</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">Le panneau de commentaire est affiché</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Masquer le bouton Enregistrer la musique</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Masquer le bouton Enregistrer la musique</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Le bouton Enregistrer la musique est masqué</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Le bouton Enregistrer la musique est masqué</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Le bouton Enregistrer la musique est affiché</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Le bouton Enregistrer la musique est affiché</string>
|
||||||
@ -1397,7 +1400,7 @@ Activer cette option peut déverrouiller des qualités vidéo supérieures"</str
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Afficher un bouton Vitesse</string>
|
<string name="revanced_playback_speed_dialog_button_title">Afficher un bouton Vitesse</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Le bouton est affiché</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Le bouton est affiché. Appuyez longuement dessus pour rétablir la vitesse de lecture par défaut.</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Le bouton n\'est pas affiché</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Le bouton n\'est pas affiché</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1409,6 +1412,7 @@ Activer cette option peut déverrouiller des qualités vidéo supérieures"</str
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Il doit y avoir moins de %s vitesses personnalisées</string>
|
<string name="revanced_custom_playback_speeds_invalid">Il doit y avoir moins de %s vitesses personnalisées</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Vitesses de lecture personnalisées invalides</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Vitesses de lecture personnalisées invalides</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Automatique</string>
|
<string name="revanced_custom_playback_speeds_auto">Automatique</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Vitesse de lecture réinitialisée à : %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Vitesse personnalisée d\'accélération sur appui long</string>
|
<string name="revanced_speed_tap_and_hold_title">Vitesse personnalisée d\'accélération sur appui long</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">Vitesse de lecture comprise entre 0 et 8</string>
|
<string name="revanced_speed_tap_and_hold_summary">Vitesse de lecture comprise entre 0 et 8</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -750,6 +750,9 @@ Chun roghchlár na rian fuaime a thaispeáint, athraigh 'Srutháin físeáin bhr
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Folaigh lipéad suímh</string>
|
<string name="revanced_hide_shorts_location_label_title">Folaigh lipéad suímh</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Tá lipéad suímh i bhfolach</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Tá lipéad suímh i bhfolach</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Taispeántar lipéad suímh</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Taispeántar lipéad suímh</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Folaigh painéal na dtuairimí</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">Tá an painéal tuairimí i bhfolach</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">Taispeántar painéal na dtuairimí</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Folaigh cnaipe \'Sábháil ceol\'</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Folaigh cnaipe \'Sábháil ceol\'</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Tá an cnaipe Sábháil ceoil i bhfolach</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Tá an cnaipe Sábháil ceoil i bhfolach</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Taispeántar an cnaipe Sábháil ceoil</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Taispeántar an cnaipe Sábháil ceoil</string>
|
||||||
@ -1398,7 +1401,7 @@ Is féidir le seo caighdeáin físeáin níos airde a dhíghlasáil"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Taispeáin cnaipe dialóg luais</string>
|
<string name="revanced_playback_speed_dialog_button_title">Taispeáin cnaipe dialóg luais</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Taispeántar an cnaipe</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Taispeántar an cnaipe. Tapáil agus coinnigh chun luas athsheinm a athshocrú go réamhshocrú</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Ní thaispeántar an cnaipe</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Ní thaispeántar an cnaipe</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1410,6 +1413,7 @@ Is féidir le seo caighdeáin físeáin níos airde a dhíghlasáil"</string>
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Ní mór luas saincheaptha a bheith níos lú ná %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">Ní mór luas saincheaptha a bheith níos lú ná %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Luasanna athsheinm saincheaptha neamhbhailí</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Luasanna athsheinm saincheaptha neamhbhailí</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Uathoibríoch</string>
|
<string name="revanced_custom_playback_speeds_auto">Uathoibríoch</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Athshocraíodh luas athsheinm go: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Luas tap is agus greim</string>
|
<string name="revanced_speed_tap_and_hold_title">Luas tap is agus greim</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">Luas athsheinm eatarthu 0-8</string>
|
<string name="revanced_speed_tap_and_hold_summary">Luas athsheinm eatarthu 0-8</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -750,6 +750,9 @@ Az audiosáv menü megjelenítéséhez módosítsa a \"Videófolyamok hamisítá
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Helycímke elrejtése</string>
|
<string name="revanced_hide_shorts_location_label_title">Helycímke elrejtése</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">A helycízke címke el van rejtve</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">A helycízke címke el van rejtve</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">A helycízke címke meg van jelenítve</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">A helycízke címke meg van jelenítve</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Kommentpanel elrejtése</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">A megjegyzés panel rejtett</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">A Kommentpanel látható</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Zene mentése gomb elrejtése</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Zene mentése gomb elrejtése</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">A zene mentés gomb el van rejtve</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">A zene mentés gomb el van rejtve</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">A zene mentés gomb látható</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">A zene mentés gomb látható</string>
|
||||||
@ -1395,7 +1398,7 @@ Ez a beállítás lehetővé teszi a magasabb videóminőségek feloldását"</s
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Sebesség párbeszédpanel megjelenítése</string>
|
<string name="revanced_playback_speed_dialog_button_title">Sebesség párbeszédpanel megjelenítése</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">A gomb megjelenik</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">A gomb látható. Tartsa lenyomva a lejátszási sebesség alapértelmezettre állításához</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">A gomb nem látható</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">A gomb nem látható</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1407,6 +1410,7 @@ Ez a beállítás lehetővé teszi a magasabb videóminőségek feloldását"</s
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Az egyéni sebességeknek kevesebbnek kell lenniük, mint %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">Az egyéni sebességeknek kevesebbnek kell lenniük, mint %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Érvénytelen egyéni lejátszási sebességek</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Érvénytelen egyéni lejátszási sebességek</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Automatikus</string>
|
<string name="revanced_custom_playback_speeds_auto">Automatikus</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Lejátszási sebesség visszaállítva: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Egyéni koppintás és tartás sebesség</string>
|
<string name="revanced_speed_tap_and_hold_title">Egyéni koppintás és tartás sebesség</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">Lejátszási sebesség 0-8 között</string>
|
<string name="revanced_speed_tap_and_hold_summary">Lejátszási sebesség 0-8 között</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -750,6 +750,9 @@ MicroG-ի համար մարտկոցի օպտիմալացումը անջատել
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Թաքցնել տեղանքի նշումը</string>
|
<string name="revanced_hide_shorts_location_label_title">Թաքցնել տեղանքի նշումը</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Տեղանքի նշումը թաքցված է</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Տեղանքի նշումը թաքցված է</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Տեղանքի նշումը ցուցադրվում է</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Տեղանքի նշումը ցուցադրվում է</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Թաքցնել մեկնաբանության վահանակը</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">Մեկնաբանությունների վահանակը թաքցված է</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">Ցուցադրվում է մեկնաբանության վահանակը</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Թաքցնել երաժշտությունը պահպանել կոճակը</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Թաքցնել երաժշտությունը պահպանել կոճակը</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">«Save music» կոճակը թաքցված է</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">«Save music» կոճակը թաքցված է</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">«Save music» կոճակը ցուցադրվում է</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">«Save music» կոճակը ցուցադրվում է</string>
|
||||||
@ -1398,7 +1401,7 @@ Mini-player-ը կարող է գրավվել էկրանից դուրս՝ դեպի
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Ցուցադրել արագության դիալոգի պատուհանի կոճակը</string>
|
<string name="revanced_playback_speed_dialog_button_title">Ցուցադրել արագության դիալոգի պատուհանի կոճակը</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Կոճակը ցուցադրվում է</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Կոճակը ցուցադրվում է: Հպեք և պահեք՝ նվագարկման արագությունը լռելյայնի վերականգնելու համար</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Կոճակը չի ցուցադրվում</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Կոճակը չի ցուցադրվում</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1410,6 +1413,7 @@ Mini-player-ը կարող է գրավվել էկրանից դուրս՝ դեպի
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Պատրաստված արագությունները պետք է լինեն ավելի քիչ քան %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">Պատրաստված արագությունները պետք է լինեն ավելի քիչ քան %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Չի աշխատում պատրաստված վերարտադրման արագությունները։</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Չի աշխատում պատրաստված վերարտադրման արագությունները։</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Ավտո</string>
|
<string name="revanced_custom_playback_speeds_auto">Ավտո</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Նվագարկման արագությունը վերականգնվել է. %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Զգայական վերահսկում՝ անվանափոխման համար</string>
|
<string name="revanced_speed_tap_and_hold_title">Զգայական վերահսկում՝ անվանափոխման համար</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">Վերարտադրման արագությունը 0-8 միջակայքում</string>
|
<string name="revanced_speed_tap_and_hold_summary">Վերարտադրման արագությունը 0-8 միջակայքում</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -41,7 +41,7 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_settings_restart">Mulai ulang</string>
|
<string name="revanced_settings_restart">Mulai ulang</string>
|
||||||
<string name="revanced_settings_import">Impor</string>
|
<string name="revanced_settings_import">Impor</string>
|
||||||
<string name="revanced_settings_import_copy">Salin</string>
|
<string name="revanced_settings_import_copy">Salin</string>
|
||||||
<string name="revanced_settings_import_reset">Pengaturan ReVanced diatur ke setelan awal</string>
|
<string name="revanced_settings_import_reset">Pengaturan ReVanced diatur ke bawaan</string>
|
||||||
<string name="revanced_settings_import_success">Mengimpor setelan %d</string>
|
<string name="revanced_settings_import_success">Mengimpor setelan %d</string>
|
||||||
<string name="revanced_settings_import_failure_parse">Impor gagal: %s</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_hint">Pengaturan pencarian</string>
|
||||||
@ -55,7 +55,7 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_language_user_dialog_message">"Terjemahan untuk beberapa bahasa mungkin hilang atau tidak lengkap.
|
<string name="revanced_language_user_dialog_message">"Terjemahan untuk beberapa bahasa mungkin hilang atau tidak lengkap.
|
||||||
|
|
||||||
Untuk menerjemahkan bahasa baru kunjungi translate.revanced.app"</string>
|
Untuk menerjemahkan bahasa baru kunjungi translate.revanced.app"</string>
|
||||||
<string name="revanced_language_DEFAULT">Bahasa Aplikasi</string>
|
<string name="revanced_language_DEFAULT">Bahasa aplikasi</string>
|
||||||
<string name="revanced_pref_import_export_title">Impor / Ekspor</string>
|
<string name="revanced_pref_import_export_title">Impor / Ekspor</string>
|
||||||
<string name="revanced_pref_import_export_summary">Impor / Ekspor setelan ReVanced</string>
|
<string name="revanced_pref_import_export_summary">Impor / Ekspor setelan ReVanced</string>
|
||||||
<!-- Settings about dialog. -->
|
<!-- Settings about dialog. -->
|
||||||
@ -750,6 +750,9 @@ Untuk menampilkan menu trek Audio, ubah 'Spoof aliran video' ke iOS TV"</string>
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Sembunyikan label lokasi</string>
|
<string name="revanced_hide_shorts_location_label_title">Sembunyikan label lokasi</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Label lokasi disembunyikan</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Label lokasi disembunyikan</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Label lokasi ditampilkan</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Label lokasi ditampilkan</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Sembunyikan panel Komentar</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">Panel komentar disembunyikan</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">Panel komentar ditampilkan</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Sembunyikan Simpan musik</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Sembunyikan Simpan musik</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Tombol simpan musik disembunyikan</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Tombol simpan musik disembunyikan</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Tombol simpan musik ditampilkan</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Tombol simpan musik ditampilkan</string>
|
||||||
@ -1397,7 +1400,7 @@ Mengaktifkan ini dapat membuka kualitas video yang lebih tinggi"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Tampilkan tombol dialog kecepatan</string>
|
<string name="revanced_playback_speed_dialog_button_title">Tampilkan tombol dialog kecepatan</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Tombol ditampilkan</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Tombol ditampilkan. Ketuk dan tahan untuk mengatur ulang kecepatan pemutaran ke bawaan</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Tombol tidak ditampilkan</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Tombol tidak ditampilkan</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1409,6 +1412,7 @@ Mengaktifkan ini dapat membuka kualitas video yang lebih tinggi"</string>
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Kecepatan khusus harus kurang dari %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">Kecepatan khusus harus kurang dari %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Kecepatan pemutaran khusus tidak valid</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Kecepatan pemutaran khusus tidak valid</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Otomatis</string>
|
<string name="revanced_custom_playback_speeds_auto">Otomatis</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Kecepatan pemutaran diatur ulang ke: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Kecepatan ketuk dan tahan khusus</string>
|
<string name="revanced_speed_tap_and_hold_title">Kecepatan ketuk dan tahan khusus</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">Kecepatan pemutaran antara 0-8</string>
|
<string name="revanced_speed_tap_and_hold_summary">Kecepatan pemutaran antara 0-8</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -750,6 +750,9 @@ Per mostrare il menu della traccia audio, cambia \"Spoof video streams\" in iOS
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Nascondi etichetta di posizione</string>
|
<string name="revanced_hide_shorts_location_label_title">Nascondi etichetta di posizione</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">L\'etichetta di posizione è nascosta</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">L\'etichetta di posizione è nascosta</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">L\'etichetta di posizione è visibile</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">L\'etichetta di posizione è visibile</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Nascondi pannello dei commenti</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">Il pannello dei commenti è nascosto</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">Il pannello dei commenti è visibile</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Nascondi il pulsante Salva Musica</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Nascondi il pulsante Salva Musica</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Il pulsante Salva traccia è nascosto</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Il pulsante Salva traccia è nascosto</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Il pulsante Salva traccia è visibile</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Il pulsante Salva traccia è visibile</string>
|
||||||
@ -1397,7 +1400,7 @@ Abilitare questa opzione può sbloccare qualità video più elevate"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Mostra il pulsante Velocità Video</string>
|
<string name="revanced_playback_speed_dialog_button_title">Mostra il pulsante Velocità Video</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Il pulsante è visibile</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Il pulsante è visualizzato. Tieni premuto per ripristinare la velocità di riproduzione predefinita</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Il pulsante non è visibile</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Il pulsante non è visibile</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1409,6 +1412,7 @@ Abilitare questa opzione può sbloccare qualità video più elevate"</string>
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Le velocità personalizzate devono essere inferiori a %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">Le velocità personalizzate devono essere inferiori a %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Velocità di riproduzione personalizzata non valida</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Velocità di riproduzione personalizzata non valida</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Automatico</string>
|
<string name="revanced_custom_playback_speeds_auto">Automatico</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Velocità di riproduzione reimpostata su: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Velocità personalizzata di tocca e tieni premuto</string>
|
<string name="revanced_speed_tap_and_hold_title">Velocità personalizzata di tocca e tieni premuto</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">Velocità di riproduzione tra 0-8</string>
|
<string name="revanced_speed_tap_and_hold_summary">Velocità di riproduzione tra 0-8</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -46,6 +46,8 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_settings_import_failure_parse">ייבוא נכשל: %s</string>
|
<string name="revanced_settings_import_failure_parse">ייבוא נכשל: %s</string>
|
||||||
<string name="revanced_settings_search_hint">חפש בהגדרות</string>
|
<string name="revanced_settings_search_hint">חפש בהגדרות</string>
|
||||||
<string name="revanced_settings_search_no_results_title">לא נמצאו תוצאות עבור \'%s\'</string>
|
<string name="revanced_settings_search_no_results_title">לא נמצאו תוצאות עבור \'%s\'</string>
|
||||||
|
<string name="revanced_settings_search_no_results_summary">נסה מילת מפתח אחרת</string>
|
||||||
|
<string name="revanced_settings_search_remove_message">להסיר מהיסטוריית חיפוש?</string>
|
||||||
<string name="revanced_show_menu_icons_title">הצג סמלי הגדרות ReVanced</string>
|
<string name="revanced_show_menu_icons_title">הצג סמלי הגדרות ReVanced</string>
|
||||||
<string name="revanced_show_menu_icons_summary_on">סמלי ההגדרות מוצגים</string>
|
<string name="revanced_show_menu_icons_summary_on">סמלי ההגדרות מוצגים</string>
|
||||||
<string name="revanced_show_menu_icons_summary_off">סמלי ההגדרות אינם מוצגים</string>
|
<string name="revanced_show_menu_icons_summary_off">סמלי ההגדרות אינם מוצגים</string>
|
||||||
@ -97,6 +99,9 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_restore_old_settings_menus_title">שחזר תפריטי הגדרות ישנים</string>
|
<string name="revanced_restore_old_settings_menus_title">שחזר תפריטי הגדרות ישנים</string>
|
||||||
<string name="revanced_restore_old_settings_menus_summary_on">תפריטי הגדרות ישנים מוצגים</string>
|
<string name="revanced_restore_old_settings_menus_summary_on">תפריטי הגדרות ישנים מוצגים</string>
|
||||||
<string name="revanced_restore_old_settings_menus_summary_off">תפריטי הגדרות ישנים אינם מוצגים</string>
|
<string name="revanced_restore_old_settings_menus_summary_off">תפריטי הגדרות ישנים אינם מוצגים</string>
|
||||||
|
<string name="revanced_settings_search_history_title">הצג הגדרות היסטוריית חיפוש</string>
|
||||||
|
<string name="revanced_settings_search_history_summary_on">הגדרות היסטוריית חיפוש מוצגות</string>
|
||||||
|
<string name="revanced_settings_search_history_summary_off">הגדרות היסטוריית חיפוש אינן מוצגות</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="misc.backgroundplayback.backgroundPlaybackPatch">
|
<patch id="misc.backgroundplayback.backgroundPlaybackPatch">
|
||||||
<string name="revanced_shorts_disable_background_playback_title">השבת הפעלה ברקע של Shorts</string>
|
<string name="revanced_shorts_disable_background_playback_title">השבת הפעלה ברקע של Shorts</string>
|
||||||
@ -112,6 +117,11 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_debug_protobuffer_title">רשום פרוטוקול חוצץ</string>
|
<string name="revanced_debug_protobuffer_title">רשום פרוטוקול חוצץ</string>
|
||||||
<string name="revanced_debug_protobuffer_summary_on">יומני איתור באגים כוללים פרוטוקול חוצץ</string>
|
<string name="revanced_debug_protobuffer_summary_on">יומני איתור באגים כוללים פרוטוקול חוצץ</string>
|
||||||
<string name="revanced_debug_protobuffer_summary_off">יומני איתור באגים אינם כוללים פרוטוקול חוצץ</string>
|
<string name="revanced_debug_protobuffer_summary_off">יומני איתור באגים אינם כוללים פרוטוקול חוצץ</string>
|
||||||
|
<string name="revanced_debug_protobuffer_user_dialog_message">"הפעלת הגדרה זו תתעד נתוני פריסה נוספים, כולל טקסט שעל המסך עבור רכיבי ממשק משתמש מסוימים.
|
||||||
|
|
||||||
|
זה יכול לעזור לזהות רכיבים בעת יצירת מסננים מותאמים אישית.
|
||||||
|
|
||||||
|
עם זאת, הפעלת הגדרה זו תתעד גם כמה נתוני משתמש כמו כתובת ה-IP שלך."</string>
|
||||||
<string name="revanced_debug_stacktrace_title">רשום עקבות מחסנית</string>
|
<string name="revanced_debug_stacktrace_title">רשום עקבות מחסנית</string>
|
||||||
<string name="revanced_debug_stacktrace_summary_on">יומני איתור באגים כוללים עקבות מחסנית</string>
|
<string name="revanced_debug_stacktrace_summary_on">יומני איתור באגים כוללים עקבות מחסנית</string>
|
||||||
<string name="revanced_debug_stacktrace_summary_off">יומני איתור באגים אינם כוללים עקבות מחסנית</string>
|
<string name="revanced_debug_stacktrace_summary_off">יומני איתור באגים אינם כוללים עקבות מחסנית</string>
|
||||||
@ -121,6 +131,15 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"השבתת הודעות שגיאה קופצות מסתירה את כל הודעות השגיאה של ReVanced.
|
<string name="revanced_debug_toast_on_error_user_dialog_message">"השבתת הודעות שגיאה קופצות מסתירה את כל הודעות השגיאה של ReVanced.
|
||||||
|
|
||||||
לא תקבל הודעה על אירועים בלתי צפויים."</string>
|
לא תקבל הודעה על אירועים בלתי צפויים."</string>
|
||||||
|
<string name="revanced_debug_export_logs_to_clipboard_title">ייצוא יומני איתור באגים</string>
|
||||||
|
<string name="revanced_debug_export_logs_to_clipboard_summary">מעתיק יומנים לאיתור באגים של Revanced ללוח ההעתקה</string>
|
||||||
|
<string name="revanced_debug_logs_disabled">תיעוד איתור באגים מושבת</string>
|
||||||
|
<string name="revanced_debug_logs_none_found">לא נמצאו יומנים</string>
|
||||||
|
<string name="revanced_debug_logs_copied_to_clipboard">היומנים הועתקו</string>
|
||||||
|
<string name="revanced_debug_logs_failed_to_export">נכשל לייצא יומנים: $s</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>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||||
<string name="revanced_hide_album_cards_title">הסתר כרטיסי אלבום</string>
|
<string name="revanced_hide_album_cards_title">הסתר כרטיסי אלבום</string>
|
||||||
@ -158,11 +177,17 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_notify_me_button_summary_on">הלחצן מוסתר</string>
|
<string name="revanced_hide_notify_me_button_summary_on">הלחצן מוסתר</string>
|
||||||
<string name="revanced_hide_notify_me_button_summary_off">הלחצן מוצג</string>
|
<string name="revanced_hide_notify_me_button_summary_off">הלחצן מוצג</string>
|
||||||
<!-- 'People also watched' and 'You might also like' should be translated using the same localized wording YouTube displays. -->
|
<!-- 'People also watched' and 'You might also like' should be translated using the same localized wording YouTube displays. -->
|
||||||
|
<string name="revanced_hide_search_result_recommendation_labels_title">הסתר תוויות המלצה על סרטון</string>
|
||||||
|
<string name="revanced_hide_search_result_recommendation_labels_summary_on">\'אנשים צפו גם\' ו\'את/ה עשוי/ה לאהוב\' מוסתרים</string>
|
||||||
|
<string name="revanced_hide_search_result_recommendation_labels_summary_off">\'אנשים צפו גם\' ו\'את/ה עשוי/ה לאהוב\' מוצגים</string>
|
||||||
<!-- 'Show more' should be translated with the same localized wording that YouTube displays.
|
<!-- 'Show more' should be translated with the same localized wording that YouTube displays.
|
||||||
This button usually appears when searching for a YT creator. -->
|
This button usually appears when searching for a YT creator. -->
|
||||||
<string name="revanced_hide_show_more_button_title">הסתר לחצן \'הצג עוד\'</string>
|
<string name="revanced_hide_show_more_button_title">הסתר לחצן \'הצג עוד\'</string>
|
||||||
<string name="revanced_hide_show_more_button_summary_on">הלחצן מוסתר</string>
|
<string name="revanced_hide_show_more_button_summary_on">הלחצן מוסתר</string>
|
||||||
<string name="revanced_hide_show_more_button_summary_off">הלחצן מוצג</string>
|
<string name="revanced_hide_show_more_button_summary_off">הלחצן מוצג</string>
|
||||||
|
<string name="revanced_hide_ticket_shelf_title">הסתר מדף כרטיסים</string>
|
||||||
|
<string name="revanced_hide_ticket_shelf_summary_on">מדף כרטיסים מוסתר</string>
|
||||||
|
<string name="revanced_hide_ticket_shelf_summary_off">מדף כרטיסים מוצג</string>
|
||||||
<string name="revanced_hide_timed_reactions_title">הסתר תגובות באמוג\'י מתוזמנות</string>
|
<string name="revanced_hide_timed_reactions_title">הסתר תגובות באמוג\'י מתוזמנות</string>
|
||||||
<string name="revanced_hide_timed_reactions_summary_on">תגובות באמוג\'י מתוזמנות מוסתרות</string>
|
<string name="revanced_hide_timed_reactions_summary_on">תגובות באמוג\'י מתוזמנות מוסתרות</string>
|
||||||
<string name="revanced_hide_timed_reactions_summary_off">תגובות באמוג\'י מתוזמנות מוצגות</string>
|
<string name="revanced_hide_timed_reactions_summary_off">תגובות באמוג\'י מתוזמנות מוצגות</string>
|
||||||
@ -232,6 +257,9 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_ai_generated_video_summary_section_title">הסתר את \'סיכום הווידאו שנוצר על ידי בינה מלאכותית\'</string>
|
<string name="revanced_hide_ai_generated_video_summary_section_title">הסתר את \'סיכום הווידאו שנוצר על ידי בינה מלאכותית\'</string>
|
||||||
<string name="revanced_hide_ai_generated_video_summary_section_summary_on">מדור סיכום הסרטון מוסתר</string>
|
<string name="revanced_hide_ai_generated_video_summary_section_summary_on">מדור סיכום הסרטון מוסתר</string>
|
||||||
<string name="revanced_hide_ai_generated_video_summary_section_summary_off">מדור סיכום הסרטון מוצג</string>
|
<string name="revanced_hide_ai_generated_video_summary_section_summary_off">מדור סיכום הסרטון מוצג</string>
|
||||||
|
<string name="revanced_hide_ask_section_title">הסתר Ask</string>
|
||||||
|
<string name="revanced_hide_ask_section_summary_on">מדור Ask מוסתר</string>
|
||||||
|
<string name="revanced_hide_ask_section_summary_off">מדור Ask מוצג</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_on">המדורים \'מקומות שמככבים בסרטון\', \'משחקים\', \'מוזיקה\', ו\'אנשים שאוזכרו\' מוסתרים</string>
|
||||||
<string name="revanced_hide_attributes_section_summary_off">המדורים \'מקומות שמככבים בסרטון\', \'משחקים\', \'מוזיקה\', ו\'אנשים שאוזכרו\' מוצגים</string>
|
<string name="revanced_hide_attributes_section_summary_off">המדורים \'מקומות שמככבים בסרטון\', \'משחקים\', \'מוזיקה\', ו\'אנשים שאוזכרו\' מוצגים</string>
|
||||||
@ -463,10 +491,25 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_swipe_overlay_background_opacity_title">אטימות רקע שכבת-על של החלקה</string>
|
<string name="revanced_swipe_overlay_background_opacity_title">אטימות רקע שכבת-על של החלקה</string>
|
||||||
<string name="revanced_swipe_overlay_background_opacity_summary">ערך אטימות בין 0 ל-100</string>
|
<string name="revanced_swipe_overlay_background_opacity_summary">ערך אטימות בין 0 ל-100</string>
|
||||||
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">אטימות החלקה חייבת להיות בין 0 ל-100</string>
|
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">אטימות החלקה חייבת להיות בין 0 ל-100</string>
|
||||||
|
<string name="revanced_swipe_overlay_progress_brightness_color_title">צבע שכבת-על של החלקת בהירות</string>
|
||||||
|
<string name="revanced_swipe_overlay_progress_brightness_color_summary">הצבע של סרגל ההתקדמות עבור בקרות בהירות</string>
|
||||||
|
<string name="revanced_swipe_overlay_progress_volume_color_title">צבע שכבת-על של החלקת עוצמת קול</string>
|
||||||
|
<string name="revanced_swipe_overlay_progress_volume_color_summary">הצבע של סרגל ההתקדמות עבור בקרות עוצמת קול</string>
|
||||||
|
<string name="revanced_swipe_text_overlay_size_title">גודל טקסט שכבת-על של החלקה</string>
|
||||||
|
<string name="revanced_swipe_text_overlay_size_summary">גודל הטקסט עבור שכבת-על של החלקה בין 1 ל-30</string>
|
||||||
|
<string name="revanced_swipe_text_overlay_size_invalid_toast">גודל הטקסט חייב להיות בין 1 ל-30</string>
|
||||||
<string name="revanced_swipe_threshold_title">סף גודל החלקה</string>
|
<string name="revanced_swipe_threshold_title">סף גודל החלקה</string>
|
||||||
<string name="revanced_swipe_threshold_summary">כמות הסף להתרחשות החלקה</string>
|
<string name="revanced_swipe_threshold_summary">כמות הסף להתרחשות החלקה</string>
|
||||||
<string name="revanced_swipe_volume_sensitivity_title">רגישות החלקה בעוצמת הקול</string>
|
<string name="revanced_swipe_volume_sensitivity_title">רגישות החלקה בעוצמת הקול</string>
|
||||||
<string name="revanced_swipe_volume_sensitivity_summary">כמה משתנה עוצמת השמע לכל החלקה</string>
|
<string name="revanced_swipe_volume_sensitivity_summary">כמה משתנה עוצמת השמע לכל החלקה</string>
|
||||||
|
<string name="revanced_swipe_overlay_style_title">סגנון שכבת-על להחלקה</string>
|
||||||
|
<string name="revanced_swipe_overlay_style_entry_1">שכבת-על אופקית</string>
|
||||||
|
<string name="revanced_swipe_overlay_style_entry_2">שכבת-על אופקית (מזערית - עליונה)</string>
|
||||||
|
<string name="revanced_swipe_overlay_style_entry_3">שכבת-על אופקית (מזערית - מרכזית)</string>
|
||||||
|
<string name="revanced_swipe_overlay_style_entry_4">שכבת-על מעגלית</string>
|
||||||
|
<string name="revanced_swipe_overlay_style_entry_5">שכבת-על מעגלית (מזערית)</string>
|
||||||
|
<string name="revanced_swipe_overlay_style_entry_6">שכבת-על אנכית</string>
|
||||||
|
<string name="revanced_swipe_overlay_style_entry_7">שכבת-על אנכית (מזערית)</string>
|
||||||
<string name="revanced_swipe_change_video_title">הפעל החלקה כדי לשנות סרטונים</string>
|
<string name="revanced_swipe_change_video_title">הפעל החלקה כדי לשנות סרטונים</string>
|
||||||
<string name="revanced_swipe_change_video_summary_on">החלקה במצב מסך מלא תשנה לסרטון הבא/הקודם</string>
|
<string name="revanced_swipe_change_video_summary_on">החלקה במצב מסך מלא תשנה לסרטון הבא/הקודם</string>
|
||||||
<string name="revanced_swipe_change_video_summary_off">החלקה במצב מסך מלא לא תשנה לסרטון הבא/הקודם</string>
|
<string name="revanced_swipe_change_video_summary_off">החלקה במצב מסך מלא לא תשנה לסרטון הבא/הקודם</string>
|
||||||
@ -508,6 +551,9 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_thanks_button_summary_off">לחצן תודה מוצג</string>
|
<string name="revanced_hide_thanks_button_summary_off">לחצן תודה מוצג</string>
|
||||||
<!-- 'Ask' should be translated with the same localized wording that YouTube displays.
|
<!-- 'Ask' should be translated with the same localized wording that YouTube displays.
|
||||||
Button only shows if the user ip is from specific region such as the USA or EU. -->
|
Button only shows if the user ip is from specific region such as the USA or EU. -->
|
||||||
|
<string name="revanced_hide_ask_button_title">הסתר Ask</string>
|
||||||
|
<string name="revanced_hide_ask_button_summary_on">לחצן Ask מוסתר</string>
|
||||||
|
<string name="revanced_hide_ask_button_summary_off">לחצן Ask מוצג</string>
|
||||||
<!-- 'Clip' should be translated with the same localized wording that YouTube displays. -->
|
<!-- '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_on">לחצן קליפ מוסתר</string>
|
||||||
@ -704,6 +750,9 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_shorts_location_label_title">הסתר תווית מיקום</string>
|
<string name="revanced_hide_shorts_location_label_title">הסתר תווית מיקום</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">תווית מיקום מוסתרת</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">תווית מיקום מוסתרת</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">תווית מיקום מוצגת</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">תווית מיקום מוצגת</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">הסתר את לוח התגובות</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">לוח התגובות מוסתר</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">לוח התגובות מוצג</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">הסתר לחצן שמור מוזיקה</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">הסתר לחצן שמור מוזיקה</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">לחצן שמור מוזיקה מוסתר</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">לחצן שמור מוזיקה מוסתר</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">לחצן שמור מוזיקה מוצג</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">לחצן שמור מוזיקה מוצג</string>
|
||||||
@ -777,6 +826,9 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_end_screen_suggested_video_summary_off">סרטון מוצע של מסך סיום מוצג</string>
|
<string name="revanced_end_screen_suggested_video_summary_off">סרטון מוצע של מסך סיום מוצג</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.hide.relatedvideooverlay.hideRelatedVideoOverlayPatch">
|
<patch id="layout.hide.relatedvideooverlay.hideRelatedVideoOverlayPatch">
|
||||||
|
<string name="revanced_hide_related_video_overlay_title">הסתר שכבת-על של סרטונים קשורים במסך מלא</string>
|
||||||
|
<string name="revanced_hide_related_video_overlay_summary_on">שכבת-על של סרטונים קשורים מוסתרת</string>
|
||||||
|
<string name="revanced_hide_related_video_overlay_summary_off">שכבת-על של סרטונים קשורים מוצגת</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.hide.time.hideTimestampPatch">
|
<patch id="layout.hide.time.hideTimestampPatch">
|
||||||
<string name="revanced_hide_timestamp_title">הסתר חותמת זמן של סרטון</string>
|
<string name="revanced_hide_timestamp_title">הסתר חותמת זמן של סרטון</string>
|
||||||
@ -1289,10 +1341,23 @@ Second \"item\" text"</string>
|
|||||||
<string name="microg_settings_summary">הגדרות עבור GmsCore</string>
|
<string name="microg_settings_summary">הגדרות עבור GmsCore</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||||
|
<string name="revanced_disable_haptic_feedback_title">משוב ברטט</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_summary">שנה משוב ברטט</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_chapters_title">השבת משוב ברטט עבור פרקים</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_chapters_summary_on">משוב ברטט עבור פרקים מושבת</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_chapters_summary_off">משוב ברטט עבור פרקים מופעל</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_precise_seeking_title">השבת משוב ברטט עבור דילוג מדויק</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_on">משוב ברטט עבור דילוג מדויק מושבת</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_off">משוב ברטט עבור דילוג מדויק מופעל</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_seek_undo_title">השבת משוב ברטט עבור ביטול דילוג</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_seek_undo_summary_on">משוב ברטט עבור ביטול דילוג מושבת</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_seek_undo_summary_off">משוב ברטט עבור ביטול דילוג מופעל</string>
|
||||||
<string name="revanced_disable_haptic_feedback_zoom_title">השבת משוב זום ברטט</string>
|
<string name="revanced_disable_haptic_feedback_zoom_title">השבת משוב זום ברטט</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_zoom_summary_on">משוב ברטט עבור זום מושבת</string>
|
||||||
|
<string name="revanced_disable_haptic_feedback_zoom_summary_off">משוב ברטט עבור זום מופעל</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||||
<string name="microg_offline_account_login_error">אם שיניתם לאחרונה את פרטי הכניסה לחשבון שלכם, הסירו והתקינו מחדש את MicroG.</string>
|
<string name="microg_offline_account_login_error">אם פרטי הכניסה לחשבונך השתנו לאחרונה, אז יש להסיר ולהתקין מחדש את MicroG.</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="misc.links.bypassURLRedirectsPatch">
|
<patch id="misc.links.bypassURLRedirectsPatch">
|
||||||
<string name="revanced_bypass_url_redirects_title">עקוף הפניות מחדש של URL</string>
|
<string name="revanced_bypass_url_redirects_title">עקוף הפניות מחדש של URL</string>
|
||||||
@ -1336,7 +1401,7 @@ Second \"item\" text"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">הצג לחצן דו-שיח של מהירות</string>
|
<string name="revanced_playback_speed_dialog_button_title">הצג לחצן דו-שיח של מהירות</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">הלחצן מוצג</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">הלחצן מוצג. יש להקיש ולהחזיק כדי לאפס את מהירות ההפעלה לברירת מחדל</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">הלחצן אינו מוצג</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">הלחצן אינו מוצג</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1348,6 +1413,7 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">מהירויות מותאמות אישית חייבות להיות קטנות מ-%s</string>
|
<string name="revanced_custom_playback_speeds_invalid">מהירויות מותאמות אישית חייבות להיות קטנות מ-%s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">מהירויות הפעלה מותאמות אישית לא חוקיות</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">מהירויות הפעלה מותאמות אישית לא חוקיות</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">אוטומטי</string>
|
<string name="revanced_custom_playback_speeds_auto">אוטומטי</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">מהירות ההפעלה אופסה ל: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">מהירות הקשה והחזקה מותאמת אישית</string>
|
<string name="revanced_speed_tap_and_hold_title">מהירות הקשה והחזקה מותאמת אישית</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">מהירות הפעלה בין 0 ל-8</string>
|
<string name="revanced_speed_tap_and_hold_summary">מהירות הפעלה בין 0 ל-8</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -112,20 +112,20 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ
|
|||||||
<patch id="misc.debugging.enableDebuggingPatch">
|
<patch id="misc.debugging.enableDebuggingPatch">
|
||||||
<string name="revanced_debug_screen_title">デバッグ</string>
|
<string name="revanced_debug_screen_title">デバッグ</string>
|
||||||
<string name="revanced_debug_screen_summary">デバッグの設定</string>
|
<string name="revanced_debug_screen_summary">デバッグの設定</string>
|
||||||
<string name="revanced_debug_title">デバッグ ログを有効にする</string>
|
<string name="revanced_debug_title">デバッグログを有効にする</string>
|
||||||
<string name="revanced_debug_summary_on">デバッグ ログは有効です</string>
|
<string name="revanced_debug_summary_on">デバッグログは有効です</string>
|
||||||
<string name="revanced_debug_summary_off">デバッグ ログは無効です</string>
|
<string name="revanced_debug_summary_off">デバッグログは無効です</string>
|
||||||
<string name="revanced_debug_protobuffer_title">protocol buffer を記録する</string>
|
<string name="revanced_debug_protobuffer_title">protocol buffer を記録する</string>
|
||||||
<string name="revanced_debug_protobuffer_summary_on">デバッグ ログに protocol buffer が含まれます</string>
|
<string name="revanced_debug_protobuffer_summary_on">protocol buffer はデバッグログに含まれます</string>
|
||||||
<string name="revanced_debug_protobuffer_summary_off">デバッグ ログに protocol buffer は含まれません</string>
|
<string name="revanced_debug_protobuffer_summary_off">protocol buffer はデバッグログに含まれません</string>
|
||||||
<string name="revanced_debug_protobuffer_user_dialog_message">"この設定を有効にすると、一部の UI コンポーネントの画面上のテキストなど、追加のレイアウト データがデバッグログに記録されます。
|
<string name="revanced_debug_protobuffer_user_dialog_message">"この設定を有効にすると、一部の UI コンポーネントの画面上のテキストなど、追加のレイアウト データがデバッグログに記録されます。
|
||||||
|
|
||||||
この追加されたデータは、カスタム フィルタを作成する際にコンポーネントを特定するのに役立つ可能性があります。
|
この追加されたデータは、カスタム フィルタを作成する際にコンポーネントを特定するのに役立つ可能性があります。
|
||||||
|
|
||||||
ただし、IP アドレスなどの一部のユーザーデータもデバッグログに記録されるようになることに注意が必要です。"</string>
|
ただし、この機能によりデバッグログに追加で記録されるデータには、IP アドレスなど、一部のユーザーデータも含まれます。"</string>
|
||||||
<string name="revanced_debug_stacktrace_title">stack trace を記録する</string>
|
<string name="revanced_debug_stacktrace_title">stack trace を記録する</string>
|
||||||
<string name="revanced_debug_stacktrace_summary_on">デバッグ ログにstack trace が含まれます</string>
|
<string name="revanced_debug_stacktrace_summary_on">stack trace はデバッグログに含まれます</string>
|
||||||
<string name="revanced_debug_stacktrace_summary_off">デバッグ ログにstack trace は含まれません</string>
|
<string name="revanced_debug_stacktrace_summary_off">stack trace はデバッグログに含まれません</string>
|
||||||
<string name="revanced_debug_toast_on_error_title">ReVanced エラーのトーストを表示する</string>
|
<string name="revanced_debug_toast_on_error_title">ReVanced エラーのトーストを表示する</string>
|
||||||
<string name="revanced_debug_toast_on_error_summary_on">エラー発生時にトースト ポップアップが表示されます</string>
|
<string name="revanced_debug_toast_on_error_summary_on">エラー発生時にトースト ポップアップが表示されます</string>
|
||||||
<string name="revanced_debug_toast_on_error_summary_off">エラーが発生してもトースト ポップアップは表示されません</string>
|
<string name="revanced_debug_toast_on_error_summary_off">エラーが発生してもトースト ポップアップは表示されません</string>
|
||||||
@ -134,13 +134,13 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ
|
|||||||
あらゆる予期せぬイベントが通知されなくなります。"</string>
|
あらゆる予期せぬイベントが通知されなくなります。"</string>
|
||||||
<string name="revanced_debug_export_logs_to_clipboard_title">デバッグログをエクスポート</string>
|
<string name="revanced_debug_export_logs_to_clipboard_title">デバッグログをエクスポート</string>
|
||||||
<string name="revanced_debug_export_logs_to_clipboard_summary">ReVanced のデバッグログをクリップボードにコピーします</string>
|
<string name="revanced_debug_export_logs_to_clipboard_summary">ReVanced のデバッグログをクリップボードにコピーします</string>
|
||||||
<string name="revanced_debug_logs_disabled">デバッグログは無効です</string>
|
<string name="revanced_debug_logs_disabled">デバッグログが無効です</string>
|
||||||
<string name="revanced_debug_logs_none_found">ログが見つかりませんでした</string>
|
<string name="revanced_debug_logs_none_found">ログが見つかりませんでした</string>
|
||||||
<string name="revanced_debug_logs_copied_to_clipboard">ログをコピーしました</string>
|
<string name="revanced_debug_logs_copied_to_clipboard">ログをコピーしました</string>
|
||||||
<string name="revanced_debug_logs_failed_to_export">ログのエクスポートに失敗: $s</string>
|
<string name="revanced_debug_logs_failed_to_export">ログのエクスポートに失敗: $s</string>
|
||||||
<string name="revanced_debug_logs_clear_buffer_title">デバッグログを消去する</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_buffer_summary">保存されている ReVanced のデバッグログをすべて消去します</string>
|
||||||
<string name="revanced_debug_logs_clear_toast">ログが消去されました</string>
|
<string name="revanced_debug_logs_clear_toast">ログを消去しました</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||||
<string name="revanced_hide_album_cards_title">アルバム情報を非表示</string>
|
<string name="revanced_hide_album_cards_title">アルバム情報を非表示</string>
|
||||||
@ -264,8 +264,8 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ
|
|||||||
<string name="revanced_hide_ask_section_summary_on">質問セクションは表示されません</string>
|
<string name="revanced_hide_ask_section_summary_on">質問セクションは表示されません</string>
|
||||||
<string name="revanced_hide_ask_section_summary_off">質問セクションは表示されます</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_on">注目の場所 / ゲーム / 音楽 / 言及されている人物セクションは表示されません</string>
|
||||||
<string name="revanced_hide_attributes_section_summary_off">注目の場所 / ゲーム / 音楽 / 言及された人物セクションは表示されます</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_on">チャプター セクションは表示されません</string>
|
||||||
<string name="revanced_hide_chapters_section_summary_off">チャプター セクションは表示されます</string>
|
<string name="revanced_hide_chapters_section_summary_off">チャプター セクションは表示されます</string>
|
||||||
@ -428,10 +428,10 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ
|
|||||||
<patch id="interaction.copyvideourl.copyVideoUrlResourcePatch">
|
<patch id="interaction.copyvideourl.copyVideoUrlResourcePatch">
|
||||||
<string name="revanced_share_copy_url_success">URL をクリップボードにコピーしました</string>
|
<string name="revanced_share_copy_url_success">URL をクリップボードにコピーしました</string>
|
||||||
<string name="revanced_share_copy_url_timestamp_success">タイムスタンプ付きの URL がコピーされました</string>
|
<string name="revanced_share_copy_url_timestamp_success">タイムスタンプ付きの URL がコピーされました</string>
|
||||||
<string name="revanced_copy_video_url_title">「動画の URL をコピー」ボタンを表示</string>
|
<string name="revanced_copy_video_url_title">「動画の URL をコピー」ボタンを表示する</string>
|
||||||
<string name="revanced_copy_video_url_summary_on">ボタンはオーバーレイに表示されます。タップすると動画の URL を、長押しするとタイムスタンプ付きの URL をそれぞれコピーできます</string>
|
<string name="revanced_copy_video_url_summary_on">ボタンはオーバーレイに表示されます。タップすると動画の URL を、長押しするとタイムスタンプ付きの URL をそれぞれコピーできます</string>
|
||||||
<string name="revanced_copy_video_url_summary_off">ボタンはオーバーレイに表示されません</string>
|
<string name="revanced_copy_video_url_summary_off">ボタンはオーバーレイに表示されません</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_title">「動画のタイムスタンプ付き URL をコピー」ボタンを表示</string>
|
<string name="revanced_copy_video_url_timestamp_title">「動画のタイムスタンプ付き URL をコピー」ボタンを表示する</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_summary_on">ボタンはオーバーレイに表示されます。タップするとタイムスタンプ付きの URL を、長押しするとタイムスタンプなしの URL をそれぞれコピーできます</string>
|
<string name="revanced_copy_video_url_timestamp_summary_on">ボタンはオーバーレイに表示されます。タップするとタイムスタンプ付きの URL を、長押しするとタイムスタンプなしの URL をそれぞれコピーできます</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_summary_off">ボタンはオーバーレイに表示されません</string>
|
<string name="revanced_copy_video_url_timestamp_summary_off">ボタンはオーバーレイに表示されません</string>
|
||||||
</patch>
|
</patch>
|
||||||
@ -753,6 +753,9 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ
|
|||||||
<string name="revanced_hide_shorts_location_label_title">位置情報ラベルを非表示</string>
|
<string name="revanced_hide_shorts_location_label_title">位置情報ラベルを非表示</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">位置情報ラベルは表示されません</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">位置情報ラベルは表示されません</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">位置情報ラベルは表示されます</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">位置情報ラベルは表示されます</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">コメント パネルを非表示</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">コメント パネルは表示されません</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">コメント パネルが表示されます</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">「音楽を保存」ボタンを非表示</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">「音楽を保存」ボタンを非表示</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">「音楽を保存」ボタンは表示されません</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">「音楽を保存」ボタンは表示されません</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">「音楽を保存」ボタンは表示されます</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">「音楽を保存」ボタンは表示されます</string>
|
||||||
@ -1371,9 +1374,9 @@ Automotive レイアウト
|
|||||||
<string name="revanced_remove_tracking_query_parameter_summary_off">追跡パラメータはリンクから削除されません</string>
|
<string name="revanced_remove_tracking_query_parameter_summary_off">追跡パラメータはリンクから削除されません</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.audio.forceOriginalAudioPatch">
|
<patch id="video.audio.forceOriginalAudioPatch">
|
||||||
<string name="revanced_force_original_audio_title">デフォルトの吹き替えを無効にする</string>
|
<string name="revanced_force_original_audio_title">デフォルトの吹き替え再生を無効にする</string>
|
||||||
<string name="revanced_force_original_audio_summary_on">デフォルトの吹き替えは無効です</string>
|
<string name="revanced_force_original_audio_summary_on">デフォルトの吹き替え再生は無効です</string>
|
||||||
<string name="revanced_force_original_audio_summary_off">デフォルトの吹き替えは有効です</string>
|
<string name="revanced_force_original_audio_summary_off">デフォルトの吹き替え再生は有効です</string>
|
||||||
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
|
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
|
||||||
<string name="revanced_force_original_audio_not_available">この機能を使用するには、「動画ストリームを偽装する」のクライアントを iOS TV に変更してください</string>
|
<string name="revanced_force_original_audio_not_available">この機能を使用するには、「動画ストリームを偽装する」のクライアントを iOS TV に変更してください</string>
|
||||||
</patch>
|
</patch>
|
||||||
@ -1396,9 +1399,9 @@ Automotive レイアウト
|
|||||||
<string name="revanced_remember_video_quality_toast_shorts">ショートの画質 (%1$s): %2$s</string>
|
<string name="revanced_remember_video_quality_toast_shorts">ショートの画質 (%1$s): %2$s</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">再生速度設定ボタンを非表示</string>
|
<string name="revanced_playback_speed_dialog_button_title">再生速度設定ボタンを表示する</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">再生速度設定ボタンはオーバーレイに表示されます</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">ボタンはオーバーレイに表示されます。長押しすると、再生速度がデフォルトの値にリセットされます</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">再生速度設定ボタンはオーバーレイに表示されません</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">ボタンはオーバーレイに表示されません</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
<string name="revanced_custom_speed_menu_title">カスタムした再生速度リストを使用する</string>
|
<string name="revanced_custom_speed_menu_title">カスタムした再生速度リストを使用する</string>
|
||||||
@ -1409,8 +1412,9 @@ Automotive レイアウト
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">再生速度は %s 未満である必要があります</string>
|
<string name="revanced_custom_playback_speeds_invalid">再生速度は %s 未満である必要があります</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">カスタム再生速度リストが無効です</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">カスタム再生速度リストが無効です</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">自動</string>
|
<string name="revanced_custom_playback_speeds_auto">自動</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">再生速度をリセットしました: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">長押し倍速再生の速度</string>
|
<string name="revanced_speed_tap_and_hold_title">長押し倍速再生の速度</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">長押し倍速再生の速度の値は 0-8 の範囲で、0 および 8 は含まれません</string>
|
<string name="revanced_speed_tap_and_hold_summary">再生速度の範囲は 0-8 で、0 および 8 は含まれません</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
|
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
|
||||||
<string name="revanced_remember_playback_speed_last_selected_title">再生速度の変更を保存する</string>
|
<string name="revanced_remember_playback_speed_last_selected_title">再生速度の変更を保存する</string>
|
||||||
@ -1436,7 +1440,7 @@ Automotive レイアウト
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
|
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
|
||||||
<string name="revanced_spoof_video_streams_screen_title">動画ストリームを偽装する</string>
|
<string name="revanced_spoof_video_streams_screen_title">動画ストリームを偽装する</string>
|
||||||
<string name="revanced_spoof_video_streams_screen_summary">動画の再生に失敗しないために、クライアントの動画ストリームを偽装します</string>
|
<string name="revanced_spoof_video_streams_screen_summary">動画再生の失敗を回避するために、クライアントの動画ストリームを偽装します</string>
|
||||||
<string name="revanced_spoof_video_streams_title">動画ストリームを偽装する</string>
|
<string name="revanced_spoof_video_streams_title">動画ストリームを偽装する</string>
|
||||||
<string name="revanced_spoof_video_streams_summary_on">動画ストリームは偽装されます</string>
|
<string name="revanced_spoof_video_streams_summary_on">動画ストリームは偽装されます</string>
|
||||||
<string name="revanced_spoof_video_streams_summary_off">"動画ストリームは偽装されません
|
<string name="revanced_spoof_video_streams_summary_off">"動画ストリームは偽装されません
|
||||||
@ -1457,7 +1461,7 @@ AVC は、最大解像度が 1080p であり、Opus オーディオ コーデッ
|
|||||||
<string name="revanced_spoof_video_streams_about_android_title">Android クライアントの副作用</string>
|
<string name="revanced_spoof_video_streams_about_android_title">Android クライアントの副作用</string>
|
||||||
<string name="revanced_spoof_video_streams_about_android_summary">"• 「音声トラック」がフライアウト メニューに表示されない
|
<string name="revanced_spoof_video_streams_about_android_summary">"• 「音声トラック」がフライアウト メニューに表示されない
|
||||||
• 「一定音量」が利用できない
|
• 「一定音量」が利用できない
|
||||||
• 「デフォルトの吹き替えを無効にする」が利用できない"</string>
|
• 「デフォルトの吹き替え再生を無効にする」が利用できない"</string>
|
||||||
<string name="revanced_spoof_video_streams_about_no_av1">• AV1 コーデックが利用できない</string>
|
<string name="revanced_spoof_video_streams_about_no_av1">• AV1 コーデックが利用できない</string>
|
||||||
<string name="revanced_spoof_video_streams_about_kids_videos">• ログアウト時またはシークレット モード時に、子ども向け動画が再生されない可能性がある</string>
|
<string name="revanced_spoof_video_streams_about_kids_videos">• ログアウト時またはシークレット モード時に、子ども向け動画が再生されない可能性がある</string>
|
||||||
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">統計情報に表示する</string>
|
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">統計情報に表示する</string>
|
||||||
@ -1517,9 +1521,9 @@ AVC は、最大解像度が 1080p であり、Opus オーディオ コーデッ
|
|||||||
<string name="revanced_other_category_title">その他の設定</string>
|
<string name="revanced_other_category_title">その他の設定</string>
|
||||||
<string name="revanced_client_ads_category_title">クライアントサイド広告</string>
|
<string name="revanced_client_ads_category_title">クライアントサイド広告</string>
|
||||||
<string name="revanced_surestream_ads_category_title">サーバー側サレストリーム広告</string>
|
<string name="revanced_surestream_ads_category_title">サーバー側サレストリーム広告</string>
|
||||||
<string name="revanced_twitch_debug_title">デバッグ ログ</string>
|
<string name="revanced_twitch_debug_title">デバッグログ</string>
|
||||||
<string name="revanced_twitch_debug_summary_on">デバッグ ログは有効です</string>
|
<string name="revanced_twitch_debug_summary_on">デバッグログは有効です</string>
|
||||||
<string name="revanced_twitch_debug_summary_off">デバッグ ログは無効です</string>
|
<string name="revanced_twitch_debug_summary_off">デバッグログは無効です</string>
|
||||||
</patch>
|
</patch>
|
||||||
</app>
|
</app>
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -488,14 +488,14 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
|
|||||||
<string name="revanced_swipe_overlay_timeout_title">스와이프 오버레이 타임아웃</string>
|
<string name="revanced_swipe_overlay_timeout_title">스와이프 오버레이 타임아웃</string>
|
||||||
<string name="revanced_swipe_overlay_timeout_summary">오버레이가 표시되는 시간을 지정할 수 있습니다 (밀리초)</string>
|
<string name="revanced_swipe_overlay_timeout_summary">오버레이가 표시되는 시간을 지정할 수 있습니다 (밀리초)</string>
|
||||||
<string name="revanced_swipe_overlay_background_opacity_title">스와이프 오버레이 배경 불투명도</string>
|
<string name="revanced_swipe_overlay_background_opacity_title">스와이프 오버레이 배경 불투명도</string>
|
||||||
<string name="revanced_swipe_overlay_background_opacity_summary">스와이프 불투명도 값은 0-100 사이여야 합니다</string>
|
<string name="revanced_swipe_overlay_background_opacity_summary">배경 불투명도 값을 0-100 사이에서 지정할 수 있습니다</string>
|
||||||
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">스와이프 불투명도 값은 0-100 사이여야 합니다</string>
|
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">스와이프 배경 불투명도 값은 0-100 사이여야 합니다</string>
|
||||||
<string name="revanced_swipe_overlay_progress_brightness_color_title">스와이프 오버레이 밝기 조절바 색상</string>
|
<string name="revanced_swipe_overlay_progress_brightness_color_title">스와이프 오버레이 밝기 조절바 색상</string>
|
||||||
<string name="revanced_swipe_overlay_progress_brightness_color_summary">스와이프 오버레이 밝기 조절바 색상을 변경할 수 있습니다</string>
|
<string name="revanced_swipe_overlay_progress_brightness_color_summary">밝기 조절바 색상을 지정할 수 있습니다</string>
|
||||||
<string name="revanced_swipe_overlay_progress_volume_color_title">스와이프 오버레이 볼륨 조절바 색상</string>
|
<string name="revanced_swipe_overlay_progress_volume_color_title">스와이프 오버레이 볼륨 조절바 색상</string>
|
||||||
<string name="revanced_swipe_overlay_progress_volume_color_summary">스와이프 오버레이 볼륨 조절바 색상을 변경할 수 있습니다</string>
|
<string name="revanced_swipe_overlay_progress_volume_color_summary">볼륨 조절바 색상을 지정할 수 있습니다</string>
|
||||||
<string name="revanced_swipe_text_overlay_size_title">스와이프 오버레이 텍스트 크기</string>
|
<string name="revanced_swipe_text_overlay_size_title">스와이프 오버레이 텍스트 크기</string>
|
||||||
<string name="revanced_swipe_text_overlay_size_summary">스와이프 오버레이 텍스트 크기를 지정할 수 있습니다 (1-30)</string>
|
<string name="revanced_swipe_text_overlay_size_summary">텍스트 크기를 1-30 사이에서 지정할 수 있습니다</string>
|
||||||
<string name="revanced_swipe_text_overlay_size_invalid_toast">텍스트 크기는 1-30 사이여야 합니다</string>
|
<string name="revanced_swipe_text_overlay_size_invalid_toast">텍스트 크기는 1-30 사이여야 합니다</string>
|
||||||
<string name="revanced_swipe_threshold_title">스와이프 한계치</string>
|
<string name="revanced_swipe_threshold_title">스와이프 한계치</string>
|
||||||
<string name="revanced_swipe_threshold_summary">제스처 인식을 위해 얼마나 스와이프를 해야 할지를 지정할 수 있으며, 원하지 않은 제스처 인식을 방지할 수 있습니다</string>
|
<string name="revanced_swipe_threshold_summary">제스처 인식을 위해 얼마나 스와이프를 해야 할지를 지정할 수 있으며, 원하지 않은 제스처 인식을 방지할 수 있습니다</string>
|
||||||
@ -750,6 +750,9 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
|
|||||||
<string name="revanced_hide_shorts_location_label_title">위치 라벨 숨기기</string>
|
<string name="revanced_hide_shorts_location_label_title">위치 라벨 숨기기</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">위치 라벨이 숨겨집니다</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">위치 라벨이 숨겨집니다</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">위치 라벨이 표시됩니다</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">위치 라벨이 표시됩니다</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">댓글 패널 숨기기</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">댓글 패널이 숨겨집니다</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">댓글 패널이 표시됩니다</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">(재생목록에) 음악 저장 버튼 숨기기</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">(재생목록에) 음악 저장 버튼 숨기기</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">(재생목록에) 음악 저장 버튼이 숨겨집니다</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">(재생목록에) 음악 저장 버튼이 숨겨집니다</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">(재생목록에) 음악 저장 버튼이 표시됩니다</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">(재생목록에) 음악 저장 버튼이 표시됩니다</string>
|
||||||
@ -850,7 +853,7 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
|
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
|
||||||
<string name="revanced_player_overlay_opacity_title">플레이어 오버레이 불투명도</string>
|
<string name="revanced_player_overlay_opacity_title">플레이어 오버레이 불투명도</string>
|
||||||
<string name="revanced_player_overlay_opacity_summary">불투명도 값은 0-100 사이이며, 0은 투명입니다</string>
|
<string name="revanced_player_overlay_opacity_summary">불투명도 값을 0-100 사이에서 지정할 수 있습니다 (투명: 0)</string>
|
||||||
<string name="revanced_player_overlay_opacity_invalid_toast">플레이어 오버레이 불투명도는 0-100 사이여야 합니다</string>
|
<string name="revanced_player_overlay_opacity_invalid_toast">플레이어 오버레이 불투명도는 0-100 사이여야 합니다</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.returnyoutubedislike.returnYouTubeDislikePatch">
|
<patch id="layout.returnyoutubedislike.returnYouTubeDislikePatch">
|
||||||
@ -1249,7 +1252,7 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
|
|||||||
<string name="revanced_miniplayer_width_dip_summary">화면 크기 초기값을 지정할 수 있습니다 (픽셀)</string>
|
<string name="revanced_miniplayer_width_dip_summary">화면 크기 초기값을 지정할 수 있습니다 (픽셀)</string>
|
||||||
<string name="revanced_miniplayer_width_dip_invalid_toast">픽셀 크기는 %1$s-%2$s 사이여야 합니다</string>
|
<string name="revanced_miniplayer_width_dip_invalid_toast">픽셀 크기는 %1$s-%2$s 사이여야 합니다</string>
|
||||||
<string name="revanced_miniplayer_opacity_title">미니 플레이어 오버레이 불투명도</string>
|
<string name="revanced_miniplayer_opacity_title">미니 플레이어 오버레이 불투명도</string>
|
||||||
<string name="revanced_miniplayer_opacity_summary">불투명도 값은 0-100 사이이며, 0은 투명입니다</string>
|
<string name="revanced_miniplayer_opacity_summary">불투명도 값을 0-100 사이에서 지정할 수 있습니다 (투명: 0)</string>
|
||||||
<string name="revanced_miniplayer_opacity_invalid_toast">미니 플레이어 오버레이 불투명도는 0-100 사이여야 합니다</string>
|
<string name="revanced_miniplayer_opacity_invalid_toast">미니 플레이어 오버레이 불투명도는 0-100 사이여야 합니다</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.theme.themePatch">
|
<patch id="layout.theme.themePatch">
|
||||||
@ -1260,9 +1263,9 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
|
|||||||
<string name="revanced_seekbar_custom_color_summary_on">사용자 정의 재생바 색상을 활성화합니다</string>
|
<string name="revanced_seekbar_custom_color_summary_on">사용자 정의 재생바 색상을 활성화합니다</string>
|
||||||
<string name="revanced_seekbar_custom_color_summary_off">기본 재생바 색상을 활성화합니다</string>
|
<string name="revanced_seekbar_custom_color_summary_off">기본 재생바 색상을 활성화합니다</string>
|
||||||
<string name="revanced_seekbar_custom_color_primary_title">사용자 정의 재생바 메인 색상</string>
|
<string name="revanced_seekbar_custom_color_primary_title">사용자 정의 재생바 메인 색상</string>
|
||||||
<string name="revanced_seekbar_custom_color_primary_summary">재생바 메인 색상을 변경할 수 있습니다</string>
|
<string name="revanced_seekbar_custom_color_primary_summary">재생바 메인 색상을 지정할 수 있습니다</string>
|
||||||
<string name="revanced_seekbar_custom_color_accent_title">사용자 정의 재생바 보조 색상</string>
|
<string name="revanced_seekbar_custom_color_accent_title">사용자 정의 재생바 보조 색상</string>
|
||||||
<string name="revanced_seekbar_custom_color_accent_summary">재생바 보조 색상을 변경할 수 있습니다</string>
|
<string name="revanced_seekbar_custom_color_accent_summary">재생바 보조 색상을 지정할 수 있습니다</string>
|
||||||
<string name="revanced_seekbar_custom_color_invalid">잘못된 재생바 색상입니다</string>
|
<string name="revanced_seekbar_custom_color_invalid">잘못된 재생바 색상입니다</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
|
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
|
||||||
@ -1401,7 +1404,7 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">동영상 재생 속도 다이얼로그 버튼 표시하기</string>
|
<string name="revanced_playback_speed_dialog_button_title">동영상 재생 속도 다이얼로그 버튼 표시하기</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">버튼을 표시합니다</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">버튼을 표시합니다\n\n• 버튼을 길게 누르면 동영상 재생 속도가 기본값으로 초기화됩니다</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">버튼을 표시하지 않습니다</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">버튼을 표시하지 않습니다</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1409,10 +1412,11 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요"</string>
|
|||||||
<string name="revanced_custom_speed_menu_summary_on">사용자 정의 동영상 재생 속도를 활성화합니다</string>
|
<string name="revanced_custom_speed_menu_summary_on">사용자 정의 동영상 재생 속도를 활성화합니다</string>
|
||||||
<string name="revanced_custom_speed_menu_summary_off">사용자 정의 동영상 재생 속도를 비활성화합니다</string>
|
<string name="revanced_custom_speed_menu_summary_off">사용자 정의 동영상 재생 속도를 비활성화합니다</string>
|
||||||
<string name="revanced_custom_playback_speeds_title">사용자 정의 동영상 재생 속도 편집하기</string>
|
<string name="revanced_custom_playback_speeds_title">사용자 정의 동영상 재생 속도 편집하기</string>
|
||||||
<string name="revanced_custom_playback_speeds_summary">사용자 정의 동영상 재생 속도 값을 추가 또는 변경할 수 있습니다</string>
|
<string name="revanced_custom_playback_speeds_summary">동영상 재생 속도 값을 추가 또는 변경할 수 있습니다</string>
|
||||||
<string name="revanced_custom_playback_speeds_invalid">재생 속도 값은 %s배속보다 작아야 합니다</string>
|
<string name="revanced_custom_playback_speeds_invalid">재생 속도 값은 %s배속보다 작아야 합니다</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">잘못된 사용자 정의 재생 속도 값입니다</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">잘못된 사용자 정의 재생 속도 값입니다</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">자동</string>
|
<string name="revanced_custom_playback_speeds_auto">자동</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">동영상 재생 속도를 %s 으로 초기화하였습니다</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">사용자 정의 길게 눌러서 동영상 재생 속도</string>
|
<string name="revanced_speed_tap_and_hold_title">사용자 정의 길게 눌러서 동영상 재생 속도</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">화면을 길게 누르는 동안에 변경되는 동영상 재생 속도를 0-8 사이에서 지정할 수 있습니다</string>
|
<string name="revanced_speed_tap_and_hold_summary">화면을 길게 누르는 동안에 변경되는 동영상 재생 속도를 0-8 사이에서 지정할 수 있습니다</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -748,6 +748,9 @@ Jei pakeitus šį nustatymą neįsigalioja, pabandykite perjungti į inkognito r
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Slėpti vietovės etiketę</string>
|
<string name="revanced_hide_shorts_location_label_title">Slėpti vietovės etiketę</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Vietovės etiketė paslėpta</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Vietovės etiketė paslėpta</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Vietovės etiketė rodoma</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Vietovės etiketė rodoma</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Slėpti komentarų skydelį</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">Komentarų skydelis yra paslėptas</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">Komentarų skydelis rodomas</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Paslėpti mygtuką „Įrašyti muziką\"</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Paslėpti mygtuką „Įrašyti muziką\"</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">\"Išsaugoti muziką\" mygtukas paslėptas</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">\"Išsaugoti muziką\" mygtukas paslėptas</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">\"Išsaugoti muziką\" mygtukas rodomas</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">\"Išsaugoti muziką\" mygtukas rodomas</string>
|
||||||
@ -1397,7 +1400,7 @@ Gali būti atrakinta aukštesnės vaizdo įrašų kokybės, bet galite patirti v
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Rodyti greičio dialogo mygtuką</string>
|
<string name="revanced_playback_speed_dialog_button_title">Rodyti greičio dialogo mygtuką</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Mygtukas rodomas</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Mygtukas rodomas. Palieskite ir palaikykite, kad atkūrimo greitį nustatytumėte į numatytąjį.</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Mygtukas nerodomas</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Mygtukas nerodomas</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1409,6 +1412,7 @@ Gali būti atrakinta aukštesnės vaizdo įrašų kokybės, bet galite patirti v
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Pasirinktinis greitis turi būti mažesnis nei %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">Pasirinktinis greitis turi būti mažesnis nei %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Netinkamas pasirinktinis atkūrimo greitis</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Netinkamas pasirinktinis atkūrimo greitis</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Automatinis</string>
|
<string name="revanced_custom_playback_speeds_auto">Automatinis</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Atkūrimo greitis nustatytas iš naujo: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Pritaikytas bakstelėjimo ir laikymo greitis</string>
|
<string name="revanced_speed_tap_and_hold_title">Pritaikytas bakstelėjimo ir laikymo greitis</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">Atkūrimo greitis: nuo 0 iki 8</string>
|
<string name="revanced_speed_tap_and_hold_summary">Atkūrimo greitis: nuo 0 iki 8</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -750,6 +750,9 @@ Lai parādītu audio celiņu izvēlni, mainiet \"Video straumju viltošana\" uz
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Paslēpt atrašanās vietas nosaukumu</string>
|
<string name="revanced_hide_shorts_location_label_title">Paslēpt atrašanās vietas nosaukumu</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Atrašanās vietas nosaukums ir paslēpts</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Atrašanās vietas nosaukums ir paslēpts</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Atrašanās vietas nosaukums ir redzams</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Atrašanās vietas nosaukums ir redzams</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Slēpt komentāru paneli</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">Komentāru panelis ir paslēpts</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">Komentāru panelis ir redzams</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Paslēpt pogu \"Saglabāt mūziku\"</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Paslēpt pogu \"Saglabāt mūziku\"</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">“Saglabāt mūziku” poga ir paslēpta</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">“Saglabāt mūziku” poga ir paslēpta</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">“Saglabāt mūziku” poga ir redzama</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">“Saglabāt mūziku” poga ir redzama</string>
|
||||||
@ -1397,7 +1400,7 @@ Var tikt atbloķētas augstākas video kvalitātes, taču var rasties video atsk
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Rādīt ātruma dialoga pogu</string>
|
<string name="revanced_playback_speed_dialog_button_title">Rādīt ātruma dialoga pogu</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Poga tiek rādīta</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Poga ir redzama. Pieskarieties un turiet, lai atiestatītu atskaņošanas ātrumu uz noklusējuma</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Poga netiek rādīta</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Poga netiek rādīta</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1409,6 +1412,7 @@ Var tikt atbloķētas augstākas video kvalitātes, taču var rasties video atsk
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Pielāgoti ātrumi ir jābūt mazākiem par %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">Pielāgoti ātrumi ir jābūt mazākiem par %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Nederīgi pielāgoti video atskaņošanas ātrumi</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Nederīgi pielāgoti video atskaņošanas ātrumi</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Automātiski</string>
|
<string name="revanced_custom_playback_speeds_auto">Automātiski</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Atskaņošanas ātrums atiestatīts uz: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Pielāgots pieskaršanās un turēšanas ātrums</string>
|
<string name="revanced_speed_tap_and_hold_title">Pielāgots pieskaršanās un turēšanas ātrums</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">Atskaņošanas ātrums no 0 līdz 8</string>
|
<string name="revanced_speed_tap_and_hold_summary">Atskaņošanas ātrums no 0 līdz 8</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -750,6 +750,9 @@ Om het audiotrackmenu weer te geven, wijzigt u 'Videostreams vervalsen' in iOS T
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Verberg locatie-etiket</string>
|
<string name="revanced_hide_shorts_location_label_title">Verberg locatie-etiket</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Locatie-etiket is verborgen</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Locatie-etiket is verborgen</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Locatie-etiket wordt weergegeven</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Locatie-etiket wordt weergegeven</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Commentaarvenster verbergen</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">Commentaarvenster is verborgen</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">Het commentaarvenster wordt weergegeven</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Verberg de knop \"Muziek opslaan\"</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Verberg de knop \"Muziek opslaan\"</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Muziek opslaan-knop is verborgen</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Muziek opslaan-knop is verborgen</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Muziek opslaan-knop wordt weergegeven</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Muziek opslaan-knop wordt weergegeven</string>
|
||||||
@ -1396,7 +1399,7 @@ Het inschakelen hiervan kan hogere videokwaliteiten ontgrendelen"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Snelheidsdialoogknop weergeven</string>
|
<string name="revanced_playback_speed_dialog_button_title">Snelheidsdialoogknop weergeven</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Knop wordt weergegeven</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">De knop wordt weergegeven. Tik en houd vast om de afspeelsnelheid terug te zetten naar de standaardwaarde</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Knop wordt niet weergegeven</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Knop wordt niet weergegeven</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1408,6 +1411,7 @@ Het inschakelen hiervan kan hogere videokwaliteiten ontgrendelen"</string>
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Aangepaste snelheden moeten lager zijn dan %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">Aangepaste snelheden moeten lager zijn dan %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Ongeldige aangepaste afspeelsnelheden</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Ongeldige aangepaste afspeelsnelheden</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Automatisch</string>
|
<string name="revanced_custom_playback_speeds_auto">Automatisch</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Afspeelsnelheid hersteld naar: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">De snelheid van aangepast tikken en vasthouden</string>
|
<string name="revanced_speed_tap_and_hold_title">De snelheid van aangepast tikken en vasthouden</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">Afspeelsnelheid tussen 0-8</string>
|
<string name="revanced_speed_tap_and_hold_summary">Afspeelsnelheid tussen 0-8</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -746,6 +746,9 @@ Aby pokazać menu ścieżki audio, zmień opcję „Fałszuj strumienie wideo”
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Etykieta lokalizacji</string>
|
<string name="revanced_hide_shorts_location_label_title">Etykieta lokalizacji</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Etykieta lokalizacji jest ukryta</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Etykieta lokalizacji jest ukryta</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Etykieta lokalizacji jest widoczna</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Etykieta lokalizacji jest widoczna</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Ukryj panel komentarzy</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">Panel komentarzy jest ukryty</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">Panel komentarzy jest wyświetlany</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Ukryj przycisk \"Zapisz muzykę\"</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Ukryj przycisk \"Zapisz muzykę\"</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Przycisk od zapisywania muzyki jest ukryty</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Przycisk od zapisywania muzyki jest ukryty</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Przycisk od zapisywania muzyki jest widoczny</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Przycisk od zapisywania muzyki jest widoczny</string>
|
||||||
@ -1394,7 +1397,7 @@ Włączenie tego może odblokować wyższe jakości wideo"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Przycisk od prędkości</string>
|
<string name="revanced_playback_speed_dialog_button_title">Przycisk od prędkości</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Przycisk jest widoczny</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Przycisk jest widoczny. Dotknij i przytrzymaj, aby zresetować prędkość odtwarzania do domyślnej</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Przycisk nie jest widoczny</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Przycisk nie jest widoczny</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1406,6 +1409,7 @@ Włączenie tego może odblokować wyższe jakości wideo"</string>
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Prędkości niestandardowe muszą być mniejsze niż %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">Prędkości niestandardowe muszą być mniejsze niż %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Nieprawidłowe prędkości odtwarzania niestandardowego</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Nieprawidłowe prędkości odtwarzania niestandardowego</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Automatyczne</string>
|
<string name="revanced_custom_playback_speeds_auto">Automatyczne</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Prędkość odtwarzania zresetowana do: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Szybkość dostosowywania dotknięciem i przytrzymaniem</string>
|
<string name="revanced_speed_tap_and_hold_title">Szybkość dostosowywania dotknięciem i przytrzymaniem</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">Prędkość odtwarzania w granicach 0-8</string>
|
<string name="revanced_speed_tap_and_hold_summary">Prędkość odtwarzania w granicach 0-8</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -748,6 +748,9 @@ Para exibir o menu da faixa de áudio, altere \"Spoof video streams\" para iOS T
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Ocultar rótulo de localização</string>
|
<string name="revanced_hide_shorts_location_label_title">Ocultar rótulo de localização</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Rótulo de localização está oculto</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Rótulo de localização está oculto</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Rótulo de localização é mostrado</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Rótulo de localização é mostrado</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Ocultar painel de comentários</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">Painel de comentários está oculto</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">O painel de comentários é mostrado</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Ocultar botão Salvar música</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Ocultar botão Salvar música</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">O botão Salvar música está oculto</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">O botão Salvar música está oculto</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">O botão Salvar música será exibido</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">O botão Salvar música será exibido</string>
|
||||||
@ -1395,7 +1398,7 @@ Habilitar isso pode desbloquear qualidades de vídeo mais altas"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Mostrar botão de velocidade</string>
|
<string name="revanced_playback_speed_dialog_button_title">Mostrar botão de velocidade</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Botão não esta oculto</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">O botão é exibido. Toque e mantenha pressionado para redefinir a velocidade de reprodução para o padrão</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Botão não está visível</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Botão não está visível</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1407,6 +1410,7 @@ Habilitar isso pode desbloquear qualidades de vídeo mais altas"</string>
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Velocidades personalizadas devem ser menores que %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">Velocidades personalizadas devem ser menores que %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Velocidades de reprodução personalizadas inválidas</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Velocidades de reprodução personalizadas inválidas</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Automático</string>
|
<string name="revanced_custom_playback_speeds_auto">Automático</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Velocidade de reprodução redefinida para: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Velocidade personalizada de tocar e segurar</string>
|
<string name="revanced_speed_tap_and_hold_title">Velocidade personalizada de tocar e segurar</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">Velocidade de reprodução entre 0-8</string>
|
<string name="revanced_speed_tap_and_hold_summary">Velocidade de reprodução entre 0-8</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -750,6 +750,9 @@ Para mostrar o menu da faixa de áudio, altere \"Spoof video streams\" para iOS
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Ocultar rótulo de localização</string>
|
<string name="revanced_hide_shorts_location_label_title">Ocultar rótulo de localização</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Rótulo de localização está oculto</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Rótulo de localização está oculto</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Rótulo de localização é mostrado</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Rótulo de localização é mostrado</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Ocultar painel de comentários</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">O painel de comentários está oculto</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">O painel de comentários está visível</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Ocultar botão de salvar música</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Ocultar botão de salvar música</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">O botão salvar música está oculto</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">O botão salvar música está oculto</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">O botão salvar música é mostrado</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">O botão salvar música é mostrado</string>
|
||||||
@ -1398,7 +1401,7 @@ Bật tính năng này có thể mở khóa chất lượng video cao hơn"</str
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Mostrar botão de diálogo de velocidade</string>
|
<string name="revanced_playback_speed_dialog_button_title">Mostrar botão de diálogo de velocidade</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">O botão está visível</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">O botão é mostrado. Toque e segure para redefinir a velocidade de reprodução para o padrão</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">O botão não está visível</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">O botão não está visível</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1410,6 +1413,7 @@ Bật tính năng này có thể mở khóa chất lượng video cao hơn"</str
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Tốc độ tùy chỉnh phải nhỏ hơn %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">Tốc độ tùy chỉnh phải nhỏ hơn %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Tốc độ phát lại tùy chỉnh không hợp lệ</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Tốc độ phát lại tùy chỉnh không hợp lệ</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Automático</string>
|
<string name="revanced_custom_playback_speeds_auto">Automático</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Velocidade de reprodução redefinida para: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Velocidade personalizada ao tocar e segurar</string>
|
<string name="revanced_speed_tap_and_hold_title">Velocidade personalizada ao tocar e segurar</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">Velocidade de reprodução de 0 a 8</string>
|
<string name="revanced_speed_tap_and_hold_summary">Velocidade de reprodução de 0 a 8</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -750,6 +750,9 @@ Pentru a afișa meniul pentru pista audio, schimbați opțiunea „Falsifică fl
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Ascunde eticheta locației</string>
|
<string name="revanced_hide_shorts_location_label_title">Ascunde eticheta locației</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Eticheta locației este ascunsă</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Eticheta locației este ascunsă</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Eticheta locației este afișată</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Eticheta locației este afișată</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Ascunde panoul de comentarii</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">Panoul de comentarii este ascuns</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">Panoul de comentarii este afișat</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Ascunde butonul Salvează melodia</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Ascunde butonul Salvează melodia</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Butonul de salvare a muzicii este ascuns</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Butonul de salvare a muzicii este ascuns</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Butonul de salvare a muzicii este afișat</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Butonul de salvare a muzicii este afișat</string>
|
||||||
@ -1397,7 +1400,7 @@ Activarea acestei opțiuni poate debloca calități video mai mari"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Arată butonul de dialog de viteză</string>
|
<string name="revanced_playback_speed_dialog_button_title">Arată butonul de dialog de viteză</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Butonul este afișat</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Butonul este afișat. Atingeți și mențineți apăsat pentru a reseta viteza de redare la cea implicită</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Butonul nu este afișat</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Butonul nu este afișat</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1409,6 +1412,7 @@ Activarea acestei opțiuni poate debloca calități video mai mari"</string>
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Vitezele personalizate trebuie să fie mai mici de %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">Vitezele personalizate trebuie să fie mai mici de %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Viteze de redare personalizate nevalide</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Viteze de redare personalizate nevalide</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Automat</string>
|
<string name="revanced_custom_playback_speeds_auto">Automat</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Viteza de redare a fost resetată la: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Viteză personalizată de apăsare și menținere</string>
|
<string name="revanced_speed_tap_and_hold_title">Viteză personalizată de apăsare și menținere</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">Viteză de redare între 0-8</string>
|
<string name="revanced_speed_tap_and_hold_summary">Viteză de redare între 0-8</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -491,9 +491,9 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_swipe_overlay_background_opacity_title">Затемнение фона панели жестов</string>
|
<string name="revanced_swipe_overlay_background_opacity_title">Затемнение фона панели жестов</string>
|
||||||
<string name="revanced_swipe_overlay_background_opacity_summary">Значение затемнения всплывающей панели при жестах от 0 до 100</string>
|
<string name="revanced_swipe_overlay_background_opacity_summary">Значение затемнения всплывающей панели при жестах от 0 до 100</string>
|
||||||
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">Значение затемнения панели жестов должно быть от 0 до 100</string>
|
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">Значение затемнения панели жестов должно быть от 0 до 100</string>
|
||||||
<string name="revanced_swipe_overlay_progress_brightness_color_title">Цвет наложения жестов для яркости</string>
|
<string name="revanced_swipe_overlay_progress_brightness_color_title">Цвет индикатора яркости при жестах</string>
|
||||||
<string name="revanced_swipe_overlay_progress_brightness_color_summary">Цвет полосы прогресса при изменении яркости жестами</string>
|
<string name="revanced_swipe_overlay_progress_brightness_color_summary">Цвет полосы прогресса при изменении яркости жестами</string>
|
||||||
<string name="revanced_swipe_overlay_progress_volume_color_title">Цвет наложения жестов для громкости</string>
|
<string name="revanced_swipe_overlay_progress_volume_color_title">Цвет индикатора громкости при жестах</string>
|
||||||
<string name="revanced_swipe_overlay_progress_volume_color_summary">Цвет полосы прогресса при изменении громкости жестами</string>
|
<string name="revanced_swipe_overlay_progress_volume_color_summary">Цвет полосы прогресса при изменении громкости жестами</string>
|
||||||
<string name="revanced_swipe_text_overlay_size_title">Размер текста панели жестов</string>
|
<string name="revanced_swipe_text_overlay_size_title">Размер текста панели жестов</string>
|
||||||
<string name="revanced_swipe_text_overlay_size_summary">Размер текста панели жестов от 1 до 30</string>
|
<string name="revanced_swipe_text_overlay_size_summary">Размер текста панели жестов от 1 до 30</string>
|
||||||
@ -750,6 +750,9 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Скрыть метку местоположения</string>
|
<string name="revanced_hide_shorts_location_label_title">Скрыть метку местоположения</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Метка местоположения в Shorts скрыта</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Метка местоположения в Shorts скрыта</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Метка местоположения в Shorts показана</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Метка местоположения в Shorts показана</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Скрыть панель комментариев</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">Панель комментариев скрыта</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">Панель комментариев отображается</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Скрыть кнопку \"Сохранить музыку\"</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Скрыть кнопку \"Сохранить музыку\"</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Кнопка \"Сохранить музыку\" в Shorts скрыта</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Кнопка \"Сохранить музыку\" в Shorts скрыта</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Кнопка \"Сохранить музыку\" в Shorts показана</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Кнопка \"Сохранить музыку\" в Shorts показана</string>
|
||||||
@ -1340,15 +1343,15 @@ Second \"item\" text"</string>
|
|||||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||||
<string name="revanced_disable_haptic_feedback_title">Виброотклик</string>
|
<string name="revanced_disable_haptic_feedback_title">Виброотклик</string>
|
||||||
<string name="revanced_disable_haptic_feedback_summary">Изменить виброотклик</string>
|
<string name="revanced_disable_haptic_feedback_summary">Изменить виброотклик</string>
|
||||||
<string name="revanced_disable_haptic_feedback_chapters_title">Отключить виброотклик глав</string>
|
<string name="revanced_disable_haptic_feedback_chapters_title">Отключить виброотклик между эпизодов</string>
|
||||||
<string name="revanced_disable_haptic_feedback_chapters_summary_on">Виброотклик глав отключен</string>
|
<string name="revanced_disable_haptic_feedback_chapters_summary_on">Виброотклик между эпизодов отключен</string>
|
||||||
<string name="revanced_disable_haptic_feedback_chapters_summary_off">Виброотклик глав включен</string>
|
<string name="revanced_disable_haptic_feedback_chapters_summary_off">Виброотклик между эпизодов включен</string>
|
||||||
<string name="revanced_disable_haptic_feedback_precise_seeking_title">Отключить виброотклик при покадровой перемотке</string>
|
<string name="revanced_disable_haptic_feedback_precise_seeking_title">Отключить виброотклик при покадровой перемотке</string>
|
||||||
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_on">Виброотклик при точном поиске отключен</string>
|
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_on">Виброотклик при покадровой перемотке отключен</string>
|
||||||
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_off">Виброотклик при покадровой перемотке включен</string>
|
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_off">Виброотклик при покадровой перемотке включен</string>
|
||||||
<string name="revanced_disable_haptic_feedback_seek_undo_title">Отключить виброотклик отмены поиска</string>
|
<string name="revanced_disable_haptic_feedback_seek_undo_title">Отключить виброотклик отмены перемотки</string>
|
||||||
<string name="revanced_disable_haptic_feedback_seek_undo_summary_on">Виброотклик отмены поиска отключен</string>
|
<string name="revanced_disable_haptic_feedback_seek_undo_summary_on">Виброотклик отмены перемотки отключен</string>
|
||||||
<string name="revanced_disable_haptic_feedback_seek_undo_summary_off">Виброотклик отмены поиска включен</string>
|
<string name="revanced_disable_haptic_feedback_seek_undo_summary_off">Виброотклик отмены перемотки включен</string>
|
||||||
<string name="revanced_disable_haptic_feedback_zoom_title">Отключить виброотклик при масштабировании</string>
|
<string name="revanced_disable_haptic_feedback_zoom_title">Отключить виброотклик при масштабировании</string>
|
||||||
<string name="revanced_disable_haptic_feedback_zoom_summary_on">Виброотклик при масштабировании отключен</string>
|
<string name="revanced_disable_haptic_feedback_zoom_summary_on">Виброотклик при масштабировании отключен</string>
|
||||||
<string name="revanced_disable_haptic_feedback_zoom_summary_off">Виброотклик при масштабировании включен</string>
|
<string name="revanced_disable_haptic_feedback_zoom_summary_off">Виброотклик при масштабировании включен</string>
|
||||||
@ -1398,7 +1401,7 @@ Second \"item\" text"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Показать кнопку скорости воспроизведения</string>
|
<string name="revanced_playback_speed_dialog_button_title">Показать кнопку скорости воспроизведения</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Кнопка выбора скорости воспроизведения показана</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Кнопка показана. Нажмите и удерживайте, чтобы сбросить скорость воспроизведения до значения по умолчанию</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Кнопка выбора скорости воспроизведения скрыта</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Кнопка выбора скорости воспроизведения скрыта</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1410,6 +1413,7 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Кастомные скорости должны быть меньше, чем %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">Кастомные скорости должны быть меньше, чем %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Недопустимые кастомные скорости воспроизведения</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Недопустимые кастомные скорости воспроизведения</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Автоматически</string>
|
<string name="revanced_custom_playback_speeds_auto">Автоматически</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Скорость воспроизведения сброшена до: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Кастомная скорость при нажатии и удержании</string>
|
<string name="revanced_speed_tap_and_hold_title">Кастомная скорость при нажатии и удержании</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">Значение кастомной скорости воспроизведения при нажатии и удержании от 0 до 8</string>
|
<string name="revanced_speed_tap_and_hold_summary">Значение кастомной скорости воспроизведения при нажатии и удержании от 0 до 8</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -743,6 +743,9 @@ Ak chcete zobraziť ponuku zvukovej stopy, zmeňte možnosť „Oklamať videost
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Skryť štítok polohy</string>
|
<string name="revanced_hide_shorts_location_label_title">Skryť štítok polohy</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Štítok miesta je skrytý</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Štítok miesta je skrytý</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Zobrazí sa štítok s umiestnením</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Zobrazí sa štítok s umiestnením</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Skryť panel komentárov</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">Panel komentárov je skrytý</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">Panel komentárov je zobrazený</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Skryť tlačidlo Uložiť hudbu</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Skryť tlačidlo Uložiť hudbu</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Tlačidlo na uloženie hudby je skryté</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Tlačidlo na uloženie hudby je skryté</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Tlačidlo na uloženie hudby sa zobrazuje</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Tlačidlo na uloženie hudby sa zobrazuje</string>
|
||||||
@ -1386,7 +1389,7 @@ Povolením tejto možnosti môžete odomknúť vyššie kvality videa"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Zobraziť dialógové tlačidlo rýchlosti</string>
|
<string name="revanced_playback_speed_dialog_button_title">Zobraziť dialógové tlačidlo rýchlosti</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Tlačidlo je zobrazené</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Zobrazuje sa tlačidlo. Ťuknite a podržte, ak chcete obnoviť predvolenú rýchlosť prehrávania</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Tlačidlo nie je zobrazené</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Tlačidlo nie je zobrazené</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1398,6 +1401,7 @@ Povolením tejto možnosti môžete odomknúť vyššie kvality videa"</string>
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Vlastné rýchlosti musia byť menšie ako %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">Vlastné rýchlosti musia byť menšie ako %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Neplatné vlastné rýchlosti prehrávania</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Neplatné vlastné rýchlosti prehrávania</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Automaticky</string>
|
<string name="revanced_custom_playback_speeds_auto">Automaticky</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Rýchlosť prehrávania obnovená na: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Vlastná rýchlosť ťuknutia a podržania</string>
|
<string name="revanced_speed_tap_and_hold_title">Vlastná rýchlosť ťuknutia a podržania</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">Rýchlosť prehrávania medzi 0-8</string>
|
<string name="revanced_speed_tap_and_hold_summary">Rýchlosť prehrávania medzi 0-8</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -750,6 +750,9 @@ Opomba: Omogočanje tega tudi prisilno skrije video oglase"</string>
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Skrij oznako lokacije</string>
|
<string name="revanced_hide_shorts_location_label_title">Skrij oznako lokacije</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Oznaka lokacije je skrita</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Oznaka lokacije je skrita</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Oznaka lokacije je prikazana</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Oznaka lokacije je prikazana</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Skrij ploščo s komentarji</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">Plošča s komentarji je skrita</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">Plošča s komentarji je prikazana</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Skrij gumb \'Shrani glasbo\'</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Skrij gumb \'Shrani glasbo\'</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Gumb za shranjevanje glasbe je skrit</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Gumb za shranjevanje glasbe je skrit</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Gumb za shranjevanje glasbe je prikazan</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Gumb za shranjevanje glasbe je prikazan</string>
|
||||||
@ -1397,7 +1400,7 @@ Omogočanje tega lahko odklene višje kakovosti videa"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Pokaži gumb za pogovor o hitrosti</string>
|
<string name="revanced_playback_speed_dialog_button_title">Pokaži gumb za pogovor o hitrosti</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Gumb je prikazan</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Gumb je prikazan. Dotaknite se ga in ga pridržite, da ponastavite hitrost predvajanja na privzeto.</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Gumb ni prikazan</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Gumb ni prikazan</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1409,6 +1412,7 @@ Omogočanje tega lahko odklene višje kakovosti videa"</string>
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Hitrosti predvajanja po meri morajo biti manjše od %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">Hitrosti predvajanja po meri morajo biti manjše od %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Neveljavne hitrosti predvajanja po meri</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Neveljavne hitrosti predvajanja po meri</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Samodejno</string>
|
<string name="revanced_custom_playback_speeds_auto">Samodejno</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Hitrost predvajanja je bila ponastavljena na: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Hitrost pritiska in pridržanja po meri</string>
|
<string name="revanced_speed_tap_and_hold_title">Hitrost pritiska in pridržanja po meri</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">Hitrost predvajanja med 0 in 8</string>
|
<string name="revanced_speed_tap_and_hold_summary">Hitrost predvajanja med 0 in 8</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -750,6 +750,9 @@ Për të shfaqur menunë e pistës audio, ndryshoni 'Falsifiko transmetimet vide
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Fsheh etiketën e vendndodhjes</string>
|
<string name="revanced_hide_shorts_location_label_title">Fsheh etiketën e vendndodhjes</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Etiketë e vendndodhjes është e fshehur</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Etiketë e vendndodhjes është e fshehur</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Etiketë e vendndodhjes shfaqet</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Etiketë e vendndodhjes shfaqet</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Fshih panelin e komenteve</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">Paneli i komenteve është i fshehur</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">Paneli i komenteve është i dukshëm</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Fsheh butonin Ruaj muzikën</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Fsheh butonin Ruaj muzikën</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Butoni \"Ruaj muzikën\" është i fshehur</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Butoni \"Ruaj muzikën\" është i fshehur</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Butoni \"Ruaj muzikën\" shfaqet</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Butoni \"Ruaj muzikën\" shfaqet</string>
|
||||||
@ -1396,7 +1399,7 @@ Aktivizimi i kësaj mund të zhbllokojë cilësi më të larta video"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Shfaq butonin e dialogut të shpejtësisë</string>
|
<string name="revanced_playback_speed_dialog_button_title">Shfaq butonin e dialogut të shpejtësisë</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Butoni shfaqet</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Butoni shfaqet. Prekni dhe mbani për të rivendosur shpejtësinë e riprodhimit në atë të parazgjedhur</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Butoni nuk shfaqet</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Butoni nuk shfaqet</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1408,6 +1411,7 @@ Aktivizimi i kësaj mund të zhbllokojë cilësi më të larta video"</string>
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Shpejtësitë e personalizuara duhet të jenë më të vogla se %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">Shpejtësitë e personalizuara duhet të jenë më të vogla se %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Shpejtësi të pavlefshme të personalizuar të riprodhimit</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Shpejtësi të pavlefshme të personalizuar të riprodhimit</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Automatik</string>
|
<string name="revanced_custom_playback_speeds_auto">Automatik</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Shpejtësia e riprodhimit u rivendos në: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Shpejtësia sipas dëshirës së përdoruesit gjatë përdorimit</string>
|
<string name="revanced_speed_tap_and_hold_title">Shpejtësia sipas dëshirës së përdoruesit gjatë përdorimit</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">Shpejtësi e riprodhimit midis 0 dhe 8</string>
|
<string name="revanced_speed_tap_and_hold_summary">Shpejtësi e riprodhimit midis 0 dhe 8</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -491,9 +491,9 @@ Podesite jačinu zvuka prevlačenjem vertikalno na desnoj strani ekrana"</string
|
|||||||
<string name="revanced_swipe_overlay_background_opacity_title">Neprozirnost pozadine pokreta prevlačenja</string>
|
<string name="revanced_swipe_overlay_background_opacity_title">Neprozirnost pozadine pokreta prevlačenja</string>
|
||||||
<string name="revanced_swipe_overlay_background_opacity_summary">Vrednost neprozirnosti između 0 i 100</string>
|
<string name="revanced_swipe_overlay_background_opacity_summary">Vrednost neprozirnosti između 0 i 100</string>
|
||||||
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">Neprozirnost pokreta prevlačenja mora biti između 0 i 100</string>
|
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">Neprozirnost pokreta prevlačenja mora biti između 0 i 100</string>
|
||||||
<string name="revanced_swipe_overlay_progress_brightness_color_title">Boja osvetljenosti trake pokreta prevlačenja</string>
|
<string name="revanced_swipe_overlay_progress_brightness_color_title">Boja pokreta prevlačenja za osvetljenost</string>
|
||||||
<string name="revanced_swipe_overlay_progress_brightness_color_summary">Boja trake napretka za kontrolu osvetljenosti</string>
|
<string name="revanced_swipe_overlay_progress_brightness_color_summary">Boja trake napretka za kontrolu osvetljenosti</string>
|
||||||
<string name="revanced_swipe_overlay_progress_volume_color_title">Boja jačine zvuka trake pokreta prevlačenja</string>
|
<string name="revanced_swipe_overlay_progress_volume_color_title">Boja pokreta prevlačenja za jačinu zvuka</string>
|
||||||
<string name="revanced_swipe_overlay_progress_volume_color_summary">Boja trake napretka za kontrolu jačine zvuka</string>
|
<string name="revanced_swipe_overlay_progress_volume_color_summary">Boja trake napretka za kontrolu jačine zvuka</string>
|
||||||
<string name="revanced_swipe_text_overlay_size_title">Veličina teksta pokreta prevlačenja</string>
|
<string name="revanced_swipe_text_overlay_size_title">Veličina teksta pokreta prevlačenja</string>
|
||||||
<string name="revanced_swipe_text_overlay_size_summary">Veličina teksta za pokret prevlačenja između 1 i 30</string>
|
<string name="revanced_swipe_text_overlay_size_summary">Veličina teksta za pokret prevlačenja između 1 i 30</string>
|
||||||
@ -750,6 +750,9 @@ Da biste prikazali meni „Audio snimak”, promenite opciju „Lažirani video
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Sakrij oznaku lokacije</string>
|
<string name="revanced_hide_shorts_location_label_title">Sakrij oznaku lokacije</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Oznaka lokacije je skrivena</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Oznaka lokacije je skrivena</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Oznaka lokacije je prikazana</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Oznaka lokacije je prikazana</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Sakrij tablu sa komentarima</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">Panel sa komentarima je skriven</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">Tabla sa komentarima je prikazana</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Sakrij dugme „Sačuvaj muziku”</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Sakrij dugme „Sačuvaj muziku”</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Dugme „Sačuvaj zvuk” je skriveno</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Dugme „Sačuvaj zvuk” je skriveno</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Dugme „Sačuvaj zvuk” je prikazano</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Dugme „Sačuvaj zvuk” je prikazano</string>
|
||||||
@ -1397,7 +1400,7 @@ Ako ovo omogućite, mogu biti otključani viši kvaliteti videa"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Prikaži dugme dijaloga za brzinu</string>
|
<string name="revanced_playback_speed_dialog_button_title">Prikaži dugme dijaloga za brzinu</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Dugme dijaloga za brzinu je prikazano</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Dugme je prikazano. Dodirnite i zadržite da biste vratili brzinu reprodukcije na podrazumevanu vrednost</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Dugme dijaloga za brzinu nije prikazano</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Dugme dijaloga za brzinu nije prikazano</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1409,6 +1412,7 @@ Ako ovo omogućite, mogu biti otključani viši kvaliteti videa"</string>
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Prilagođene brzine moraju biti manje od %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">Prilagođene brzine moraju biti manje od %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Nevažeće prilagođene brzine reprodukcije</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Nevažeće prilagođene brzine reprodukcije</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Automatski</string>
|
<string name="revanced_custom_playback_speeds_auto">Automatski</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Brzina reprodukcije vraćena na: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Prilagođena brzina dodirivanja i zadržavanja</string>
|
<string name="revanced_speed_tap_and_hold_title">Prilagođena brzina dodirivanja i zadržavanja</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">Brzina reprodukcije između 0 i 8</string>
|
<string name="revanced_speed_tap_and_hold_summary">Brzina reprodukcije između 0 i 8</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -491,10 +491,10 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_swipe_overlay_background_opacity_title">Непрозирност позадине покрета превлачења</string>
|
<string name="revanced_swipe_overlay_background_opacity_title">Непрозирност позадине покрета превлачења</string>
|
||||||
<string name="revanced_swipe_overlay_background_opacity_summary">Вредност непрозирности између 0 и 100</string>
|
<string name="revanced_swipe_overlay_background_opacity_summary">Вредност непрозирности између 0 и 100</string>
|
||||||
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">Непрозирност покрета превлачења мора бити између 0 и 100</string>
|
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">Непрозирност покрета превлачења мора бити између 0 и 100</string>
|
||||||
<string name="revanced_swipe_overlay_progress_brightness_color_title">Боја осветљености превлачења преко екрана</string>
|
<string name="revanced_swipe_overlay_progress_brightness_color_title">Боја покрета превлачења за осветљеност</string>
|
||||||
<string name="revanced_swipe_overlay_progress_brightness_color_summary">Боја траке напретка за контроле осветљености</string>
|
<string name="revanced_swipe_overlay_progress_brightness_color_summary">Боја траке напретка за контролу осветљености</string>
|
||||||
<string name="revanced_swipe_overlay_progress_volume_color_title">Боја јачине звука превлачења преко екрана</string>
|
<string name="revanced_swipe_overlay_progress_volume_color_title">Боја покрета превлачења за јачину звука</string>
|
||||||
<string name="revanced_swipe_overlay_progress_volume_color_summary">Боја траке напретка за контроле јачине звука</string>
|
<string name="revanced_swipe_overlay_progress_volume_color_summary">Боја траке напретка за контролу јачине звука</string>
|
||||||
<string name="revanced_swipe_text_overlay_size_title">Величина текста покрета превлачења</string>
|
<string name="revanced_swipe_text_overlay_size_title">Величина текста покрета превлачења</string>
|
||||||
<string name="revanced_swipe_text_overlay_size_summary">Величина текста за покрет превлачења између 1 и 30</string>
|
<string name="revanced_swipe_text_overlay_size_summary">Величина текста за покрет превлачења између 1 и 30</string>
|
||||||
<string name="revanced_swipe_text_overlay_size_invalid_toast">Величина текста мора бити између 1 и 30</string>
|
<string name="revanced_swipe_text_overlay_size_invalid_toast">Величина текста мора бити између 1 и 30</string>
|
||||||
@ -750,6 +750,9 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Сакриј ознаку локације</string>
|
<string name="revanced_hide_shorts_location_label_title">Сакриј ознаку локације</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Ознака локације је скривена</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Ознака локације је скривена</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Ознака локације је приказана</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Ознака локације је приказана</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Сакриј панел за коментаре</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">Панел за коментаре је сакривен</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">„Резиме коментара” је приказан</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Сакриј дугме „Сачувај музику”</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Сакриј дугме „Сачувај музику”</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Дугме „Сачувај звук” је скривено</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Дугме „Сачувај звук” је скривено</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Дугме „Сачувај звук” је приказано</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Дугме „Сачувај звук” је приказано</string>
|
||||||
@ -1397,7 +1400,7 @@ Second \"item\" text"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Прикажи дугме дијалога за брзину</string>
|
<string name="revanced_playback_speed_dialog_button_title">Прикажи дугме дијалога за брзину</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Дугме дијалога за брзину је приказано</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Дугме је приказано. Додирните и задржите да бисте вратили брзину репродукције на подразумевану вредност</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Дугме дијалога за брзину није приказано</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Дугме дијалога за брзину није приказано</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1409,6 +1412,7 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Прилагођене брзине морају бити мање од %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">Прилагођене брзине морају бити мање од %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Неважеће прилагођене брзине репродукције</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Неважеће прилагођене брзине репродукције</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Аутоматски</string>
|
<string name="revanced_custom_playback_speeds_auto">Аутоматски</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Брзина репродукције враћена на: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Прилагођена брзина додиривања и задржавања</string>
|
<string name="revanced_speed_tap_and_hold_title">Прилагођена брзина додиривања и задржавања</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">Брзина репродукције између 0 и 8</string>
|
<string name="revanced_speed_tap_and_hold_summary">Брзина репродукције између 0 и 8</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -750,6 +750,9 @@ För att visa ljudspårsmenyn, ändra \"Spoof video streams\" till iOS TV"</stri
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Dölj platsetikett</string>
|
<string name="revanced_hide_shorts_location_label_title">Dölj platsetikett</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Platsetiketten är dold</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Platsetiketten är dold</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Platsetikett är synlig</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Platsetikett är synlig</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Dölj kommentarsfältet</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">Kommentarsfältet är dolt</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">Kommentarsfältet visas</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Dölj knapp \'Spara musik\'</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Dölj knapp \'Spara musik\'</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Spara musikknappen är dold</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Spara musikknappen är dold</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Spara musikknappen visas</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Spara musikknappen visas</string>
|
||||||
@ -1397,7 +1400,7 @@ Att aktivera detta kan låsa upp högre videokvalitet"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Visa hastighetsdialogruta knapp</string>
|
<string name="revanced_playback_speed_dialog_button_title">Visa hastighetsdialogruta knapp</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Knappen är synlig</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Knappen visas. Tryck och håll ned för att återställa uppspelningshastigheten till standard.</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Knappen är dold</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Knappen är dold</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1409,6 +1412,7 @@ Att aktivera detta kan låsa upp högre videokvalitet"</string>
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Anpassade hastigheter måste vara mindre än %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">Anpassade hastigheter måste vara mindre än %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Ogiltiga anpassade uppspelningshastigheter</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Ogiltiga anpassade uppspelningshastigheter</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Automatiskt</string>
|
<string name="revanced_custom_playback_speeds_auto">Automatiskt</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Uppspelningshastighet återställd till: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Anpassad hastighet vid tryck och håll</string>
|
<string name="revanced_speed_tap_and_hold_title">Anpassad hastighet vid tryck och håll</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">Uppspelningshastighet mellan 0 och 8.</string>
|
<string name="revanced_speed_tap_and_hold_summary">Uppspelningshastighet mellan 0 och 8.</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -748,6 +748,9 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_shorts_location_label_title">ซ่อนป้ายกำกับสถานที่</string>
|
<string name="revanced_hide_shorts_location_label_title">ซ่อนป้ายกำกับสถานที่</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">ป้ายกำกับสถานที่ถูกซ่อน</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">ป้ายกำกับสถานที่ถูกซ่อน</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">ป้ายกำกับสถานที่แสดงอยู่</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">ป้ายกำกับสถานที่แสดงอยู่</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">ซ่อนแผงความคิดเห็น</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">ส่วนความคิดเห็นถูกซ่อนไว้</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">แผงความคิดเห็นจะแสดง</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">ซ่อนปุ่มบันทึกเพลง</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">ซ่อนปุ่มบันทึกเพลง</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">ปุ่มบันทึกเพลงถูกซ่อน</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">ปุ่มบันทึกเพลงถูกซ่อน</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">ปุ่มบันทึกเพลงแสดงอยู่</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">ปุ่มบันทึกเพลงแสดงอยู่</string>
|
||||||
@ -1396,7 +1399,7 @@ User id ของคุณเหมือนกับรหัสผ่าน
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">แสดงปุ่มกล่องโต้ตอบความเร็ว</string>
|
<string name="revanced_playback_speed_dialog_button_title">แสดงปุ่มกล่องโต้ตอบความเร็ว</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">แสดงปุ่ม</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">ปุ่มจะปรากฏขึ้น แตะค้างไว้เพื่อรีเซ็ตความเร็วในการเล่นเป็นค่าเริ่มต้น</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">ไม่แสดงปุ่ม</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">ไม่แสดงปุ่ม</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1408,6 +1411,7 @@ User id ของคุณเหมือนกับรหัสผ่าน
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">ความเร็วที่กําหนดเองต้องน้อยกว่า %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">ความเร็วที่กําหนดเองต้องน้อยกว่า %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">ความเร็วในการเล่นที่กําหนดเองไม่ถูกต้อง</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">ความเร็วในการเล่นที่กําหนดเองไม่ถูกต้อง</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">อัตโนมัติ</string>
|
<string name="revanced_custom_playback_speeds_auto">อัตโนมัติ</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">ความเร็วในการเล่นรีเซ็ตเป็น: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">**Custom tap and hold speed**</string>
|
<string name="revanced_speed_tap_and_hold_title">**Custom tap and hold speed**</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">ความเร็วในการเล่นระหว่าง 0-8</string>
|
<string name="revanced_speed_tap_and_hold_summary">ความเร็วในการเล่นระหว่าง 0-8</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -131,15 +131,15 @@ Ancak, bunun etkinleştirilmesi IP adresiniz gibi bazı kullanıcı verilerini d
|
|||||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"Hata bildirimlerini kapatmak, tüm ReVanced hata bildirimlerini gizler.
|
<string name="revanced_debug_toast_on_error_user_dialog_message">"Hata bildirimlerini kapatmak, tüm ReVanced hata bildirimlerini gizler.
|
||||||
|
|
||||||
Beklenmedik olaylar hakkında bilgilendirilmeyeceksiniz."</string>
|
Beklenmedik olaylar hakkında bilgilendirilmeyeceksiniz."</string>
|
||||||
<string name="revanced_debug_export_logs_to_clipboard_title">Hata ayıklama günlüklerini dışa aktar</string>
|
<string name="revanced_debug_export_logs_to_clipboard_title">Hata ayıklama kayıtlarını dışa aktar</string>
|
||||||
<string name="revanced_debug_export_logs_to_clipboard_summary">ReVanced hata ayıklama günlüklerini panoya kopyalar</string>
|
<string name="revanced_debug_export_logs_to_clipboard_summary">ReVanced hata ayıklama kayıtlarını panoya kopyalar</string>
|
||||||
<string name="revanced_debug_logs_disabled">Hata ayıklama kaydı devre dışı</string>
|
<string name="revanced_debug_logs_disabled">Hata ayıklama kaydı devre dışı</string>
|
||||||
<string name="revanced_debug_logs_none_found">Kayıt bulunamadı</string>
|
<string name="revanced_debug_logs_none_found">Kayıt bulunamadı</string>
|
||||||
<string name="revanced_debug_logs_copied_to_clipboard">Günlükler kopyalandı</string>
|
<string name="revanced_debug_logs_copied_to_clipboard">Kayıtlar kopyalandı</string>
|
||||||
<string name="revanced_debug_logs_failed_to_export">Günlükler dışa aktarılamadı: $s</string>
|
<string name="revanced_debug_logs_failed_to_export">Kayıtlar dışa aktarılamadı: $s</string>
|
||||||
<string name="revanced_debug_logs_clear_buffer_title">Hata ayıklama günlüklerini temizle</string>
|
<string name="revanced_debug_logs_clear_buffer_title">Hata ayıklama kayıtlarını temizle</string>
|
||||||
<string name="revanced_debug_logs_clear_buffer_summary">Kaydedilmiş tüm ReVanced hata ayıklama günlüklerini temizler</string>
|
<string name="revanced_debug_logs_clear_buffer_summary">Kaydedilmiş tüm ReVanced hata ayıklama kayıtlarını temizler</string>
|
||||||
<string name="revanced_debug_logs_clear_toast">Günlükler temizlendi</string>
|
<string name="revanced_debug_logs_clear_toast">Kayıtlar temizlendi</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||||
<string name="revanced_hide_album_cards_title">Albüm kartlarını gizle</string>
|
<string name="revanced_hide_album_cards_title">Albüm kartlarını gizle</string>
|
||||||
@ -750,6 +750,9 @@ Ses parçası menüsünü göstermek için \"Video akışlarını taklit et\" ay
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Konum etiketini gizle</string>
|
<string name="revanced_hide_shorts_location_label_title">Konum etiketini gizle</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Konum etiketi gizli</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Konum etiketi gizli</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Konum etiketi görünür</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Konum etiketi görünür</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Yorum panelini gizle</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">Yorum paneli gizli</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">Yorum paneli görünür</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Müziği kaydet düğmesini gizle</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Müziği kaydet düğmesini gizle</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Müziği kaydet düğmesi gizli</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Müziği kaydet düğmesi gizli</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Müziği kaydet düğmesi görünür</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Müziği kaydet düğmesi görünür</string>
|
||||||
@ -1398,7 +1401,7 @@ Bunu etkinleştirmek daha yüksek video kalitelerini açabilir"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Hız diyaloğu düğmesini göster</string>
|
<string name="revanced_playback_speed_dialog_button_title">Hız diyaloğu düğmesini göster</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Düğme gösterilir</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Düğme görünür. Oynatma hızını varsayılana sıfırlamak için dokunup basılı tutun</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Düğme gösterilmez</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Düğme gösterilmez</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1410,6 +1413,7 @@ Bunu etkinleştirmek daha yüksek video kalitelerini açabilir"</string>
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Özel hızlar %s\'den az olmalıdır</string>
|
<string name="revanced_custom_playback_speeds_invalid">Özel hızlar %s\'den az olmalıdır</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Geçersiz özel oynatma hızları</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Geçersiz özel oynatma hızları</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Oto</string>
|
<string name="revanced_custom_playback_speeds_auto">Oto</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Oynatma hızı şu değere sıfırlandı: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Dokunup basılı tutma özel hızı</string>
|
<string name="revanced_speed_tap_and_hold_title">Dokunup basılı tutma özel hızı</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">0-8 arası oynatma hızı</string>
|
<string name="revanced_speed_tap_and_hold_summary">0-8 arası oynatma hızı</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -751,6 +751,9 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Приховати мітку місцезнаходження</string>
|
<string name="revanced_hide_shorts_location_label_title">Приховати мітку місцезнаходження</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Мітку місцезнаходження приховано</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Мітку місцезнаходження приховано</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Мітка місцезнаходження показується</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Мітка місцезнаходження показується</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Приховати панель коментарів</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">Панель коментарів приховано</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">Панель коментарів показується</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Приховати \"Зберегти музику\"</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Приховати \"Зберегти музику\"</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Кнопку \"Зберегти музику\" приховано</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Кнопку \"Зберегти музику\" приховано</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Кнопка \"Зберегти музику\" показується</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Кнопка \"Зберегти музику\" показується</string>
|
||||||
@ -1398,7 +1401,7 @@ Second \"item\" text"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Кнопка швидкості відтворення</string>
|
<string name="revanced_playback_speed_dialog_button_title">Кнопка швидкості відтворення</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Кнопка швидкості відтворення показується</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Кнопка показується. Натисніть і утримуйте, щоб відновити стандартну швидкість відтворення</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Кнопка швидкості відтворення не показується</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Кнопка швидкості відтворення не показується</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1410,6 +1413,7 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Користувацькі швидкості повинні бути менші ніж %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">Користувацькі швидкості повинні бути менші ніж %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Неправильні користувацькі швидкості відтворення</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Неправильні користувацькі швидкості відтворення</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Авто</string>
|
<string name="revanced_custom_playback_speeds_auto">Авто</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Швидкість відтворення скинуто до: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Користувацька швидкість при натисканні та утриманні</string>
|
<string name="revanced_speed_tap_and_hold_title">Користувацька швидкість при натисканні та утриманні</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">Швидкість відтворення від 0 до 8</string>
|
<string name="revanced_speed_tap_and_hold_summary">Швидкість відтворення від 0 до 8</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -49,12 +49,12 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_settings_search_no_results_summary">Thử một từ khóa khác</string>
|
<string name="revanced_settings_search_no_results_summary">Thử một từ khóa khác</string>
|
||||||
<string name="revanced_settings_search_remove_message">Xóa khỏi lịch sử tìm kiếm?</string>
|
<string name="revanced_settings_search_remove_message">Xóa khỏi lịch sử tìm kiếm?</string>
|
||||||
<string name="revanced_show_menu_icons_title">Hiện biểu tượng cài đặt ReVanced</string>
|
<string name="revanced_show_menu_icons_title">Hiện biểu tượng cài đặt ReVanced</string>
|
||||||
<string name="revanced_show_menu_icons_summary_on">Các biểu tượng cài đặt được hiển thị</string>
|
<string name="revanced_show_menu_icons_summary_on">Các biểu tượng cài đặt được hiện</string>
|
||||||
<string name="revanced_show_menu_icons_summary_off">Các biểu tượng cài đặt không được hiển thị</string>
|
<string name="revanced_show_menu_icons_summary_off">Các biểu tượng cài đặt không được hiển thị</string>
|
||||||
<string name="revanced_language_title">Ngôn ngữ ReVanced</string>
|
<string name="revanced_language_title">Ngôn ngữ ReVanced</string>
|
||||||
<string name="revanced_language_user_dialog_message">"Một số ngôn ngữ có thể chưa được dịch đầy đủ hoặc bị thiếu.
|
<string name="revanced_language_user_dialog_message">"Bản dịch cho một số ngôn ngữ có thể bị thiếu hoặc không đầy đủ.
|
||||||
|
|
||||||
Để đóng góp bản dịch các ngôn ngữ mới, hãy truy cập translate.revanced.app"</string>
|
Để dịch các ngôn ngữ mới, hãy truy cập translate.revanced.app"</string>
|
||||||
<string name="revanced_language_DEFAULT">Ngôn ngữ ứng dụng</string>
|
<string name="revanced_language_DEFAULT">Ngôn ngữ ứng dụng</string>
|
||||||
<string name="revanced_pref_import_export_title">Nhập / Xuất</string>
|
<string name="revanced_pref_import_export_title">Nhập / Xuất</string>
|
||||||
<string name="revanced_pref_import_export_summary">Nhập / Xuất cài đặt ReVanced</string>
|
<string name="revanced_pref_import_export_summary">Nhập / Xuất cài đặt ReVanced</string>
|
||||||
@ -76,11 +76,11 @@ Hãy làm theo hướng dẫn \"Don't kill my app\" dành cho điện thoại c
|
|||||||
|
|
||||||
Việc cấp quyền chạy nền là bắt buộc để ứng dụng hoạt động."</string>
|
Việc cấp quyền chạy nền là bắt buộc để ứng dụng hoạt động."</string>
|
||||||
<string name="gms_core_dialog_open_website_text">Mở trang web</string>
|
<string name="gms_core_dialog_open_website_text">Mở trang web</string>
|
||||||
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">"Cần phải tắt tối ưu hóa pin cho MicroG GmsCore để tránh sự cố.
|
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">"Tối ưu hóa pin cho MicroG GmsCore phải được tắt để tránh sự cố.
|
||||||
|
|
||||||
Tắt tối ưu hóa pin cho MicroG sẽ không ảnh hưởng đáng kể đến hiệu suất sử dụng pin.
|
Tắt tối ưu hóa pin cho MicroG sẽ không ảnh hưởng tiêu cực đến việc sử dụng pin.
|
||||||
|
|
||||||
Nhấn nút tiếp tục và cho phép thay đổi lựa chọn tối ưu hóa."</string>
|
Nhấn nút tiếp tục và cho phép thay đổi tối ưu hóa."</string>
|
||||||
<string name="gms_core_dialog_continue_text">Tiếp tục</string>
|
<string name="gms_core_dialog_continue_text">Tiếp tục</string>
|
||||||
</patch>
|
</patch>
|
||||||
</app>
|
</app>
|
||||||
@ -122,9 +122,9 @@ Nhấn nút tiếp tục và cho phép thay đổi lựa chọn tối ưu hóa."
|
|||||||
Điều này có thể giúp xác định các thành phần khi tạo bộ lọc tùy chỉnh.
|
Điều này có thể giúp xác định các thành phần khi tạo bộ lọc tùy chỉnh.
|
||||||
|
|
||||||
Tuy nhiên, việc bật tính năng này cũng sẽ ghi lại một số dữ liệu người dùng, chẳng hạn như địa chỉ IP của bạn."</string>
|
Tuy nhiên, việc bật tính năng này cũng sẽ ghi lại một số dữ liệu người dùng, chẳng hạn như địa chỉ IP của bạn."</string>
|
||||||
<string name="revanced_debug_stacktrace_title">Ghi nhật ký truy vết stack</string>
|
<string name="revanced_debug_stacktrace_title">Ghi nhật ký truy vết ngăn xếp</string>
|
||||||
<string name="revanced_debug_stacktrace_summary_on">Nhật ký gỡ lỗi bao gồm truy vết stack</string>
|
<string name="revanced_debug_stacktrace_summary_on">Nhật ký gỡ lỗi bao gồm truy vết ngăn xếp</string>
|
||||||
<string name="revanced_debug_stacktrace_summary_off">Nhật ký gỡ lỗi không bao gồm truy vết stack</string>
|
<string name="revanced_debug_stacktrace_summary_off">Nhật ký gỡ lỗi không bao gồm truy vết ngăn xếp</string>
|
||||||
<string name="revanced_debug_toast_on_error_title">Hiện thông báo nổi về lỗi ReVanced</string>
|
<string name="revanced_debug_toast_on_error_title">Hiện thông báo nổi về lỗi ReVanced</string>
|
||||||
<string name="revanced_debug_toast_on_error_summary_on">Thông báo nổi được hiển thị nếu xảy ra lỗi</string>
|
<string name="revanced_debug_toast_on_error_summary_on">Thông báo nổi được hiển thị nếu xảy ra lỗi</string>
|
||||||
<string name="revanced_debug_toast_on_error_summary_off">Thông báo nổi không được hiển thị nếu xảy ra lỗi</string>
|
<string name="revanced_debug_toast_on_error_summary_off">Thông báo nổi không được hiển thị nếu xảy ra lỗi</string>
|
||||||
@ -169,7 +169,7 @@ Bạn sẽ không được thông báo về bất kỳ sự kiện bất ngờ n
|
|||||||
<string name="revanced_hide_join_membership_button_summary_off">Nút được hiển thị</string>
|
<string name="revanced_hide_join_membership_button_summary_off">Nút được hiển thị</string>
|
||||||
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
|
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
|
||||||
<string name="revanced_hide_for_you_shelf_title">Ẩn kệ \'Dành cho bạn\'</string>
|
<string name="revanced_hide_for_you_shelf_title">Ẩn kệ \'Dành cho bạn\'</string>
|
||||||
<string name="revanced_hide_for_you_shelf_summary_on">Kệ trên trang kênh đã bị ẩn</string>
|
<string name="revanced_hide_for_you_shelf_summary_on">Kệ trên trang kênh được ẩn</string>
|
||||||
<string name="revanced_hide_for_you_shelf_summary_off">Kệ trên trang kênh được hiển thị</string>
|
<string name="revanced_hide_for_you_shelf_summary_off">Kệ trên trang kênh được hiển thị</string>
|
||||||
<!-- 'Notify me' should be translated using the same localized wording YouTube displays.
|
<!-- 'Notify me' should be translated using the same localized wording YouTube displays.
|
||||||
This item appear in the subscription feed for future livestreams or unreleased videos. -->
|
This item appear in the subscription feed for future livestreams or unreleased videos. -->
|
||||||
@ -178,16 +178,16 @@ Bạn sẽ không được thông báo về bất kỳ sự kiện bất ngờ n
|
|||||||
<string name="revanced_hide_notify_me_button_summary_off">Nút được hiển thị</string>
|
<string name="revanced_hide_notify_me_button_summary_off">Nút được hiển thị</string>
|
||||||
<!-- 'People also watched' and 'You might also like' should be translated using the same localized wording YouTube displays. -->
|
<!-- 'People also watched' and 'You might also like' should be translated using the same localized wording YouTube displays. -->
|
||||||
<string name="revanced_hide_search_result_recommendation_labels_title">Ẩn nhãn video đề xuất</string>
|
<string name="revanced_hide_search_result_recommendation_labels_title">Ẩn nhãn video đề xuất</string>
|
||||||
<string name="revanced_hide_search_result_recommendation_labels_summary_on">Nhãn “Mọi người cũng xem” và “Bạn cũng có thể thích” đã bị ẩn</string>
|
<string name="revanced_hide_search_result_recommendation_labels_summary_on">Nhãn “Mọi người cũng xem” và “Bạn cũng có thể thích” được ẩn</string>
|
||||||
<string name="revanced_hide_search_result_recommendation_labels_summary_off">Nhãn “Mọi người cũng xem” và “Bạn cũng có thể thích” được hiển thị</string>
|
<string name="revanced_hide_search_result_recommendation_labels_summary_off">Nhãn “Mọi người cũng xem” và “Bạn cũng có thể thích” được hiện</string>
|
||||||
<!-- 'Show more' should be translated with the same localized wording that YouTube displays.
|
<!-- 'Show more' should be translated with the same localized wording that YouTube displays.
|
||||||
This button usually appears when searching for a YT creator. -->
|
This button usually appears when searching for a YT creator. -->
|
||||||
<string name="revanced_hide_show_more_button_title">Ẩn nút \'Hiện thêm\'</string>
|
<string name="revanced_hide_show_more_button_title">Ẩn nút \'Hiện thêm\'</string>
|
||||||
<string name="revanced_hide_show_more_button_summary_on">Nút đã bị ẩn</string>
|
<string name="revanced_hide_show_more_button_summary_on">Nút đã bị ẩn</string>
|
||||||
<string name="revanced_hide_show_more_button_summary_off">Nút được hiển thị</string>
|
<string name="revanced_hide_show_more_button_summary_off">Nút được hiển thị</string>
|
||||||
<string name="revanced_hide_ticket_shelf_title">Ẩn kệ vé</string>
|
<string name="revanced_hide_ticket_shelf_title">Ẩn kệ vé</string>
|
||||||
<string name="revanced_hide_ticket_shelf_summary_on">Kệ vé đã bị ẩn</string>
|
<string name="revanced_hide_ticket_shelf_summary_on">Kệ vé được ẩn</string>
|
||||||
<string name="revanced_hide_ticket_shelf_summary_off">Kệ vé đang hiển thị</string>
|
<string name="revanced_hide_ticket_shelf_summary_off">Kệ vé được hiện</string>
|
||||||
<string name="revanced_hide_timed_reactions_title">Ẩn phản ứng theo thời gian</string>
|
<string name="revanced_hide_timed_reactions_title">Ẩn phản ứng theo thời gian</string>
|
||||||
<string name="revanced_hide_timed_reactions_summary_on">Phản ứng theo thời gian đã bị ẩn</string>
|
<string name="revanced_hide_timed_reactions_summary_on">Phản ứng theo thời gian đã bị ẩn</string>
|
||||||
<string name="revanced_hide_timed_reactions_summary_off">Phản ứng theo thời gian được hiển thị</string>
|
<string name="revanced_hide_timed_reactions_summary_off">Phản ứng theo thời gian được hiển thị</string>
|
||||||
@ -198,8 +198,8 @@ Bạn sẽ không được thông báo về bất kỳ sự kiện bất ngờ n
|
|||||||
<string name="revanced_hide_chips_shelf_summary_on">Kệ danh mục được đề xuất đã bị ẩn</string>
|
<string name="revanced_hide_chips_shelf_summary_on">Kệ danh mục được đề xuất đã bị ẩn</string>
|
||||||
<string name="revanced_hide_chips_shelf_summary_off">Kệ danh mục được đề xuất được hiển thị</string>
|
<string name="revanced_hide_chips_shelf_summary_off">Kệ danh mục được đề xuất được hiển thị</string>
|
||||||
<string name="revanced_hide_expandable_chip_title">Ẩn thẻ có thể mở rộng bên dưới video</string>
|
<string name="revanced_hide_expandable_chip_title">Ẩn thẻ có thể mở rộng bên dưới video</string>
|
||||||
<string name="revanced_hide_expandable_chip_summary_on">Thẻ có thể mở rộng đã bị ẩn</string>
|
<string name="revanced_hide_expandable_chip_summary_on">Thẻ có thể mở rộng được ẩn</string>
|
||||||
<string name="revanced_hide_expandable_chip_summary_off">Thẻ có thể mở rộng được hiển thị</string>
|
<string name="revanced_hide_expandable_chip_summary_off">Thẻ có thể mở rộng được hiện</string>
|
||||||
<string name="revanced_hide_community_posts_title">Ẩn bài đăng cộng đồng</string>
|
<string name="revanced_hide_community_posts_title">Ẩn bài đăng cộng đồng</string>
|
||||||
<string name="revanced_hide_community_posts_summary_on">Bài đăng cộng đồng đã bị ẩn</string>
|
<string name="revanced_hide_community_posts_summary_on">Bài đăng cộng đồng đã bị ẩn</string>
|
||||||
<string name="revanced_hide_community_posts_summary_off">Bài đăng cộng đồng được hiển thị</string>
|
<string name="revanced_hide_community_posts_summary_off">Bài đăng cộng đồng được hiển thị</string>
|
||||||
@ -217,7 +217,7 @@ Bạn sẽ không được thông báo về bất kỳ sự kiện bất ngờ n
|
|||||||
<string name="revanced_hide_community_guidelines_summary_off">Nguyên tắc cộng đồng được hiển thị</string>
|
<string name="revanced_hide_community_guidelines_summary_off">Nguyên tắc cộng đồng được hiển thị</string>
|
||||||
<string name="revanced_hide_subscribers_community_guidelines_title">Ẩn nguyên tắc cộng đồng cho người đăng ký</string>
|
<string name="revanced_hide_subscribers_community_guidelines_title">Ẩn nguyên tắc cộng đồng cho người đăng ký</string>
|
||||||
<string name="revanced_hide_subscribers_community_guidelines_summary_on">Nguyên tắc cộng đồng cho người đăng ký đã bị ẩn</string>
|
<string name="revanced_hide_subscribers_community_guidelines_summary_on">Nguyên tắc cộng đồng cho người đăng ký đã bị ẩn</string>
|
||||||
<string name="revanced_hide_subscribers_community_guidelines_summary_off">Nguyên tắc cộng đồng dành cho người đăng ký được hiển thị</string>
|
<string name="revanced_hide_subscribers_community_guidelines_summary_off">Nguyên tắc cộng đồng dành cho người đăng ký được hiện</string>
|
||||||
<string name="revanced_hide_channel_member_shelf_title">Ẩn kệ hội viên kênh</string>
|
<string name="revanced_hide_channel_member_shelf_title">Ẩn kệ hội viên kênh</string>
|
||||||
<string name="revanced_hide_channel_member_shelf_summary_on">Kệ hội viên kênh đã bị ẩn</string>
|
<string name="revanced_hide_channel_member_shelf_summary_on">Kệ hội viên kênh đã bị ẩn</string>
|
||||||
<string name="revanced_hide_channel_member_shelf_summary_off">Kệ hội viên kênh được hiển thị</string>
|
<string name="revanced_hide_channel_member_shelf_summary_off">Kệ hội viên kênh được hiển thị</string>
|
||||||
@ -229,13 +229,13 @@ Bạn sẽ không được thông báo về bất kỳ sự kiện bất ngờ n
|
|||||||
<string name="revanced_hide_info_panels_summary_off">Bảng thông tin được hiển thị</string>
|
<string name="revanced_hide_info_panels_summary_off">Bảng thông tin được hiển thị</string>
|
||||||
<string name="revanced_hide_medical_panels_title">Ẩn bảng thông tin y tế</string>
|
<string name="revanced_hide_medical_panels_title">Ẩn bảng thông tin y tế</string>
|
||||||
<string name="revanced_hide_medical_panels_summary_on">Bảng thông tin y tế đã bị ẩn</string>
|
<string name="revanced_hide_medical_panels_summary_on">Bảng thông tin y tế đã bị ẩn</string>
|
||||||
<string name="revanced_hide_medical_panels_summary_off">Bảng thông tin y tế được hiển thị</string>
|
<string name="revanced_hide_medical_panels_summary_off">Bảng thông tin y tế được hiện</string>
|
||||||
<string name="revanced_hide_channel_bar_title">Ẩn nút kênh</string>
|
<string name="revanced_hide_channel_bar_title">Ẩn nút kênh</string>
|
||||||
<string name="revanced_hide_channel_bar_summary_on">Nút kênh đã bị ẩn</string>
|
<string name="revanced_hide_channel_bar_summary_on">Nút kênh đã bị ẩn</string>
|
||||||
<string name="revanced_hide_channel_bar_summary_off">Nút kênh được hiển thị</string>
|
<string name="revanced_hide_channel_bar_summary_off">Nút kênh được hiển thị</string>
|
||||||
<string name="revanced_hide_playables_title">Ẩn Playables</string>
|
<string name="revanced_hide_playables_title">Ẩn kệ Chơi trò chơi</string>
|
||||||
<string name="revanced_hide_playables_summary_on">Chơi game đã bị ẩn</string>
|
<string name="revanced_hide_playables_summary_on">Kệ Chơi trò chơi được ẩn</string>
|
||||||
<string name="revanced_hide_playables_summary_off">Chơi game được hiển thị</string>
|
<string name="revanced_hide_playables_summary_off">Kệ Chơi trò chơi được hiện</string>
|
||||||
<string name="revanced_hide_quick_actions_title">Ẩn các hành động nhanh khi ở toàn màn hình</string>
|
<string name="revanced_hide_quick_actions_title">Ẩn các hành động nhanh khi ở toàn màn hình</string>
|
||||||
<string name="revanced_hide_quick_actions_summary_on">Hành động nhanh đã bị ẩn</string>
|
<string name="revanced_hide_quick_actions_summary_on">Hành động nhanh đã bị ẩn</string>
|
||||||
<string name="revanced_hide_quick_actions_summary_off">Hành động nhanh được hiển thị</string>
|
<string name="revanced_hide_quick_actions_summary_off">Hành động nhanh được hiển thị</string>
|
||||||
@ -255,20 +255,20 @@ Bạn sẽ không được thông báo về bất kỳ sự kiện bất ngờ n
|
|||||||
<string name="revanced_hide_artist_cards_summary_on">Thẻ nghệ sĩ đã bị ẩn</string>
|
<string name="revanced_hide_artist_cards_summary_on">Thẻ nghệ sĩ đã bị ẩn</string>
|
||||||
<string name="revanced_hide_artist_cards_summary_off">Thẻ nghệ sĩ được hiển thị</string>
|
<string name="revanced_hide_artist_cards_summary_off">Thẻ nghệ sĩ được hiển thị</string>
|
||||||
<string name="revanced_hide_ai_generated_video_summary_section_title">Ẩn \'Bản tóm tắt video do AI tạo\'</string>
|
<string name="revanced_hide_ai_generated_video_summary_section_title">Ẩn \'Bản tóm tắt video do AI tạo\'</string>
|
||||||
<string name="revanced_hide_ai_generated_video_summary_section_summary_on">Phần tóm tắt video đã bị ẩn</string>
|
<string name="revanced_hide_ai_generated_video_summary_section_summary_on">Phần tóm tắt video được ẩn</string>
|
||||||
<string name="revanced_hide_ai_generated_video_summary_section_summary_off">Phần tóm tắt video được hiển thị</string>
|
<string name="revanced_hide_ai_generated_video_summary_section_summary_off">Phần tóm tắt video được hiển thị</string>
|
||||||
<string name="revanced_hide_ask_section_title">Ẩn Hỏi</string>
|
<string name="revanced_hide_ask_section_title">Ẩn Hỏi</string>
|
||||||
<string name="revanced_hide_ask_section_summary_on">Phần Hỏi đã bị ẩn</string>
|
<string name="revanced_hide_ask_section_summary_on">Phần Hỏi được ẩn</string>
|
||||||
<string name="revanced_hide_ask_section_summary_off">Phần Hỏi được hiển thị</string>
|
<string name="revanced_hide_ask_section_summary_off">Phần Hỏi được hiện</string>
|
||||||
<string name="revanced_hide_attributes_section_title">Ẩn Thuộc tính</string>
|
<string name="revanced_hide_attributes_section_title">Ẩn Thuộc tính</string>
|
||||||
<string name="revanced_hide_attributes_section_summary_on">Phần Địa điểm nổi bật, Trò chơi, Âm nhạc và Người được đề cập đã bị ẩn</string>
|
<string name="revanced_hide_attributes_section_summary_on">Phần Địa điểm nổi bật, Trò chơi, Âm nhạc và Người được đề cập được ẩn</string>
|
||||||
<string name="revanced_hide_attributes_section_summary_off">Phần Địa điểm nổi bật, Trò chơi, Âm nhạc và Người được đề cập được hiển thị</string>
|
<string name="revanced_hide_attributes_section_summary_off">Phần Địa điểm nổi bật, Trò chơi, Âm nhạc và Người được đề cập được hiển thị</string>
|
||||||
<string name="revanced_hide_chapters_section_title">Ẩn Chương</string>
|
<string name="revanced_hide_chapters_section_title">Ẩn Chương</string>
|
||||||
<string name="revanced_hide_chapters_section_summary_on">Phần chương đã bị ẩn</string>
|
<string name="revanced_hide_chapters_section_summary_on">Phần chương đã bị ẩn</string>
|
||||||
<string name="revanced_hide_chapters_section_summary_off">Phần chương được hiển thị</string>
|
<string name="revanced_hide_chapters_section_summary_off">Phần chương được hiển thị</string>
|
||||||
<string name="revanced_hide_how_this_was_made_section_title">Ẩn \'Cách nội dung này được tạo ra\'</string>
|
<string name="revanced_hide_how_this_was_made_section_title">Ẩn \'Cách nội dung này được tạo ra\'</string>
|
||||||
<string name="revanced_hide_how_this_was_made_section_summary_on">Phần cách nội dung được tạo ra đã bị ẩn</string>
|
<string name="revanced_hide_how_this_was_made_section_summary_on">Phần cách nội dung được tạo ra được ẩn</string>
|
||||||
<string name="revanced_hide_how_this_was_made_section_summary_off">Phần cách nội dung được tạo ra được hiển thị</string>
|
<string name="revanced_hide_how_this_was_made_section_summary_off">Phần cách nội dung được tạo ra được hiện</string>
|
||||||
<string name="revanced_hide_podcast_section_title">Ẩn \'Khám phá podcast\'</string>
|
<string name="revanced_hide_podcast_section_title">Ẩn \'Khám phá podcast\'</string>
|
||||||
<string name="revanced_hide_podcast_section_summary_on">Phần Khám phá podcast đã bị ẩn</string>
|
<string name="revanced_hide_podcast_section_summary_on">Phần Khám phá podcast đã bị ẩn</string>
|
||||||
<string name="revanced_hide_podcast_section_summary_off">Phần Khám phá podcast được hiển thị</string>
|
<string name="revanced_hide_podcast_section_summary_off">Phần Khám phá podcast được hiển thị</string>
|
||||||
@ -301,10 +301,10 @@ Bạn sẽ không được thông báo về bất kỳ sự kiện bất ngờ n
|
|||||||
<string name="revanced_hide_comments_ai_chat_summary_summary_off">Tóm tắt cuộc trò chuyện được hiển thị</string>
|
<string name="revanced_hide_comments_ai_chat_summary_summary_off">Tóm tắt cuộc trò chuyện được hiển thị</string>
|
||||||
<string name="revanced_hide_comments_ai_summary_title">Ẩn tóm tắt Bình luận AI</string>
|
<string name="revanced_hide_comments_ai_summary_title">Ẩn tóm tắt Bình luận AI</string>
|
||||||
<string name="revanced_hide_comments_ai_summary_summary_on">Tóm tắt bình luận đã bị ẩn</string>
|
<string name="revanced_hide_comments_ai_summary_summary_on">Tóm tắt bình luận đã bị ẩn</string>
|
||||||
<string name="revanced_hide_comments_ai_summary_summary_off">Tóm tắt bình luận được hiển thị</string>
|
<string name="revanced_hide_comments_ai_summary_summary_off">Tóm tắt bình luận được hiện</string>
|
||||||
<string name="revanced_hide_comments_by_members_header_title">Ẩn tiêu đề \'Bình luận của hội viên\'</string>
|
<string name="revanced_hide_comments_by_members_header_title">Ẩn tiêu đề \'Bình luận của hội viên\'</string>
|
||||||
<string name="revanced_hide_comments_by_members_header_summary_on">Tiêu đề bình luận của hội viên đã bị ẩn</string>
|
<string name="revanced_hide_comments_by_members_header_summary_on">Tiêu đề Bình luận của hội viên được ẩn</string>
|
||||||
<string name="revanced_hide_comments_by_members_header_summary_off">Tiêu đề bình luận của hội viên được hiển thị</string>
|
<string name="revanced_hide_comments_by_members_header_summary_off">Tiêu đề Bình luận của hội viên được hiện</string>
|
||||||
<string name="revanced_hide_comments_section_title">Ẩn phần bình luận</string>
|
<string name="revanced_hide_comments_section_title">Ẩn phần bình luận</string>
|
||||||
<string name="revanced_hide_comments_section_summary_on">Phần Bình luận đã bị ẩn</string>
|
<string name="revanced_hide_comments_section_summary_on">Phần Bình luận đã bị ẩn</string>
|
||||||
<string name="revanced_hide_comments_section_summary_off">Phần Bình luận được hiển thị</string>
|
<string name="revanced_hide_comments_section_summary_off">Phần Bình luận được hiển thị</string>
|
||||||
@ -312,7 +312,7 @@ Bạn sẽ không được thông báo về bất kỳ sự kiện bất ngờ n
|
|||||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">Nút Tạo video ngắn đã bị ẩn</string>
|
<string name="revanced_hide_comments_create_a_short_button_summary_on">Nút Tạo video ngắn đã bị ẩn</string>
|
||||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">Nút Tạo video ngắn được hiển thị</string>
|
<string name="revanced_hide_comments_create_a_short_button_summary_off">Nút Tạo video ngắn được hiển thị</string>
|
||||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Ẩn nút biểu tượng cảm xúc và dấu thời gian</string>
|
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Ẩn nút biểu tượng cảm xúc và dấu thời gian</string>
|
||||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Nút biểu tượng cảm xúc và dấu thời gian đã bị ẩn</string>
|
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Nút biểu tượng cảm xúc và dấu thời gian được ẩn</string>
|
||||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Nút biểu tượng cảm xúc và dấu thời gian được hiển thị</string>
|
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Nút biểu tượng cảm xúc và dấu thời gian được hiển thị</string>
|
||||||
<string name="revanced_hide_comments_preview_comment_title">Ẩn xem trước bình luận</string>
|
<string name="revanced_hide_comments_preview_comment_title">Ẩn xem trước bình luận</string>
|
||||||
<string name="revanced_hide_comments_preview_comment_summary_on">Xem trước bình luận đã bị ẩn</string>
|
<string name="revanced_hide_comments_preview_comment_summary_on">Xem trước bình luận đã bị ẩn</string>
|
||||||
@ -330,7 +330,7 @@ Nếu cài đặt này được bật và Doodle đang hiển thị tại khu v
|
|||||||
<string name="revanced_custom_filter_screen_title">Bộ lọc tùy chỉnh</string>
|
<string name="revanced_custom_filter_screen_title">Bộ lọc tùy chỉnh</string>
|
||||||
<string name="revanced_custom_filter_screen_summary">Ẩn các thành phần bằng bộ lọc tùy chỉnh</string>
|
<string name="revanced_custom_filter_screen_summary">Ẩn các thành phần bằng bộ lọc tùy chỉnh</string>
|
||||||
<string name="revanced_custom_filter_title">Bật bộ lọc tùy chỉnh</string>
|
<string name="revanced_custom_filter_title">Bật bộ lọc tùy chỉnh</string>
|
||||||
<string name="revanced_custom_filter_summary_on">Bộ lọc tùy chỉnh đã bật</string>
|
<string name="revanced_custom_filter_summary_on">Bộ lọc tùy chỉnh được bật</string>
|
||||||
<string name="revanced_custom_filter_summary_off">Bộ lọc tuỳ chỉnh đã tắt</string>
|
<string name="revanced_custom_filter_summary_off">Bộ lọc tuỳ chỉnh đã tắt</string>
|
||||||
<string name="revanced_custom_filter_strings_title">Bộ lọc tùy chỉnh</string>
|
<string name="revanced_custom_filter_strings_title">Bộ lọc tùy chỉnh</string>
|
||||||
<!-- 'Component path builder strings' is the technical name for identifying the Litho UI layout items to hide. This is an advanced feature and most users will never use this. -->
|
<!-- 'Component path builder strings' is the technical name for identifying the Litho UI layout items to hide. This is an advanced feature and most users will never use this. -->
|
||||||
@ -426,10 +426,10 @@ Tính năng này chỉ khả dụng cho các thiết bị cũ hơn"</string>
|
|||||||
<string name="revanced_share_copy_url_success">Đã chép URL vào bảng nhớ tạm</string>
|
<string name="revanced_share_copy_url_success">Đã chép URL vào bảng nhớ tạm</string>
|
||||||
<string name="revanced_share_copy_url_timestamp_success">Đã chép URL với dấu thời gian</string>
|
<string name="revanced_share_copy_url_timestamp_success">Đã chép URL với dấu thời gian</string>
|
||||||
<string name="revanced_copy_video_url_title">Hiện nút sao chép URL video</string>
|
<string name="revanced_copy_video_url_title">Hiện nút sao chép URL video</string>
|
||||||
<string name="revanced_copy_video_url_summary_on">Nút được hiển thị. Chạm để sao chép video URL. Chạm và giữ để sao chép với dấu thời gian</string>
|
<string name="revanced_copy_video_url_summary_on">Nút được hiển thị. Chạm để sao chép URL video. Chạm và giữ để sao chép với dấu thời gian</string>
|
||||||
<string name="revanced_copy_video_url_summary_off">Nút không được hiển thị</string>
|
<string name="revanced_copy_video_url_summary_off">Nút không được hiển thị</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_title">Hiện nút sao chép URL với dấu thời gian</string>
|
<string name="revanced_copy_video_url_timestamp_title">Hiện nút sao chép URL với dấu thời gian</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_summary_on">Nút được hiển thị. Chạm để sao chép video URL với dấu thời gian. Chạm và giữ để sao chép video không kèm theo dấu thời gian</string>
|
<string name="revanced_copy_video_url_timestamp_summary_on">Nút được hiện. Chạm để sao chép video URL với dấu thời gian. Chạm và giữ để sao chép video không kèm theo dấu thời gian</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_summary_off">Nút không được hiển thị</string>
|
<string name="revanced_copy_video_url_timestamp_summary_off">Nút không được hiển thị</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
|
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
|
||||||
@ -443,9 +443,9 @@ Tính năng này chỉ khả dụng cho các thiết bị cũ hơn"</string>
|
|||||||
<string name="revanced_external_downloader_screen_summary">Các thiết lập trình tải xuống bên ngoài</string>
|
<string name="revanced_external_downloader_screen_summary">Các thiết lập trình tải xuống bên ngoài</string>
|
||||||
<string name="revanced_external_downloader_title">Hiện nút tải xuống bên ngoài</string>
|
<string name="revanced_external_downloader_title">Hiện nút tải xuống bên ngoài</string>
|
||||||
<string name="revanced_external_downloader_summary_on">Nút tải xuống trong trình phát đã được hiển thị</string>
|
<string name="revanced_external_downloader_summary_on">Nút tải xuống trong trình phát đã được hiển thị</string>
|
||||||
<string name="revanced_external_downloader_summary_off">Nút tải xuống trong trình phát không được hiển thị</string>
|
<string name="revanced_external_downloader_summary_off">Nút tải xuống trong trình phát không được hiện</string>
|
||||||
<!-- 'download action button' should be translated using the same wording as the translation of 'revanced_hide_download_button_title' -->
|
<!-- 'download action button' should be translated using the same wording as the translation of 'revanced_hide_download_button_title' -->
|
||||||
<string name="revanced_external_downloader_action_button_title">Thay thế nút hành động Tải xuống</string>
|
<string name="revanced_external_downloader_action_button_title">Thay thế Nút hành động tải xuống</string>
|
||||||
<string name="revanced_external_downloader_action_button_summary_on">Nút tải xuống mở trình tải xuống bên ngoài</string>
|
<string name="revanced_external_downloader_action_button_summary_on">Nút tải xuống mở trình tải xuống bên ngoài</string>
|
||||||
<string name="revanced_external_downloader_action_button_summary_off">Nút tải xuống mở trình tải xuống nội bộ ứng dụng</string>
|
<string name="revanced_external_downloader_action_button_summary_off">Nút tải xuống mở trình tải xuống nội bộ ứng dụng</string>
|
||||||
<string name="revanced_external_downloader_name_title">Tên gói trình tải xuống</string>
|
<string name="revanced_external_downloader_name_title">Tên gói trình tải xuống</string>
|
||||||
@ -464,12 +464,12 @@ Tính năng này chỉ khả dụng cho các thiết bị cũ hơn"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="interaction.swipecontrols.swipeControlsResourcePatch">
|
<patch id="interaction.swipecontrols.swipeControlsResourcePatch">
|
||||||
<string name="revanced_swipe_brightness_title">Bật cử chỉ độ sáng</string>
|
<string name="revanced_swipe_brightness_title">Bật cử chỉ độ sáng</string>
|
||||||
<string name="revanced_swipe_brightness_summary_on">"Đã bật vuốt độ sáng toàn màn hình
|
<string name="revanced_swipe_brightness_summary_on">"Vuốt chỉnh độ sáng toàn màn hình đã bật
|
||||||
|
|
||||||
Điều chỉnh độ sáng bằng cách vuốt dọc ở bên trái màn hình"</string>
|
Điều chỉnh độ sáng bằng cách vuốt dọc ở bên trái màn hình"</string>
|
||||||
<string name="revanced_swipe_brightness_summary_off">Đã tắt vuốt độ sáng toàn màn hình</string>
|
<string name="revanced_swipe_brightness_summary_off">Vuốt độ sáng toàn màn hình đã tắt</string>
|
||||||
<string name="revanced_swipe_volume_title">Bật cử chỉ âm lượng</string>
|
<string name="revanced_swipe_volume_title">Bật cử chỉ âm lượng</string>
|
||||||
<string name="revanced_swipe_volume_summary_on">"Đã bật vuốt âm lượng toàn màn hình
|
<string name="revanced_swipe_volume_summary_on">"Vuốt âm lượng toàn màn hình đã bật
|
||||||
|
|
||||||
Điều chỉnh âm lượng bằng cách vuốt dọc ở bên phải màn hình"</string>
|
Điều chỉnh âm lượng bằng cách vuốt dọc ở bên phải màn hình"</string>
|
||||||
<string name="revanced_swipe_volume_summary_off">Vuốt âm lượng toàn màn hình đã tắt</string>
|
<string name="revanced_swipe_volume_summary_off">Vuốt âm lượng toàn màn hình đã tắt</string>
|
||||||
@ -568,23 +568,23 @@ Tính năng này chỉ khả dụng cho các thiết bị cũ hơn"</string>
|
|||||||
<string name="revanced_navigation_buttons_screen_summary">Ẩn hoặc thay đổi các nút ở thanh điều hướng</string>
|
<string name="revanced_navigation_buttons_screen_summary">Ẩn hoặc thay đổi các nút ở thanh điều hướng</string>
|
||||||
<!-- 'Home' should be translated using the same localized wording YouTube displays for the tab. -->
|
<!-- 'Home' should be translated using the same localized wording YouTube displays for the tab. -->
|
||||||
<string name="revanced_hide_home_button_title">Ẩn Trang chủ</string>
|
<string name="revanced_hide_home_button_title">Ẩn Trang chủ</string>
|
||||||
<string name="revanced_hide_home_button_summary_on">Nút trang chủ đã bị ẩn</string>
|
<string name="revanced_hide_home_button_summary_on">Nút trang chủ được ẩn</string>
|
||||||
<string name="revanced_hide_home_button_summary_off">Nút trang chủ được hiển thị</string>
|
<string name="revanced_hide_home_button_summary_off">Nút trang chủ được hiện</string>
|
||||||
<!-- 'Shorts' should be translated using the same localized wording YouTube displays the tab. -->
|
<!-- 'Shorts' should be translated using the same localized wording YouTube displays the tab. -->
|
||||||
<string name="revanced_hide_shorts_button_title">Ẩn Shorts</string>
|
<string name="revanced_hide_shorts_button_title">Ẩn Shorts</string>
|
||||||
<string name="revanced_hide_shorts_button_summary_on">Nút Shorts đã bị ẩn</string>
|
<string name="revanced_hide_shorts_button_summary_on">Nút Shorts đã bị ẩn</string>
|
||||||
<string name="revanced_hide_shorts_button_summary_off">Nút Shorts được hiển thị</string>
|
<string name="revanced_hide_shorts_button_summary_off">Nút Shorts được hiện</string>
|
||||||
<!-- The Create button has no display name. Translate normally. -->
|
<!-- The Create button has no display name. Translate normally. -->
|
||||||
<string name="revanced_hide_create_button_title">Ẩn Tạo</string>
|
<string name="revanced_hide_create_button_title">Ẩn nút Tạo</string>
|
||||||
<string name="revanced_hide_create_button_summary_on">Nút tạo đã bị ẩn</string>
|
<string name="revanced_hide_create_button_summary_on">Nút tạo đã bị ẩn</string>
|
||||||
<string name="revanced_hide_create_button_summary_off">Nút tạo được hiển thị</string>
|
<string name="revanced_hide_create_button_summary_off">Nút tạo được hiển thị</string>
|
||||||
<!-- 'Subscriptions' should be translated using the same localized wording YouTube displays the tab. -->
|
<!-- 'Subscriptions' should be translated using the same localized wording YouTube displays the tab. -->
|
||||||
<string name="revanced_hide_subscriptions_button_title">Ẩn Kênh đăng ký</string>
|
<string name="revanced_hide_subscriptions_button_title">Ẩn Kênh đăng ký</string>
|
||||||
<string name="revanced_hide_subscriptions_button_summary_on">Nút kênh đăng ký đã bị ẩn</string>
|
<string name="revanced_hide_subscriptions_button_summary_on">Nút kênh đăng ký được ẩn</string>
|
||||||
<string name="revanced_hide_subscriptions_button_summary_off">Nút kênh đăng ký được hiển thị</string>
|
<string name="revanced_hide_subscriptions_button_summary_off">Nút kênh đăng ký được hiện</string>
|
||||||
<string name="revanced_hide_notifications_button_title">Ẩn Thông báo</string>
|
<string name="revanced_hide_notifications_button_title">Ẩn Thông báo</string>
|
||||||
<string name="revanced_hide_notifications_button_summary_on">Nút thông báo đã bị ẩn</string>
|
<string name="revanced_hide_notifications_button_summary_on">Nút thông báo được ẩn</string>
|
||||||
<string name="revanced_hide_notifications_button_summary_off">Nút thông báo được hiển thị</string>
|
<string name="revanced_hide_notifications_button_summary_off">Nút thông báo được hiện</string>
|
||||||
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
|
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
|
||||||
<string name="revanced_switch_create_with_notifications_button_title">Chuyển vị nút Tạo với nút Thông báo</string>
|
<string name="revanced_switch_create_with_notifications_button_title">Chuyển vị nút Tạo với nút Thông báo</string>
|
||||||
<string name="revanced_switch_create_with_notifications_button_summary_on">"Nút tạo được chuyển đổi với nút Thông báo
|
<string name="revanced_switch_create_with_notifications_button_summary_on">"Nút tạo được chuyển đổi với nút Thông báo
|
||||||
@ -656,16 +656,16 @@ Nếu việc thay đổi cài đặt này không có hiệu lực, hãy thử ch
|
|||||||
<string name="revanced_hide_player_flyout_audio_track_summary_on">Nút bản âm thanh đã bị ẩn</string>
|
<string name="revanced_hide_player_flyout_audio_track_summary_on">Nút bản âm thanh đã bị ẩn</string>
|
||||||
<string name="revanced_hide_player_flyout_audio_track_summary_off">Nút bản âm thanh được hiển thị</string>
|
<string name="revanced_hide_player_flyout_audio_track_summary_off">Nút bản âm thanh được hiển thị</string>
|
||||||
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
|
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
|
||||||
<string name="revanced_hide_player_flyout_audio_track_not_available">"Trình đơn bản âm thanh đã bị ẩn
|
<string name="revanced_hide_player_flyout_audio_track_not_available">"Menu theo dõi âm thanh được ẩn
|
||||||
|
|
||||||
Để hiển thị trình đơn Bản âm thanh, hãy thay đổi 'Giả mạo luồng phát video' thành iOS TV"</string>
|
Để hiện trình đơn Theo dõi âm thanh, hãy thay đổi 'Giả mạo luồng video' thành iOS TV"</string>
|
||||||
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- '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">Ẩn Xem trong thực tế ảo</string>
|
<string name="revanced_hide_player_flyout_watch_in_vr_title">Ẩn Xem trong thực tế ảo</string>
|
||||||
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Trình đơn xem trong thực tế ảo đã bị ẩn</string>
|
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Trình đơn xem trong thực tế ảo đã bị ẩn</string>
|
||||||
<string name="revanced_hide_player_flyout_watch_in_vr_summary_off">Trình đơn xem trong thực tế ảo được hiển thị</string>
|
<string name="revanced_hide_player_flyout_watch_in_vr_summary_off">Trình đơn xem trong thực tế ảo được hiển thị</string>
|
||||||
<string name="revanced_hide_player_flyout_video_quality_footer_title">Ẩn trình đơn chất lượng video dưới</string>
|
<string name="revanced_hide_player_flyout_video_quality_footer_title">Ẩn trình đơn chất lượng chân video</string>
|
||||||
<string name="revanced_hide_player_flyout_video_quality_footer_summary_on">Trình đơn chất lượng video bên dưới đã bị ẩn</string>
|
<string name="revanced_hide_player_flyout_video_quality_footer_summary_on">Trình đơn chất lượng chân video được ẩn</string>
|
||||||
<string name="revanced_hide_player_flyout_video_quality_footer_summary_off">Trình đơn chất lượng video bên dưới được hiển thị</string>
|
<string name="revanced_hide_player_flyout_video_quality_footer_summary_off">Trình đơn chất lượng chân video được hiện</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
|
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
|
||||||
<string name="revanced_hide_player_previous_next_buttons_title">Ẩn các nút Trước & Tiếp theo</string>
|
<string name="revanced_hide_player_previous_next_buttons_title">Ẩn các nút Trước & Tiếp theo</string>
|
||||||
@ -673,12 +673,12 @@ Nếu việc thay đổi cài đặt này không có hiệu lực, hãy thử ch
|
|||||||
<string name="revanced_hide_player_previous_next_buttons_summary_off">Các nút được hiển thị</string>
|
<string name="revanced_hide_player_previous_next_buttons_summary_off">Các nút được hiển thị</string>
|
||||||
<string name="revanced_hide_cast_button_title">Ẩn nút truyền</string>
|
<string name="revanced_hide_cast_button_title">Ẩn nút truyền</string>
|
||||||
<string name="revanced_hide_cast_button_summary_on">Nút Truyền đã bị ẩn</string>
|
<string name="revanced_hide_cast_button_summary_on">Nút Truyền đã bị ẩn</string>
|
||||||
<string name="revanced_hide_cast_button_summary_off">Nút Truyền được hiển thị</string>
|
<string name="revanced_hide_cast_button_summary_off">Nút Truyền được hiện</string>
|
||||||
<!-- This button does not display any text, but 'captions' should be translated using the same wording used as the translation of 'revanced_hide_player_flyout_captions_title' -->
|
<!-- This button does not display any text, but 'captions' should be translated using the same wording used as the translation of 'revanced_hide_player_flyout_captions_title' -->
|
||||||
<string name="revanced_hide_captions_button_title">Ẩn nút Chú thích</string>
|
<string name="revanced_hide_captions_button_title">Ẩn nút Chú thích</string>
|
||||||
<string name="revanced_hide_captions_button_summary_on">Nút phụ đề đã bị ẩn</string>
|
<string name="revanced_hide_captions_button_summary_on">Nút phụ đề đã bị ẩn</string>
|
||||||
<string name="revanced_hide_captions_button_summary_off">Nút phụ đề được hiển thị</string>
|
<string name="revanced_hide_captions_button_summary_off">Nút phụ đề được hiển thị</string>
|
||||||
<string name="revanced_hide_autoplay_button_title">Ẩn nút Phát tự động</string>
|
<string name="revanced_hide_autoplay_button_title">Ẩn nút Tự động phát</string>
|
||||||
<string name="revanced_hide_autoplay_button_summary_on">Nút tự động phát đã bị ẩn</string>
|
<string name="revanced_hide_autoplay_button_summary_on">Nút tự động phát đã bị ẩn</string>
|
||||||
<string name="revanced_hide_autoplay_button_summary_off">Nút tự động phát được hiển thị</string>
|
<string name="revanced_hide_autoplay_button_summary_off">Nút tự động phát được hiển thị</string>
|
||||||
</patch>
|
</patch>
|
||||||
@ -695,11 +695,11 @@ Nếu việc thay đổi cài đặt này không có hiệu lực, hãy thử ch
|
|||||||
<patch id="layout.hide.infocards.hideInfocardsResourcePatch">
|
<patch id="layout.hide.infocards.hideInfocardsResourcePatch">
|
||||||
<string name="revanced_hide_info_cards_title">Ẩn thẻ thông tin</string>
|
<string name="revanced_hide_info_cards_title">Ẩn thẻ thông tin</string>
|
||||||
<string name="revanced_hide_info_cards_summary_on">Thẻ thông tin đã bị ẩn</string>
|
<string name="revanced_hide_info_cards_summary_on">Thẻ thông tin đã bị ẩn</string>
|
||||||
<string name="revanced_hide_info_cards_summary_off">Thẻ thông tin được hiển thị</string>
|
<string name="revanced_hide_info_cards_summary_off">Thẻ thông tin được hiện</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.hide.rollingnumber.disableRollingNumberAnimationPatch">
|
<patch id="layout.hide.rollingnumber.disableRollingNumberAnimationPatch">
|
||||||
<string name="revanced_disable_rolling_number_animations_title">Tắt chuyển động cuộn số</string>
|
<string name="revanced_disable_rolling_number_animations_title">Tắt chuyển động cuộn số</string>
|
||||||
<string name="revanced_disable_rolling_number_animations_summary_on">Số cuộn không chuyển động</string>
|
<string name="revanced_disable_rolling_number_animations_summary_on">Số cuộn không được chuyển động</string>
|
||||||
<string name="revanced_disable_rolling_number_animations_summary_off">Số cuộn được chuyển động</string>
|
<string name="revanced_disable_rolling_number_animations_summary_off">Số cuộn được chuyển động</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.hide.seekbar.hideSeekbarPatch">
|
<patch id="layout.hide.seekbar.hideSeekbarPatch">
|
||||||
@ -750,6 +750,9 @@ Nếu việc thay đổi cài đặt này không có hiệu lực, hãy thử ch
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Ẩn nhãn vị trí</string>
|
<string name="revanced_hide_shorts_location_label_title">Ẩn nhãn vị trí</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Nhãn vị trí đã bị ẩn</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Nhãn vị trí đã bị ẩn</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Nhãn vị trí được hiển thị</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Nhãn vị trí được hiển thị</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Ẩn bảng Bình luận</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">Đã ẩn bảng điều khiển bình luận</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">Bảng bình luận đang hiển thị</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Ẩn nút Lưu âm thanh</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Ẩn nút Lưu âm thanh</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Nút lưu nhạc đã bị ẩn</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Nút lưu nhạc đã bị ẩn</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Nút lưu nhạc được hiển thị</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Nút lưu nhạc được hiển thị</string>
|
||||||
@ -771,9 +774,9 @@ Nếu việc thay đổi cài đặt này không có hiệu lực, hãy thử ch
|
|||||||
<string name="revanced_hide_shorts_stickers_title">Ẩn nhãn dán</string>
|
<string name="revanced_hide_shorts_stickers_title">Ẩn nhãn dán</string>
|
||||||
<string name="revanced_hide_shorts_stickers_summary_on">Nhãn dán đã bị ẩn</string>
|
<string name="revanced_hide_shorts_stickers_summary_on">Nhãn dán đã bị ẩn</string>
|
||||||
<string name="revanced_hide_shorts_stickers_summary_off">Nhãn dán được hiển thị</string>
|
<string name="revanced_hide_shorts_stickers_summary_off">Nhãn dán được hiển thị</string>
|
||||||
<string name="revanced_hide_shorts_like_fountain_title">Ẩn hiệu ứng thị giác nút Thích</string>
|
<string name="revanced_hide_shorts_like_fountain_title">Ẩn hiệu ứng đài phun nút Thích</string>
|
||||||
<string name="revanced_hide_shorts_like_fountain_summary_on">Hiệu ứng đài phun nút thích đã bị ẩn</string>
|
<string name="revanced_hide_shorts_like_fountain_summary_on">Hiệu ứng đài phun nút thích được ẩn</string>
|
||||||
<string name="revanced_hide_shorts_like_fountain_summary_off">Hiệu ứng đài phun nút thích được hiển thị</string>
|
<string name="revanced_hide_shorts_like_fountain_summary_off">Hiệu ứng đài phun nút thích được hiện</string>
|
||||||
<string name="revanced_hide_shorts_like_button_title">Ẩn nút Thích</string>
|
<string name="revanced_hide_shorts_like_button_title">Ẩn nút Thích</string>
|
||||||
<string name="revanced_hide_shorts_like_button_summary_on">Nút thích đã bị ẩn</string>
|
<string name="revanced_hide_shorts_like_button_summary_on">Nút thích đã bị ẩn</string>
|
||||||
<string name="revanced_hide_shorts_like_button_summary_off">Nút thích được hiển thị</string>
|
<string name="revanced_hide_shorts_like_button_summary_off">Nút thích được hiển thị</string>
|
||||||
@ -1397,7 +1400,7 @@ Bật tính năng này có thể mở khóa chất lượng video cao hơn"</str
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Hiện nút hộp thoại tốc độ phát</string>
|
<string name="revanced_playback_speed_dialog_button_title">Hiện nút hộp thoại tốc độ phát</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Nút được hiển thị</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Nút được hiển thị. Nhấn và giữ để đặt lại tốc độ phát về mặc định</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Nút không được hiển thị</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Nút không được hiển thị</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1409,6 +1412,7 @@ Bật tính năng này có thể mở khóa chất lượng video cao hơn"</str
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Tốc độ tùy chỉnh phải nhỏ hơn %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">Tốc độ tùy chỉnh phải nhỏ hơn %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Tốc độ phát lại tùy chỉnh không hợp lệ</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Tốc độ phát lại tùy chỉnh không hợp lệ</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Tự động</string>
|
<string name="revanced_custom_playback_speeds_auto">Tự động</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Tốc độ phát đã được đặt lại thành: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Tốc độ chạm và giữ tùy chỉnh</string>
|
<string name="revanced_speed_tap_and_hold_title">Tốc độ chạm và giữ tùy chỉnh</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">Tốc độ phát từ 0 đến 8</string>
|
<string name="revanced_speed_tap_and_hold_summary">Tốc độ phát từ 0 đến 8</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -491,6 +491,10 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_swipe_overlay_background_opacity_title">滑动提示层背景的不透明度</string>
|
<string name="revanced_swipe_overlay_background_opacity_title">滑动提示层背景的不透明度</string>
|
||||||
<string name="revanced_swipe_overlay_background_opacity_summary">不透明度值介于 0-100 之间</string>
|
<string name="revanced_swipe_overlay_background_opacity_summary">不透明度值介于 0-100 之间</string>
|
||||||
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">滑动不透明度必须介于 0-100 之间</string>
|
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">滑动不透明度必须介于 0-100 之间</string>
|
||||||
|
<string name="revanced_swipe_overlay_progress_brightness_color_title">滑动提示层亮度颜色</string>
|
||||||
|
<string name="revanced_swipe_overlay_progress_brightness_color_summary">亮度控件进度条的颜色</string>
|
||||||
|
<string name="revanced_swipe_overlay_progress_volume_color_title">滑动提示层音量颜色</string>
|
||||||
|
<string name="revanced_swipe_overlay_progress_volume_color_summary">音量控件进度条的颜色</string>
|
||||||
<string name="revanced_swipe_text_overlay_size_title">滑动提示层文字大小</string>
|
<string name="revanced_swipe_text_overlay_size_title">滑动提示层文字大小</string>
|
||||||
<string name="revanced_swipe_text_overlay_size_summary">滑动提示层的文字大小,范围为 1-30</string>
|
<string name="revanced_swipe_text_overlay_size_summary">滑动提示层的文字大小,范围为 1-30</string>
|
||||||
<string name="revanced_swipe_text_overlay_size_invalid_toast">文字大小必须在 1-30 之间</string>
|
<string name="revanced_swipe_text_overlay_size_invalid_toast">文字大小必须在 1-30 之间</string>
|
||||||
@ -746,6 +750,9 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_shorts_location_label_title">隐藏位置标签</string>
|
<string name="revanced_hide_shorts_location_label_title">隐藏位置标签</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">位置标签已隐藏</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">位置标签已隐藏</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">位置标签已显示</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">位置标签已显示</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">隐藏评论面板</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">已隐藏评论面板</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">评论面板已显示</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">隐藏「保存音乐」按钮</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">隐藏「保存音乐」按钮</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">保存音乐按钮已隐藏</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">保存音乐按钮已隐藏</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">保存音乐按钮已显示</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">保存音乐按钮已显示</string>
|
||||||
@ -1398,7 +1405,7 @@ Second \"item\" text"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">显示播放速度对话框按钮</string>
|
<string name="revanced_playback_speed_dialog_button_title">显示播放速度对话框按钮</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">按钮已显示</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">按钮已显示。点住即可将播放速度重置为默认值</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">按钮未显示</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">按钮未显示</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1410,6 +1417,7 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">自定义速度必须小于 %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">自定义速度必须小于 %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">自定义播放速度无效</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">自定义播放速度无效</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">自动</string>
|
<string name="revanced_custom_playback_speeds_auto">自动</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">已将播放速度重置为:%s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">自定义长按速度</string>
|
<string name="revanced_speed_tap_and_hold_title">自定义长按速度</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">0-8之间的播放速度</string>
|
<string name="revanced_speed_tap_and_hold_summary">0-8之间的播放速度</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -1347,7 +1347,6 @@ Second \"item\" text"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">顯示速度對話方塊按鈕</string>
|
<string name="revanced_playback_speed_dialog_button_title">顯示速度對話方塊按鈕</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">已顯示按鈕</string>
|
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">不顯示按鈕</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">不顯示按鈕</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1359,6 +1358,7 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">自訂速度必須小於 %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">自訂速度必須小於 %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">自訂播放速度格式不正確</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">自訂播放速度格式不正確</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">自動</string>
|
<string name="revanced_custom_playback_speeds_auto">自動</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">已將播放速度重設為:%s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">自訂輕觸和按住的速度</string>
|
<string name="revanced_speed_tap_and_hold_title">自訂輕觸和按住的速度</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">播放速度介於 0 到 8 之間</string>
|
<string name="revanced_speed_tap_and_hold_summary">播放速度介於 0 到 8 之間</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
@ -812,6 +812,9 @@ To show the Audio track menu, change \'Spoof video streams\' to iOS TV"</string>
|
|||||||
<string name="revanced_hide_shorts_location_label_title">Hide location label</string>
|
<string name="revanced_hide_shorts_location_label_title">Hide location label</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Location label is hidden</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Location label is hidden</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Location label is shown</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Location label is shown</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_title">Hide Comment panel</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_on">Comment panel is hidden</string>
|
||||||
|
<string name="revanced_hide_shorts_comment_panel_summary_off">Comment panel is shown</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Hide Save music button</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Hide Save music button</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Save music button is hidden</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Save music button is hidden</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Save music button is shown</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Save music button is shown</string>
|
||||||
@ -1466,7 +1469,7 @@ Enabling this can unlock higher video qualities"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Show speed dialog button</string>
|
<string name="revanced_playback_speed_dialog_button_title">Show speed dialog button</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Button is shown</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Button is shown. Tap and hold to reset playback speed to default</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Button is not shown</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Button is not shown</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
@ -1478,6 +1481,7 @@ Enabling this can unlock higher video qualities"</string>
|
|||||||
<string name="revanced_custom_playback_speeds_invalid">Custom speeds must be less than %s</string>
|
<string name="revanced_custom_playback_speeds_invalid">Custom speeds must be less than %s</string>
|
||||||
<string name="revanced_custom_playback_speeds_parse_exception">Invalid custom playback speeds</string>
|
<string name="revanced_custom_playback_speeds_parse_exception">Invalid custom playback speeds</string>
|
||||||
<string name="revanced_custom_playback_speeds_auto">Auto</string>
|
<string name="revanced_custom_playback_speeds_auto">Auto</string>
|
||||||
|
<string name="revanced_custom_playback_speeds_reset_toast">Playback speed reset to: %s</string>
|
||||||
<string name="revanced_speed_tap_and_hold_title">Custom tap and hold speed</string>
|
<string name="revanced_speed_tap_and_hold_title">Custom tap and hold speed</string>
|
||||||
<string name="revanced_speed_tap_and_hold_summary">Playback speed between 0-8</string>
|
<string name="revanced_speed_tap_and_hold_summary">Playback speed between 0-8</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
Reference in New Issue
Block a user