mirror of
https://github.com/ReVanced/revanced-patches.git
synced 2026-01-17 08:13:56 +00:00
Compare commits
29 Commits
v5.25.0-de
...
v5.26.0-de
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bf288b83ae | ||
|
|
7a53580380 | ||
|
|
6439efa2a9 | ||
|
|
bc45433dcb | ||
|
|
8871803e83 | ||
|
|
18954a0285 | ||
|
|
ce5385b28e | ||
|
|
3f4cdf6f83 | ||
|
|
094b4a1ea8 | ||
|
|
a320e35c32 | ||
|
|
5bf5a2d2db | ||
|
|
ff903ba9ac | ||
|
|
1079a54dbe | ||
|
|
2b0e3b4553 | ||
|
|
0265a7791b | ||
|
|
49ae0df224 | ||
|
|
e279491724 | ||
|
|
495260fe2b | ||
|
|
40f069fff7 | ||
|
|
de263c1061 | ||
|
|
bf1f26d8bb | ||
|
|
0ee2ed72d4 | ||
|
|
02373b0bd2 | ||
|
|
97c8e2489d | ||
|
|
08b2b2e104 | ||
|
|
6b386b67d2 | ||
|
|
f8343ae9f6 | ||
|
|
3ba791ac7d | ||
|
|
443b54bf09 |
91
CHANGELOG.md
91
CHANGELOG.md
@@ -1,3 +1,94 @@
|
||||
# [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)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Disable Pairip license check:** Change patch to default off ([74b6a94](https://github.com/ReVanced/revanced-patches/commit/74b6a94577ac3f73b04bd0cce98fb7011a6607fd))
|
||||
* **Hide ADB status:** Resolve app crash on startup ([#5029](https://github.com/ReVanced/revanced-patches/issues/5029)) ([1abebd5](https://github.com/ReVanced/revanced-patches/commit/1abebd5f3b73250c6638d2d8a274b92ea8268924))
|
||||
* **Messenger:** Remove outdated `Disable switching emoji to sticker` patch ([#5044](https://github.com/ReVanced/revanced-patches/issues/5044)) ([7b182ca](https://github.com/ReVanced/revanced-patches/commit/7b182cab825ee3a4a3ca528c744c9d2a351c7cf8))
|
||||
* **Spotify Lite:** Remove obsolete `Enable on demand` patch ([#5046](https://github.com/ReVanced/revanced-patches/issues/5046)) ([4886d47](https://github.com/ReVanced/revanced-patches/commit/4886d47506c94b03c1f190ecc4947d3d91df6a47))
|
||||
* **YouTube - GmsCore support:** Restore patch functionality from prior merge ([7686bbe](https://github.com/ReVanced/revanced-patches/commit/7686bbe975644e1e582fa52f166879da5694ed93))
|
||||
* **YouTube - Hide ads:** Hide new type of general ad ([#5004](https://github.com/ReVanced/revanced-patches/issues/5004)) ([37e59d2](https://github.com/ReVanced/revanced-patches/commit/37e59d2771528c631dc13e73dac095fec95c6485))
|
||||
* **YouTube - Open Shorts in regular player:** Do not exit app when pressing back button in regular player ([#5020](https://github.com/ReVanced/revanced-patches/issues/5020)) ([3384f8d](https://github.com/ReVanced/revanced-patches/commit/3384f8dd0ff2a345f2e387f4ed1570079a83ccb6))
|
||||
* **YouTube:** Better handle incorrect duplicate translations ([20abac5](https://github.com/ReVanced/revanced-patches/commit/20abac52121fbecb65d87d0982f3380e1cf4e20e))
|
||||
* **Yuka - Unlock premium:** Remove broken patch that is no longer supported ([#5018](https://github.com/ReVanced/revanced-patches/issues/5018)) ([fac6e59](https://github.com/ReVanced/revanced-patches/commit/fac6e59d281e21e57abdcfc899cd1aeb18e5c2b8))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* Add `Disable pairip license check` patch ([#4927](https://github.com/ReVanced/revanced-patches/issues/4927)) ([42d2c27](https://github.com/ReVanced/revanced-patches/commit/42d2c277982ef63e6ad42d85e46f13c3ab50243c))
|
||||
* **Messenger:** Add `Remove Meta AI` patch ([#4945](https://github.com/ReVanced/revanced-patches/issues/4945)) ([012dff7](https://github.com/ReVanced/revanced-patches/commit/012dff7b6511b9e519ccac96f6713cf1a1b327b4))
|
||||
* **Prime Video:** Add `Rename shared permissions` patch ([#5049](https://github.com/ReVanced/revanced-patches/issues/5049)) ([80f1fc6](https://github.com/ReVanced/revanced-patches/commit/80f1fc629e30e391bd5877f07dbdf4b6613bd1cf))
|
||||
* **Spotify:** Add `Fix Facebook login` patch ([#5023](https://github.com/ReVanced/revanced-patches/issues/5023)) ([34932dc](https://github.com/ReVanced/revanced-patches/commit/34932dc43933d346a5a3adadc62c0dbd38a633b5))
|
||||
* **Threads:** Hide Ads ([#5064](https://github.com/ReVanced/revanced-patches/issues/5064)) ([3c4cecb](https://github.com/ReVanced/revanced-patches/commit/3c4cecb966c2f99bfde99552686dda19ade5f67e))
|
||||
* **YouTube - Enable debugging:** Add settings menu to share debug logs ([#5021](https://github.com/ReVanced/revanced-patches/issues/5021)) ([1ec4a88](https://github.com/ReVanced/revanced-patches/commit/1ec4a88464a2a2810c02cf072950b618d183779a))
|
||||
* **YouTube - Settings:** Add a color picker ([#4981](https://github.com/ReVanced/revanced-patches/issues/4981)) ([1e0e398](https://github.com/ReVanced/revanced-patches/commit/1e0e398574329173aff11a4dc9acfc3fcdeabe16))
|
||||
* **YouTube - Swipe controls:** Add separate color settings for the brightness and volume bars ([#5043](https://github.com/ReVanced/revanced-patches/issues/5043)) ([80f50e8](https://github.com/ReVanced/revanced-patches/commit/80f50e8c50ca6a8366b7fd7b01459fb16fa1074a))
|
||||
* **YouTube:** Add `Disable haptic feedback` patch ([#5033](https://github.com/ReVanced/revanced-patches/issues/5033)) ([bbe7974](https://github.com/ReVanced/revanced-patches/commit/bbe79744a513c96f9016476e8435f999e94c45d7))
|
||||
|
||||
# [5.25.0-dev.14](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.13...v5.25.0-dev.14) (2025-05-29)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **Threads:** Hide Ads ([#5064](https://github.com/ReVanced/revanced-patches/issues/5064)) ([3c4cecb](https://github.com/ReVanced/revanced-patches/commit/3c4cecb966c2f99bfde99552686dda19ade5f67e))
|
||||
|
||||
# [5.25.0-dev.13](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.12...v5.25.0-dev.13) (2025-05-28)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **Prime Video:** Add `Rename shared permissions` patch ([#5049](https://github.com/ReVanced/revanced-patches/issues/5049)) ([80f1fc6](https://github.com/ReVanced/revanced-patches/commit/80f1fc629e30e391bd5877f07dbdf4b6613bd1cf))
|
||||
|
||||
# [5.25.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.11...v5.25.0-dev.12) (2025-05-28)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **YouTube - Swipe controls:** Add separate color settings for the brightness and volume bars ([#5043](https://github.com/ReVanced/revanced-patches/issues/5043)) ([80f50e8](https://github.com/ReVanced/revanced-patches/commit/80f50e8c50ca6a8366b7fd7b01459fb16fa1074a))
|
||||
|
||||
# [5.25.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.10...v5.25.0-dev.11) (2025-05-27)
|
||||
|
||||
|
||||
|
||||
@@ -41,7 +41,10 @@ public class Logger {
|
||||
ERROR
|
||||
}
|
||||
|
||||
private static final String REVANCED_LOG_TAG = "revanced";
|
||||
/**
|
||||
* Log tag prefix. Only used for system logging.
|
||||
*/
|
||||
private static final String REVANCED_LOG_TAG_PREFIX = "revanced: ";
|
||||
|
||||
private static final String LOGGER_CLASS_NAME = Logger.class.getName();
|
||||
|
||||
@@ -90,17 +93,13 @@ public class Logger {
|
||||
String messageString = message.buildMessageString();
|
||||
String className = getOuterClassSimpleName(message);
|
||||
|
||||
StringBuilder logBuilder = new StringBuilder(className.length() + 2
|
||||
+ messageString.length());
|
||||
logBuilder.append(className).append(": ").append(messageString);
|
||||
|
||||
String toastMessage = showToast ? logBuilder.toString() : null;
|
||||
String logText = messageString;
|
||||
|
||||
// Append exception message if present.
|
||||
if (ex != null) {
|
||||
var exceptionMessage = ex.getMessage();
|
||||
if (exceptionMessage != null) {
|
||||
logBuilder.append("\nException: ").append(exceptionMessage);
|
||||
logText += "\nException: " + exceptionMessage;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -111,29 +110,31 @@ public class Logger {
|
||||
// Remove the stacktrace elements of this class.
|
||||
final int loggerIndex = stackTrace.lastIndexOf(LOGGER_CLASS_NAME);
|
||||
final int loggerBegins = stackTrace.indexOf('\n', loggerIndex);
|
||||
logBuilder.append(stackTrace, loggerBegins, stackTrace.length());
|
||||
logText += stackTrace.substring(loggerBegins);
|
||||
}
|
||||
|
||||
String logText = logBuilder.toString();
|
||||
LogBufferManager.appendToLogBuffer(logText);
|
||||
// Do not include "revanced:" prefix in clipboard logs.
|
||||
String managerToastString = className + ": " + logText;
|
||||
LogBufferManager.appendToLogBuffer(managerToastString);
|
||||
|
||||
String logTag = REVANCED_LOG_TAG_PREFIX + className;
|
||||
switch (logLevel) {
|
||||
case DEBUG:
|
||||
if (ex == null) Log.d(REVANCED_LOG_TAG, logText);
|
||||
else Log.d(REVANCED_LOG_TAG, logText, ex);
|
||||
if (ex == null) Log.d(logTag, logText);
|
||||
else Log.d(logTag, logText, ex);
|
||||
break;
|
||||
case INFO:
|
||||
if (ex == null) Log.i(REVANCED_LOG_TAG, logText);
|
||||
else Log.i(REVANCED_LOG_TAG, logText, ex);
|
||||
if (ex == null) Log.i(logTag, logText);
|
||||
else Log.i(logTag, logText, ex);
|
||||
break;
|
||||
case ERROR:
|
||||
if (ex == null) Log.e(REVANCED_LOG_TAG, logText);
|
||||
else Log.e(REVANCED_LOG_TAG, logText, ex);
|
||||
if (ex == null) Log.e(logTag, logText);
|
||||
else Log.e(logTag, logText, ex);
|
||||
break;
|
||||
}
|
||||
|
||||
if (toastMessage != null) {
|
||||
Utils.showToastLong(toastMessage);
|
||||
if (showToast) {
|
||||
Utils.showToastLong(managerToastString);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -71,9 +71,7 @@ final class PlayerRoutes {
|
||||
return innerTubeBody.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* @noinspection SameParameterValue
|
||||
*/
|
||||
@SuppressWarnings("SameParameterValue")
|
||||
static HttpURLConnection getPlayerResponseConnectionFromRoute(Route.CompiledRoute route, ClientType clientType) throws IOException {
|
||||
var connection = Requester.getConnectionFromCompiledRoute(YT_API_URL, route);
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ android {
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility = JavaVersion.VERSION_11
|
||||
targetCompatibility = JavaVersion.VERSION_11
|
||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||
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")
|
||||
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 {
|
||||
return Utils.getColorFromString(colorString);
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "Invalid custom color: " + colorString, ex);
|
||||
Logger.printException(() -> "Invalid color string: " + colorString, ex);
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,11 +7,11 @@ android {
|
||||
compileSdk = 34
|
||||
|
||||
defaultConfig {
|
||||
minSdk = 26
|
||||
minSdk = 24
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility = JavaVersion.VERSION_17
|
||||
targetCompatibility = JavaVersion.VERSION_17
|
||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||
targetCompatibility = JavaVersion.VERSION_1_8
|
||||
}
|
||||
}
|
||||
|
||||
@@ -105,6 +105,14 @@ public class ThemeHelper {
|
||||
return isDarkTheme() ? getLightThemeColor() : getDarkThemeColor();
|
||||
}
|
||||
|
||||
public static int getDialogBackgroundColor() {
|
||||
final String colorName = isDarkTheme()
|
||||
? "yt_black1"
|
||||
: "yt_white1";
|
||||
|
||||
return Utils.getColorFromString(colorName);
|
||||
}
|
||||
|
||||
public static int getToolbarBackgroundColor() {
|
||||
final String colorName = isDarkTheme()
|
||||
? "yt_black3"
|
||||
|
||||
@@ -686,7 +686,7 @@ public final class AlternativeThumbnailsPatch {
|
||||
? "" : fullUrl.substring(imageExtensionEndIndex);
|
||||
}
|
||||
|
||||
/** @noinspection SameParameterValue */
|
||||
@SuppressWarnings("SameParameterValue")
|
||||
String createStillsUrl(@NonNull ThumbnailQuality qualityToUse, boolean includeViewTracking) {
|
||||
// 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.
|
||||
|
||||
@@ -152,11 +152,15 @@ public class ReturnYouTubeDislikePatch {
|
||||
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);
|
||||
}
|
||||
|
||||
if (conversionContextString.contains("|shorts_like_button.eml")) {
|
||||
if (Utils.containsAny(conversionContextString,
|
||||
"|shorts_like_button.eml", "|reel_like_button.eml"
|
||||
)) {
|
||||
if (!Utils.containsNumber(original)) {
|
||||
Logger.printDebug(() -> "Replacing hidden likes count");
|
||||
return getShortsSpan(original, false);
|
||||
@@ -361,6 +365,11 @@ public class ReturnYouTubeDislikePatch {
|
||||
if (videoId.equals(lastPrefetchedVideoId)) {
|
||||
return;
|
||||
}
|
||||
if (!Utils.isNetworkConnected()) {
|
||||
Logger.printDebug(() -> "Cannot pre-fetch RYD, network is not connected");
|
||||
lastPrefetchedVideoId = null;
|
||||
return;
|
||||
}
|
||||
|
||||
final boolean videoIdIsShort = VideoInformation.lastPlayerResponseIsShort();
|
||||
// Shorts shelf in home and subscription feed causes player response hook to be called,
|
||||
@@ -415,6 +424,12 @@ public class ReturnYouTubeDislikePatch {
|
||||
}
|
||||
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);
|
||||
// Pre-emptively set the data to short status.
|
||||
// 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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 {
|
||||
|
||||
/**
|
||||
* Old litho based speed selection menu.
|
||||
*/
|
||||
public static volatile boolean isOldPlaybackSpeedMenuVisible;
|
||||
|
||||
/**
|
||||
* 0.05x speed selection menu.
|
||||
*/
|
||||
public static volatile boolean isPlaybackRateSelectorMenuVisible;
|
||||
|
||||
private final StringFilterGroup oldPlaybackMenuGroup;
|
||||
|
||||
public PlaybackSpeedMenuFilterPatch() {
|
||||
// 0.05x litho speed menu.
|
||||
var playbackRateSelectorGroup = new StringFilterGroup(
|
||||
@@ -29,22 +22,13 @@ public final class PlaybackSpeedMenuFilterPatch extends Filter {
|
||||
"playback_rate_selector_menu_sheet.eml-js"
|
||||
);
|
||||
|
||||
// Old litho based speed menu.
|
||||
oldPlaybackMenuGroup = new StringFilterGroup(
|
||||
Settings.CUSTOM_SPEED_MENU,
|
||||
"playback_speed_sheet_content.eml-js");
|
||||
|
||||
addPathCallbacks(playbackRateSelectorGroup, oldPlaybackMenuGroup);
|
||||
addPathCallbacks(playbackRateSelectorGroup);
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
|
||||
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
|
||||
if (matchedGroup == oldPlaybackMenuGroup) {
|
||||
isOldPlaybackSpeedMenuVisible = true;
|
||||
} else {
|
||||
isPlaybackRateSelectorMenuVisible = true;
|
||||
}
|
||||
isPlaybackRateSelectorMenuVisible = true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -143,12 +143,14 @@ public final class ShortsFilter extends Filter {
|
||||
|
||||
StringFilterGroup likeButton = new StringFilterGroup(
|
||||
Settings.HIDE_SHORTS_LIKE_BUTTON,
|
||||
"shorts_like_button.eml"
|
||||
"shorts_like_button.eml",
|
||||
"reel_like_button.eml"
|
||||
);
|
||||
|
||||
StringFilterGroup dislikeButton = new StringFilterGroup(
|
||||
Settings.HIDE_SHORTS_DISLIKE_BUTTON,
|
||||
"shorts_dislike_button.eml"
|
||||
"shorts_dislike_button.eml",
|
||||
"reel_dislike_button.eml"
|
||||
);
|
||||
|
||||
joinButton = new StringFilterGroup(
|
||||
@@ -168,12 +170,13 @@ public final class ShortsFilter extends Filter {
|
||||
|
||||
shortsActionBar = new StringFilterGroup(
|
||||
null,
|
||||
"shorts_action_bar.eml"
|
||||
"shorts_action_bar.eml",
|
||||
"reel_action_bar.eml"
|
||||
);
|
||||
|
||||
actionButton = new StringFilterGroup(
|
||||
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"
|
||||
);
|
||||
|
||||
@@ -195,15 +198,18 @@ public final class ShortsFilter extends Filter {
|
||||
videoActionButtonGroupList.addAll(
|
||||
new ByteArrayFilterGroup(
|
||||
Settings.HIDE_SHORTS_COMMENTS_BUTTON,
|
||||
"reel_comment_button"
|
||||
"reel_comment_button",
|
||||
"youtube_shorts_comment_outline"
|
||||
),
|
||||
new ByteArrayFilterGroup(
|
||||
Settings.HIDE_SHORTS_SHARE_BUTTON,
|
||||
"reel_share_button"
|
||||
"reel_share_button",
|
||||
"youtube_shorts_share_outline"
|
||||
),
|
||||
new ByteArrayFilterGroup(
|
||||
Settings.HIDE_SHORTS_REMIX_BUTTON,
|
||||
"reel_remix_button"
|
||||
"reel_remix_button",
|
||||
"youtube_shorts_remix_outline"
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
@@ -1,24 +1,57 @@
|
||||
package app.revanced.extension.youtube.patches.playback.speed;
|
||||
|
||||
import static app.revanced.extension.shared.StringRef.str;
|
||||
import static app.revanced.extension.shared.Utils.dipToPixels;
|
||||
|
||||
import 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.view.animation.Animation;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
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.function.Function;
|
||||
|
||||
import app.revanced.extension.shared.Logger;
|
||||
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.settings.Settings;
|
||||
import app.revanced.extension.youtube.shared.PlayerType;
|
||||
import kotlin.Unit;
|
||||
import kotlin.jvm.functions.Function1;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
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>
|
||||
* Going over 8x does not increase the actual playback speed any higher,
|
||||
* and the UI selector starts flickering and acting weird.
|
||||
@@ -26,6 +59,11 @@ public class CustomPlaybackSpeedPatch {
|
||||
*/
|
||||
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.
|
||||
*/
|
||||
@@ -34,16 +72,28 @@ public class CustomPlaybackSpeedPatch {
|
||||
/**
|
||||
* 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 {
|
||||
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) {
|
||||
TAP_AND_HOLD_SPEED = holdSpeed;
|
||||
} else {
|
||||
@@ -51,7 +101,9 @@ public class CustomPlaybackSpeedPatch {
|
||||
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));
|
||||
}
|
||||
|
||||
private static void loadCustomSpeeds() {
|
||||
private static float[] loadCustomSpeeds() {
|
||||
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);
|
||||
if (speedStrings.length == 0) {
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
|
||||
customPlaybackSpeeds = new float[speedStrings.length];
|
||||
float[] speeds = new float[speedStrings.length];
|
||||
|
||||
int i = 0;
|
||||
for (String speedString : speedStrings) {
|
||||
final float speedFloat = Float.parseFloat(speedString);
|
||||
if (speedFloat <= 0 || arrayContains(customPlaybackSpeeds, speedFloat)) {
|
||||
if (speedFloat <= 0 || arrayContains(speeds, speedFloat)) {
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
|
||||
if (speedFloat >= PLAYBACK_SPEED_MAXIMUM) {
|
||||
if (speedFloat > PLAYBACK_SPEED_MAXIMUM) {
|
||||
showInvalidCustomSpeedToast();
|
||||
Settings.CUSTOM_PLAYBACK_SPEEDS.resetToDefault();
|
||||
loadCustomSpeeds();
|
||||
return;
|
||||
return loadCustomSpeeds();
|
||||
}
|
||||
|
||||
customPlaybackSpeeds[i++] = speedFloat;
|
||||
speeds[i++] = speedFloat;
|
||||
}
|
||||
|
||||
return speeds;
|
||||
} catch (Exception ex) {
|
||||
Logger.printInfo(() -> "parse error", ex);
|
||||
Utils.showToastLong(str("revanced_custom_playback_speeds_parse_exception"));
|
||||
Logger.printInfo(() -> "Parse error", ex);
|
||||
Utils.showToastShort(str("revanced_custom_playback_speeds_parse_exception"));
|
||||
Settings.CUSTOM_PLAYBACK_SPEEDS.resetToDefault();
|
||||
loadCustomSpeeds();
|
||||
return loadCustomSpeeds();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,38 +169,28 @@ public class CustomPlaybackSpeedPatch {
|
||||
recyclerView.getViewTreeObserver().addOnDrawListener(() -> {
|
||||
try {
|
||||
if (PlaybackSpeedMenuFilterPatch.isPlaybackRateSelectorMenuVisible) {
|
||||
if (hideLithoMenuAndShowOldSpeedMenu(recyclerView, 5)) {
|
||||
if (hideLithoMenuAndShowCustomSpeedMenu(recyclerView, 5)) {
|
||||
PlaybackSpeedMenuFilterPatch.isPlaybackRateSelectorMenuVisible = false;
|
||||
}
|
||||
return;
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "isPlaybackRateSelectorMenuVisible failure", ex);
|
||||
}
|
||||
|
||||
try {
|
||||
if (PlaybackSpeedMenuFilterPatch.isOldPlaybackSpeedMenuVisible) {
|
||||
if (hideLithoMenuAndShowOldSpeedMenu(recyclerView, 8)) {
|
||||
PlaybackSpeedMenuFilterPatch.isOldPlaybackSpeedMenuVisible = false;
|
||||
}
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "isOldPlaybackSpeedMenuVisible failure", ex);
|
||||
Logger.printException(() -> "onFlyoutMenuCreate failure", ex);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private static boolean hideLithoMenuAndShowOldSpeedMenu(RecyclerView recyclerView, int expectedChildCount) {
|
||||
@SuppressWarnings("SameParameterValue")
|
||||
private static boolean hideLithoMenuAndShowCustomSpeedMenu(RecyclerView recyclerView, int expectedChildCount) {
|
||||
if (recyclerView.getChildCount() == 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
View firstChild = recyclerView.getChildAt(0);
|
||||
if (!(firstChild instanceof ViewGroup PlaybackSpeedParentView)) {
|
||||
if (!(firstChild instanceof ViewGroup playbackSpeedParentView)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (PlaybackSpeedParentView.getChildCount() != expectedChildCount) {
|
||||
if (playbackSpeedParentView.getChildCount() != expectedChildCount) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -168,23 +214,418 @@ public class CustomPlaybackSpeedPatch {
|
||||
((ViewGroup) parentView3rd).setVisibility(View.GONE);
|
||||
((ViewGroup) parentView4th).setVisibility(View.GONE);
|
||||
|
||||
// Close the litho speed menu and show the old one.
|
||||
showOldPlaybackSpeedMenu();
|
||||
// Close the litho speed menu and show the modern custom speed dialog.
|
||||
showModernCustomPlaybackSpeedDialog(recyclerView.getContext());
|
||||
Logger.printDebug(() -> "Modern playback speed dialog shown");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public static void showOldPlaybackSpeedMenu() {
|
||||
// This method is sometimes used multiple times.
|
||||
// To prevent this, ignore method reuse within 1 second.
|
||||
final long now = System.currentTimeMillis();
|
||||
if (now - lastTimeOldPlaybackMenuInvoked < 1000) {
|
||||
Logger.printDebug(() -> "Ignoring call to showOldPlaybackSpeedMenu");
|
||||
return;
|
||||
}
|
||||
lastTimeOldPlaybackMenuInvoked = now;
|
||||
Logger.printDebug(() -> "Old video quality menu shown");
|
||||
/**
|
||||
* Displays a modern custom dialog for adjusting video playback speed.
|
||||
* <p>
|
||||
* This method creates a dialog with a slider, plus/minus buttons, and preset speed buttons
|
||||
* to allow the user to modify the video playback speed. The dialog is styled with rounded
|
||||
* corners and themed colors, positioned at the bottom of the screen. The playback speed
|
||||
* 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
|
||||
* video playback. The dialog is dismissed if the player enters Picture-in-Picture (PiP) mode.
|
||||
*/
|
||||
@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) {
|
||||
try {
|
||||
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
|
||||
// still capped to under 8.0x.
|
||||
playbackSpeed = Math.min(playbackSpeed, CustomPlaybackSpeedPatch.PLAYBACK_SPEED_MAXIMUM - 0.05f);
|
||||
// still capped to 8.0x.
|
||||
playbackSpeed = Math.min(playbackSpeed, CustomPlaybackSpeedPatch.PLAYBACK_SPEED_MAXIMUM);
|
||||
|
||||
// Prevent toast spamming if using the 0.05x adjustments.
|
||||
// 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);
|
||||
|
||||
Utils.showToastLong(str("revanced_remember_playback_speed_toast", (finalPlaybackSpeed + "x")));
|
||||
Utils.showToastShort(str("revanced_remember_playback_speed_toast", (finalPlaybackSpeed + "x")));
|
||||
}, TOAST_DELAY_MILLISECONDS);
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
|
||||
@@ -60,7 +60,7 @@ public final class SeekbarColorPatch {
|
||||
* this is the color value of {@link Settings#SEEKBAR_CUSTOM_COLOR_PRIMARY}.
|
||||
* 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.
|
||||
@@ -77,24 +77,25 @@ public final class SeekbarColorPatch {
|
||||
Color.colorToHSV(ORIGINAL_SEEKBAR_COLOR, hsv);
|
||||
ORIGINAL_SEEKBAR_COLOR_BRIGHTNESS = hsv[2];
|
||||
|
||||
if (SEEKBAR_CUSTOM_COLOR_ENABLED) {
|
||||
loadCustomSeekbarColor();
|
||||
}
|
||||
customSeekbarColor = SEEKBAR_CUSTOM_COLOR_ENABLED
|
||||
? loadCustomSeekbarColor()
|
||||
: ORIGINAL_SEEKBAR_COLOR;
|
||||
}
|
||||
|
||||
private static void loadCustomSeekbarColor() {
|
||||
private static int loadCustomSeekbarColor() {
|
||||
try {
|
||||
customSeekbarColor = Color.parseColor(Settings.SEEKBAR_CUSTOM_COLOR_PRIMARY.get());
|
||||
Color.colorToHSV(customSeekbarColor, customSeekbarColorHSV);
|
||||
|
||||
customSeekbarColorGradient[0] = customSeekbarColor;
|
||||
final int color = Color.parseColor(Settings.SEEKBAR_CUSTOM_COLOR_PRIMARY.get());
|
||||
Color.colorToHSV(color, customSeekbarColorHSV);
|
||||
customSeekbarColorGradient[0] = color;
|
||||
customSeekbarColorGradient[1] = Color.parseColor(Settings.SEEKBAR_CUSTOM_COLOR_ACCENT.get());
|
||||
|
||||
return color;
|
||||
} catch (Exception ex) {
|
||||
Utils.showToastShort(str("revanced_seekbar_custom_color_invalid"));
|
||||
Settings.SEEKBAR_CUSTOM_COLOR_PRIMARY.resetToDefault();
|
||||
Settings.SEEKBAR_CUSTOM_COLOR_ACCENT.resetToDefault();
|
||||
|
||||
loadCustomSeekbarColor();
|
||||
return loadCustomSeekbarColor();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -114,6 +115,7 @@ public final class SeekbarColorPatch {
|
||||
: (int) channel3Bits;
|
||||
}
|
||||
|
||||
@SuppressWarnings("SameParameterValue")
|
||||
private static String get9BitStyleIdentifier(int color24Bit) {
|
||||
final int r3 = colorChannelTo3Bits(Color.red(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 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",
|
||||
"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
|
||||
public static final BooleanSetting FORCE_ORIGINAL_AUDIO = new BooleanSetting("revanced_force_original_audio", FALSE, new ForceOriginalAudioAvailability());
|
||||
|
||||
@@ -337,13 +337,17 @@ public class Settings extends BaseSettings {
|
||||
parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME));
|
||||
public static final IntegerSetting SWIPE_OVERLAY_OPACITY = new IntegerSetting("revanced_swipe_overlay_background_opacity", 60, true,
|
||||
parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME));
|
||||
public static final StringSetting SWIPE_OVERLAY_PROGRESS_COLOR = new StringSetting("revanced_swipe_overlay_progress_color", "#FFFFFF", true,
|
||||
parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME));
|
||||
public static final StringSetting SWIPE_OVERLAY_BRIGHTNESS_COLOR = new StringSetting("revanced_swipe_overlay_progress_brightness_color", "#FFFFFF", true,
|
||||
parent(SWIPE_BRIGHTNESS));
|
||||
public static final StringSetting SWIPE_OVERLAY_VOLUME_COLOR = new StringSetting("revanced_swipe_overlay_progress_volume_color", "#FFFFFF", true,
|
||||
parent(SWIPE_VOLUME));
|
||||
public static final LongSetting SWIPE_OVERLAY_TIMEOUT = new LongSetting("revanced_swipe_overlay_timeout", 500L, true,
|
||||
parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME));
|
||||
public static final BooleanSetting SWIPE_SAVE_AND_RESTORE_BRIGHTNESS = new BooleanSetting("revanced_swipe_save_and_restore_brightness", TRUE, true, parent(SWIPE_BRIGHTNESS));
|
||||
public static final BooleanSetting SWIPE_SAVE_AND_RESTORE_BRIGHTNESS = new BooleanSetting("revanced_swipe_save_and_restore_brightness", TRUE, true,
|
||||
parent(SWIPE_BRIGHTNESS));
|
||||
public static final FloatSetting SWIPE_BRIGHTNESS_VALUE = new FloatSetting("revanced_swipe_brightness_value", -1f);
|
||||
public static final BooleanSetting SWIPE_LOWEST_VALUE_ENABLE_AUTO_BRIGHTNESS = new BooleanSetting("revanced_swipe_lowest_value_enable_auto_brightness", FALSE, true, parent(SWIPE_BRIGHTNESS));
|
||||
public static final BooleanSetting SWIPE_LOWEST_VALUE_ENABLE_AUTO_BRIGHTNESS = new BooleanSetting("revanced_swipe_lowest_value_enable_auto_brightness", FALSE, true,
|
||||
parent(SWIPE_BRIGHTNESS));
|
||||
|
||||
// ReturnYoutubeDislike
|
||||
public static final BooleanSetting RYD_ENABLED = new BooleanSetting("revanced_ryd_enabled", TRUE);
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package app.revanced.extension.youtube.swipecontrols
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.graphics.Color
|
||||
import app.revanced.extension.shared.Logger
|
||||
import app.revanced.extension.shared.StringRef.str
|
||||
import app.revanced.extension.shared.Utils
|
||||
import app.revanced.extension.shared.settings.StringSetting
|
||||
import app.revanced.extension.youtube.settings.Settings
|
||||
import app.revanced.extension.youtube.shared.PlayerType
|
||||
|
||||
@@ -51,105 +51,112 @@ class SwipeControlsConfigurationProvider {
|
||||
/**
|
||||
* Indicates whether press-to-swipe mode is enabled, requiring a press before swiping to activate controls.
|
||||
*/
|
||||
val shouldEnablePressToSwipe: Boolean
|
||||
get() = Settings.SWIPE_PRESS_TO_ENGAGE.get()
|
||||
val shouldEnablePressToSwipe = Settings.SWIPE_PRESS_TO_ENGAGE.get()
|
||||
|
||||
/**
|
||||
* The threshold for detecting swipe gestures, in pixels.
|
||||
* Loaded once to ensure consistent behavior during rapid scroll events.
|
||||
*/
|
||||
val swipeMagnitudeThreshold: Int
|
||||
get() = Settings.SWIPE_MAGNITUDE_THRESHOLD.get()
|
||||
val swipeMagnitudeThreshold = Settings.SWIPE_MAGNITUDE_THRESHOLD.get()
|
||||
|
||||
/**
|
||||
* The sensitivity of volume swipe gestures, determining how much volume changes per swipe.
|
||||
* Resets to default if set to 0, as it would disable swiping.
|
||||
*/
|
||||
val volumeSwipeSensitivity: Int
|
||||
get() {
|
||||
val sensitivity = Settings.SWIPE_VOLUME_SENSITIVITY.get()
|
||||
val volumeSwipeSensitivity: Int by lazy {
|
||||
val sensitivity = Settings.SWIPE_VOLUME_SENSITIVITY.get()
|
||||
|
||||
if (sensitivity < 1) {
|
||||
return Settings.SWIPE_VOLUME_SENSITIVITY.resetToDefault()
|
||||
}
|
||||
|
||||
return sensitivity
|
||||
if (sensitivity < 1) {
|
||||
return@lazy Settings.SWIPE_VOLUME_SENSITIVITY.resetToDefault()
|
||||
}
|
||||
|
||||
sensitivity
|
||||
}
|
||||
//endregion
|
||||
|
||||
//region overlay adjustments
|
||||
/**
|
||||
* Indicates whether haptic feedback should be enabled for swipe control interactions.
|
||||
*/
|
||||
val shouldEnableHapticFeedback: Boolean
|
||||
get() = Settings.SWIPE_HAPTIC_FEEDBACK.get()
|
||||
val shouldEnableHapticFeedback = Settings.SWIPE_HAPTIC_FEEDBACK.get()
|
||||
|
||||
/**
|
||||
* The duration in milliseconds that the overlay should remain visible after a change.
|
||||
*/
|
||||
val overlayShowTimeoutMillis: Long
|
||||
get() = Settings.SWIPE_OVERLAY_TIMEOUT.get()
|
||||
val overlayShowTimeoutMillis = Settings.SWIPE_OVERLAY_TIMEOUT.get()
|
||||
|
||||
/**
|
||||
* The background opacity of the overlay, converted from a percentage (0-100) to an alpha value (0-255).
|
||||
* Resets to default and shows a toast if the value is out of range.
|
||||
*/
|
||||
val overlayBackgroundOpacity: Int
|
||||
get() {
|
||||
var opacity = Settings.SWIPE_OVERLAY_OPACITY.get()
|
||||
val overlayBackgroundOpacity: Int by lazy {
|
||||
var opacity = Settings.SWIPE_OVERLAY_OPACITY.get()
|
||||
|
||||
if (opacity < 0 || opacity > 100) {
|
||||
Utils.showToastLong(str("revanced_swipe_overlay_background_opacity_invalid_toast"))
|
||||
opacity = Settings.SWIPE_OVERLAY_OPACITY.resetToDefault()
|
||||
}
|
||||
|
||||
opacity = opacity * 255 / 100
|
||||
return Color.argb(opacity, 0, 0, 0)
|
||||
if (opacity < 0 || opacity > 100) {
|
||||
Utils.showToastLong(str("revanced_swipe_overlay_background_opacity_invalid_toast"))
|
||||
opacity = Settings.SWIPE_OVERLAY_OPACITY.resetToDefault()
|
||||
}
|
||||
|
||||
opacity = opacity * 255 / 100
|
||||
Color.argb(opacity, 0, 0, 0)
|
||||
}
|
||||
|
||||
/**
|
||||
* The color of the progress bar in the overlay.
|
||||
* The color of the progress bar in the overlay for brightness.
|
||||
* Resets to default and shows a toast if the color string is invalid or empty.
|
||||
*/
|
||||
val overlayProgressColor: Int
|
||||
get() {
|
||||
try {
|
||||
@SuppressLint("UseKtx")
|
||||
val color = Color.parseColor(Settings.SWIPE_OVERLAY_PROGRESS_COLOR.get())
|
||||
return (0xBF000000.toInt() or (color and 0xFFFFFF))
|
||||
} catch (ex: IllegalArgumentException) {
|
||||
Logger.printDebug({ "Could not parse color" }, ex)
|
||||
Utils.showToastLong(str("revanced_swipe_overlay_progress_color_invalid_toast"))
|
||||
Settings.SWIPE_OVERLAY_PROGRESS_COLOR.resetToDefault()
|
||||
return overlayProgressColor // Recursively return.
|
||||
}
|
||||
val overlayBrightnessProgressColor: Int by lazy {
|
||||
// Use lazy to avoid repeat parsing. Changing color requires app restart.
|
||||
getSettingColor(Settings.SWIPE_OVERLAY_BRIGHTNESS_COLOR)
|
||||
}
|
||||
|
||||
/**
|
||||
* The color of the progress bar in the overlay for volume.
|
||||
* Resets to default and shows a toast if the color string is invalid or empty.
|
||||
*/
|
||||
val overlayVolumeProgressColor: Int by lazy {
|
||||
getSettingColor(Settings.SWIPE_OVERLAY_VOLUME_COLOR)
|
||||
}
|
||||
|
||||
private fun getSettingColor(setting: StringSetting): Int {
|
||||
try {
|
||||
//noinspection UseKtx
|
||||
val color = Color.parseColor(setting.get())
|
||||
return (0xBF000000.toInt() or (color and 0x00FFFFFF))
|
||||
} catch (ex: IllegalArgumentException) {
|
||||
// This code should never be reached.
|
||||
// Color picker rejects and will not save bad colors to a setting.
|
||||
// If a user imports bad data, the color picker preference resets the
|
||||
// bad color before this method can be called.
|
||||
Logger.printDebug({ "Could not parse color: $setting" }, ex)
|
||||
Utils.showToastLong(str("revanced_settings_color_invalid"))
|
||||
setting.resetToDefault()
|
||||
return getSettingColor(setting) // Recursively return.
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The background color used for the filled portion of the progress bar in the overlay.
|
||||
*/
|
||||
val overlayFillBackgroundPaint: Int
|
||||
get() = 0x80D3D3D3.toInt()
|
||||
val overlayFillBackgroundPaint = 0x80D3D3D3.toInt()
|
||||
|
||||
/**
|
||||
* The color used for text and icons in the overlay.
|
||||
*/
|
||||
val overlayTextColor: Int
|
||||
get() = Color.WHITE
|
||||
val overlayTextColor = Color.WHITE
|
||||
|
||||
/**
|
||||
* The text size in the overlay, in density-independent pixels (dp).
|
||||
* Must be between 1 and 30 dp; resets to default and shows a toast if invalid.
|
||||
*/
|
||||
val overlayTextSize: Int
|
||||
get() {
|
||||
val size = Settings.SWIPE_OVERLAY_TEXT_SIZE.get()
|
||||
if (size < 1 || size > 30) {
|
||||
Utils.showToastLong(str("revanced_swipe_text_overlay_size_invalid_toast"))
|
||||
return Settings.SWIPE_OVERLAY_TEXT_SIZE.resetToDefault()
|
||||
}
|
||||
return size
|
||||
val overlayTextSize: Int by lazy {
|
||||
val size = Settings.SWIPE_OVERLAY_TEXT_SIZE.get()
|
||||
if (size < 1 || size > 30) {
|
||||
Utils.showToastLong(str("revanced_swipe_text_overlay_size_invalid_toast"))
|
||||
return@lazy Settings.SWIPE_OVERLAY_TEXT_SIZE.resetToDefault()
|
||||
}
|
||||
size
|
||||
}
|
||||
|
||||
/**
|
||||
* Defines the style of the swipe controls overlay, determining its layout and appearance.
|
||||
@@ -199,28 +206,25 @@ class SwipeControlsConfigurationProvider {
|
||||
/**
|
||||
* A minimal vertical progress bar.
|
||||
*/
|
||||
VERTICAL_MINIMAL(isMinimal = true, isVertical = true)
|
||||
VERTICAL_MINIMAL(isMinimal = true, isVertical = true)
|
||||
}
|
||||
|
||||
/**
|
||||
* The current style of the overlay, determining its layout and appearance.
|
||||
*/
|
||||
val overlayStyle: SwipeOverlayStyle
|
||||
get() = Settings.SWIPE_OVERLAY_STYLE.get()
|
||||
val overlayStyle = Settings.SWIPE_OVERLAY_STYLE.get()
|
||||
//endregion
|
||||
|
||||
//region behaviour
|
||||
/**
|
||||
* Indicates whether the brightness level should be saved and restored when entering or exiting fullscreen mode.
|
||||
*/
|
||||
val shouldSaveAndRestoreBrightness: Boolean
|
||||
get() = Settings.SWIPE_SAVE_AND_RESTORE_BRIGHTNESS.get()
|
||||
val shouldSaveAndRestoreBrightness = Settings.SWIPE_SAVE_AND_RESTORE_BRIGHTNESS.get()
|
||||
|
||||
/**
|
||||
* Indicates whether auto-brightness should be enabled when the brightness gesture reaches its lowest value.
|
||||
*/
|
||||
val shouldLowestValueEnableAutoBrightness: Boolean
|
||||
get() = Settings.SWIPE_LOWEST_VALUE_ENABLE_AUTO_BRIGHTNESS.get()
|
||||
val shouldLowestValueEnableAutoBrightness = Settings.SWIPE_LOWEST_VALUE_ENABLE_AUTO_BRIGHTNESS.get()
|
||||
|
||||
/**
|
||||
* The saved brightness value for the swipe gesture, used to restore brightness in fullscreen mode.
|
||||
@@ -229,4 +233,4 @@ class SwipeControlsConfigurationProvider {
|
||||
get() = Settings.SWIPE_BRIGHTNESS_VALUE.get()
|
||||
set(value) = Settings.SWIPE_BRIGHTNESS_VALUE.save(value)
|
||||
//endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ class SwipeControlsOverlayLayout(
|
||||
|
||||
constructor(context: Context) : this(context, SwipeControlsConfigurationProvider())
|
||||
|
||||
// Drawable icons for brightness and volume
|
||||
// Drawable icons for brightness and volume.
|
||||
private val autoBrightnessIcon: Drawable = getDrawable("revanced_ic_sc_brightness_auto")
|
||||
private val lowBrightnessIcon: Drawable = getDrawable("revanced_ic_sc_brightness_low")
|
||||
private val mediumBrightnessIcon: Drawable = getDrawable("revanced_ic_sc_brightness_medium")
|
||||
@@ -50,7 +50,7 @@ class SwipeControlsOverlayLayout(
|
||||
private val normalVolumeIcon: Drawable = getDrawable("revanced_ic_sc_volume_normal")
|
||||
private val fullVolumeIcon: Drawable = getDrawable("revanced_ic_sc_volume_high")
|
||||
|
||||
// Function to retrieve drawable resources by name
|
||||
// Function to retrieve drawable resources by name.
|
||||
private fun getDrawable(name: String): Drawable {
|
||||
val drawable = resources.getDrawable(
|
||||
Utils.getResourceIdentifier(context, name, "drawable"),
|
||||
@@ -60,19 +60,19 @@ class SwipeControlsOverlayLayout(
|
||||
return drawable
|
||||
}
|
||||
|
||||
// Initialize progress bars
|
||||
// Initialize progress bars.
|
||||
private val circularProgressView: CircularProgressView
|
||||
private val horizontalProgressView: HorizontalProgressView
|
||||
private val verticalBrightnessProgressView: VerticalProgressView
|
||||
private val verticalVolumeProgressView: VerticalProgressView
|
||||
|
||||
init {
|
||||
// Initialize circular progress bar
|
||||
// Initialize circular progress bar.
|
||||
circularProgressView = CircularProgressView(
|
||||
context,
|
||||
config.overlayBackgroundOpacity,
|
||||
config.overlayStyle.isMinimal,
|
||||
config.overlayProgressColor,
|
||||
config.overlayBrightnessProgressColor, // Placeholder, updated in showFeedbackView.
|
||||
config.overlayFillBackgroundPaint,
|
||||
config.overlayTextColor,
|
||||
config.overlayTextSize
|
||||
@@ -80,18 +80,18 @@ class SwipeControlsOverlayLayout(
|
||||
layoutParams = LayoutParams(100f.toDisplayPixels().toInt(), 100f.toDisplayPixels().toInt()).apply {
|
||||
addRule(CENTER_IN_PARENT, TRUE)
|
||||
}
|
||||
visibility = GONE // Initially hidden
|
||||
visibility = GONE // Initially hidden.
|
||||
}
|
||||
addView(circularProgressView)
|
||||
|
||||
// Initialize horizontal progress bar
|
||||
// Initialize horizontal progress bar.
|
||||
val screenWidth = resources.displayMetrics.widthPixels
|
||||
val layoutWidth = (screenWidth * 4 / 5).toInt() // Cap at ~360dp
|
||||
val layoutWidth = (screenWidth * 4 / 5).toInt() // Cap at ~360dp.
|
||||
horizontalProgressView = HorizontalProgressView(
|
||||
context,
|
||||
config.overlayBackgroundOpacity,
|
||||
config.overlayStyle.isMinimal,
|
||||
config.overlayProgressColor,
|
||||
config.overlayBrightnessProgressColor, // Placeholder, updated in showFeedbackView.
|
||||
config.overlayFillBackgroundPaint,
|
||||
config.overlayTextColor,
|
||||
config.overlayTextSize
|
||||
@@ -104,16 +104,16 @@ class SwipeControlsOverlayLayout(
|
||||
topMargin = 20f.toDisplayPixels().toInt()
|
||||
}
|
||||
}
|
||||
visibility = GONE // Initially hidden
|
||||
visibility = GONE // Initially hidden.
|
||||
}
|
||||
addView(horizontalProgressView)
|
||||
|
||||
// Initialize vertical progress bar for brightness (right side)
|
||||
// Initialize vertical progress bar for brightness (right side).
|
||||
verticalBrightnessProgressView = VerticalProgressView(
|
||||
context,
|
||||
config.overlayBackgroundOpacity,
|
||||
config.overlayStyle.isMinimal,
|
||||
config.overlayProgressColor,
|
||||
config.overlayBrightnessProgressColor,
|
||||
config.overlayFillBackgroundPaint,
|
||||
config.overlayTextColor,
|
||||
config.overlayTextSize
|
||||
@@ -123,16 +123,16 @@ class SwipeControlsOverlayLayout(
|
||||
rightMargin = 40f.toDisplayPixels().toInt()
|
||||
addRule(CENTER_VERTICAL)
|
||||
}
|
||||
visibility = GONE // Initially hidden
|
||||
visibility = GONE // Initially hidden.
|
||||
}
|
||||
addView(verticalBrightnessProgressView)
|
||||
|
||||
// Initialize vertical progress bar for volume (left side)
|
||||
// Initialize vertical progress bar for volume (left side).
|
||||
verticalVolumeProgressView = VerticalProgressView(
|
||||
context,
|
||||
config.overlayBackgroundOpacity,
|
||||
config.overlayStyle.isMinimal,
|
||||
config.overlayProgressColor,
|
||||
config.overlayVolumeProgressColor,
|
||||
config.overlayFillBackgroundPaint,
|
||||
config.overlayTextColor,
|
||||
config.overlayTextSize
|
||||
@@ -142,12 +142,12 @@ class SwipeControlsOverlayLayout(
|
||||
leftMargin = 40f.toDisplayPixels().toInt()
|
||||
addRule(CENTER_VERTICAL)
|
||||
}
|
||||
visibility = GONE // Initially hidden
|
||||
visibility = GONE // Initially hidden.
|
||||
}
|
||||
addView(verticalVolumeProgressView)
|
||||
}
|
||||
|
||||
// Handler and callback for hiding progress bars
|
||||
// Handler and callback for hiding progress bars.
|
||||
private val feedbackHideHandler = Handler(Looper.getMainLooper())
|
||||
private val feedbackHideCallback = Runnable {
|
||||
circularProgressView.visibility = GONE
|
||||
@@ -165,29 +165,42 @@ class SwipeControlsOverlayLayout(
|
||||
|
||||
val viewToShow = when {
|
||||
config.overlayStyle.isCircular -> circularProgressView
|
||||
config.overlayStyle.isVertical -> if (isBrightness) verticalBrightnessProgressView else verticalVolumeProgressView
|
||||
config.overlayStyle.isVertical ->
|
||||
if (isBrightness)
|
||||
verticalBrightnessProgressView
|
||||
else
|
||||
verticalVolumeProgressView
|
||||
else -> horizontalProgressView
|
||||
}
|
||||
viewToShow.apply {
|
||||
// Set the appropriate progress color.
|
||||
if (this is CircularProgressView || this is HorizontalProgressView) {
|
||||
setProgressColor(
|
||||
if (isBrightness)
|
||||
config.overlayBrightnessProgressColor
|
||||
else
|
||||
config.overlayVolumeProgressColor
|
||||
)
|
||||
}
|
||||
setProgress(progress, max, value, isBrightness)
|
||||
this.icon = icon
|
||||
visibility = VISIBLE
|
||||
}
|
||||
}
|
||||
|
||||
// Handle volume change
|
||||
// Handle volume change.
|
||||
override fun onVolumeChanged(newVolume: Int, maximumVolume: Int) {
|
||||
val volumePercentage = (newVolume.toFloat() / maximumVolume) * 100
|
||||
val icon = when {
|
||||
newVolume == 0 -> mutedVolumeIcon
|
||||
volumePercentage < 33 -> lowVolumeIcon
|
||||
volumePercentage < 66 -> normalVolumeIcon
|
||||
volumePercentage < 25 -> lowVolumeIcon
|
||||
volumePercentage < 50 -> normalVolumeIcon
|
||||
else -> fullVolumeIcon
|
||||
}
|
||||
showFeedbackView("$newVolume", newVolume, maximumVolume, icon, isBrightness = false)
|
||||
}
|
||||
|
||||
// Handle brightness change
|
||||
// Handle brightness change.
|
||||
override fun onBrightnessChanged(brightness: Double) {
|
||||
if (config.shouldLowestValueEnableAutoBrightness && brightness <= 0) {
|
||||
val displayText = if (config.overlayStyle.isVertical) "А"
|
||||
@@ -195,18 +208,19 @@ class SwipeControlsOverlayLayout(
|
||||
showFeedbackView(displayText, 0, 100, autoBrightnessIcon, isBrightness = true)
|
||||
} else {
|
||||
val brightnessValue = round(brightness).toInt()
|
||||
val clampedProgress = max(0, brightnessValue)
|
||||
val icon = when {
|
||||
brightnessValue < 25 -> lowBrightnessIcon
|
||||
brightnessValue < 50 -> mediumBrightnessIcon
|
||||
brightnessValue < 75 -> highBrightnessIcon
|
||||
clampedProgress < 25 -> lowBrightnessIcon
|
||||
clampedProgress < 50 -> mediumBrightnessIcon
|
||||
clampedProgress < 75 -> highBrightnessIcon
|
||||
else -> fullBrightnessIcon
|
||||
}
|
||||
val displayText = if (config.overlayStyle.isVertical) "$brightnessValue" else "$brightnessValue%"
|
||||
showFeedbackView(displayText, brightnessValue, 100, icon, isBrightness = true)
|
||||
val displayText = if (config.overlayStyle.isVertical) "$clampedProgress" else "$clampedProgress%"
|
||||
showFeedbackView(displayText, clampedProgress, 100, icon, isBrightness = true)
|
||||
}
|
||||
}
|
||||
|
||||
// Begin swipe session
|
||||
// Begin swipe session.
|
||||
override fun onEnterSwipeSession() {
|
||||
if (config.shouldEnableHapticFeedback) {
|
||||
@Suppress("DEPRECATION")
|
||||
@@ -233,25 +247,41 @@ abstract class AbstractProgressView(
|
||||
defStyleAttr: Int = 0
|
||||
) : View(context, attrs, defStyleAttr) {
|
||||
|
||||
// Combined paint creation function for both fill and stroke styles
|
||||
private fun createPaint(color: Int, style: Paint.Style = Paint.Style.FILL, strokeCap: Paint.Cap = Paint.Cap.BUTT, strokeWidth: Float = 0f) = Paint(Paint.ANTI_ALIAS_FLAG).apply {
|
||||
// Combined paint creation function for both fill and stroke styles.
|
||||
private fun createPaint(
|
||||
color: Int,
|
||||
style: Paint.Style = Paint.Style.FILL,
|
||||
strokeCap: Paint.Cap = Paint.Cap.BUTT,
|
||||
strokeWidth: Float = 0f
|
||||
) = Paint(Paint.ANTI_ALIAS_FLAG).apply {
|
||||
this.style = style
|
||||
this.color = color
|
||||
this.strokeCap = strokeCap
|
||||
this.strokeWidth = strokeWidth
|
||||
}
|
||||
|
||||
// Initialize paints
|
||||
val backgroundPaint = createPaint(overlayBackgroundOpacity, style = Paint.Style.FILL)
|
||||
val progressPaint = createPaint(overlayProgressColor, style = Paint.Style.STROKE, strokeCap = Paint.Cap.ROUND, strokeWidth = 6f.toDisplayPixels())
|
||||
val fillBackgroundPaint = createPaint(overlayFillBackgroundPaint, style = Paint.Style.FILL)
|
||||
val textPaint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
|
||||
color = overlayTextColor
|
||||
// Initialize paints.
|
||||
val backgroundPaint = createPaint(
|
||||
overlayBackgroundOpacity,
|
||||
style = Paint.Style.FILL
|
||||
)
|
||||
val progressPaint = createPaint(
|
||||
overlayProgressColor,
|
||||
style = Paint.Style.STROKE,
|
||||
strokeCap = Paint.Cap.ROUND,
|
||||
strokeWidth = 6f.toDisplayPixels()
|
||||
)
|
||||
val fillBackgroundPaint = createPaint(
|
||||
overlayFillBackgroundPaint,
|
||||
style = Paint.Style.FILL
|
||||
)
|
||||
val textPaint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
|
||||
color = overlayTextColor
|
||||
textAlign = Paint.Align.CENTER
|
||||
textSize = overlayTextSize.toFloat().toDisplayPixels()
|
||||
textSize = overlayTextSize.toFloat().toDisplayPixels()
|
||||
}
|
||||
|
||||
// Rect for text measurement
|
||||
// Rect for text measurement.
|
||||
protected val textBounds = Rect()
|
||||
|
||||
protected var progress = 0
|
||||
@@ -268,13 +298,18 @@ abstract class AbstractProgressView(
|
||||
invalidate()
|
||||
}
|
||||
|
||||
fun setProgressColor(color: Int) {
|
||||
progressPaint.color = color
|
||||
invalidate()
|
||||
}
|
||||
|
||||
protected fun measureTextWidth(text: String, paint: Paint): Int {
|
||||
paint.getTextBounds(text, 0, text.length, textBounds)
|
||||
return textBounds.width()
|
||||
}
|
||||
|
||||
override fun onDraw(canvas: Canvas) {
|
||||
// Base class implementation can be empty
|
||||
// Base class implementation can be empty.
|
||||
}
|
||||
}
|
||||
|
||||
@@ -393,8 +428,8 @@ class HorizontalProgressView(
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate required width based on content
|
||||
* @return Required width to display all elements
|
||||
* Calculate required width based on content.
|
||||
* @return Required width to display all elements.
|
||||
*/
|
||||
private fun calculateRequiredWidth(): Float {
|
||||
textWidth = measureTextWidth(displayText, textPaint).toFloat()
|
||||
@@ -537,8 +572,8 @@ class VerticalProgressView(
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate required height based on content
|
||||
* @return Required height to display all elements
|
||||
* Calculate required height based on content.
|
||||
* @return Required height to display all elements.
|
||||
*/
|
||||
private fun calculateRequiredHeight(): Float {
|
||||
return if (!isMinimalStyle) {
|
||||
@@ -633,4 +668,4 @@ class VerticalProgressView(
|
||||
super.setProgress(value, max, text, isBrightnessMode)
|
||||
requestLayout()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,9 +5,13 @@ import android.view.View;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
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.settings.Settings;
|
||||
|
||||
import static app.revanced.extension.shared.StringRef.str;
|
||||
import static app.revanced.extension.shared.Utils.showToastShort;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class PlaybackSpeedDialogButton {
|
||||
@Nullable
|
||||
@@ -23,8 +27,27 @@ public class PlaybackSpeedDialogButton {
|
||||
"revanced_playback_speed_dialog_button",
|
||||
"revanced_playback_speed_dialog_button_placeholder",
|
||||
Settings.PLAYBACK_SPEED_DIALOG_BUTTON::get,
|
||||
view -> CustomPlaybackSpeedPatch.showOldPlaybackSpeedMenu(),
|
||||
null
|
||||
view -> {
|
||||
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) {
|
||||
Logger.printException(() -> "initializeButton failure", ex);
|
||||
|
||||
@@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M
|
||||
org.gradle.parallel = true
|
||||
android.useAndroidX = true
|
||||
kotlin.code.style = official
|
||||
version = 5.25.0-dev.11
|
||||
version = 5.26.0-dev.6
|
||||
|
||||
58
package-lock.json
generated
58
package-lock.json
generated
@@ -9,7 +9,7 @@
|
||||
"@semantic-release/changelog": "^6.0.3",
|
||||
"@semantic-release/git": "^10.0.1",
|
||||
"gradle-semantic-release-plugin": "^1.10.1",
|
||||
"semantic-release": "^24.2.1"
|
||||
"semantic-release": "^24.2.5"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/code-frame": {
|
||||
@@ -1964,9 +1964,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/chalk": {
|
||||
"version": "5.3.0",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz",
|
||||
"integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
|
||||
"version": "5.4.1",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz",
|
||||
"integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
@@ -3460,9 +3460,9 @@
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/marked": {
|
||||
"version": "12.0.2",
|
||||
"resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz",
|
||||
"integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==",
|
||||
"version": "15.0.12",
|
||||
"resolved": "https://registry.npmjs.org/marked/-/marked-15.0.12.tgz",
|
||||
"integrity": "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"bin": {
|
||||
@@ -3473,24 +3473,38 @@
|
||||
}
|
||||
},
|
||||
"node_modules/marked-terminal": {
|
||||
"version": "7.1.0",
|
||||
"resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-7.1.0.tgz",
|
||||
"integrity": "sha512-+pvwa14KZL74MVXjYdPR3nSInhGhNvPce/3mqLVZT2oUvt654sL1XImFuLZ1pkA866IYZ3ikDTOFUIC7XzpZZg==",
|
||||
"version": "7.3.0",
|
||||
"resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-7.3.0.tgz",
|
||||
"integrity": "sha512-t4rBvPsHc57uE/2nJOLmMbZCQ4tgAccAED3ngXQqW6g+TxA488JzJ+FK3lQkzBQOI1mRV/r/Kq+1ZlJ4D0owQw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"ansi-escapes": "^7.0.0",
|
||||
"chalk": "^5.3.0",
|
||||
"ansi-regex": "^6.1.0",
|
||||
"chalk": "^5.4.1",
|
||||
"cli-highlight": "^2.1.11",
|
||||
"cli-table3": "^0.6.5",
|
||||
"node-emoji": "^2.1.3",
|
||||
"supports-hyperlinks": "^3.0.0"
|
||||
"node-emoji": "^2.2.0",
|
||||
"supports-hyperlinks": "^3.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16.0.0"
|
||||
},
|
||||
"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": {
|
||||
@@ -3607,9 +3621,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/node-emoji": {
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.3.tgz",
|
||||
"integrity": "sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==",
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.2.0.tgz",
|
||||
"integrity": "sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -6760,9 +6774,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/semantic-release": {
|
||||
"version": "24.2.1",
|
||||
"resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-24.2.1.tgz",
|
||||
"integrity": "sha512-z0/3cutKNkLQ4Oy0HTi3lubnjTsdjjgOqmxdPjeYWe6lhFqUPfwslZxRHv3HDZlN4MhnZitb9SLihDkZNxOXfQ==",
|
||||
"version": "24.2.5",
|
||||
"resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-24.2.5.tgz",
|
||||
"integrity": "sha512-9xV49HNY8C0/WmPWxTlaNleiXhWb//qfMzG2c5X8/k7tuWcu8RssbuS+sujb/h7PiWSXv53mrQvV9hrO9b7vuQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -6784,8 +6798,8 @@
|
||||
"hosted-git-info": "^8.0.0",
|
||||
"import-from-esm": "^2.0.0",
|
||||
"lodash-es": "^4.17.21",
|
||||
"marked": "^12.0.0",
|
||||
"marked-terminal": "^7.0.0",
|
||||
"marked": "^15.0.0",
|
||||
"marked-terminal": "^7.3.0",
|
||||
"micromatch": "^4.0.2",
|
||||
"p-each-series": "^3.0.0",
|
||||
"p-reduce": "^3.0.0",
|
||||
|
||||
@@ -4,6 +4,6 @@
|
||||
"@semantic-release/changelog": "^6.0.3",
|
||||
"@semantic-release/git": "^10.0.1",
|
||||
"gradle-semantic-release-plugin": "^1.10.1",
|
||||
"semantic-release": "^24.2.1"
|
||||
"semantic-release": "^24.2.5"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -296,6 +296,10 @@ public final class app/revanced/patches/messenger/navbar/RemoveMetaAITabPatchKt
|
||||
public static final fun getRemoveMetaAITabPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/meta/ads/HideAdsPatchKt {
|
||||
public static final fun getHideAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/mifitness/misc/locale/ForceEnglishLocalePatchKt {
|
||||
public static final fun getForceEnglishLocalePatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
@@ -440,6 +444,14 @@ public final class app/revanced/patches/primevideo/misc/extension/ExtensionPatch
|
||||
public static final fun getSharedExtensionPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/primevideo/misc/permissions/RenamePermissionsPatchKt {
|
||||
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 static final fun getRemoveSentFromSignaturePatch ()Lapp/revanced/patcher/patch/ResourcePatch;
|
||||
}
|
||||
@@ -563,6 +575,10 @@ public final class app/revanced/patches/reddit/customclients/sync/syncforreddit/
|
||||
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 static final fun getUseUserEndpointPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
@@ -581,6 +597,7 @@ public final class app/revanced/patches/reddit/layout/disablescreenshotpopup/Dis
|
||||
|
||||
public final class app/revanced/patches/reddit/layout/premiumicon/UnlockPremiumIconPatchKt {
|
||||
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 {
|
||||
@@ -860,6 +877,10 @@ public final class app/revanced/patches/soundcloud/offlinesync/EnableOfflineSync
|
||||
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 static final fun getCustomThemePatch ()Lapp/revanced/patcher/patch/ResourcePatch;
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ import app.revanced.patcher.patch.stringOption
|
||||
@Suppress("unused")
|
||||
val spoofBuildInfoPatch = bytecodePatch(
|
||||
name = "Spoof build info",
|
||||
description = "Spoof the information about the current build.",
|
||||
description = "Spoofs the information about the current build.",
|
||||
use = false,
|
||||
) {
|
||||
val board by stringOption(
|
||||
@@ -141,14 +141,14 @@ val spoofBuildInfoPatch = bytecodePatch(
|
||||
val socManufacturer by stringOption(
|
||||
key = "soc-manufacturer",
|
||||
default = null,
|
||||
title = "SOC Manufacturer",
|
||||
title = "SOC manufacturer",
|
||||
description = "The manufacturer of the device's primary system-on-chip.",
|
||||
)
|
||||
|
||||
val socModel by stringOption(
|
||||
key = "soc-model",
|
||||
default = null,
|
||||
title = "SOC Model",
|
||||
title = "SOC model",
|
||||
description = "The model name of the device's primary system-on-chip.",
|
||||
)
|
||||
|
||||
|
||||
@@ -36,12 +36,12 @@ val spoofSimCountryPatch = bytecodePatch(
|
||||
|
||||
val networkCountryIso by isoCountryPatchOption(
|
||||
"networkCountryIso",
|
||||
"Network ISO Country Code",
|
||||
"Network ISO country code",
|
||||
)
|
||||
|
||||
val simCountryIso by isoCountryPatchOption(
|
||||
"simCountryIso",
|
||||
"Sim ISO Country Code",
|
||||
"SIM ISO country code",
|
||||
)
|
||||
|
||||
dependsOn(
|
||||
|
||||
@@ -1,23 +1,9 @@
|
||||
package app.revanced.patches.instagram.ads
|
||||
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
|
||||
@Deprecated("Patch was moved to different package: app.revanced.patches.meta.ads.hideAdsPatch")
|
||||
@Suppress("unused")
|
||||
val hideAdsPatch = bytecodePatch(
|
||||
name = "Hide ads",
|
||||
description = "Hides ads in stories, discover, profile, etc. " +
|
||||
"An ad can still appear once when refreshing the home feed.",
|
||||
) {
|
||||
compatibleWith("com.instagram.android")
|
||||
|
||||
execute {
|
||||
adInjectorFingerprint.method.addInstructions(
|
||||
0,
|
||||
"""
|
||||
const/4 v0, 0x0
|
||||
return v0
|
||||
""",
|
||||
)
|
||||
}
|
||||
val hideAdsPatch = bytecodePatch {
|
||||
dependsOn(app.revanced.patches.meta.ads.hideAdsPatch)
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ import app.revanced.patcher.patch.bytecodePatch
|
||||
|
||||
@Suppress("unused")
|
||||
val unlockPremiumPatch = bytecodePatch(
|
||||
name = "Unlock premium",
|
||||
name = "Unlock Premium",
|
||||
) {
|
||||
compatibleWith("com.adobe.lrmobile"("10.0.2"))
|
||||
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
package app.revanced.patches.instagram.ads
|
||||
|
||||
import app.revanced.patcher.fingerprint
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
|
||||
internal val adInjectorFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PRIVATE)
|
||||
returns("Z")
|
||||
parameters("L", "L")
|
||||
strings(
|
||||
"SponsoredContentController.insertItem",
|
||||
)
|
||||
}
|
||||
package app.revanced.patches.meta.ads
|
||||
|
||||
import app.revanced.patcher.fingerprint
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
|
||||
internal val adInjectorFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PRIVATE)
|
||||
returns("Z")
|
||||
parameters("L", "L")
|
||||
strings(
|
||||
"SponsoredContentController.insertItem",
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package app.revanced.patches.meta.ads
|
||||
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.util.returnEarly
|
||||
|
||||
@Suppress("unused")
|
||||
val hideAdsPatch = bytecodePatch(
|
||||
name = "Hide ads",
|
||||
) {
|
||||
/**
|
||||
* Patch is identical for both Instagram and Threads app.
|
||||
*/
|
||||
compatibleWith(
|
||||
"com.instagram.android",
|
||||
"com.instagram.barcelona",
|
||||
)
|
||||
|
||||
execute {
|
||||
adInjectorFingerprint.method.returnEarly(false)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package app.revanced.patches.primevideo.misc.permissions
|
||||
|
||||
import app.revanced.patcher.patch.PatchException
|
||||
import app.revanced.patcher.patch.resourcePatch
|
||||
import app.revanced.util.asSequence
|
||||
import app.revanced.util.getNode
|
||||
import org.w3c.dom.Element
|
||||
|
||||
@Suppress("unused")
|
||||
val renamePermissionsPatch = resourcePatch(
|
||||
name = "Rename shared permissions",
|
||||
description = "Rename certain permissions shared across Amazon apps. " +
|
||||
"Applying this patch can fix installation errors, but can also break features in certain apps.",
|
||||
use = false
|
||||
) {
|
||||
compatibleWith("com.amazon.avod.thirdpartyclient")
|
||||
|
||||
val permissionNames = setOf(
|
||||
"com.amazon.identity.permission.CAN_CALL_MAP_INFORMATION_PROVIDER",
|
||||
"com.amazon.identity.auth.device.perm.AUTH_SDK",
|
||||
"com.amazon.dcp.sso.permission.account.changed",
|
||||
"com.amazon.dcp.sso.permission.AmazonAccountPropertyService.property.changed",
|
||||
"com.amazon.identity.permission.CALL_AMAZON_DEVICE_INFORMATION_PROVIDER",
|
||||
"com.amazon.appmanager.preload.permission.READ_PRELOAD_DEVICE_INFO_PROVIDER"
|
||||
)
|
||||
|
||||
execute {
|
||||
document("AndroidManifest.xml").use { document ->
|
||||
val manifest = document.getNode("manifest") as Element
|
||||
|
||||
val permissions = manifest
|
||||
.getElementsByTagName("permission")
|
||||
.asSequence()
|
||||
.map { Pair(it as Element, it.getAttribute("android:name")) }
|
||||
.filter { (_, name) -> name in permissionNames }
|
||||
|
||||
if (permissions.none()) throw PatchException("Could not find any permissions to rename")
|
||||
|
||||
permissions.forEach { (element, name) ->
|
||||
element.setAttribute("android:name", "revanced.$name")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@Suppress("unused")
|
||||
val unlockPremiumIconPatch = bytecodePatch(
|
||||
name = "Unlock premium Reddit icons",
|
||||
description = "Unlocks the premium Reddit icons.",
|
||||
val unlockPremiumIconsPatch = bytecodePatch(
|
||||
name = "Unlock Premium icons",
|
||||
description = "Unlocks the Reddit Premium icons.",
|
||||
) {
|
||||
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")
|
||||
val disableLicenseCheckPatch = bytecodePatch(
|
||||
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
|
||||
) {
|
||||
|
||||
|
||||
@@ -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.getInstruction
|
||||
import app.revanced.patcher.fingerprint
|
||||
import app.revanced.patcher.patch.booleanOption
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.patcher.patch.resourcePatch
|
||||
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.shared.IS_SPOTIFY_LEGACY_APP_TARGET
|
||||
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.reference.FieldReference
|
||||
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||
import org.w3c.dom.Element
|
||||
|
||||
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 {
|
||||
dependsOn(sharedExtensionPatch)
|
||||
|
||||
@@ -71,60 +25,60 @@ private val customThemeBytecodePatch = bytecodePatch {
|
||||
return@execute
|
||||
}
|
||||
|
||||
fun MutableMethod.addColorChangeInstructions(literal: Long, colorString: String) {
|
||||
val index = indexOfFirstLiteralInstructionOrThrow(literal)
|
||||
val register = getInstruction<OneRegisterInstruction>(index).registerA
|
||||
val colorSpaceUtilsClassDef = colorSpaceUtilsClassFingerprint.originalClassDef
|
||||
|
||||
// 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(
|
||||
index + 1,
|
||||
invokeParseColorIndex + 2,
|
||||
"""
|
||||
const-string v$register, "$colorString"
|
||||
invoke-static { v$register }, $EXTENSION_CLASS_DESCRIPTOR->getThemeColor(Ljava/lang/String;)J
|
||||
move-result-wide v$register
|
||||
# Use invoke-static/range because the register number is too large.
|
||||
invoke-static/range { v$parsedColorRegister .. v$parsedColorRegister }, $replaceColorDescriptor
|
||||
move-result v$parsedColorRegister
|
||||
"""
|
||||
)
|
||||
}
|
||||
|
||||
val encoreColorsClassName = with(encoreThemeFingerprint.originalMethod) {
|
||||
// "Encore" colors are referenced right before the value of POSITIVE_INFINITY is returned.
|
||||
// Begin the instruction find using the index of where POSITIVE_INFINITY is set into the register.
|
||||
val positiveInfinityIndex = indexOfFirstLiteralInstructionOrThrow(
|
||||
Float.POSITIVE_INFINITY
|
||||
)
|
||||
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)
|
||||
// Lottie animated color parser.
|
||||
parseAnimatedColorFingerprint.method.apply {
|
||||
val invokeArgbIndex = indexOfFirstInstructionOrThrow {
|
||||
val reference = getReference<MethodReference>()
|
||||
reference?.definingClass == "Landroid/graphics/Color;"
|
||||
&& reference.name == "argb"
|
||||
}
|
||||
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)
|
||||
|
||||
val backgroundColor by spotifyBackgroundColor()
|
||||
val overridePlayerGradientColor by overridePlayerGradientColor()
|
||||
val backgroundColorSecondary by spotifyBackgroundColorSecondary()
|
||||
val accentColor by spotifyAccentColor()
|
||||
val accentColorPressed by spotifyAccentColorPressed()
|
||||
val backgroundColor by 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,
|
||||
)
|
||||
|
||||
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 {
|
||||
document("res/values/colors.xml").use { document ->
|
||||
@@ -161,34 +152,41 @@ val customThemePatch = resourcePatch(
|
||||
}
|
||||
|
||||
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.
|
||||
"dark_base_background_base",
|
||||
// Main background.
|
||||
"gray_7",
|
||||
// Left sidebar background in tablet mode.
|
||||
"gray_10",
|
||||
// "Add account", "Settings and privacy", "View Profile" left sidebar background.
|
||||
// "Add account", "Settings and privacy", "View Profile" left sidebar background color.
|
||||
"dark_base_background_elevated_base",
|
||||
// Song/player gradient start/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",
|
||||
// Misc.
|
||||
"image_placeholder_color",
|
||||
-> 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",
|
||||
// Playlist list background in home page.
|
||||
"opacity_white_10",
|
||||
// "About the artist" background in song player.
|
||||
"gray_15",
|
||||
// "What's New" pills background.
|
||||
"dark_base_background_tinted_highlight"
|
||||
-> backgroundColorSecondary
|
||||
|
||||
"dark_brightaccent_background_base", "dark_base_text_brightaccent", "green_light" -> accentColor
|
||||
"dark_brightaccent_background_press" -> accentColorPressed
|
||||
"dark_brightaccent_background_base",
|
||||
"dark_base_text_brightaccent",
|
||||
"green_light",
|
||||
"spotify_green_157"
|
||||
-> accentColor
|
||||
|
||||
"dark_brightaccent_background_press"
|
||||
-> accentColorPressed
|
||||
|
||||
else -> continue
|
||||
}
|
||||
}
|
||||
@@ -198,8 +196,8 @@ val customThemePatch = resourcePatch(
|
||||
document("res/drawable/start_screen_gradient.xml").use { document ->
|
||||
val gradientNode = document.getElementsByTagName("gradient").item(0) as Element
|
||||
|
||||
gradientNode.setAttribute("android:startColor", backgroundColor)
|
||||
gradientNode.setAttribute("android:endColor", backgroundColor)
|
||||
gradientNode.setAttribute("android:startColor", "@color/gray_7")
|
||||
gradientNode.setAttribute("android:endColor", "@color/gray_7")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,30 +4,25 @@ import app.revanced.patcher.fingerprint
|
||||
import app.revanced.util.containsLiteralInstruction
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
|
||||
internal val encoreThemeFingerprint = fingerprint {
|
||||
strings("Encore theme was not provided.") // Partial string match.
|
||||
custom { method, _ ->
|
||||
method.name == "invoke"
|
||||
}
|
||||
internal val colorSpaceUtilsClassFingerprint = fingerprint {
|
||||
strings("The specified color must be encoded in an RGB color space.") // Partial string match.
|
||||
}
|
||||
|
||||
internal const val PLAYLIST_BACKGROUND_COLOR_LITERAL = 0xFF121212
|
||||
internal const val SHARE_MENU_BACKGROUND_COLOR_LITERAL = 0xFF1F1F1F
|
||||
internal const val HOME_CATEGORY_PILL_COLOR_LITERAL = 0xFF333333
|
||||
internal const val SETTINGS_HEADER_COLOR_LITERAL = 0xFF282828
|
||||
|
||||
internal val homeCategoryPillColorsFingerprint = fingerprint{
|
||||
accessFlags(AccessFlags.STATIC, AccessFlags.CONSTRUCTOR)
|
||||
custom { method, _ ->
|
||||
method.containsLiteralInstruction(HOME_CATEGORY_PILL_COLOR_LITERAL) &&
|
||||
method.containsLiteralInstruction(0x33000000)
|
||||
}
|
||||
internal val convertArgbToRgbaFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC, AccessFlags.FINAL)
|
||||
returns("J")
|
||||
parameters("J")
|
||||
}
|
||||
|
||||
internal val settingsHeaderColorFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.STATIC, AccessFlags.CONSTRUCTOR)
|
||||
internal val parseLottieJsonFingerprint = fingerprint {
|
||||
strings("Unsupported matte type: ")
|
||||
}
|
||||
|
||||
internal val parseAnimatedColorFingerprint = fingerprint {
|
||||
parameters("L", "F")
|
||||
returns("Ljava/lang/Object;")
|
||||
custom { method, _ ->
|
||||
method.containsLiteralInstruction(SETTINGS_HEADER_COLOR_LITERAL) &&
|
||||
method.containsLiteralInstruction(0)
|
||||
method.containsLiteralInstruction(255.0) &&
|
||||
method.containsLiteralInstruction(1.0)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,15 +1,18 @@
|
||||
package app.revanced.patches.spotify.misc
|
||||
|
||||
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.indexOfFirstInstruction
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
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
|
||||
|
||||
internal val accountAttributeFingerprint = fingerprint {
|
||||
context(BytecodePatchContext)
|
||||
internal val accountAttributeFingerprint get() = fingerprint {
|
||||
custom { _, classDef ->
|
||||
classDef.type == if (IS_SPOTIFY_LEGACY_APP_TARGET) {
|
||||
"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;")
|
||||
custom { _, classDef ->
|
||||
classDef.type == if (IS_SPOTIFY_LEGACY_APP_TARGET) {
|
||||
@@ -34,9 +38,22 @@ internal val buildQueryParametersFingerprint = fingerprint {
|
||||
strings("trackRows", "device_type:tablet")
|
||||
}
|
||||
|
||||
internal val contextMenuExperimentsFingerprint = fingerprint {
|
||||
internal val contextMenuViewModelClassFingerprint = fingerprint {
|
||||
strings("ContextMenuViewModel(header=")
|
||||
}
|
||||
|
||||
internal val contextMenuViewModelAddItemFingerprint = fingerprint {
|
||||
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 {
|
||||
@@ -47,15 +64,15 @@ internal val contextFromJsonFingerprint = fingerprint {
|
||||
Opcode.MOVE_RESULT_OBJECT,
|
||||
Opcode.INVOKE_STATIC
|
||||
)
|
||||
custom { methodDef, classDef ->
|
||||
methodDef.name == "fromJson" &&
|
||||
custom { method, classDef ->
|
||||
method.name == "fromJson" &&
|
||||
classDef.endsWith("voiceassistants/playermodels/ContextJsonAdapter;")
|
||||
}
|
||||
}
|
||||
|
||||
internal val readPlayerOptionOverridesFingerprint = fingerprint {
|
||||
custom { methodDef, classDef ->
|
||||
methodDef.name == "readPlayerOptionOverrides" &&
|
||||
custom { method, classDef ->
|
||||
method.name == "readPlayerOptionOverrides" &&
|
||||
classDef.endsWith("voiceassistants/playermodels/PreparePlayOptionsJsonAdapter;")
|
||||
}
|
||||
}
|
||||
@@ -65,8 +82,15 @@ internal val protobufListsFingerprint = fingerprint {
|
||||
custom { method, _ -> method.name == "emptyProtobufList" }
|
||||
}
|
||||
|
||||
internal val protobufListRemoveFingerprint = fingerprint {
|
||||
custom { method, _ -> method.name == "remove" }
|
||||
internal val abstractProtobufListEnsureIsMutableFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||
parameters()
|
||||
returns("V")
|
||||
custom { method, _ ->
|
||||
method.indexOfFirstInstruction {
|
||||
getReference<TypeReference>()?.type == "Ljava/lang/UnsupportedOperationException;"
|
||||
} >= 0
|
||||
}
|
||||
}
|
||||
|
||||
internal val homeSectionFingerprint = fingerprint {
|
||||
@@ -84,7 +108,8 @@ internal val homeStructureGetSectionsFingerprint = fingerprint {
|
||||
internal fun reactivexFunctionApplyWithClassInitFingerprint(className: String) = fingerprint {
|
||||
returns("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
|
||||
} >= 0
|
||||
}
|
||||
|
||||
@@ -1,21 +1,5 @@
|
||||
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.spotify.shared.SPOTIFY_MAIN_ACTIVITY_LEGACY
|
||||
|
||||
/**
|
||||
* 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
|
||||
}
|
||||
}
|
||||
val sharedExtensionPatch = sharedExtensionPatch("spotify", mainActivityOnCreateHook)
|
||||
|
||||
@@ -1,41 +1,41 @@
|
||||
package app.revanced.patches.spotify.misc.privacy
|
||||
|
||||
import app.revanced.patcher.fingerprint
|
||||
import app.revanced.util.literal
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
|
||||
internal val shareCopyUrlFingerprint = fingerprint {
|
||||
returns("Ljava/lang/Object;")
|
||||
parameters("Ljava/lang/Object;")
|
||||
strings("clipboard", "Spotify Link")
|
||||
custom { method, _ ->
|
||||
method.name == "invokeSuspend"
|
||||
}
|
||||
}
|
||||
|
||||
internal val shareCopyUrlLegacyFingerprint = fingerprint {
|
||||
returns("Ljava/lang/Object;")
|
||||
parameters("Ljava/lang/Object;")
|
||||
strings("clipboard", "createNewSession failed")
|
||||
custom { method, _ ->
|
||||
method.name == "apply"
|
||||
}
|
||||
}
|
||||
|
||||
internal val formatAndroidShareSheetUrlFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC)
|
||||
returns("Ljava/lang/String;")
|
||||
parameters("L", "Ljava/lang/String;")
|
||||
literal {
|
||||
'\n'.code.toLong()
|
||||
}
|
||||
}
|
||||
|
||||
internal val formatAndroidShareSheetUrlLegacyFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC)
|
||||
returns("Ljava/lang/String;")
|
||||
parameters("Lcom/spotify/share/social/sharedata/ShareData;", "Ljava/lang/String;")
|
||||
literal {
|
||||
'\n'.code.toLong()
|
||||
}
|
||||
}
|
||||
package app.revanced.patches.spotify.misc.privacy
|
||||
|
||||
import app.revanced.patcher.fingerprint
|
||||
import app.revanced.util.literal
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
|
||||
internal val shareCopyUrlFingerprint = fingerprint {
|
||||
returns("Ljava/lang/Object;")
|
||||
parameters("Ljava/lang/Object;")
|
||||
strings("clipboard", "Spotify Link")
|
||||
custom { method, _ ->
|
||||
method.name == "invokeSuspend"
|
||||
}
|
||||
}
|
||||
|
||||
internal val shareCopyUrlLegacyFingerprint = fingerprint {
|
||||
returns("Ljava/lang/Object;")
|
||||
parameters("Ljava/lang/Object;")
|
||||
strings("clipboard", "createNewSession failed")
|
||||
custom { method, _ ->
|
||||
method.name == "apply"
|
||||
}
|
||||
}
|
||||
|
||||
internal val formatAndroidShareSheetUrlFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC)
|
||||
returns("Ljava/lang/String;")
|
||||
parameters("L", "Ljava/lang/String;")
|
||||
literal {
|
||||
'\n'.code.toLong()
|
||||
}
|
||||
}
|
||||
|
||||
internal val formatAndroidShareSheetUrlLegacyFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC)
|
||||
returns("Ljava/lang/String;")
|
||||
parameters("Lcom/spotify/share/social/sharedata/ShareData;", "Ljava/lang/String;")
|
||||
literal {
|
||||
'\n'.code.toLong()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,70 +1,70 @@
|
||||
package app.revanced.patches.spotify.misc.privacy
|
||||
|
||||
import app.revanced.patcher.Fingerprint
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||
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.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
|
||||
|
||||
private const val EXTENSION_CLASS_DESCRIPTOR =
|
||||
"Lapp/revanced/extension/spotify/misc/privacy/SanitizeSharingLinksPatch;"
|
||||
|
||||
@Suppress("unused")
|
||||
val sanitizeSharingLinksPatch = bytecodePatch(
|
||||
name = "Sanitize sharing links",
|
||||
description = "Removes the tracking query parameters from links before they are shared.",
|
||||
) {
|
||||
compatibleWith("com.spotify.music")
|
||||
|
||||
dependsOn(sharedExtensionPatch)
|
||||
|
||||
execute {
|
||||
val extensionMethodDescriptor = "$EXTENSION_CLASS_DESCRIPTOR->" +
|
||||
"sanitizeUrl(Ljava/lang/String;)Ljava/lang/String;"
|
||||
|
||||
val copyFingerprint = if (IS_SPOTIFY_LEGACY_APP_TARGET) {
|
||||
shareCopyUrlLegacyFingerprint
|
||||
} else {
|
||||
shareCopyUrlFingerprint
|
||||
}
|
||||
|
||||
copyFingerprint.method.apply {
|
||||
val newPlainTextInvokeIndex = indexOfFirstInstructionOrThrow {
|
||||
getReference<MethodReference>()?.name == "newPlainText"
|
||||
}
|
||||
val register = getInstruction<FiveRegisterInstruction>(newPlainTextInvokeIndex).registerD
|
||||
|
||||
addInstructions(
|
||||
newPlainTextInvokeIndex,
|
||||
"""
|
||||
invoke-static { v$register }, $extensionMethodDescriptor
|
||||
move-result-object v$register
|
||||
"""
|
||||
)
|
||||
}
|
||||
|
||||
// Android native share sheet is used for all other quick share types (X, WhatsApp, etc).
|
||||
val shareUrlParameter : String
|
||||
val shareSheetFingerprint : Fingerprint
|
||||
if (IS_SPOTIFY_LEGACY_APP_TARGET) {
|
||||
shareSheetFingerprint = formatAndroidShareSheetUrlLegacyFingerprint
|
||||
shareUrlParameter = "p2"
|
||||
} else {
|
||||
shareSheetFingerprint = formatAndroidShareSheetUrlFingerprint
|
||||
shareUrlParameter = "p1"
|
||||
}
|
||||
|
||||
shareSheetFingerprint.method.addInstructions(
|
||||
0,
|
||||
"""
|
||||
invoke-static { $shareUrlParameter }, $extensionMethodDescriptor
|
||||
move-result-object $shareUrlParameter
|
||||
"""
|
||||
)
|
||||
}
|
||||
}
|
||||
package app.revanced.patches.spotify.misc.privacy
|
||||
|
||||
import app.revanced.patcher.Fingerprint
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
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
|
||||
|
||||
private const val EXTENSION_CLASS_DESCRIPTOR =
|
||||
"Lapp/revanced/extension/spotify/misc/privacy/SanitizeSharingLinksPatch;"
|
||||
|
||||
@Suppress("unused")
|
||||
val sanitizeSharingLinksPatch = bytecodePatch(
|
||||
name = "Sanitize sharing links",
|
||||
description = "Removes the tracking query parameters from links before they are shared.",
|
||||
) {
|
||||
compatibleWith("com.spotify.music")
|
||||
|
||||
dependsOn(sharedExtensionPatch)
|
||||
|
||||
execute {
|
||||
val extensionMethodDescriptor = "$EXTENSION_CLASS_DESCRIPTOR->" +
|
||||
"sanitizeUrl(Ljava/lang/String;)Ljava/lang/String;"
|
||||
|
||||
val copyFingerprint = if (IS_SPOTIFY_LEGACY_APP_TARGET) {
|
||||
shareCopyUrlLegacyFingerprint
|
||||
} else {
|
||||
shareCopyUrlFingerprint
|
||||
}
|
||||
|
||||
copyFingerprint.method.apply {
|
||||
val newPlainTextInvokeIndex = indexOfFirstInstructionOrThrow {
|
||||
getReference<MethodReference>()?.name == "newPlainText"
|
||||
}
|
||||
val urlRegister = getInstruction<FiveRegisterInstruction>(newPlainTextInvokeIndex).registerD
|
||||
|
||||
addInstructions(
|
||||
newPlainTextInvokeIndex,
|
||||
"""
|
||||
invoke-static { v$urlRegister }, $extensionMethodDescriptor
|
||||
move-result-object v$urlRegister
|
||||
"""
|
||||
)
|
||||
}
|
||||
|
||||
// Android native share sheet is used for all other quick share types (X, WhatsApp, etc).
|
||||
val shareUrlParameter : String
|
||||
val shareSheetFingerprint : Fingerprint
|
||||
if (IS_SPOTIFY_LEGACY_APP_TARGET) {
|
||||
shareSheetFingerprint = formatAndroidShareSheetUrlLegacyFingerprint
|
||||
shareUrlParameter = "p2"
|
||||
} else {
|
||||
shareSheetFingerprint = formatAndroidShareSheetUrlFingerprint
|
||||
shareUrlParameter = "p1"
|
||||
}
|
||||
|
||||
shareSheetFingerprint.method.addInstructions(
|
||||
0,
|
||||
"""
|
||||
invoke-static { $shareUrlParameter }, $extensionMethodDescriptor
|
||||
move-result-object $shareUrlParameter
|
||||
"""
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
package app.revanced.patches.spotify.misc.widgets
|
||||
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.patches.spotify.shared.IS_SPOTIFY_LEGACY_APP_TARGET
|
||||
import app.revanced.util.returnEarly
|
||||
import java.util.logging.Logger
|
||||
|
||||
@Suppress("unused")
|
||||
val fixThirdPartyLaunchersWidgets = bytecodePatch(
|
||||
@@ -11,6 +13,14 @@ val fixThirdPartyLaunchersWidgets = bytecodePatch(
|
||||
compatibleWith("com.spotify.music")
|
||||
|
||||
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.
|
||||
// Override the method that checks for it to always return true, as this permission is not actually required
|
||||
// for the widgets to work.
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package app.revanced.patches.spotify.shared
|
||||
|
||||
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;"
|
||||
|
||||
@@ -15,3 +17,18 @@ internal val mainActivityOnCreateFingerprint = fingerprint {
|
||||
|| 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!!
|
||||
}
|
||||
|
||||
@@ -48,7 +48,10 @@ private val swipeControlsResourcePatch = resourcePatch {
|
||||
summaryKey = null,
|
||||
),
|
||||
TextPreference("revanced_swipe_overlay_background_opacity", inputType = InputType.NUMBER),
|
||||
TextPreference("revanced_swipe_overlay_progress_color",
|
||||
TextPreference("revanced_swipe_overlay_progress_brightness_color",
|
||||
tag = "app.revanced.extension.shared.settings.preference.ColorPickerPreference",
|
||||
inputType = InputType.TEXT_CAP_CHARACTERS),
|
||||
TextPreference("revanced_swipe_overlay_progress_volume_color",
|
||||
tag = "app.revanced.extension.shared.settings.preference.ColorPickerPreference",
|
||||
inputType = InputType.TEXT_CAP_CHARACTERS),
|
||||
TextPreference("revanced_swipe_text_overlay_size", inputType = InputType.NUMBER),
|
||||
|
||||
@@ -123,3 +123,13 @@ internal val playbackSpeedMenuSpeedChangedFingerprint = fingerprint {
|
||||
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.MutableMethod
|
||||
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.shared.newVideoQualityChangedFingerprint
|
||||
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.hookVideoId
|
||||
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.indexOfFirstInstructionOrThrow
|
||||
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.MethodReference
|
||||
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.util.MethodUtil
|
||||
|
||||
@@ -189,6 +193,72 @@ val videoInformationPatch = bytecodePatch(
|
||||
proxy(classes.first { it.type == setPlaybackSpeedMethodReference.definingClass })
|
||||
.mutableClass.methods.first { it.name == setPlaybackSpeedMethodReference.name }
|
||||
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.
|
||||
|
||||
@@ -1,19 +1,11 @@
|
||||
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.addInstructionsWithLabels
|
||||
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.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.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.SwitchPreference
|
||||
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.settings.settingsPatch
|
||||
import app.revanced.patches.youtube.video.speed.settingsMenuVideoSpeedGroup
|
||||
import app.revanced.util.*
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||
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.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 =
|
||||
"Lapp/revanced/extension/youtube/patches/components/PlaybackSpeedMenuFilterPatch;"
|
||||
@@ -64,8 +40,7 @@ internal val customPlaybackSpeedPatch = bytecodePatch(
|
||||
addResourcesPatch,
|
||||
lithoFilterPatch,
|
||||
versionCheckPatch,
|
||||
recyclerViewTreeHookPatch,
|
||||
customPlaybackSpeedResourcePatch
|
||||
recyclerViewTreeHookPatch
|
||||
)
|
||||
|
||||
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.
|
||||
speedLimiterFingerprint.method.apply {
|
||||
val limitMinIndex = indexOfFirstLiteralInstructionOrThrow(0.25f)
|
||||
@@ -135,47 +78,7 @@ internal val customPlaybackSpeedPatch = bytecodePatch(
|
||||
replaceInstruction(limitMaxIndex, "const/high16 v$limitMaxRegister, 8.0f")
|
||||
}
|
||||
|
||||
// Add a static INSTANCE field to the class.
|
||||
// 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.
|
||||
|
||||
// Close the unpatched playback dialog and show the modern custom dialog.
|
||||
addRecyclerViewTreeHook(EXTENSION_CLASS_DESCRIPTOR)
|
||||
|
||||
// Required to check if the playback speed menu is currently shown.
|
||||
|
||||
@@ -1,30 +1,9 @@
|
||||
package app.revanced.patches.youtube.video.speed.custom
|
||||
|
||||
import app.revanced.patcher.fingerprint
|
||||
import app.revanced.util.literal
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
|
||||
internal val 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 {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||
returns("V")
|
||||
|
||||
@@ -10,6 +10,7 @@ import app.revanced.patcher.extensions.InstructionExtensions.removeInstruction
|
||||
import app.revanced.patcher.patch.BytecodePatchContext
|
||||
import app.revanced.patcher.patch.PatchException
|
||||
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.smali.ExternalLabel
|
||||
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.WideLiteralInstruction
|
||||
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 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.
|
||||
*
|
||||
|
||||
@@ -199,6 +199,8 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
</patch>
|
||||
<patch id="misc.links.bypassURLRedirectsPatch">
|
||||
@@ -207,8 +209,6 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.privacy.removeTrackingQueryParameterPatch">
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
|
||||
</patch>
|
||||
|
||||
@@ -199,6 +199,8 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
</patch>
|
||||
<patch id="misc.links.bypassURLRedirectsPatch">
|
||||
@@ -207,8 +209,6 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.privacy.removeTrackingQueryParameterPatch">
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
|
||||
</patch>
|
||||
|
||||
@@ -117,6 +117,11 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_debug_protobuffer_title">سجل بروتوكول التخزين المؤقت</string>
|
||||
<string name="revanced_debug_protobuffer_summary_on">تتضمن سجلات التصحيح التخزين المؤقت</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_summary_on">تتضمن سجلات التصحيح سجل تتبع المكدس</string>
|
||||
<string name="revanced_debug_stacktrace_summary_off">لا تتضمن سجلات التصحيح سجل تتبع المكدس</string>
|
||||
@@ -126,6 +131,15 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"يؤدي إيقاف تشغيل ملاحظات الأخطاء إلى إخفاء كافة إشعارات أخطاء ReVanced.
|
||||
|
||||
لن يتم إعلامك بأي أخطاء غير متوقعة."</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 id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_hide_album_cards_title">إخفاء بطاقات الألبوم</string>
|
||||
@@ -477,9 +491,10 @@ Second \"item\" text"</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_invalid_toast">يجب أن يكون تعتيم التمرير السريع بين 0-100</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_title">لون شريط تقدم واجهة التمرير</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_summary">لون شريط التقدم لعناصر التحكم في مستوى الصوت والسطوع</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_invalid_toast">لون شريط التقدم غير صالح</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>
|
||||
@@ -1322,6 +1337,22 @@ Second \"item\" text"</string>
|
||||
<string name="microg_settings_title">إعدادات GmsCore</string>
|
||||
<string name="microg_settings_summary">إعدادات لـ GmsCore</string>
|
||||
</patch>
|
||||
<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_summary_on">تم تعطيل الاهتزاز عند التكبير</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_off">تم تمكين الاهتزاز عند التكبير</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
<string name="microg_offline_account_login_error">إذا قمت مؤخرًا بتغيير تفاصيل تسجيل الدخول إلى حسابك، فأزل تثبيت MicroG ثم أعد تثبيته.</string>
|
||||
</patch>
|
||||
@@ -1340,11 +1371,6 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_on">يتم إزالة معلمة استعلام التتبع من الروابط</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_off">لا يتم إزالة معلمة استعلام التتبع من الروابط</string>
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
<string name="revanced_disable_zoom_haptics_title">تعطيل الاهتزاز عند التكبير</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">تم تعطيل الاهتزاز</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">تم تمكين الاهتزاز</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">فرض لغة الصوت الأصلية</string>
|
||||
<string name="revanced_force_original_audio_summary_on">استخدام لغة الصوت الأصلية</string>
|
||||
@@ -1372,7 +1398,7 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||
<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>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
@@ -1384,6 +1410,7 @@ Second \"item\" text"</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_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_summary">سرعة التشغيل بين 0-8</string>
|
||||
</patch>
|
||||
|
||||
@@ -201,6 +201,8 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
</patch>
|
||||
<patch id="misc.links.bypassURLRedirectsPatch">
|
||||
@@ -209,8 +211,6 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.privacy.removeTrackingQueryParameterPatch">
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
|
||||
</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_confirm_user_dialog_title">Davam etmək istəyirsiniz?</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">Yenidən başlat</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_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_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_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>
|
||||
@@ -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.
|
||||
|
||||
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 id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_hide_album_cards_title">Albom kartlarını gizlət</string>
|
||||
@@ -475,9 +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_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_progress_color_title">Sürüşdürmə örtüyü irəliləyiş cizgisi rəngi</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_summary">Səs səviyyəsinə və parlaqlığa nəzarət üçün irəliləyiş cizgisi rəngi</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_invalid_toast">Yanlış irəliləyiş cizgisi rəngi</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_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>
|
||||
@@ -1319,6 +1336,22 @@ Bunu aktivləşdirmə daha yüksək video keyfiyyətləri əngəlin silə bilər
|
||||
<string name="microg_settings_title">GmsCore Tənzimləmələri</string>
|
||||
<string name="microg_settings_summary">GmsCore üçün Tənzimləmələr</string>
|
||||
</patch>
|
||||
<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_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 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>
|
||||
</patch>
|
||||
@@ -1337,11 +1370,6 @@ Bunu aktivləşdirmə daha yüksək video keyfiyyətləri əngəlin silə bilər
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_on">İzləmə sorğusu faktoru bağlantılardan silinir</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_off">İzləmə sorğusu faktoru bağlantılardan silinmir</string>
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
<string name="revanced_disable_zoom_haptics_title">Yaxınlaşdırma reaksiyasın qapat</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">Reaksiya qapalıdır</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">Reaksiya aktivdir</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">Orijinal səs dilini zorla</string>
|
||||
<string name="revanced_force_original_audio_summary_on">Orijinal səs dilini istifadə</string>
|
||||
@@ -1369,7 +1397,6 @@ Bunu aktivləşdirmə daha yüksək video keyfiyyətləri əngəlin silə bilər
|
||||
</patch>
|
||||
<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_summary_on">Düymə göstərilir</string>
|
||||
<string name="revanced_playback_speed_dialog_button_summary_off">Düymə göstərilmir</string>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
|
||||
@@ -117,6 +117,11 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_debug_protobuffer_title">Буфер пратаколу часопіса</string>
|
||||
<string name="revanced_debug_protobuffer_summary_on">Журналы адладкі ўключаюць пратабуфер</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_summary_on">Журналы адладкі ўключаюць трасіроўку стэка</string>
|
||||
<string name="revanced_debug_stacktrace_summary_off">Журналы адладкі не ўключаюць трасіроўку стэка</string>
|
||||
@@ -126,6 +131,15 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"Адключэнне паведамленняў пра памылкі схавае ўсе апавяшчэнні ReVanced пра памылкі.
|
||||
|
||||
Вы не будзеце атрымліваць апавяшчэнні пра нечаканыя падзеі."</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 id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_hide_album_cards_title">Схаваць карты альбома</string>
|
||||
@@ -477,9 +491,10 @@ Second \"item\" text"</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_invalid_toast">Непразрыстасць пракруткі павінна быць паміж 0-100</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_title">Колер слупка прагрэсу накладкі правядзення</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_summary">Колер слупка прагрэсу для рэгулявання гучнасці і яркасці</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_invalid_toast">Несапраўдны колер слупка прагрэсу</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>
|
||||
@@ -1323,6 +1338,22 @@ Second \"item\" text"</string>
|
||||
<string name="microg_settings_title">Налады GmsCore</string>
|
||||
<string name="microg_settings_summary">Налады для GmsCore</string>
|
||||
</patch>
|
||||
<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_summary_on">Тактыльны эфект маштабавання адключаны</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_off">Тактыльны эфект маштабавання ўключаны</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
<string name="microg_offline_account_login_error">Калі вы нядаўна змянілі даныя для ўваходу ў свой уліковы запіс, выдаліце і пераўсталюйце MicroG.</string>
|
||||
</patch>
|
||||
@@ -1341,11 +1372,6 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_on">Параметр запыту адсочвання выдалены са спасылак</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_off">Параметр адсочвання запыту не выдаляецца са спасылак</string>
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
<string name="revanced_disable_zoom_haptics_title">Адключыць тактыльны эфект маштабавання</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">Тактыльныя функцыі адключаны</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">Тактыльныя сігналы ўключаны</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">Вымушаная арыгінальная мова аўдыё</string>
|
||||
<string name="revanced_force_original_audio_summary_on">Выкарыстоўваць арыгінальную мову аўдыя</string>
|
||||
@@ -1373,7 +1399,7 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||
<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>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
@@ -1385,6 +1411,7 @@ Second \"item\" text"</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_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_summary">Хуткасць прайгравання між 0-8</string>
|
||||
</patch>
|
||||
|
||||
@@ -90,7 +90,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_screen_01_ads_title">Реклами</string>
|
||||
<string name="revanced_settings_screen_02_alt_thumbnails_title">Алтернативни миниатюри</string>
|
||||
<string name="revanced_settings_screen_03_feed_title">Поток</string>
|
||||
<string name="revanced_settings_screen_04_general_title">Общ</string>
|
||||
<string name="revanced_settings_screen_04_general_title">Общи</string>
|
||||
<string name="revanced_settings_screen_05_player_title">Плеър</string>
|
||||
<string name="revanced_settings_screen_07_seekbar_title">Лента за прогрес на видеото</string>
|
||||
<string name="revanced_settings_screen_08_swipe_controls_title">Контроли с плъзгане</string>
|
||||
@@ -117,6 +117,11 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_debug_protobuffer_title">Буфер на протокола за дневника</string>
|
||||
<string name="revanced_debug_protobuffer_summary_on">Файлове с дневници за грешки включват буфера</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_summary_on">Дневникът за отстраняване на грешки съдържа следи от стека</string>
|
||||
<string name="revanced_debug_stacktrace_summary_off">Дневникът за отстраняване на грешки не съдържа следи от стека</string>
|
||||
@@ -126,6 +131,15 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"Изключването на изскачащи съобщения за грешки крие всички известия за грешки на ReVanced.
|
||||
|
||||
Няма да бъдете уведомени за неочаквани събития."</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 id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_hide_album_cards_title">\"Карти на албумите\"</string>
|
||||
@@ -477,9 +491,10 @@ Second \"item\" text"</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_invalid_toast">Непрозрачността на плъзгането трябва да е между 0-100</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_title">Цвят на лентата за напредък при плъзгане</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_summary">Цветът на лентата за напредък за контролите за сила на звука и яркост</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_invalid_toast">Невалиден цвят на лентата за напредък</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>
|
||||
@@ -1322,6 +1337,22 @@ Second \"item\" text"</string>
|
||||
<string name="microg_settings_title">GmsCore Настройки</string>
|
||||
<string name="microg_settings_summary">Настройки на GmsCore</string>
|
||||
</patch>
|
||||
<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_summary_on">Вибрацията при мащабиране е деактивирана</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_off">Вибрацията при мащабиране е активирана</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
<string name="microg_offline_account_login_error">Ако наскоро сте променили данните си за вход в профила, деинсталирайте и инсталирайте отново MicroG.</string>
|
||||
</patch>
|
||||
@@ -1340,11 +1371,6 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_on">Параметърът на заявката за проследяване е премахнат от връзките</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_off">Параметърът на заявката за проследяване не е премахнат от връзките</string>
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
<string name="revanced_disable_zoom_haptics_title">Деактивиране на вибрация при мащабиране</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">Вибрациите са деактивирани</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">Вибрациите са активирани</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">Принудително оригинално аудио език</string>
|
||||
<string name="revanced_force_original_audio_summary_on">Използване на оригиналния език на аудиото</string>
|
||||
@@ -1372,7 +1398,7 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||
<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>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
@@ -1384,6 +1410,7 @@ Second \"item\" text"</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_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_summary">Скорост на възпроизвеждане между 0-8</string>
|
||||
</patch>
|
||||
|
||||
@@ -117,6 +117,7 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
||||
<string name="revanced_debug_protobuffer_title">প্রটোকল বাফার লগ</string>
|
||||
<string name="revanced_debug_protobuffer_summary_on">ডিবাগ লগ প্রটোকল বাফার সংযুক্ত করবে</string>
|
||||
<string name="revanced_debug_protobuffer_summary_off">ডিবাগ লগ প্রটোকল বাফার সংযুক্ত করবে না</string>
|
||||
<string name="revanced_debug_protobuffer_user_dialog_message">"এই সেটিংস সক্ষম করলে কিছু UI উপাদানের জন্য অন-স্ক্রীন পাঠ্য সহ অতিরিক্ত লেআউট ডেটা লগ করা হবে।\n\nএটি কাস্টম ফিল্টার তৈরি করার সময় উপাদান সনাক্ত করতে সাহায্য করতে পারে।\n\nতবে, এটি সক্রিয় করলে আপনার আইপি ঠিকানার মতো কিছু ব্যবহারকারীর ডেটাও লগ করা হবে।"</string>
|
||||
<string name="revanced_debug_stacktrace_title">স্টেক ট্রেস লগ</string>
|
||||
<string name="revanced_debug_stacktrace_summary_on">ডিবাগ লগ স্টেক ট্রেস সংযুক্ত করবে</string>
|
||||
<string name="revanced_debug_stacktrace_summary_off">ডিবাগ লগ স্টেক ট্রেস সংযুক্ত করবে না</string>
|
||||
@@ -126,6 +127,15 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"ত্রুটি \"toast\" বন্ধ করে ReVanced ত্রুটি বিজ্ঞপ্তিগুলি লুকানো হয়।
|
||||
|
||||
আপনি কোনও অপ্রত্যাশিত ঘটনার বিষয়ে অবহিত হবেন না।"</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 id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_hide_album_cards_title">অ্যালবাম কার্ড লুকান</string>
|
||||
@@ -477,9 +487,10 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
||||
<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_invalid_toast">সোয়াইপের অস্বচ্ছতা অবশ্যই 0-100 এর মধ্যে হতে হবে</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_title">সোয়াইপ ওভারলে প্রগ্রেস বার এর রং</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_summary">ভলিউম এবং উজ্জ্বলতা নিয়ন্ত্রণের জন্য প্রগ্রেস বার এর রং</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_invalid_toast">অবৈধ প্রগ্রেস বার রং</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">সোয়াইপ ওভারলে-এর জন্য টেক্সট সাইজ ১-৩০ এর মধ্যে</string>
|
||||
<string name="revanced_swipe_text_overlay_size_invalid_toast">টেক্সট সাইজ অবশ্যই ১-৩০ এর মধ্যে হতে হবে</string>
|
||||
@@ -1322,6 +1333,22 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট
|
||||
<string name="microg_settings_title">GmsCore সেটিং</string>
|
||||
<string name="microg_settings_summary">GmsCore এর জন্য সেটিং</string>
|
||||
</patch>
|
||||
<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_summary_on">জুম করার কম্পন নিষ্ক্রিয় করা হয়েছে</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_off">জুম করার কম্পন সক্রিয় করা হয়েছে</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
<string name="microg_offline_account_login_error">আপনি যদি সম্প্রতি আপনার অ্যাকাউন্ট লগইন বিশদ পরিবর্তন করে থাকেন, তবে MicroG আনইনস্টল করুন এবং পুনরায় ইনস্টল করুন।</string>
|
||||
</patch>
|
||||
@@ -1340,11 +1367,6 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_on">লিংক থেকে ট্র্যাকিং করার প্যারামিটার মুছে ফেলা হয়েছে</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_off">লিংক থেকে ট্র্যাকিং করার প্যারামিটার মুছে ফেলা হয়নি</string>
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
<string name="revanced_disable_zoom_haptics_title">জুম করার কম্পন নিষ্ক্রিয় করুন</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">কম্পন নিষ্ক্রিয় করা হয়েছে</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">কম্পন সক্রিয় করা হয়েছে</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">মূল অডিও ভাষা বলপূর্বক চালু করুন</string>
|
||||
<string name="revanced_force_original_audio_summary_on">মূল অডিও ভাষা ব্যবহার করা হচ্ছে</string>
|
||||
@@ -1372,7 +1394,7 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট
|
||||
</patch>
|
||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||
<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>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
@@ -1384,6 +1406,7 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট
|
||||
<string name="revanced_custom_playback_speeds_invalid">কাস্টম গতি %s এর চেয়ে কম হতে হবে</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">অবৈধ কাস্টম প্লেব্যাক গতি</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_summary">০-৮ এর মধ্যে প্লেব্যাক স্পিড</string>
|
||||
</patch>
|
||||
|
||||
@@ -199,6 +199,8 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
</patch>
|
||||
<patch id="misc.links.bypassURLRedirectsPatch">
|
||||
@@ -207,8 +209,6 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.privacy.removeTrackingQueryParameterPatch">
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
|
||||
</patch>
|
||||
|
||||
@@ -117,6 +117,11 @@ Toca el botó Continua i permet els canvis d'optimització."</string>
|
||||
<string name="revanced_debug_protobuffer_title">Iniciar sesión en el buffer de protocolo</string>
|
||||
<string name="revanced_debug_protobuffer_summary_on">El registro de depuración incluye el búfer de protocolo</string>
|
||||
<string name="revanced_debug_protobuffer_summary_off">Els registres de depuració no inclouen l\'amortiment de proto</string>
|
||||
<string name="revanced_debug_protobuffer_user_dialog_message">"Si activeu aquest paràmetre, es registraran dades de disseny addicionals, inclòs el text en pantalla per a alguns components de la IU.
|
||||
|
||||
Això pot ajudar a identificar components quan creeu filtres personalitzats.
|
||||
|
||||
Tot i això, si activeu aquesta opció, també es registraran algunes dades de l'usuari, com ara la vostra adreça IP."</string>
|
||||
<string name="revanced_debug_stacktrace_title">Registre dels rastrejos de la pila</string>
|
||||
<string name="revanced_debug_stacktrace_summary_on">Els registres de depuració inclouen el rastreig de la pila</string>
|
||||
<string name="revanced_debug_stacktrace_summary_off">Els registres de depuració no inclouen el rastreig de la pila</string>
|
||||
@@ -126,6 +131,15 @@ Toca el botó Continua i permet els canvis d'optimització."</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"Desactivar els missatges d'error d'avis oculta totes les notificacions d'error de ReVanced.
|
||||
|
||||
No se t'informarà de cap esdeveniment inesperat."</string>
|
||||
<string name="revanced_debug_export_logs_to_clipboard_title">Exporta els registres de depuració</string>
|
||||
<string name="revanced_debug_export_logs_to_clipboard_summary">Copia els registres de depuració de ReVanced al porta-retalls</string>
|
||||
<string name="revanced_debug_logs_disabled">El registre de depuració està desactivat</string>
|
||||
<string name="revanced_debug_logs_none_found">No s\'ha trobat cap registre</string>
|
||||
<string name="revanced_debug_logs_copied_to_clipboard">Registres copiats</string>
|
||||
<string name="revanced_debug_logs_failed_to_export">No s\'han pogut exportar els registres: $s</string>
|
||||
<string name="revanced_debug_logs_clear_buffer_title">Esborra els registres de depuració</string>
|
||||
<string name="revanced_debug_logs_clear_buffer_summary">Esborra tots els registres de depuració de ReVanced emmagatzemats</string>
|
||||
<string name="revanced_debug_logs_clear_toast">Registres esborrats</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_hide_album_cards_title">Amagar les targetes d\'àlbums</string>
|
||||
@@ -477,9 +491,10 @@ Ajusteu el volum lliscant verticalment a la part dreta de la pantalla"</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_title">Opacitat del fons de la superposició de lliscament</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_summary">Valor d\'opacitat entre 0 i 100</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">L\'opacitat de lliscament ha d\'estar entre 0 i 100</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_title">Color de la barra de progrés de la superposició lliscant</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_summary">El color de la barra de progrés per als controls de volum i brillantor</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_invalid_toast">Color de barra de progrés no vàlid</string>
|
||||
<string name="revanced_swipe_overlay_progress_brightness_color_title">Color de la lluminositat de la superposició de lliscament</string>
|
||||
<string name="revanced_swipe_overlay_progress_brightness_color_summary">El color de la barra de progrés per als controls de brillantor</string>
|
||||
<string name="revanced_swipe_overlay_progress_volume_color_title">Color del volum de la superposició de lliscament</string>
|
||||
<string name="revanced_swipe_overlay_progress_volume_color_summary">El color de la barra de progrés per als controls de volum</string>
|
||||
<string name="revanced_swipe_text_overlay_size_title">Mida del text de la superposició lliscant</string>
|
||||
<string name="revanced_swipe_text_overlay_size_summary">La mida del text per a la superposició lliscant entre 1 i 30</string>
|
||||
<string name="revanced_swipe_text_overlay_size_invalid_toast">La mida del text ha d\'estar entre 1 i 30</string>
|
||||
@@ -1321,6 +1336,22 @@ Si actives aquesta opció, es poden desbloquejar qualitats de vídeo més altes"
|
||||
<string name="microg_settings_title">Configuració de GmsCore</string>
|
||||
<string name="microg_settings_summary">Configuració de GmsCore</string>
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
<string name="revanced_disable_haptic_feedback_title">Hàptica</string>
|
||||
<string name="revanced_disable_haptic_feedback_summary">Canvia la resposta hàptica</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_title">Desactiva els hàptics dels capítols</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_summary_on">Els hàptics dels capítols estan desactivats</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_summary_off">Els hàptics dels capítols estan activats</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_title">Desactiva els hàptics de cerca precisa</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_on">Els hàptics de cerca precisa estan desactivats</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_off">Els hàptics de cerca precisa estan activats</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_title">Desactiva els hàptics de desfer la cerca</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_summary_on">Els hàptics de desfer la cerca estan desactivats</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_summary_off">Els hàptics de desfer la cerca estan activats</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_title">Desactiva els hàptics d\'enfocament</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_on">Els hàptics de zoom estan desactivats</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_off">Els hàptics de zoom estan habilitats</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
<string name="microg_offline_account_login_error">Si recentment heu canviat les dades d\'inici de sessió del vostre compte, desinstal·leu i torneu a instal·lar MicroG.</string>
|
||||
</patch>
|
||||
@@ -1339,11 +1370,6 @@ Si actives aquesta opció, es poden desbloquejar qualitats de vídeo més altes"
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_on">El paràmetre de consulta de seguiment s\'elimina dels enllaços</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_off">El paràmetre de consulta de seguiment no s\'elimina dels enllaços</string>
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
<string name="revanced_disable_zoom_haptics_title">Desactiva els hàptics d\'enfocament</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">Els hàptics estan desactivats</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">Els hàptics estan habilitats</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">Forçar l\'idioma d\'àudio original</string>
|
||||
<string name="revanced_force_original_audio_summary_on">S\'utilitza l\'idioma d\'àudio original</string>
|
||||
@@ -1371,7 +1397,7 @@ Si actives aquesta opció, es poden desbloquejar qualitats de vídeo més altes"
|
||||
</patch>
|
||||
<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_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>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
@@ -1383,6 +1409,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_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_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_summary">Velocitat de reproducció entre 0 i 8</string>
|
||||
</patch>
|
||||
|
||||
@@ -117,6 +117,11 @@ Klepněte na tlačítko Pokračovat a povolte změny optimalizace."</string>
|
||||
<string name="revanced_debug_protobuffer_title">Záznam bufferu protokolu</string>
|
||||
<string name="revanced_debug_protobuffer_summary_on">Debugovací záznamy obsahují proto buffer</string>
|
||||
<string name="revanced_debug_protobuffer_summary_off">Debugovací záznamy neobsahují proto buffer</string>
|
||||
<string name="revanced_debug_protobuffer_user_dialog_message">"Povolením tohoto nastavení se bude zaznamenávat další data rozvržení, včetně textu na obrazovce pro některé komponenty uživatelského rozhraní.
|
||||
|
||||
To může pomoci identifikovat komponenty při vytváření vlastních filtrů.
|
||||
|
||||
Povolením této možnosti se však budou zaznamenávat i některá uživatelská data, jako je vaše IP adresa."</string>
|
||||
<string name="revanced_debug_stacktrace_title">Protokolovat trasování zásobníku</string>
|
||||
<string name="revanced_debug_stacktrace_summary_on">Protokoly ladění obsahují trasování zásobníku</string>
|
||||
<string name="revanced_debug_stacktrace_summary_off">Ladící protokoly nezahrnují sledování zásobníku</string>
|
||||
@@ -126,6 +131,15 @@ Klepněte na tlačítko Pokračovat a povolte změny optimalizace."</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"Vypnutí chybových toastů skryje všechna chybová oznámení ReVanced.
|
||||
|
||||
Nebudete informováni o žádné neočekávané události."</string>
|
||||
<string name="revanced_debug_export_logs_to_clipboard_title">Exportovat ladicí protokoly</string>
|
||||
<string name="revanced_debug_export_logs_to_clipboard_summary">Zkopíruje ladicí protokoly ReVanced do schránky</string>
|
||||
<string name="revanced_debug_logs_disabled">Ladění je vypnuto</string>
|
||||
<string name="revanced_debug_logs_none_found">Nebyly nalezeny žádné protokoly</string>
|
||||
<string name="revanced_debug_logs_copied_to_clipboard">Protokoly zkopírovány</string>
|
||||
<string name="revanced_debug_logs_failed_to_export">Nepodařilo se exportovat protokoly: $s</string>
|
||||
<string name="revanced_debug_logs_clear_buffer_title">Vymazat ladicí protokoly</string>
|
||||
<string name="revanced_debug_logs_clear_buffer_summary">Vymaže všechny uložené ladicí protokoly ReVanced</string>
|
||||
<string name="revanced_debug_logs_clear_toast">Protokoly vymazány</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_hide_album_cards_title">Skrýt karty alb</string>
|
||||
@@ -477,9 +491,10 @@ Hlasitost se upravuje svislým přejetím po pravé straně obrazovky"</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_title">Průsvitnost pozadí překrytí tažením</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_summary">Hodnota průsvitnosti mezi 0-100</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">Průsvitnost tažení musí být mezi 0-100</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_title">Barva ukazatele průběhu překrytí přejetím</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_summary">Barva ukazatele průběhu pro ovládání hlasitosti a jasu</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_invalid_toast">Neplatná barva ukazatele průběhu</string>
|
||||
<string name="revanced_swipe_overlay_progress_brightness_color_title">Barva jasu překryvné vrstvy tažení</string>
|
||||
<string name="revanced_swipe_overlay_progress_brightness_color_summary">Barva ukazatele průběhu pro ovládání jasu</string>
|
||||
<string name="revanced_swipe_overlay_progress_volume_color_title">Barva hlasitosti překryvné vrstvy tažení</string>
|
||||
<string name="revanced_swipe_overlay_progress_volume_color_summary">Barva ukazatele průběhu pro ovládání hlasitosti</string>
|
||||
<string name="revanced_swipe_text_overlay_size_title">Velikost textu překrytí přejetím</string>
|
||||
<string name="revanced_swipe_text_overlay_size_summary">Velikost textu překrytí přejetím mezi 1–30</string>
|
||||
<string name="revanced_swipe_text_overlay_size_invalid_toast">Velikost textu musí být mezi 1–30</string>
|
||||
@@ -1321,6 +1336,22 @@ Povolením této funkce lze odemknout vyšší kvality videa"</string>
|
||||
<string name="microg_settings_title">Nastavení GmsCore</string>
|
||||
<string name="microg_settings_summary">Nastavení pro GmsCore</string>
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
<string name="revanced_disable_haptic_feedback_title">Haptická odezva</string>
|
||||
<string name="revanced_disable_haptic_feedback_summary">Změnit haptickou odezvu</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_title">Zakázat haptiku kapitol</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_summary_on">Haptika kapitol je zakázána</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_summary_off">Haptika kapitol je povolena</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_title">Zakázat haptiku pro přesné hledání</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_on">Haptická odezva při přesném vyhledávání je vypnutá</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_off">Haptika pro přesné hledání je povolena</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_title">Zakázat haptiku pro vrácení zpět vyhledávání</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_summary_on">Haptika pro vrácení zpět vyhledávání je vypnutá</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_summary_off">Haptika pro vrácení zpět vyhledávání je zapnutá</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_title">Zakázat haptiku pro zoom</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_on">Haptika zoomu je vypnutá</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_off">Haptika zoomu je zapnutá</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
<string name="microg_offline_account_login_error">Pokud jste nedávno změnili přihlašovací údaje svého účtu, odinstalujte a znovu nainstalujte MicroG.</string>
|
||||
</patch>
|
||||
@@ -1339,11 +1370,6 @@ Povolením této funkce lze odemknout vyšší kvality videa"</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_on">Sledovací parametr dotazu je odstraněn z odkazů</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_off">Sledovací parametr dotazu není odstraněn z odkazů</string>
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
<string name="revanced_disable_zoom_haptics_title">Zakázat haptiku pro zoom</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">Haptika je zakázána</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">Haptika je povolena</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">Vynutit původní jazyk zvuku</string>
|
||||
<string name="revanced_force_original_audio_summary_on">Použít původní jazyk zvuku</string>
|
||||
@@ -1371,7 +1397,7 @@ Povolením této funkce lze odemknout vyšší kvality videa"</string>
|
||||
</patch>
|
||||
<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_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>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
@@ -1383,6 +1409,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_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_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_summary">Rychlost přehrávání 0 až 8</string>
|
||||
</patch>
|
||||
|
||||
@@ -117,6 +117,11 @@ Tap på knappen Fortsæt, og tillad optimeringsændringer."</string>
|
||||
<string name="revanced_debug_protobuffer_title">Logprotokolbuffer</string>
|
||||
<string name="revanced_debug_protobuffer_summary_on">Fejlfindingslogge inkluderer protobuffer</string>
|
||||
<string name="revanced_debug_protobuffer_summary_off">Fejlfindingslogge inkluderer ikke protobuffer</string>
|
||||
<string name="revanced_debug_protobuffer_user_dialog_message">"Aktivering af denne indstilling logger yderligere layoutdata, inklusive tekst på skærmen for nogle UI-komponenter.
|
||||
|
||||
Dette kan hjælpe med at identificere komponenter, når der oprettes brugerdefinerede filtre.
|
||||
|
||||
Aktivering af dette vil dog også logge nogle brugerdata, såsom din IP-adresse."</string>
|
||||
<string name="revanced_debug_stacktrace_title">Logstakspor</string>
|
||||
<string name="revanced_debug_stacktrace_summary_on">Fejlfindingslogge inkluderer stakspor</string>
|
||||
<string name="revanced_debug_stacktrace_summary_off">Fejlfindingslogge inkluderer ikke stakspor</string>
|
||||
@@ -126,6 +131,15 @@ Tap på knappen Fortsæt, og tillad optimeringsændringer."</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"Hvis du deaktiverer fejl-toasts, skjules alle ReVanced-fejlmeddelelser.
|
||||
|
||||
Du modtager ikke notifikationer om uventede hændelser."</string>
|
||||
<string name="revanced_debug_export_logs_to_clipboard_title">Eksportér fejlsøgningslogfiler</string>
|
||||
<string name="revanced_debug_export_logs_to_clipboard_summary">Kopierer ReVanced-fejlsøgningslogfiler til udklipsholderen</string>
|
||||
<string name="revanced_debug_logs_disabled">Fejlsøgningslogning er deaktiveret</string>
|
||||
<string name="revanced_debug_logs_none_found">Ingen logfiler fundet</string>
|
||||
<string name="revanced_debug_logs_copied_to_clipboard">Logfiler kopieret</string>
|
||||
<string name="revanced_debug_logs_failed_to_export">Kunne ikke eksportere logfiler: $s</string>
|
||||
<string name="revanced_debug_logs_clear_buffer_title">Ryd fejlsøgningslogfiler</string>
|
||||
<string name="revanced_debug_logs_clear_buffer_summary">Rydder alle gemte ReVanced-fejlsøgningslogfiler</string>
|
||||
<string name="revanced_debug_logs_clear_toast">Logfiler ryddet</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_hide_album_cards_title">Skjul albumkort</string>
|
||||
@@ -444,9 +458,10 @@ Juster lydstyrken ved at swipe lodret i højre side af skærmen"</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_title">Baggrundsgennemsigtighed for swipe-overlay</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_summary">Gennemsigtighedsværdi mellem 0-100</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">Gennemsigtighed for swipe skal være mellem 0-100</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_title">Farve på statuslinje for strygeoverlejring</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_summary">Farven på statuslinjen for lydstyrke- og lysstyrkeknapper</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_invalid_toast">Ugyldig farve til statuslinjen</string>
|
||||
<string name="revanced_swipe_overlay_progress_brightness_color_title">Farve på lysstyrke for strygeoverlejring</string>
|
||||
<string name="revanced_swipe_overlay_progress_brightness_color_summary">Farven på statuslinjen for lysstyrkekontroller</string>
|
||||
<string name="revanced_swipe_overlay_progress_volume_color_title">Farve på lydstyrke for strygeoverlejring</string>
|
||||
<string name="revanced_swipe_overlay_progress_volume_color_summary">Farven på statuslinjen for lydstyrkekontroller</string>
|
||||
<string name="revanced_swipe_text_overlay_size_title">Tekststørrelse for strygeoverlejring</string>
|
||||
<string name="revanced_swipe_text_overlay_size_summary">Tekststørrelsen for strygeoverlejring mellem 1-30</string>
|
||||
<string name="revanced_swipe_text_overlay_size_invalid_toast">Tekststørrelsen skal være mellem 1-30</string>
|
||||
@@ -1266,6 +1281,22 @@ Aktivering af dette kan låse op for højere videokvalitet"</string>
|
||||
<string name="microg_settings_title">GmsCore Indstillinger</string>
|
||||
<string name="microg_settings_summary">Indstillinger for GmsCore</string>
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
<string name="revanced_disable_haptic_feedback_title">Haptisk feedback</string>
|
||||
<string name="revanced_disable_haptic_feedback_summary">Skift haptisk feedback</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_title">Deaktivér haptics for kapitler</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_summary_on">Haptics for kapitler er deaktiveret</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_summary_off">Haptics for kapitler er aktiveret</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_title">Deaktivér præcis søge-haptics</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_on">Præcis søge-haptik er deaktiveret</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_off">Præcis søge-haptics er aktiveret</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_title">Deaktivér fortryd søge-haptik</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_summary_on">Fortryd søge-haptik er deaktiveret</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_summary_off">Fortryd søge-haptik er aktiveret</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_title">Deaktivér zoom haptics</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_on">Zoom haptics er deaktiveret</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_off">Zoom haptics er aktiveret</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
<string name="microg_offline_account_login_error">Hvis du for nylig har ændret dine kontooplysninger, skal du afinstallere og geninstallere MicroG.</string>
|
||||
</patch>
|
||||
@@ -1284,11 +1315,6 @@ Aktivering af dette kan låse op for højere videokvalitet"</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_on">Sporingsparameteren er fjernet fra links</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_off">Sporingsforespørgselsparameteren er ikke fjernet fra links</string>
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
<string name="revanced_disable_zoom_haptics_title">Deaktivér zoom haptics</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">Haptics er deaktiveret</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">Haptics er aktiveret</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">Tving originalt lydsprog</string>
|
||||
<string name="revanced_force_original_audio_summary_on">Bruger originalt lydsprog</string>
|
||||
@@ -1316,7 +1342,7 @@ Aktivering af dette kan låse op for højere videokvalitet"</string>
|
||||
</patch>
|
||||
<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_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>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
@@ -1328,6 +1354,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_parse_exception">Ugyldige brugerdefinerede afspilningshastigheder</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_summary">Afspilningshastighed mellem 0-8</string>
|
||||
</patch>
|
||||
|
||||
@@ -113,6 +113,11 @@ Tippen Sie auf die Schaltfläche \"Fortfahren\" und erlauben Sie die Optimierung
|
||||
<string name="revanced_debug_protobuffer_title">Protokollpuffer protokollieren</string>
|
||||
<string name="revanced_debug_protobuffer_summary_on">Debug-Protokolle enthalten Protokollpuffer</string>
|
||||
<string name="revanced_debug_protobuffer_summary_off">Debug-Protokolle enthalten kein Protokollpuffer</string>
|
||||
<string name="revanced_debug_protobuffer_user_dialog_message">"Wenn Sie diese Einstellung aktivieren, werden zusätzliche Layoutdaten protokolliert, einschließlich Text auf dem Bildschirm für einige UI-Komponenten.
|
||||
|
||||
Dies kann helfen, Komponenten bei der Erstellung benutzerdefinierter Filter zu identifizieren.
|
||||
|
||||
Wenn Sie dies aktivieren, werden jedoch auch einige Benutzerdaten wie Ihre IP-Adresse protokolliert."</string>
|
||||
<string name="revanced_debug_stacktrace_title">Stacktraces protokollieren</string>
|
||||
<string name="revanced_debug_stacktrace_summary_on">Debug-Protokolle enthalten Stacktrace</string>
|
||||
<string name="revanced_debug_stacktrace_summary_off">Debug-Logs enthalten keine Stack-Traces</string>
|
||||
@@ -122,6 +127,15 @@ Tippen Sie auf die Schaltfläche \"Fortfahren\" und erlauben Sie die Optimierung
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"Das Ausschalten von Fehler-Toasts blendet alle Benachrichtigungen über Fehler in ReVanced aus.
|
||||
|
||||
Sie werden nicht über unerwartete Ereignisse informiert."</string>
|
||||
<string name="revanced_debug_export_logs_to_clipboard_title">Debug-Protokolle exportieren</string>
|
||||
<string name="revanced_debug_export_logs_to_clipboard_summary">Kopiert ReVanced-Debug-Protokolle in die Zwischenablage</string>
|
||||
<string name="revanced_debug_logs_disabled">Debug-Protokollierung ist deaktiviert</string>
|
||||
<string name="revanced_debug_logs_none_found">Keine Protokolle gefunden</string>
|
||||
<string name="revanced_debug_logs_copied_to_clipboard">Protokolle kopiert</string>
|
||||
<string name="revanced_debug_logs_failed_to_export">Fehler beim Exportieren von Protokollen: $s</string>
|
||||
<string name="revanced_debug_logs_clear_buffer_title">Debug-Protokolle löschen</string>
|
||||
<string name="revanced_debug_logs_clear_buffer_summary">Löscht alle gespeicherten ReVanced-Debug-Protokolle</string>
|
||||
<string name="revanced_debug_logs_clear_toast">Protokolle gelöscht</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_hide_album_cards_title">Albumkarten ausblenden</string>
|
||||
@@ -470,9 +484,10 @@ Passen Sie die Helligkeit an, indem Sie auf der linken Seite des Bildschirms ver
|
||||
<string name="revanced_swipe_overlay_background_opacity_title">Bildschirmüberlagerung Deckkraft Swipe</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_summary">Deckkraftwert zwischen 0-100</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">Die Wischdeckkraft muss zwischen 0 und 100 liegen</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_title">Farbe des Fortschrittsbalkens für die Wischgesten-Überlagerung</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_summary">Die Farbe des Fortschrittsbalkens für Lautstärke- und Helligkeitsregler</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_invalid_toast">Ungültige Farbe für den Fortschrittsbalken</string>
|
||||
<string name="revanced_swipe_overlay_progress_brightness_color_title">Farbe der Helligkeit des Wisch-Overlays</string>
|
||||
<string name="revanced_swipe_overlay_progress_brightness_color_summary">Die Farbe der Fortschrittsanzeige für Helligkeitsregler</string>
|
||||
<string name="revanced_swipe_overlay_progress_volume_color_title">Farbe der Lautstärke des Wisch-Overlays</string>
|
||||
<string name="revanced_swipe_overlay_progress_volume_color_summary">Die Farbe der Fortschrittsanzeige für Lautstärkeregler</string>
|
||||
<string name="revanced_swipe_text_overlay_size_title">Textgröße der Wischgesten-Überlagerung</string>
|
||||
<string name="revanced_swipe_text_overlay_size_summary">Die Textgröße für die Wischgesten-Überlagerung zwischen 1 und 30</string>
|
||||
<string name="revanced_swipe_text_overlay_size_invalid_toast">Die Textgröße muss zwischen 1 und 30 liegen</string>
|
||||
@@ -1315,6 +1330,22 @@ Durch Aktivieren dieser Option können höhere Videoqualitäten freigeschaltet w
|
||||
<string name="microg_settings_title">GmsCore Einstellungen</string>
|
||||
<string name="microg_settings_summary">Einstellungen für GmsCore</string>
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
<string name="revanced_disable_haptic_feedback_title">Haptisches Feedback</string>
|
||||
<string name="revanced_disable_haptic_feedback_summary">Haptisches Feedback ändern</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_title">Kapitelhaptik deaktivieren</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_summary_on">Kapitelhaptik ist deaktiviert</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_summary_off">Kapitelhaptik ist aktiviert</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_title">Präzise Suchhaptik deaktivieren</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_on">Die präzise Suchhaptik ist deaktiviert</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_off">Präzise Suchhaptik ist aktiviert</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_title">Haptik für das Rückgängigmachen der Suche deaktivieren</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_summary_on">Die Haptik für das Rückgängigmachen der Suche ist deaktiviert</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_summary_off">Die Haptik für das Rückgängigmachen der Suche ist aktiviert</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_title">Zoomhaptik deaktivieren</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_on">Zoomhaptik ist deaktiviert</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_off">Zoomhaptik ist aktiviert</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
<string name="microg_offline_account_login_error">Wenn Sie kürzlich Ihre Kontoanmeldedaten geändert haben, deinstallieren Sie MicroG und installieren Sie es erneut.</string>
|
||||
</patch>
|
||||
@@ -1333,11 +1364,6 @@ Durch Aktivieren dieser Option können höhere Videoqualitäten freigeschaltet w
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_on">Tracking-Abfrageparameter wird von Links entfernt</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_off">Tracking-Abfrageparameter wird nicht von Links entfernt</string>
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
<string name="revanced_disable_zoom_haptics_title">Zoomhaptik deaktivieren</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">Haptik ist deaktiviert</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">Haptik ist aktiviert</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">Original Audio erzwingen</string>
|
||||
<string name="revanced_force_original_audio_summary_on">Original-Audiosprache verwenden</string>
|
||||
@@ -1365,7 +1391,7 @@ Durch Aktivieren dieser Option können höhere Videoqualitäten freigeschaltet w
|
||||
</patch>
|
||||
<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_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>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
@@ -1377,6 +1403,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_parse_exception">Ungültige benutzerdefinierte Wiedergabegeschwindigkeiten</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_summary">Abspielgeschwindigkeit zwischen 0-8x</string>
|
||||
</patch>
|
||||
|
||||
@@ -117,6 +117,11 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_debug_protobuffer_title">Καταγραφή του buffer πρωτοκόλλου</string>
|
||||
<string name="revanced_debug_protobuffer_summary_on">Τα αρχεία καταγραφής σφαλμάτων περιλαμβάνουν το buffer του πρωτοκόλλου</string>
|
||||
<string name="revanced_debug_protobuffer_summary_off">Τα αρχεία καταγραφής σφαλμάτων δεν περιλαμβάνουν τον buffer πρωτοκόλλου</string>
|
||||
<string name="revanced_debug_protobuffer_user_dialog_message">"Η ενεργοποίηση αυτής της ρύθμισης θα καταγράψει επιπλέον δεδομένα διάταξης, συμπεριλαμβανομένου του κειμένου στην οθόνη για ορισμένα στοιχεία διεπαφής χρήστη.
|
||||
|
||||
Αυτό μπορεί να βοηθήσει στον εντοπισμό στοιχείων κατά τη δημιουργία προσαρμοσμένων φίλτρων.
|
||||
|
||||
Ωστόσο, η ενεργοποίηση αυτής της ρύθμισης θα καταγράψει επίσης ορισμένα δεδομένα χρήστη, όπως τη διεύθυνση IP σας."</string>
|
||||
<string name="revanced_debug_stacktrace_title">Καταγραφή ιχνών στοίβας</string>
|
||||
<string name="revanced_debug_stacktrace_summary_on">Τα αρχεία καταγραφής σφαλμάτων περιλαμβάνουν ίχνη στοίβας</string>
|
||||
<string name="revanced_debug_stacktrace_summary_off">Τα αρχεία καταγραφής σφαλμάτων δεν περιλαμβάνουν ίχνη στοίβας</string>
|
||||
@@ -126,6 +131,15 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"Η απενεργοποίηση των μηνυμάτων σφαλμάτων κρύβει όλες τις ειδοποιήσεις σφαλμάτων που αφορούν το ReVanced.
|
||||
|
||||
Δεν θα ειδοποιηθείτε για τυχόν απρόβλεπτα γεγονότα."</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 id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_hide_album_cards_title">Κάρτες άλμπουμ</string>
|
||||
@@ -479,9 +493,10 @@ Second \"item\" text"</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_invalid_toast">Η αδιαφάνεια σάρωσης πρέπει να είναι μεταξύ 0-100</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_title">Χρώμα γραμμής προόδου σάρωσης</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_summary">Το χρώμα της γραμμής προόδου για τα στοιχεία ελέγχου έντασης ήχου και φωτεινότητας</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_invalid_toast">Μη έγκυρο χρώμα γραμμής προόδου</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>
|
||||
@@ -1321,6 +1336,22 @@ Second \"item\" text"</string>
|
||||
<string name="microg_settings_title">Ρυθμίσεις GmsCore</string>
|
||||
<string name="microg_settings_summary">Ρυθμίσεις για το MicroG GmsCore</string>
|
||||
</patch>
|
||||
<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_summary_on">Η απόκριση δόνησης της χειρονομίας ζουμ είναι απενεργοποιημένη</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_off">Η απόκριση δόνησης της χειρονομίας ζουμ είναι ενεργοποιημένη</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
<string name="microg_offline_account_login_error">Εάν αλλάξατε πρόσφατα τα στοιχεία σύνδεσης του λογαριασμού σας, απεγκαταστήστε και εγκαταστήστε ξανά το MicroG.</string>
|
||||
</patch>
|
||||
@@ -1339,11 +1370,6 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_on">Η παράμετρος παρακολούθησης αφαιρείται από τους συνδέσμους στην κοινοποίηση</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_off">Η παράμετρος παρακολούθησης δεν αφαιρείται από τους συνδέσμους στην κοινοποίηση</string>
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
<string name="revanced_disable_zoom_haptics_title">Απενεργοποίηση απόκρισης δόνησης χειρονομίας ζουμ</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">Η απόκριση δόνησης είναι απενεργοποιημένη</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">Η απόκριση δόνησης είναι ενεργοποιημένη</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">Εξαναγκασμός αρχικής γλώσσας ήχου</string>
|
||||
<string name="revanced_force_original_audio_summary_on">Χρησιμοποιείται η αρχική γλώσσα ήχου</string>
|
||||
@@ -1371,7 +1397,7 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||
<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>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
@@ -1383,6 +1409,7 @@ Second \"item\" text"</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_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_summary">Ταχύτητα αναπαραγωγής μεταξύ 0-8</string>
|
||||
</patch>
|
||||
|
||||
@@ -116,6 +116,11 @@ Desactivar las optimizaciones de batería para MicroG no afectará negativamente
|
||||
<string name="revanced_debug_protobuffer_title">Búfer de protocolo de registro</string>
|
||||
<string name="revanced_debug_protobuffer_summary_on">Los registros de depuración incluyen el búfer proto</string>
|
||||
<string name="revanced_debug_protobuffer_summary_off">Los registros de depuración no incluyen el búfer proto</string>
|
||||
<string name="revanced_debug_protobuffer_user_dialog_message">"Si activas este ajuste, se registrarán datos de diseño adicionales, incluido el texto en pantalla de algunos componentes de la IU.
|
||||
|
||||
Esto puede ayudar a identificar componentes al crear filtros personalizados.
|
||||
|
||||
Sin embargo, si activas esto, también se registrarán algunos datos del usuario, como tu dirección IP."</string>
|
||||
<string name="revanced_debug_stacktrace_title">Registrar stack traces</string>
|
||||
<string name="revanced_debug_stacktrace_summary_on">Los registros de depuración incluyen stack trace</string>
|
||||
<string name="revanced_debug_stacktrace_summary_off">Los registros de depuración no incluyen stack trace</string>
|
||||
@@ -123,6 +128,15 @@ Desactivar las optimizaciones de batería para MicroG no afectará negativamente
|
||||
<string name="revanced_debug_toast_on_error_summary_on">Se muestra un toast si se produce un error</string>
|
||||
<string name="revanced_debug_toast_on_error_summary_off">No se muestra un toast si se produce un error</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"Desactivar las notificaciones de error oculta todas las notificaciones de error de ReVanced."</string>
|
||||
<string name="revanced_debug_export_logs_to_clipboard_title">Exportar registros de depuración</string>
|
||||
<string name="revanced_debug_export_logs_to_clipboard_summary">Copia los registros de depuración de ReVanced al portapapeles</string>
|
||||
<string name="revanced_debug_logs_disabled">El registro de depuración está desactivado</string>
|
||||
<string name="revanced_debug_logs_none_found">No se encontraron registros</string>
|
||||
<string name="revanced_debug_logs_copied_to_clipboard">Registros copiados</string>
|
||||
<string name="revanced_debug_logs_failed_to_export">Error al exportar los registros: $s</string>
|
||||
<string name="revanced_debug_logs_clear_buffer_title">Borrar registros de depuración</string>
|
||||
<string name="revanced_debug_logs_clear_buffer_summary">Borra todos los registros de depuración de ReVanced almacenados</string>
|
||||
<string name="revanced_debug_logs_clear_toast">Registros borrados</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_hide_album_cards_title">Ocultar álbumes</string>
|
||||
@@ -474,9 +488,10 @@ Ajusta el volumen deslizando verticalmente en el lado derecho de la pantalla"</s
|
||||
<string name="revanced_swipe_overlay_background_opacity_title">Opacidad del fondo de la superposición de deslizamiento</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_summary">Valor de opacidad entre 0-100</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">La opacidad de la superposición de deslizamiento debe estar entre 0 y 100</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_title">Color de la barra de progreso de la superposición de deslizamiento</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_summary">El color de la barra de progreso para los controles de volumen y brillo</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_invalid_toast">Color de barra de progreso no válido</string>
|
||||
<string name="revanced_swipe_overlay_progress_brightness_color_title">Color del brillo de la superposición de deslizamiento</string>
|
||||
<string name="revanced_swipe_overlay_progress_brightness_color_summary">El color de la barra de progreso para los controles de brillo</string>
|
||||
<string name="revanced_swipe_overlay_progress_volume_color_title">Color del volumen de la superposición de deslizamiento</string>
|
||||
<string name="revanced_swipe_overlay_progress_volume_color_summary">El color de la barra de progreso para los controles de volumen</string>
|
||||
<string name="revanced_swipe_text_overlay_size_title">Tamaño del texto de la superposición de deslizamiento</string>
|
||||
<string name="revanced_swipe_text_overlay_size_summary">El tamaño del texto para la superposición de deslizamiento entre 1 y 30</string>
|
||||
<string name="revanced_swipe_text_overlay_size_invalid_toast">El tamaño del texto debe estar entre 1 y 30</string>
|
||||
@@ -1310,6 +1325,22 @@ Habilitar esto puede desbloquear calidades de vídeo más altas"</string>
|
||||
<string name="microg_settings_title">Ajustes de GmsCore</string>
|
||||
<string name="microg_settings_summary">Configuración de GmsCore</string>
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
<string name="revanced_disable_haptic_feedback_title">Vibración háptica</string>
|
||||
<string name="revanced_disable_haptic_feedback_summary">Cambiar la vibración háptica</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_title">Desactivar la respuesta háptica de los capítulos</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_summary_on">La respuesta háptica de los capítulos está desactivada</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_summary_off">La respuesta háptica de los capítulos está activada</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_title">Desactivar la respuesta háptica de la búsqueda precisa</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_on">La respuesta háptica de búsqueda precisa está desactivada</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_off">La respuesta háptica de la búsqueda precisa está activada</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_title">Desactivar la respuesta háptica de deshacer la búsqueda</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_summary_on">La respuesta háptica de deshacer la búsqueda está desactivada</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_summary_off">La respuesta háptica de deshacer la búsqueda está activada</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_title">Desactivar la respuesta háptica del zoom</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_on">La respuesta háptica del zoom está desactivada</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_off">La respuesta háptica del zoom está activada</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
<string name="microg_offline_account_login_error">Si has cambiado recientemente los datos de inicio de sesión de tu cuenta, desinstala y vuelve a instalar MicroG.</string>
|
||||
</patch>
|
||||
@@ -1328,11 +1359,6 @@ Habilitar esto puede desbloquear calidades de vídeo más altas"</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_on">Parámetro de la consulta de seguimiento se elimina de los enlaces</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_off">Parámetro de la consulta de seguimiento no se elimina de los enlaces</string>
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
<string name="revanced_disable_zoom_haptics_title">Desactivar hápticas al hacer zoom</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">Hápticas desactivadas</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">Haptics están habilitados</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">Forzar idioma de audio original</string>
|
||||
<string name="revanced_force_original_audio_summary_on">Usar el idioma de audio original</string>
|
||||
@@ -1360,7 +1386,7 @@ Habilitar esto puede desbloquear calidades de vídeo más altas"</string>
|
||||
</patch>
|
||||
<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_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>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
@@ -1372,6 +1398,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_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_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_summary">Velocidad de reproducción entre 0-8</string>
|
||||
</patch>
|
||||
|
||||
@@ -117,6 +117,11 @@ Vajutage jätkamise nuppu ja lubage optimeerimismuutused."</string>
|
||||
<string name="revanced_debug_protobuffer_title">Logi protokolipuffari</string>
|
||||
<string name="revanced_debug_protobuffer_summary_on">Vea logid sisaldavad protokolipuffari</string>
|
||||
<string name="revanced_debug_protobuffer_summary_off">Vea logid ei sisalda protokolipuffari</string>
|
||||
<string name="revanced_debug_protobuffer_user_dialog_message">"Selle sätte lubamine logib täiendavaid paigutuse andmeid, sealhulgas mõne kasutajaliidese komponendi ekraanil kuvatavat teksti.
|
||||
|
||||
See võib aidata komponente tuvastada kohandatud filtrite loomisel.
|
||||
|
||||
Selle lubamine logib aga ka mõningaid kasutajaandmeid, näiteks teie IP-aadressi."</string>
|
||||
<string name="revanced_debug_stacktrace_title">Logi stekira jäljed</string>
|
||||
<string name="revanced_debug_stacktrace_summary_on">Silumispäevikud sisaldavad virna jäljendamise</string>
|
||||
<string name="revanced_debug_stacktrace_summary_off">Silumispäevikud ei sisalda virna jäljendamise</string>
|
||||
@@ -126,6 +131,15 @@ Vajutage jätkamise nuppu ja lubage optimeerimismuutused."</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"Vea teadete väljalülitamine peidab kõik ReVanced i veateadete märguanded.
|
||||
|
||||
Teid ei teavitata ühestki ootamatust sündmusest."</string>
|
||||
<string name="revanced_debug_export_logs_to_clipboard_title">Ekspordi silumislogid</string>
|
||||
<string name="revanced_debug_export_logs_to_clipboard_summary">Kopeerib ReVanced silumislogid lõikelauale</string>
|
||||
<string name="revanced_debug_logs_disabled">Silumislogimine on keelatud</string>
|
||||
<string name="revanced_debug_logs_none_found">Logisid ei leitud</string>
|
||||
<string name="revanced_debug_logs_copied_to_clipboard">Logid kopeeritud</string>
|
||||
<string name="revanced_debug_logs_failed_to_export">Logide eksportimine ebaõnnestus: $s</string>
|
||||
<string name="revanced_debug_logs_clear_buffer_title">Puhasta silumislogid</string>
|
||||
<string name="revanced_debug_logs_clear_buffer_summary">Puhastab kõik salvestatud ReVanced silumislogid</string>
|
||||
<string name="revanced_debug_logs_clear_toast">Logid puhastatud</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_hide_album_cards_title">Peida albumikaardid</string>
|
||||
@@ -477,9 +491,10 @@ Helitugevuse reguleerimiseks pühkige ekraani paremal küljel vertikaalselt"</st
|
||||
<string name="revanced_swipe_overlay_background_opacity_title">Pühkiva katte tausta läbipaistvus</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_summary">Läbipaistvuse väärtus vahemikus 0-100</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">Pühkiva katte läbipaistvus peab olema vahemikus 0-100</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_title">Liigutamise ülekatte edenemisriba värv</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_summary">Helitugevuse ja heleduse juhtnuppude edenemisriba värv</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_invalid_toast">Vigane edenemisriba värv</string>
|
||||
<string name="revanced_swipe_overlay_progress_brightness_color_title">Pühkige ekraani heleduse värvi</string>
|
||||
<string name="revanced_swipe_overlay_progress_brightness_color_summary">Heleduse juhtnuppude edenemisriba värv</string>
|
||||
<string name="revanced_swipe_overlay_progress_volume_color_title">Pühkige ekraani helitugevuse värvi</string>
|
||||
<string name="revanced_swipe_overlay_progress_volume_color_summary">Helitugevuse juhtnuppude edenemisriba värv</string>
|
||||
<string name="revanced_swipe_text_overlay_size_title">Liigutamise ülekatte teksti suurus</string>
|
||||
<string name="revanced_swipe_text_overlay_size_summary">Liigutamise ülekatte teksti suurus vahemikus 1–30</string>
|
||||
<string name="revanced_swipe_text_overlay_size_invalid_toast">Teksti suurus peab olema vahemikus 1–30</string>
|
||||
@@ -1322,6 +1337,22 @@ Selle lubamine võib avada kõrgema video kvaliteedi"</string>
|
||||
<string name="microg_settings_title">GmsCore seaded</string>
|
||||
<string name="microg_settings_summary">GmsCore seaded</string>
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
<string name="revanced_disable_haptic_feedback_title">Haptiline tagasiside</string>
|
||||
<string name="revanced_disable_haptic_feedback_summary">Muuda haptilist tagasisidet</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_title">Keela peatükkide hääled</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_summary_on">Peatükkide hääled on keelatud</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_summary_off">Peatükkide hääled on lubatud</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_title">Keela täpse otsingu hääled</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_on">Täpse otsimise haptika on keelatud</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_off">Täpse otsingu hääled on lubatud</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_title">Keela otsimise tagasivõtmise haptika</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_summary_on">Otsimise tagasivõtmise haptika on keelatud</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_summary_off">Otsimise tagasivõtmise haptika on lubatud</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_title">Keela suumimise hääled</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_on">Suumi haptika on keelatud</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_off">Suumi haptika on lubatud</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
<string name="microg_offline_account_login_error">Kui sa hiljuti muutsid oma konto sisselogimisandmeid, siis eemalda ja installeeri MicroG uuesti.</string>
|
||||
</patch>
|
||||
@@ -1340,11 +1371,6 @@ Selle lubamine võib avada kõrgema video kvaliteedi"</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_on">Jälgimise päringuparameeter eemaldatakse linkidest</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_off">Jälgimise päringuparameeter ei eemaldata linkidest</string>
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
<string name="revanced_disable_zoom_haptics_title">Keela suumimise hääled</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">Hääled on keelatud</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">Hääled on lubatud</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">Sunni originaalheli keel</string>
|
||||
<string name="revanced_force_original_audio_summary_on">Algse helikeele kasutamine</string>
|
||||
@@ -1372,7 +1398,7 @@ Selle lubamine võib avada kõrgema video kvaliteedi"</string>
|
||||
</patch>
|
||||
<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_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>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
@@ -1384,6 +1410,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_parse_exception">Kehtetud kohandatud video taasesituse kiirused</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_summary">Taasesituse kiirus vahemikus 0-8</string>
|
||||
</patch>
|
||||
|
||||
@@ -199,6 +199,8 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
</patch>
|
||||
<patch id="misc.links.bypassURLRedirectsPatch">
|
||||
@@ -207,8 +209,6 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.privacy.removeTrackingQueryParameterPatch">
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
|
||||
</patch>
|
||||
|
||||
@@ -250,6 +250,8 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
</patch>
|
||||
<patch id="misc.links.bypassURLRedirectsPatch">
|
||||
@@ -258,8 +260,6 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.privacy.removeTrackingQueryParameterPatch">
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
|
||||
</patch>
|
||||
|
||||
@@ -36,6 +36,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Haluatko jatkaa?</string>
|
||||
<string name="revanced_settings_reset">Nollaa</string>
|
||||
<string name="revanced_settings_reset_color">Nollaa väri</string>
|
||||
<string name="revanced_settings_color_invalid">Virheellinen väri</string>
|
||||
<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_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_04_general_title">Yleiset</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_11_misc_title">Sekalaiset</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_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_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_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>
|
||||
@@ -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.
|
||||
|
||||
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 id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<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>
|
||||
<!-- '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_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.
|
||||
This button usually appears when searching for a YT creator. -->
|
||||
<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_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_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_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>
|
||||
@@ -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>
|
||||
</patch>
|
||||
<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_off">Ele on käytössä</string>
|
||||
</patch>
|
||||
<patch id="interaction.seekbar.enableSeekbarTappingPatch">
|
||||
<string name="revanced_seekbar_tapping_title">Ota kelaus 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_off">Kelaus napauttamalla ei ole käytössä</string>
|
||||
<string name="revanced_seekbar_tapping_title">Ota etsintä napauttamalla käyttöön</string>
|
||||
<string name="revanced_seekbar_tapping_summary_on">Etsintä napauttamalla on käytössä</string>
|
||||
<string name="revanced_seekbar_tapping_summary_off">Etsintä napauttamalla ei ole käytössä</string>
|
||||
</patch>
|
||||
<patch id="interaction.swipecontrols.swipeControlsResourcePatch">
|
||||
<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>
|
||||
<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_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>
|
||||
<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_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>
|
||||
@@ -466,22 +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_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_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_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_invalid_toast">Pyyhkäisypeittokuvan läpinäkymättömyyden tulee olla 0–100 välillä</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_title">Pyyhkäisypeittokuvan edistymispalkin väri</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_summary">Äänenvoimakkuuden ja kirkkauden säätimien edistymispalkin väri</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_invalid_toast">Virheellinen edistymispalkin väri</string>
|
||||
<string name="revanced_swipe_text_overlay_size_title">Pyyhkäisypeittokuvan tekstin koko</string>
|
||||
<string name="revanced_swipe_text_overlay_size_summary">Pyyhkäisypeittokuvan tekstin koko 1–30 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_overlay_progress_brightness_color_title">Kirkkauspyyhkäisyn peittokuvan väri</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_threshold_title">Pyyhkäisyn kynnysraja</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_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_2">Vaakasuuntainen peittokuva (minimaalinen – ylhäällä)</string>
|
||||
<string name="revanced_swipe_overlay_style_entry_3">Vaakasuuntainen peittokuva (minimaalinen – keskellä)</string>
|
||||
@@ -530,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>
|
||||
<!-- '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. -->
|
||||
<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. -->
|
||||
<string name="revanced_hide_clip_button_title">Piilota Klippi</string>
|
||||
<string name="revanced_hide_clip_button_summary_on">Klippi-painike on piilotettu</string>
|
||||
@@ -679,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>
|
||||
</patch>
|
||||
<patch id="layout.hide.seekbar.hideSeekbarPatch">
|
||||
<string name="revanced_hide_seekbar_title">Piilota liukusäädin videosoittimessa</string>
|
||||
<string name="revanced_hide_seekbar_summary_on">Videosoittimen liukusäädin on piilotettu</string>
|
||||
<string name="revanced_hide_seekbar_summary_off">Videosoittimen liukusäädin näytetään</string>
|
||||
<string name="revanced_hide_seekbar_thumbnail_title">Piilota liukusäädin videon pikkukuvissa</string>
|
||||
<string name="revanced_hide_seekbar_thumbnail_summary_on">Pikkukuvan liukusäädin on piilotettu</string>
|
||||
<string name="revanced_hide_seekbar_thumbnail_summary_off">Pikkukuvan liukusäädin näytetään</string>
|
||||
<string name="revanced_hide_seekbar_title">Piilota etenemispalkki videosoittimessa</string>
|
||||
<string name="revanced_hide_seekbar_summary_on">Videosoittimen etenemispalkki on piilotettu</string>
|
||||
<string name="revanced_hide_seekbar_summary_off">Videosoittimen etenemispalkki näytetään</string>
|
||||
<string name="revanced_hide_seekbar_thumbnail_title">Piilota etenemispalkki videon pikkukuvissa</string>
|
||||
<string name="revanced_hide_seekbar_thumbnail_summary_on">Pikkukuvan etenemispalkki on piilotettu</string>
|
||||
<string name="revanced_hide_seekbar_thumbnail_summary_off">Pikkukuvan etenemispalkki näytetään</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.shorts.hideShortsComponentsResourcePatch">
|
||||
<string name="revanced_shorts_player_screen_title">Shorts-soitin</string>
|
||||
@@ -885,18 +909,18 @@ Rajoitus: Ei-tykkäykset eivät välttämättä näy incognito-tilassa"</string>
|
||||
</patch>
|
||||
<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_summary_on">Liukusäätimen 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_legacy_summary_on">Koko näytön liukusäätimen 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_dialog_message">"Tämä palauttaa myös pienoiskuvat livestriimeissä, joilla ei ole liukusäätimen pikkukuvia.
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_summary_on">Etenemispalkin pikkukuvat ovat korkealaatuisia</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 etenemispalkin pikkukuvat ovat korkealaatuisia</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 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>
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_title">Palauta vanhat liukusäätimen 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_off">Liukusäätimen pikkukuvat näkyvät kokoruututilassa</string>
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_title">Palauta vanhat etenemispalkin pikkukuvat</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">Etenemispalkin pikkukuvat näkyvät kokoruututilassa</string>
|
||||
</patch>
|
||||
<patch id="layout.sponsorblock.sponsorBlockResourcePatch">
|
||||
<string name="revanced_sb_enable_sb">Ota SponsorBlock käyttöön</string>
|
||||
@@ -1017,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_once">Ohita automaattisesti kerran</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_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>
|
||||
@@ -1229,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_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_seekbar_custom_color_title">Ota oma liukusäätimen 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_off">Alkuperäinen liukusäätimen 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_summary">Liukusäätimen väri</string>
|
||||
<string name="revanced_seekbar_custom_color_accent_title">Oma liukusäätimen korostusväri</string>
|
||||
<string name="revanced_seekbar_custom_color_accent_summary">Liukusäätimen korostusväri</string>
|
||||
<string name="revanced_seekbar_custom_color_invalid">Virheellinen liukusäätimen väriarvo</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 etenemispalkin 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 etenemispalkin väri</string>
|
||||
<string name="revanced_seekbar_custom_color_primary_summary">Etenemispalkin väri</string>
|
||||
<string name="revanced_seekbar_custom_color_accent_title">Oma etenemispalkin korostusväri</string>
|
||||
<string name="revanced_seekbar_custom_color_accent_summary">Etenemispalkin korostusväri</string>
|
||||
<string name="revanced_seekbar_custom_color_invalid">Virheellinen etenemispalkin väriarvo</string>
|
||||
</patch>
|
||||
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
|
||||
<string name="revanced_bypass_image_region_restrictions_title">Ohita kuvien alueelliset rajoitukset</string>
|
||||
@@ -1313,6 +1337,22 @@ Tämä voi avata korkealaatuisemmat videot"</string>
|
||||
<string name="microg_settings_title">GmsCore-asetukset</string>
|
||||
<string name="microg_settings_summary">GmsCoren asetukset</string>
|
||||
</patch>
|
||||
<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_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 id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
<string name="microg_offline_account_login_error">Jos olet äskettäin muuttanut tilisi kirjautumistietoja, poista ja asenna MicroG uudelleen.</string>
|
||||
</patch>
|
||||
@@ -1331,11 +1371,6 @@ Tämä voi avata korkealaatuisemmat videot"</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_on">Seurantakyselyparametrit poistetaan linkeistä</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_off">Seurantakyselyparametrejä ei poisteta linkeistä</string>
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
<string name="revanced_disable_zoom_haptics_title">Poista zoomaushaptiikka käytöstä</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">Haptiikka ei ole käytössä</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">Haptiikka on käytössä</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">Pakota alkuperäinen äänen kieli</string>
|
||||
<string name="revanced_force_original_audio_summary_on">Käytetään alkuperäistä ääntä</string>
|
||||
@@ -1363,7 +1398,6 @@ Tämä voi avata korkealaatuisemmat videot"</string>
|
||||
</patch>
|
||||
<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_summary_on">Painike näytetään</string>
|
||||
<string name="revanced_playback_speed_dialog_button_summary_off">Painiketta ei näytetä</string>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
|
||||
@@ -117,6 +117,11 @@ Tapikin ang pindutan ng pagpapatuloy at payagan ang mga pagbabago sa pag-optimiz
|
||||
<string name="revanced_debug_protobuffer_title">Mag-log protocol buffer</string>
|
||||
<string name="revanced_debug_protobuffer_summary_on">Kasama sa mga debug log ang proto buffer</string>
|
||||
<string name="revanced_debug_protobuffer_summary_off">Ang mga debug log ay hindi kasama ang proto buffer</string>
|
||||
<string name="revanced_debug_protobuffer_user_dialog_message">"Ang pagpapagana sa setting na ito ay magtatala ng karagdagang data ng layout, kabilang ang on-screen na teksto para sa ilang bahagi ng UI.
|
||||
|
||||
Maaaring makatulong ito na matukoy ang mga bahagi kapag lumilikha ng mga custom na filter.
|
||||
|
||||
Gayunpaman, ang pagpapagana nito ay magtatala rin ng ilang data ng user gaya ng iyong IP address."</string>
|
||||
<string name="revanced_debug_stacktrace_title">Mga bakas ng stack ng log</string>
|
||||
<string name="revanced_debug_stacktrace_summary_on">Kasama sa mga debug log ang stack trace</string>
|
||||
<string name="revanced_debug_stacktrace_summary_off">Hindi kasama sa mga debug log ang stack trace</string>
|
||||
@@ -126,6 +131,15 @@ Tapikin ang pindutan ng pagpapatuloy at payagan ang mga pagbabago sa pag-optimiz
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"Ang pag-off ng mga toast ng error ay nagtatago ng lahat ng mga abiso ng error ng ReVanced.
|
||||
|
||||
Hindi ka aabisuhan ng anumang hindi inaasahang mga kaganapan."</string>
|
||||
<string name="revanced_debug_export_logs_to_clipboard_title">I-export ang mga debug log</string>
|
||||
<string name="revanced_debug_export_logs_to_clipboard_summary">Kinokopya ang mga ReVanced debug log sa clipboard</string>
|
||||
<string name="revanced_debug_logs_disabled">Hindi pinagana ang pag-log ng debug</string>
|
||||
<string name="revanced_debug_logs_none_found">Walang nakitang mga log</string>
|
||||
<string name="revanced_debug_logs_copied_to_clipboard">Nakopya ang mga log</string>
|
||||
<string name="revanced_debug_logs_failed_to_export">Nabigong i-export ang mga log: $s</string>
|
||||
<string name="revanced_debug_logs_clear_buffer_title">I-clear ang mga debug log</string>
|
||||
<string name="revanced_debug_logs_clear_buffer_summary">Iki-clear ang lahat ng nakaimbak na ReVanced debug log</string>
|
||||
<string name="revanced_debug_logs_clear_toast">Na-clear ang mga log</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_hide_album_cards_title">Itago ang mga album card</string>
|
||||
@@ -477,9 +491,10 @@ Ayusin ang volume sa pamamagitan ng pag-swipe nang patayo sa kanang bahagi ng sc
|
||||
<string name="revanced_swipe_overlay_background_opacity_title">Transparency ng background ng swipe overlay</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_summary">Halaga ng opacity sa pagitan ng 0-100</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">Ang opacity ng swipe ay dapat nasa pagitan ng 0-100</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_title">Kulay ng progress bar ng swipe overlay</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_summary">Ang kulay ng progress bar para sa mga kontrol ng volume at brightness</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_invalid_toast">Hindi wasto ang kulay ng progress bar</string>
|
||||
<string name="revanced_swipe_overlay_progress_brightness_color_title">Kulay ng liwanag ng swipe overlay</string>
|
||||
<string name="revanced_swipe_overlay_progress_brightness_color_summary">Ang kulay ng progress bar para sa mga kontrol ng liwanag</string>
|
||||
<string name="revanced_swipe_overlay_progress_volume_color_title">Kulay ng volume ng swipe overlay</string>
|
||||
<string name="revanced_swipe_overlay_progress_volume_color_summary">Ang kulay ng progress bar para sa mga kontrol ng volume</string>
|
||||
<string name="revanced_swipe_text_overlay_size_title">Laki ng teksto ng swipe overlay</string>
|
||||
<string name="revanced_swipe_text_overlay_size_summary">Ang laki ng teksto para sa swipe overlay sa pagitan ng 1-30</string>
|
||||
<string name="revanced_swipe_text_overlay_size_invalid_toast">Ang laki ng teksto ay dapat sa pagitan ng 1-30</string>
|
||||
@@ -1320,6 +1335,22 @@ Ang pagpapagana nito ay maaaring magbukas ng mas mataas na kalidad ng video"</st
|
||||
<string name="microg_settings_title">Mga Setting ng GmsCore</string>
|
||||
<string name="microg_settings_summary">Mga setting para sa GmsCore</string>
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
<string name="revanced_disable_haptic_feedback_title">Haptic feedback</string>
|
||||
<string name="revanced_disable_haptic_feedback_summary">Baguhin ang haptic feedback</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_title">Huwag paganahin ang chapters haptics</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_summary_on">Hindi pinagana ang Chapters haptics</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_summary_off">Pinagana ang Chapters haptics</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_title">Huwag paganahin ang tumpak na paghahanap ng haptics</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_on">Hindi pinagana ang tumpak na paghahanap ng haptics</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_off">Pinagana ang tumpak na paghahanap ng haptics</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_title">Huwag paganahin ang seek undo haptics</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_summary_on">Hindi pinagana ang seek undo haptics</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_summary_off">Pinagana ang seek undo haptics</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_title">Huwag paganahin ang zoom haptics</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_on">Hindi pinagana ang zoom haptics</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_off">Pinagana ang zoom haptics</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
<string name="microg_offline_account_login_error">Kung kamakailan mo lang binago ang mga detalye sa pag-login sa iyong account, i-uninstall at muling i-install ang MicroG.</string>
|
||||
</patch>
|
||||
@@ -1338,11 +1369,6 @@ Ang pagpapagana nito ay maaaring magbukas ng mas mataas na kalidad ng video"</st
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_on">Ang parameter ng query sa pagsubaybay ay tinanggal mula sa mga link</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_off">Ang parameter ng query sa pagsubaybay ay hindi inaalis sa mga link</string>
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
<string name="revanced_disable_zoom_haptics_title">Huwag paganahin ang zoom haptics</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">Naka-disable ang Haptics</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">Pinagana ang Haptics</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">Pilitin ang orihinal na wika ng audio</string>
|
||||
<string name="revanced_force_original_audio_summary_on">Ginagamit ang orihinal na wika ng audio</string>
|
||||
@@ -1370,7 +1396,7 @@ Ang pagpapagana nito ay maaaring magbukas ng mas mataas na kalidad ng video"</st
|
||||
</patch>
|
||||
<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_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>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
@@ -1382,6 +1408,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_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_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_summary">Tugtugin ang bilis ng playback sa pagitan ng 0-8</string>
|
||||
</patch>
|
||||
|
||||
@@ -117,6 +117,11 @@ Appuyez sur le bouton Continuer et autorisez les modifications."</string>
|
||||
<string name="revanced_debug_protobuffer_title">Journaliser les protobufs</string>
|
||||
<string name="revanced_debug_protobuffer_summary_on">Les journaux de débogage incluent les protocol buffers</string>
|
||||
<string name="revanced_debug_protobuffer_summary_off">Les journaux de débogage n\'incluent pas les protocol buffers</string>
|
||||
<string name="revanced_debug_protobuffer_user_dialog_message">"En activant cette option, des données supplémentaires relatives à la mise en page seront enregistrées, dont le texte à l'écran de certains composants de l'interface utilisateur.
|
||||
|
||||
Cela peut aider à identifier les composants lors de la création de filtres personnalisés.
|
||||
|
||||
Toutefois, l'activation de cette option entraînera également l'enregistrement de certaines données utilisateur, telles que votre adresse IP."</string>
|
||||
<string name="revanced_debug_stacktrace_title">Journaliser les stack traces</string>
|
||||
<string name="revanced_debug_stacktrace_summary_on">Les journaux de débogage incluent les stack traces</string>
|
||||
<string name="revanced_debug_stacktrace_summary_off">Les journaux de débogage n\'incluent pas les stack traces</string>
|
||||
@@ -126,6 +131,15 @@ Appuyez sur le bouton Continuer et autorisez les modifications."</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"La désactivation des messages toasts d'erreur masque toutes les notifications d'erreur ReVanced.
|
||||
|
||||
Vous ne serez pas informé des événements inattendus."</string>
|
||||
<string name="revanced_debug_export_logs_to_clipboard_title">Exporter les journaux de débogage</string>
|
||||
<string name="revanced_debug_export_logs_to_clipboard_summary">Copie les journaux de débogage ReVanced dans le presse-papiers</string>
|
||||
<string name="revanced_debug_logs_disabled">La journalisation de débogage est désactivée</string>
|
||||
<string name="revanced_debug_logs_none_found">Aucun journal trouvé</string>
|
||||
<string name="revanced_debug_logs_copied_to_clipboard">Journaux copiés</string>
|
||||
<string name="revanced_debug_logs_failed_to_export">Échec de l\'exportation des journaux : $s</string>
|
||||
<string name="revanced_debug_logs_clear_buffer_title">Effacer les journaux de débogage</string>
|
||||
<string name="revanced_debug_logs_clear_buffer_summary">Efface tous les journaux de débogage ReVanced stockés</string>
|
||||
<string name="revanced_debug_logs_clear_toast">Journaux effacés</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_hide_album_cards_title">Masquer les fiches d\'album</string>
|
||||
@@ -477,9 +491,10 @@ Réglez le volume en balayant verticalement sur le côté droit de l'écran"</st
|
||||
<string name="revanced_swipe_overlay_background_opacity_title">Opacité de l\'arrière-plan de l\'overlay des gestes</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_summary">Valeur de l\'opacité entre 0 et 100</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">L\'opacité doit être comprise entre 0 et 100 pour les gestes</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_title">Couleur de la barre de progression de l\'overlay des gestes</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_summary">La couleur de la barre de progression pour les commandes de volume et de luminosité</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_invalid_toast">Couleur de barre de progression invalide</string>
|
||||
<string name="revanced_swipe_overlay_progress_brightness_color_title">Couleur de l\'overlay des gestes de contrôle de la luminosité</string>
|
||||
<string name="revanced_swipe_overlay_progress_brightness_color_summary">La couleur de la barre de progression des commandes de luminosité</string>
|
||||
<string name="revanced_swipe_overlay_progress_volume_color_title">Couleur de l\'overlay des gestes de contrôle du volume</string>
|
||||
<string name="revanced_swipe_overlay_progress_volume_color_summary">La couleur de la barre de progression des commandes de volume</string>
|
||||
<string name="revanced_swipe_text_overlay_size_title">Taille du texte de l\'overlay des gestes</string>
|
||||
<string name="revanced_swipe_text_overlay_size_summary">La taille du texte de l\'overlay des gestes comprise entre 1 et 30</string>
|
||||
<string name="revanced_swipe_text_overlay_size_invalid_toast">La taille du texte doit être comprise entre 1 et 30</string>
|
||||
@@ -1321,6 +1336,22 @@ Activer cette option peut déverrouiller des qualités vidéo supérieures"</str
|
||||
<string name="microg_settings_title">Paramètres GmsCore</string>
|
||||
<string name="microg_settings_summary">Paramètres relatifs à GmsCore</string>
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
<string name="revanced_disable_haptic_feedback_title">Retour haptique</string>
|
||||
<string name="revanced_disable_haptic_feedback_summary">Modifiez les retours haptiques</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_title">Désactiver le retour haptique des chapitres</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_summary_on">Le retour haptique des chapitres est désactivé</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_summary_off">Le retour haptique des chapitres est activé</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_title">Désactiver le retour haptique de la recherche précise</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_on">Le retour haptique de la recherche précise est désactivé</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_off">Le retour haptique de la recherche précise est activé</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_title">Désactiver le retour haptique d\'annulation de la recherche</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_summary_on">Le retour haptique d\'annulation de la recherche est désactivé</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_summary_off">Le retour haptique d\'annulation de la recherche est activé</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_title">Désactiver le retour haptique des actions de zoom</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_on">Le retour haptique du zoom est désactivé</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_off">Le retour haptique du zoom est activé</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
<string name="microg_offline_account_login_error">Si vous avez récemment modifié vos informations de connexion, désinstallez et réinstallez MicroG.</string>
|
||||
</patch>
|
||||
@@ -1339,11 +1370,6 @@ Activer cette option peut déverrouiller des qualités vidéo supérieures"</str
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_on">Le paramètre de requête destiné au suivi est supprimé des liens</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_off">Le paramètre de requête destiné au suivi n\'est pas supprimé des liens</string>
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
<string name="revanced_disable_zoom_haptics_title">Désactiver le retour haptique des actions de zoom</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">Le retour haptique est désactivé</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">Le retour haptique est activé</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">Forcer la langue audio d\'origine</string>
|
||||
<string name="revanced_force_original_audio_summary_on">Utilisation de la langue audio d\'origine</string>
|
||||
@@ -1371,7 +1397,7 @@ Activer cette option peut déverrouiller des qualités vidéo supérieures"</str
|
||||
</patch>
|
||||
<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_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>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
@@ -1383,6 +1409,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_parse_exception">Vitesses de lecture personnalisées invalides</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_summary">Vitesse de lecture comprise entre 0 et 8</string>
|
||||
</patch>
|
||||
|
||||
@@ -117,6 +117,11 @@ Brúigh an cnaipe leanúnaí agus ligean athruithe optúimíochta."</string>
|
||||
<string name="revanced_debug_protobuffer_title">Maolán prótacal logála</string>
|
||||
<string name="revanced_debug_protobuffer_summary_on">Cuimsíonn logaí dífhabhtaithe maolán</string>
|
||||
<string name="revanced_debug_protobuffer_summary_off">Ní chuimsíonn logaí dífhabhtaithe maolán proto</string>
|
||||
<string name="revanced_debug_protobuffer_user_dialog_message">"Logálfaidh an socrú seo sonraí breise leagain amach, lena n-áirítear téacs ar an scáileán do chomhpháirteanna UI áirithe.
|
||||
|
||||
Is féidir leis seo cabhrú le comhpháirteanna a aithint agus scagairí saincheaptha á gcruthú.
|
||||
|
||||
Mar sin féin, logálfaidh sé seo roinnt sonraí úsáideora freisin, mar shampla do sheoladh IP."</string>
|
||||
<string name="revanced_debug_stacktrace_title">Rianta cruach logála</string>
|
||||
<string name="revanced_debug_stacktrace_summary_on">Cuimsíonn logaí dífhabhtaithe rian cruach</string>
|
||||
<string name="revanced_debug_stacktrace_summary_off">Ní chuimsíonn logaí dífhabhtaithe rian cruach</string>
|
||||
@@ -126,6 +131,15 @@ Brúigh an cnaipe leanúnaí agus ligean athruithe optúimíochta."</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"Má mhúchtar tóstaí earráide, folaítear gach fógra earráide ReVanced.
|
||||
|
||||
Ní chuirfear ar an eolas thú faoi aon imeachtaí gan choinne."</string>
|
||||
<string name="revanced_debug_export_logs_to_clipboard_title">Easpórtáil logaí dífhabhtaithe</string>
|
||||
<string name="revanced_debug_export_logs_to_clipboard_summary">Cóipeálann sé logaí dífhabhtaithe ReVanced chuig an gearrthaisce</string>
|
||||
<string name="revanced_debug_logs_disabled">Tá logáil dífhabhtaithe díchumasaithe</string>
|
||||
<string name="revanced_debug_logs_none_found">Ní bhfuarthas aon loga</string>
|
||||
<string name="revanced_debug_logs_copied_to_clipboard">Lógaí cóipeáilte</string>
|
||||
<string name="revanced_debug_logs_failed_to_export">Theip ar lógaí a easpórtáil: $s</string>
|
||||
<string name="revanced_debug_logs_clear_buffer_title">Glan logaí dífhabhtaithe</string>
|
||||
<string name="revanced_debug_logs_clear_buffer_summary">Glanann sé gach loga dífhabhtaithe ReVanced stóráilte</string>
|
||||
<string name="revanced_debug_logs_clear_toast">Lógaí glanta</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_hide_album_cards_title">Folaigh cártaí albam</string>
|
||||
@@ -477,9 +491,10 @@ Coigeartaigh an toirt trí haisceartán go hingearach ar thaobh deas an scáile
|
||||
<string name="revanced_swipe_overlay_background_opacity_title">Réabhlóid thrasláiteachta na gcúlra léaráidí</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_summary">Luach léaráidí idir 0-100</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">Caithfidh léaráidí traslaithe a bheith idir 0-100</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_title">Dath an bharra dul chun cinn forleagain swipe</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_summary">Dath an bharra dul chun cinn le haghaidh rialuithe toirte agus gile</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_invalid_toast">Dath barra dul chun cinn neamhbhailí</string>
|
||||
<string name="revanced_swipe_overlay_progress_brightness_color_title">Dath gile forleagan swipe</string>
|
||||
<string name="revanced_swipe_overlay_progress_brightness_color_summary">Dath an bharra dul chun cinn do rialuithe gile</string>
|
||||
<string name="revanced_swipe_overlay_progress_volume_color_title">Dath toirte forleagan swipe</string>
|
||||
<string name="revanced_swipe_overlay_progress_volume_color_summary">Dath an bharra dul chun cinn do rialuithe toirte</string>
|
||||
<string name="revanced_swipe_text_overlay_size_title">Méid téacs an fhorleagain swipe</string>
|
||||
<string name="revanced_swipe_text_overlay_size_summary">Méid téacs an fhorleagain swipe idir 1-30</string>
|
||||
<string name="revanced_swipe_text_overlay_size_invalid_toast">Caithfidh an méid téacs a bheith idir 1-30</string>
|
||||
@@ -1322,6 +1337,22 @@ Is féidir le seo caighdeáin físeáin níos airde a dhíghlasáil"</string>
|
||||
<string name="microg_settings_title">Socruithe GmsCore</string>
|
||||
<string name="microg_settings_summary">Socruithe le haghaidh GmsCore</string>
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
<string name="revanced_disable_haptic_feedback_title">Aiseolas haptach</string>
|
||||
<string name="revanced_disable_haptic_feedback_summary">Athraigh aiseolas haptach</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_title">Díchumasaigh haptics caibidlí</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_summary_on">Tá haptics caibidlí díchumasaithe</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_summary_off">Tá haptics caibidlí cumasaithe</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_title">Díchumasaigh haptics beacht cuardaigh</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_on">Tá haptics beachtais díchumasaithe</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_off">Tá haptics beacht cuardaigh cumasaithe</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_title">Díchumasaigh haptics díthurais</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_summary_on">Tá haptics díthurais díchumasaithe</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_summary_off">Tá haptics díthurais cumasaithe</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_title">Díchumasaigh súmáil haptics</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_on">Tá súmáil haptics díchumasaithe</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_off">Tá súmáil haptics cumasaithe</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
<string name="microg_offline_account_login_error">Má d’athraigh tú sonraí logála isteach do chuntais le déanaí, ansin díshuiteáil agus athshuiteáil MicroG.</string>
|
||||
</patch>
|
||||
@@ -1340,11 +1371,6 @@ Is féidir le seo caighdeáin físeáin níos airde a dhíghlasáil"</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_on">Baintear paraiméadar ceisteanna rianaithe ó naisc</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_off">Ní bhaintear paraiméadar fiosrúcháin rianaithe ó naisc</string>
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
<string name="revanced_disable_zoom_haptics_title">Díchumasaigh súmáil haptics</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">Tá Haptics díchumasaithe</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">Tá Haptics cumasaithe</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">Fórsaigh teanga bhunaidh na fuaime</string>
|
||||
<string name="revanced_force_original_audio_summary_on">Ag úsáid teanga bhunaidh na fuaime</string>
|
||||
@@ -1372,7 +1398,7 @@ Is féidir le seo caighdeáin físeáin níos airde a dhíghlasáil"</string>
|
||||
</patch>
|
||||
<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_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>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
@@ -1384,6 +1410,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_parse_exception">Luasanna athsheinm saincheaptha neamhbhailí</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_summary">Luas athsheinm eatarthu 0-8</string>
|
||||
</patch>
|
||||
|
||||
@@ -199,6 +199,8 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
</patch>
|
||||
<patch id="misc.links.bypassURLRedirectsPatch">
|
||||
@@ -207,8 +209,6 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.privacy.removeTrackingQueryParameterPatch">
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
|
||||
</patch>
|
||||
|
||||
@@ -199,6 +199,8 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
</patch>
|
||||
<patch id="misc.links.bypassURLRedirectsPatch">
|
||||
@@ -207,8 +209,6 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.privacy.removeTrackingQueryParameterPatch">
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
|
||||
</patch>
|
||||
|
||||
@@ -199,6 +199,8 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
</patch>
|
||||
<patch id="misc.links.bypassURLRedirectsPatch">
|
||||
@@ -207,8 +209,6 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.privacy.removeTrackingQueryParameterPatch">
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
|
||||
</patch>
|
||||
|
||||
@@ -199,6 +199,8 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
</patch>
|
||||
<patch id="misc.links.bypassURLRedirectsPatch">
|
||||
@@ -207,8 +209,6 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.privacy.removeTrackingQueryParameterPatch">
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
|
||||
</patch>
|
||||
|
||||
@@ -117,6 +117,11 @@ Kattintson a folytatás gombra, és engedélyezze az optimalizálási módosít
|
||||
<string name="revanced_debug_protobuffer_title">Napló protokoll puffer</string>
|
||||
<string name="revanced_debug_protobuffer_summary_on">A hibakeresési naplók protopuffert tartalmaznak</string>
|
||||
<string name="revanced_debug_protobuffer_summary_off">A hibakeresési naplók nem tartalmaznak protopuffert</string>
|
||||
<string name="revanced_debug_protobuffer_user_dialog_message">"Ennek a beállításnak az engedélyezése további elrendezési adatokat fog naplózni, beleértve néhány felhasználói felületi komponens képernyőn megjelenő szövegét.
|
||||
|
||||
Ez segíthet azonosítani az összetevőket egyedi szűrők létrehozásakor.
|
||||
|
||||
Ez a funkció azonban néhány felhasználói adatot is naplóz, például az IP-címét."</string>
|
||||
<string name="revanced_debug_stacktrace_title">Naplóverem nyomai</string>
|
||||
<string name="revanced_debug_stacktrace_summary_on">A hibakeresési naplók tartalmazzák a verem nyomkövetését</string>
|
||||
<string name="revanced_debug_stacktrace_summary_off">A hibakeresési naplók nem tartalmazzák a verem nyomkövetését</string>
|
||||
@@ -126,6 +131,15 @@ Kattintson a folytatás gombra, és engedélyezze az optimalizálási módosít
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"A hibaüzenetek kikapcsolása elrejti az összes ReVanced hibaértesítést.
|
||||
|
||||
Nem fog értesülni semmilyen váratlan eseményről."</string>
|
||||
<string name="revanced_debug_export_logs_to_clipboard_title">Hibakeresési naplók exportálása</string>
|
||||
<string name="revanced_debug_export_logs_to_clipboard_summary">A ReVanced hibakeresési naplóit a vágólapra másolja</string>
|
||||
<string name="revanced_debug_logs_disabled">A hibakeresési naplózás ki van kapcsolva</string>
|
||||
<string name="revanced_debug_logs_none_found">Nem találhatók naplók</string>
|
||||
<string name="revanced_debug_logs_copied_to_clipboard">Naplók másolva</string>
|
||||
<string name="revanced_debug_logs_failed_to_export">Nem sikerült exportálni a naplókat: $s</string>
|
||||
<string name="revanced_debug_logs_clear_buffer_title">Hibakeresési naplók törlése</string>
|
||||
<string name="revanced_debug_logs_clear_buffer_summary">Törli az összes tárolt ReVanced hibakeresési naplót</string>
|
||||
<string name="revanced_debug_logs_clear_toast">Naplók törölve</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_hide_album_cards_title">Album kártyák elrejtése</string>
|
||||
@@ -477,9 +491,10 @@ A hangerő a képernyő jobb oldalán függőlegesen húzva állítható be"</st
|
||||
<string name="revanced_swipe_overlay_background_opacity_title">Az áthúzás átfedésének átlátszósága</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_summary">Az átlátszóság értéke 0-100 között legyen</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">A csúsztatás átlátszóságának 0 és 100 között kell lennie</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_title">Áthúzás fedvény folyamatjelző sáv színe</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_summary">A hangerő és fényerő szabályozók folyamatjelző sávjának színe</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_invalid_toast">Érvénytelen folyamatjelző sávszín</string>
|
||||
<string name="revanced_swipe_overlay_progress_brightness_color_title">A húzással előhívható fedőréteg fényerejének színe</string>
|
||||
<string name="revanced_swipe_overlay_progress_brightness_color_summary">A fényerő-szabályozókhoz tartozó folyamatjelző sáv színe</string>
|
||||
<string name="revanced_swipe_overlay_progress_volume_color_title">A húzással előhívható fedőréteg hangerejének színe</string>
|
||||
<string name="revanced_swipe_overlay_progress_volume_color_summary">A hangerő-szabályozókhoz tartozó folyamatjelző sáv színe</string>
|
||||
<string name="revanced_swipe_text_overlay_size_title">Áthúzás fedvény szövegmérete</string>
|
||||
<string name="revanced_swipe_text_overlay_size_summary">Az áthúzás fedvény szövegmérete 1-30 között</string>
|
||||
<string name="revanced_swipe_text_overlay_size_invalid_toast">A szövegméretnek 1-30 között kell lennie</string>
|
||||
@@ -1319,6 +1334,22 @@ Ez a beállítás lehetővé teszi a magasabb videóminőségek feloldását"</s
|
||||
<string name="microg_settings_title">GmsCore beállítások</string>
|
||||
<string name="microg_settings_summary">A GmsCore beállításai</string>
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
<string name="revanced_disable_haptic_feedback_title">Haptikus visszajelzés</string>
|
||||
<string name="revanced_disable_haptic_feedback_summary">Haptikus visszajelzés módosítása</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_title">Fejezetek haptikus visszajelzésének letiltása</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_summary_on">A fejezetek haptikus visszajelzése le van tiltva</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_summary_off">A fejezetek haptikus visszajelzése engedélyezve van</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_title">Pontos keresés haptikus visszajelzésének letiltása</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_on">A pontos keresés haptikus visszajelzése ki van kapcsolva</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_off">A pontos keresés haptikus visszajelzése engedélyezve van</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_title">Keresés visszavonása haptikus visszajelzésének letiltása</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_summary_on">A keresés visszavonása haptikus visszajelzése ki van kapcsolva</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_summary_off">A keresés visszavonása haptikus visszajelzése be van kapcsolva</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_title">Haptikus zoom letiltása</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_on">Haptikus zoom le van tiltva</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_off">Haptikus zoom be van kapcsolva</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
<string name="microg_offline_account_login_error">Ha nemrég módosította a fiókja bejelentkezési adatait, távolítsa el, majd telepítse újra a MicroG-t.</string>
|
||||
</patch>
|
||||
@@ -1337,11 +1368,6 @@ Ez a beállítás lehetővé teszi a magasabb videóminőségek feloldását"</s
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_on">A nyomkövetési lekérdezési paraméter eltávolítva a linkekből</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_off">A nyomkövetési lekérdezési paraméter nincs eltávolítva a linkekből</string>
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
<string name="revanced_disable_zoom_haptics_title">Haptikus zoom letiltása</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">A haptikus zoom letiltva</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">A haptikus zoom engedélyezve</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">Eredeti hang kikényszerítése</string>
|
||||
<string name="revanced_force_original_audio_summary_on">Eredeti hang használata a hang nyelvén</string>
|
||||
@@ -1369,7 +1395,7 @@ Ez a beállítás lehetővé teszi a magasabb videóminőségek feloldását"</s
|
||||
</patch>
|
||||
<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_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>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
@@ -1381,6 +1407,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_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_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_summary">Lejátszási sebesség 0-8 között</string>
|
||||
</patch>
|
||||
|
||||
@@ -117,6 +117,11 @@ MicroG-ի համար մարտկոցի օպտիմալացումը անջատել
|
||||
<string name="revanced_debug_protobuffer_title">Բուֆերի արձանագրությունը մտնել</string>
|
||||
<string name="revanced_debug_protobuffer_summary_on">Մարմնացման առաջնորդման մատնանշումները պարունակում են բուֆերի տարր</string>
|
||||
<string name="revanced_debug_protobuffer_summary_off">Մարմնացման առաջնորդման մատնանշումները ներառում են բուֆերի տարր</string>
|
||||
<string name="revanced_debug_protobuffer_user_dialog_message">"Այս կարգավորումը միացնելը կգրանցի լրացուցիչ դասավորության տվյալներ, ներառյալ էկրանի տեքստը որոշ UI բաղադրիչների համար։
|
||||
|
||||
Սա կարող է օգնել բացահայտել բաղադրիչները՝ հատուկ զտիչներ ստեղծելիս։
|
||||
|
||||
Այնուամենայնիվ, սա միացնելը կգրանցի նաև օգտատիրոջ որոշ տվյալներ, ինչպիսիք են ձեր IP հասցեն:"</string>
|
||||
<string name="revanced_debug_stacktrace_title">Մուտքագրել կուտակային կետերի հետքեր</string>
|
||||
<string name="revanced_debug_stacktrace_summary_on">Մարմնացման առաջնորդման մատնանշումները պարունակում են կուտակային կետի հետք</string>
|
||||
<string name="revanced_debug_stacktrace_summary_off">Մարմնացման առաջնորդման մատնանշումները չեն պարունակում կուտակային կետի հետք</string>
|
||||
@@ -126,6 +131,15 @@ MicroG-ի համար մարտկոցի օպտիմալացումը անջատել
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"Սխալների տոաստի անջատումը թաքցնում է ReVanced-ի բոլոր սխալների ծանուցումները։
|
||||
|
||||
Դուք չեք ստանա ան予期した出来事ի մասին ծանուցում։"</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 id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_hide_album_cards_title">Թաքցնել ալբոմի քարտերը</string>
|
||||
@@ -477,9 +491,10 @@ MicroG-ի համար մարտկոցի օպտիմալացումը անջատել
|
||||
<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_invalid_toast">Սողալու անթափանցությունը պետք է լինի 0-100 միջակայքում</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_title">Սահեցրեք շերտի առաջընթացի սանդղակի գույնը</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_summary">Ձայնի և պայծառության կառավարման համար նախատեսված առաջընթացի սանդղակի գույնը</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_invalid_toast">Առաջընթացի սանդղակի անվավեր գույն</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>
|
||||
@@ -1322,6 +1337,22 @@ Mini-player-ը կարող է գրավվել էկրանից դուրս՝ դեպի
|
||||
<string name="microg_settings_title">GmsCore կարգավորումներ</string>
|
||||
<string name="microg_settings_summary">GmsCore-ի կարգավորումներ</string>
|
||||
</patch>
|
||||
<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_summary_on">Զուումի հպումն անջատված է</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_off">Զուումի հպումը միացված է</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
<string name="microg_offline_account_login_error">Եթե վերջերս փոխել եք ձեր հաշվի մուտքի տվյալները, ապա ջնջեք և նորից տեղադրեք MicroG-ն:</string>
|
||||
</patch>
|
||||
@@ -1340,11 +1371,6 @@ Mini-player-ը կարող է գրավվել էկրանից դուրս՝ դեպի
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_on">Հետևողականության հարցումի պարամետրը հեռացվում է հղումներից</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_off">Հետևողականության հարցումի պարամետրը չի հեռացվում հղումներից</string>
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
<string name="revanced_disable_zoom_haptics_title">Զուումի հպումների ակտիվացումը անջատել</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">Հպումները անջատված են</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">Հպումները ակտիվացված են</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">Բնօրինակ ձայն օգտագործել լեզուն</string>
|
||||
<string name="revanced_force_original_audio_summary_on">Օգտագործելով ձայնային օրիգինալ լեզուն</string>
|
||||
@@ -1372,7 +1398,7 @@ Mini-player-ը կարող է գրավվել էկրանից դուրս՝ դեպի
|
||||
</patch>
|
||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||
<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>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
@@ -1384,6 +1410,7 @@ Mini-player-ը կարող է գրավվել էկրանից դուրս՝ դեպի
|
||||
<string name="revanced_custom_playback_speeds_invalid">Պատրաստված արագությունները պետք է լինեն ավելի քիչ քան %s</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">Չի աշխատում պատրաստված վերարտադրման արագությունները։</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_summary">Վերարտադրման արագությունը 0-8 միջակայքում</string>
|
||||
</patch>
|
||||
|
||||
@@ -41,7 +41,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_restart">Mulai ulang</string>
|
||||
<string name="revanced_settings_import">Impor</string>
|
||||
<string name="revanced_settings_import_copy">Salin</string>
|
||||
<string name="revanced_settings_import_reset">Pengaturan ReVanced diatur ke 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_failure_parse">Impor gagal: %s</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.
|
||||
|
||||
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_summary">Impor / Ekspor setelan ReVanced</string>
|
||||
<!-- Settings about dialog. -->
|
||||
@@ -117,6 +117,11 @@ Ketuk tombol lanjutkan dan izinkan perubahan pengoptimalan."</string>
|
||||
<string name="revanced_debug_protobuffer_title">Buffer protokol log</string>
|
||||
<string name="revanced_debug_protobuffer_summary_on">Log debug termasuk buffer proto</string>
|
||||
<string name="revanced_debug_protobuffer_summary_off">Log debug tidak menyertakan buffer proto</string>
|
||||
<string name="revanced_debug_protobuffer_user_dialog_message">"Mengaktifkan setelan ini akan mencatat data tata letak tambahan, termasuk teks pada layar untuk beberapa komponen UI.
|
||||
|
||||
Ini dapat membantu mengidentifikasi komponen saat membuat filter khusus.
|
||||
|
||||
Namun, mengaktifkan ini juga akan mencatat beberapa data pengguna seperti alamat IP Anda."</string>
|
||||
<string name="revanced_debug_stacktrace_title">Jejak log stack</string>
|
||||
<string name="revanced_debug_stacktrace_summary_on">Log debug menyertakan jejak stack</string>
|
||||
<string name="revanced_debug_stacktrace_summary_off">Log debug tidak menyertakan jejak stack</string>
|
||||
@@ -126,6 +131,15 @@ Ketuk tombol lanjutkan dan izinkan perubahan pengoptimalan."</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"Mematikan notifikasi kesalahan menyembunyikan semua notifikasi kesalahan ReVanced.
|
||||
|
||||
Anda tidak akan diberi tahu tentang kejadian yang tidak terduga."</string>
|
||||
<string name="revanced_debug_export_logs_to_clipboard_title">Ekspor catatan debug</string>
|
||||
<string name="revanced_debug_export_logs_to_clipboard_summary">Salin catatan debug ReVanced ke papan klip</string>
|
||||
<string name="revanced_debug_logs_disabled">Pencatatan debug dinonaktifkan</string>
|
||||
<string name="revanced_debug_logs_none_found">Tidak ditemukan catatan</string>
|
||||
<string name="revanced_debug_logs_copied_to_clipboard">Catatan disalin</string>
|
||||
<string name="revanced_debug_logs_failed_to_export">Gagal mengekspor catatan: $s</string>
|
||||
<string name="revanced_debug_logs_clear_buffer_title">Bersihkan catatan debug</string>
|
||||
<string name="revanced_debug_logs_clear_buffer_summary">Menghapus semua catatan debug ReVanced yang tersimpan</string>
|
||||
<string name="revanced_debug_logs_clear_toast">Catatan dibersihkan</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_hide_album_cards_title">Sembunyikan kartu album</string>
|
||||
@@ -477,9 +491,10 @@ Menyesuaikan volume dengan mengusap secara vertikal di sisi kanan layar"</string
|
||||
<string name="revanced_swipe_overlay_background_opacity_title">Opasitas latar belakang hamparan geser</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_summary">Nilai opasitas antara 0-100</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">Opasitas geser harus antara 0-100</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_title">Warna bilah kemajuan lapisan usap</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_summary">Warna bilah kemajuan untuk kontrol volume dan kecerahan</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_invalid_toast">Warna bilah kemajuan tidak sah</string>
|
||||
<string name="revanced_swipe_overlay_progress_brightness_color_title">Warna kecerahan lapisan usap</string>
|
||||
<string name="revanced_swipe_overlay_progress_brightness_color_summary">Warna bilah kemajuan untuk kontrol kecerahan</string>
|
||||
<string name="revanced_swipe_overlay_progress_volume_color_title">Warna volume lapisan usap</string>
|
||||
<string name="revanced_swipe_overlay_progress_volume_color_summary">Warna bilah kemajuan untuk kontrol volume</string>
|
||||
<string name="revanced_swipe_text_overlay_size_title">Ukuran teks lapisan usap</string>
|
||||
<string name="revanced_swipe_text_overlay_size_summary">Ukuran teks untuk lapisan usap antara 1-30</string>
|
||||
<string name="revanced_swipe_text_overlay_size_invalid_toast">Ukuran teks harus antara 1-30</string>
|
||||
@@ -1321,6 +1336,22 @@ Mengaktifkan ini dapat membuka kualitas video yang lebih tinggi"</string>
|
||||
<string name="microg_settings_title">Pengaturan GmsCore</string>
|
||||
<string name="microg_settings_summary">Pengaturan untuk GmsCore</string>
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
<string name="revanced_disable_haptic_feedback_title">Umpan balik sentuh getar</string>
|
||||
<string name="revanced_disable_haptic_feedback_summary">Ubah umpan balik sentuh getar</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_title">Nonaktifkan sentuh getar bab</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_summary_on">Sentuh getar bab dinonaktifkan</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_summary_off">Sentuh getar bab diaktifkan</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_title">Nonaktifkan sentuh getar pencarian presisi</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_on">Sentuh getar pencarian presisi dinonaktifkan</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_off">Sentuh getar pencarian presisi diaktifkan</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_title">Nonaktifkan sentuh getar urungkan pencarian</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_summary_on">Sentuh getar urungkan pencarian dinonaktifkan</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_summary_off">Sentuh getar urungkan pencarian diaktifkan</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_title">Matikan sentuh getar zoom</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_on">Sentuh getar zoom dinonaktifkan</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_off">Sentuh getar zoom diaktifkan</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
<string name="microg_offline_account_login_error">Jika Anda baru saja mengubah detail login akun Anda, hapus pemasangan dan ulangi memasang MicroG.</string>
|
||||
</patch>
|
||||
@@ -1339,11 +1370,6 @@ Mengaktifkan ini dapat membuka kualitas video yang lebih tinggi"</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_on">Parameter kueri pelacakan dihapus dari tautan</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_off">Parameter kueri pelacakan tidak dihapus dari tautan</string>
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
<string name="revanced_disable_zoom_haptics_title">Matikan sentuh getar zoom</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">Sentuh getar dinonaktifkan</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">Sentuh getar diaktifkan</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">Paksa bahasa audio asli</string>
|
||||
<string name="revanced_force_original_audio_summary_on">Menggunakan bahasa audio asli</string>
|
||||
@@ -1371,7 +1397,7 @@ Mengaktifkan ini dapat membuka kualitas video yang lebih tinggi"</string>
|
||||
</patch>
|
||||
<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_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>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
@@ -1383,6 +1409,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_parse_exception">Kecepatan pemutaran khusus tidak valid</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_summary">Kecepatan pemutaran antara 0-8</string>
|
||||
</patch>
|
||||
|
||||
@@ -199,6 +199,8 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
</patch>
|
||||
<patch id="misc.links.bypassURLRedirectsPatch">
|
||||
@@ -207,8 +209,6 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.privacy.removeTrackingQueryParameterPatch">
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
|
||||
</patch>
|
||||
|
||||
@@ -117,6 +117,11 @@ Tocca il pulsante Continua e consenti le modifiche di ottimizzazione."</string>
|
||||
<string name="revanced_debug_protobuffer_title">Buffer di protocollo per log</string>
|
||||
<string name="revanced_debug_protobuffer_summary_on">I log di debug includono proto buffer</string>
|
||||
<string name="revanced_debug_protobuffer_summary_off">I log di debug non includono proto buffer</string>
|
||||
<string name="revanced_debug_protobuffer_user_dialog_message">"L'abilitazione di questa impostazione registrerà dati di layout aggiuntivi, incluso il testo su schermo per alcuni componenti dell'interfaccia utente.
|
||||
|
||||
Questo può aiutare a identificare i componenti durante la creazione di filtri personalizzati.
|
||||
|
||||
Tuttavia, l'abilitazione di questa opzione registrerà anche alcuni dati dell'utente come il tuo indirizzo IP."</string>
|
||||
<string name="revanced_debug_stacktrace_title">Registra stack trace</string>
|
||||
<string name="revanced_debug_stacktrace_summary_on">I log di debug includono lo stack trace</string>
|
||||
<string name="revanced_debug_stacktrace_summary_off">I log di debug non includono lo stack trace</string>
|
||||
@@ -126,6 +131,15 @@ Tocca il pulsante Continua e consenti le modifiche di ottimizzazione."</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"Disabilitare i toast di errore nasconde tutte le notifiche di errore di ReVanced.
|
||||
|
||||
Non sarai notificato di eventi imprevisti."</string>
|
||||
<string name="revanced_debug_export_logs_to_clipboard_title">Esporta i log di debug</string>
|
||||
<string name="revanced_debug_export_logs_to_clipboard_summary">Copia i log di debug di ReVanced negli Appunti</string>
|
||||
<string name="revanced_debug_logs_disabled">La registrazione di debug è disabilitata</string>
|
||||
<string name="revanced_debug_logs_none_found">Nessun log trovato</string>
|
||||
<string name="revanced_debug_logs_copied_to_clipboard">Log copiati</string>
|
||||
<string name="revanced_debug_logs_failed_to_export">Esportazione dei log non riuscita: $s</string>
|
||||
<string name="revanced_debug_logs_clear_buffer_title">Cancella i log di debug</string>
|
||||
<string name="revanced_debug_logs_clear_buffer_summary">Cancella tutti i log di debug di ReVanced memorizzati</string>
|
||||
<string name="revanced_debug_logs_clear_toast">Log cancellati</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_hide_album_cards_title">Nascondi le schede degli album</string>
|
||||
@@ -477,9 +491,10 @@ Regola il volume scorrendo verticalmente sul lato destro dello schermo"</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_title">Opacità di sfondo della sovrapposizione di scorrimento</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_summary">Valore di opacità tra 0-100</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">L\'opacità di scorrimento deve essere tra 0-100</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_title">Colore della barra di avanzamento della sovrapposizione a scorrimento</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_summary">Il colore della barra di avanzamento per i controlli di volume e luminosità</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_invalid_toast">Colore della barra di avanzamento non valido</string>
|
||||
<string name="revanced_swipe_overlay_progress_brightness_color_title">Colore della luminosit dell\'overlay a scorrimento</string>
|
||||
<string name="revanced_swipe_overlay_progress_brightness_color_summary">Il colore della barra di avanzamento per i controlli della luminosit</string>
|
||||
<string name="revanced_swipe_overlay_progress_volume_color_title">Colore del volume dell\'overlay a scorrimento</string>
|
||||
<string name="revanced_swipe_overlay_progress_volume_color_summary">Il colore della barra di avanzamento per i controlli del volume</string>
|
||||
<string name="revanced_swipe_text_overlay_size_title">Dimensione del testo della sovrapposizione a scorrimento</string>
|
||||
<string name="revanced_swipe_text_overlay_size_summary">La dimensione del testo per la sovrapposizione a scorrimento tra 1 e 30</string>
|
||||
<string name="revanced_swipe_text_overlay_size_invalid_toast">La dimensione del testo deve essere compresa tra 1 e 30</string>
|
||||
@@ -1321,6 +1336,22 @@ Abilitare questa opzione può sbloccare qualità video più elevate"</string>
|
||||
<string name="microg_settings_title">Impostazioni di GmsCore</string>
|
||||
<string name="microg_settings_summary">Impostazioni per GmsCore</string>
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
<string name="revanced_disable_haptic_feedback_title">Feedback aptico</string>
|
||||
<string name="revanced_disable_haptic_feedback_summary">Modifica feedback aptico</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_title">Disabilita aptica capitoli</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_summary_on">Aptica capitoli disabilitata</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_summary_off">Aptica capitoli abilitata</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_title">Disabilita aptica di ricerca precisa</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_on">L\'aptica di ricerca precisa è disabilitata</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_off">Aptica di ricerca precisa abilitata</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_title">Disabilita l\'aptica di annullamento della ricerca</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_summary_on">L\'aptica di annullamento della ricerca è disabilitata</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_summary_off">L\'aptica di annullamento della ricerca è abilitata</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_title">Disabilita zoom aptico</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_on">Lo zoom aptico è disabilitato</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_off">Lo zoom aptico è abilitato</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
<string name="microg_offline_account_login_error">Se di recente hai modificato i dettagli di accesso al tuo account, disinstalla e reinstalla MicroG.</string>
|
||||
</patch>
|
||||
@@ -1339,11 +1370,6 @@ Abilitare questa opzione può sbloccare qualità video più elevate"</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_on">Il parametro di tracciamento della query viene rimosso dai link</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_off">Il parametro di tracciamento della query non viene rimosso dai link</string>
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
<string name="revanced_disable_zoom_haptics_title">Disabilita zoom aptico</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">Il feedback aptico è disabilitato</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">Il feedback aptico è abilitato</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">Forza la lingua audio originale</string>
|
||||
<string name="revanced_force_original_audio_summary_on">Utilizza la lingua audio originale</string>
|
||||
@@ -1371,7 +1397,7 @@ Abilitare questa opzione può sbloccare qualità video più elevate"</string>
|
||||
</patch>
|
||||
<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_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>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
@@ -1383,6 +1409,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_parse_exception">Velocità di riproduzione personalizzata non valida</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_summary">Velocità di riproduzione tra 0-8</string>
|
||||
</patch>
|
||||
|
||||
@@ -36,6 +36,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">האם ברצונך להמשיך?</string>
|
||||
<string name="revanced_settings_reset">איפוס</string>
|
||||
<string name="revanced_settings_reset_color">אפס צבע</string>
|
||||
<string name="revanced_settings_color_invalid">צבע לא חוקי</string>
|
||||
<string name="revanced_settings_restart_title">רענן והפעל מחדש</string>
|
||||
<string name="revanced_settings_restart">הפעלה מחדש</string>
|
||||
<string name="revanced_settings_import">ייבוא</string>
|
||||
@@ -43,6 +44,10 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">הגדרות ReVanced אופסו לברירת מחדל</string>
|
||||
<string name="revanced_settings_import_success">%d הגדרות יובאו</string>
|
||||
<string name="revanced_settings_import_failure_parse">ייבוא נכשל: %s</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_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_summary_on">סמלי ההגדרות מוצגים</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">סמלי ההגדרות אינם מוצגים</string>
|
||||
@@ -94,6 +99,9 @@ Second \"item\" text"</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_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 id="misc.backgroundplayback.backgroundPlaybackPatch">
|
||||
<string name="revanced_shorts_disable_background_playback_title">השבת הפעלה ברקע של Shorts</string>
|
||||
@@ -109,6 +117,11 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_debug_protobuffer_title">רשום פרוטוקול חוצץ</string>
|
||||
<string name="revanced_debug_protobuffer_summary_on">יומני איתור באגים כוללים פרוטוקול חוצץ</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_summary_on">יומני איתור באגים כוללים עקבות מחסנית</string>
|
||||
<string name="revanced_debug_stacktrace_summary_off">יומני איתור באגים אינם כוללים עקבות מחסנית</string>
|
||||
@@ -118,6 +131,15 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"השבתת הודעות שגיאה קופצות מסתירה את כל הודעות השגיאה של ReVanced.
|
||||
|
||||
לא תקבל הודעה על אירועים בלתי צפויים."</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 id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_hide_album_cards_title">הסתר כרטיסי אלבום</string>
|
||||
@@ -155,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_off">הלחצן מוצג</string>
|
||||
<!-- '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.
|
||||
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_summary_on">הלחצן מוסתר</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_summary_on">תגובות באמוג\'י מתוזמנות מוסתרות</string>
|
||||
<string name="revanced_hide_timed_reactions_summary_off">תגובות באמוג\'י מתוזמנות מוצגות</string>
|
||||
@@ -229,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_summary_on">מדור סיכום הסרטון מוסתר</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_summary_on">המדורים \'מקומות שמככבים בסרטון\', \'משחקים\', \'מוזיקה\', ו\'אנשים שאוזכרו\' מוסתרים</string>
|
||||
<string name="revanced_hide_attributes_section_summary_off">המדורים \'מקומות שמככבים בסרטון\', \'משחקים\', \'מוזיקה\', ו\'אנשים שאוזכרו\' מוצגים</string>
|
||||
@@ -460,10 +491,25 @@ Second \"item\" text"</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_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_summary">כמות הסף להתרחשות החלקה</string>
|
||||
<string name="revanced_swipe_volume_sensitivity_title">רגישות החלקה בעוצמת הקול</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_summary_on">החלקה במצב מסך מלא תשנה לסרטון הבא/הקודם</string>
|
||||
<string name="revanced_swipe_change_video_summary_off">החלקה במצב מסך מלא לא תשנה לסרטון הבא/הקודם</string>
|
||||
@@ -505,6 +551,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_thanks_button_summary_off">לחצן תודה מוצג</string>
|
||||
<!-- '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. -->
|
||||
<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. -->
|
||||
<string name="revanced_hide_clip_button_title">הסתר קליפ</string>
|
||||
<string name="revanced_hide_clip_button_summary_on">לחצן קליפ מוסתר</string>
|
||||
@@ -774,6 +823,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_end_screen_suggested_video_summary_off">סרטון מוצע של מסך סיום מוצג</string>
|
||||
</patch>
|
||||
<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 id="layout.hide.time.hideTimestampPatch">
|
||||
<string name="revanced_hide_timestamp_title">הסתר חותמת זמן של סרטון</string>
|
||||
@@ -1285,7 +1337,24 @@ Second \"item\" text"</string>
|
||||
<string name="microg_settings_title">הגדרות GmsCore</string>
|
||||
<string name="microg_settings_summary">הגדרות עבור GmsCore</string>
|
||||
</patch>
|
||||
<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_summary_on">משוב ברטט עבור זום מושבת</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_off">משוב ברטט עבור זום מופעל</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
<string name="microg_offline_account_login_error">אם פרטי הכניסה לחשבונך השתנו לאחרונה, אז יש להסיר ולהתקין מחדש את MicroG.</string>
|
||||
</patch>
|
||||
<patch id="misc.links.bypassURLRedirectsPatch">
|
||||
<string name="revanced_bypass_url_redirects_title">עקוף הפניות מחדש של URL</string>
|
||||
@@ -1302,11 +1371,6 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_on">פרמטר מעקב של שאילתה מוסר מקישורים</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_off">פרמטר מעקב של שאילתה אינו מוסר מקישורים</string>
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
<string name="revanced_disable_zoom_haptics_title">השבת משוב זום ברטט</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">משוב ברטט מושבת</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">משוב ברטט מופעל</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">כפה שפת שמע מקורית</string>
|
||||
<string name="revanced_force_original_audio_summary_on">שימוש בשפת שמע מקורית</string>
|
||||
@@ -1334,7 +1398,7 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||
<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>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
@@ -1346,6 +1410,7 @@ Second \"item\" text"</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_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_summary">מהירות הפעלה בין 0 ל-8</string>
|
||||
</patch>
|
||||
|
||||
@@ -112,21 +112,35 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ
|
||||
<patch id="misc.debugging.enableDebuggingPatch">
|
||||
<string name="revanced_debug_screen_title">デバッグ</string>
|
||||
<string name="revanced_debug_screen_summary">デバッグの設定</string>
|
||||
<string name="revanced_debug_title">デバッグ ログを有効にする</string>
|
||||
<string name="revanced_debug_summary_on">デバッグ ログは有効です</string>
|
||||
<string name="revanced_debug_summary_off">デバッグ ログは無効です</string>
|
||||
<string name="revanced_debug_title">デバッグログを有効にする</string>
|
||||
<string name="revanced_debug_summary_on">デバッグログは有効です</string>
|
||||
<string name="revanced_debug_summary_off">デバッグログは無効です</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_off">デバッグ ログに 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_user_dialog_message">"この設定を有効にすると、一部の UI コンポーネントの画面上のテキストなど、追加のレイアウト データがデバッグログに記録されます。
|
||||
|
||||
この追加されたデータは、カスタム フィルタを作成する際にコンポーネントを特定するのに役立つ可能性があります。
|
||||
|
||||
ただし、この機能によりデバッグログに追加で記録されるデータには、IP アドレスなど、一部のユーザーデータも含まれます。"</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_off">デバッグ ログに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_toast_on_error_title">ReVanced エラーのトーストを表示する</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_user_dialog_message">"この機能をオフにすると、すべてのReVanced エラー通知が非表示になります。
|
||||
|
||||
あらゆる予期せぬイベントが通知されなくなります。"</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 id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_hide_album_cards_title">アルバム情報を非表示</string>
|
||||
@@ -250,8 +264,8 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ
|
||||
<string name="revanced_hide_ask_section_summary_on">質問セクションは表示されません</string>
|
||||
<string name="revanced_hide_ask_section_summary_off">質問セクションは表示されます</string>
|
||||
<string name="revanced_hide_attributes_section_title">関連情報を非表示</string>
|
||||
<string name="revanced_hide_attributes_section_summary_on">注目の場所 / ゲーム / 音楽 / 言及された人物セクションは表示されません</string>
|
||||
<string name="revanced_hide_attributes_section_summary_off">注目の場所 / ゲーム / 音楽 / 言及された人物セクションは表示されます</string>
|
||||
<string name="revanced_hide_attributes_section_summary_on">注目の場所 / ゲーム / 音楽 / 言及されている人物セクションは表示されません</string>
|
||||
<string name="revanced_hide_attributes_section_summary_off">注目の場所 / ゲーム / 音楽 / 言及されている人物セクションは表示されます</string>
|
||||
<string name="revanced_hide_chapters_section_title">チャプター セクションを非表示</string>
|
||||
<string name="revanced_hide_chapters_section_summary_on">チャプター セクションは表示されません</string>
|
||||
<string name="revanced_hide_chapters_section_summary_off">チャプター セクションは表示されます</string>
|
||||
@@ -414,10 +428,10 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ
|
||||
<patch id="interaction.copyvideourl.copyVideoUrlResourcePatch">
|
||||
<string name="revanced_share_copy_url_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_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_off">ボタンはオーバーレイに表示されません</string>
|
||||
</patch>
|
||||
@@ -442,9 +456,9 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ
|
||||
<string name="revanced_external_downloader_not_installed_warning">%s はインストールされていません。インストールしてください。</string>
|
||||
</patch>
|
||||
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
|
||||
<string name="revanced_disable_precise_seeking_gesture_title">シーク ジェスチャーを無効にする</string>
|
||||
<string name="revanced_disable_precise_seeking_gesture_summary_on">シークバーを上へスワイプしても、何も起こりません</string>
|
||||
<string name="revanced_disable_precise_seeking_gesture_summary_off">シークバーを上へスワイプすると、再生位置を細かく調整できます</string>
|
||||
<string name="revanced_disable_precise_seeking_gesture_title">精密シークモードを無効にする</string>
|
||||
<string name="revanced_disable_precise_seeking_gesture_summary_on">シークバーを上へスワイプしても、精密シークモードになりません</string>
|
||||
<string name="revanced_disable_precise_seeking_gesture_summary_off">シークバーを上へスワイプすると、精密シークモードになります</string>
|
||||
</patch>
|
||||
<patch id="interaction.seekbar.enableSeekbarTappingPatch">
|
||||
<string name="revanced_seekbar_tapping_title">タップによるシークを有効にする</string>
|
||||
@@ -480,9 +494,10 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ
|
||||
<string name="revanced_swipe_overlay_background_opacity_title">オーバーレイの背景の透明度</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_summary">透明度の範囲は 0-100 で、0 が透明です</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">スワイプ: 透明度の範囲は 0-100 です</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_title">オーバーレイのグラフの色</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_summary">スワイプ中の音量や明るさの現在値を視覚的に表示するグラフの色</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_invalid_toast">グラフの色の値が無効です</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>
|
||||
@@ -702,17 +717,17 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ
|
||||
<string name="revanced_shorts_player_screen_title">ショート動画プレーヤー</string>
|
||||
<string name="revanced_shorts_player_screen_summary">ショート動画プレーヤーの設定</string>
|
||||
<!-- 'home' should be translated using the same localized wording YouTube displays for the home tab. -->
|
||||
<string name="revanced_hide_shorts_home_title">ホームフィードのショート動画を非表示</string>
|
||||
<string name="revanced_hide_shorts_home_title">ホームフィードでショート動画を非表示</string>
|
||||
<string name="revanced_hide_shorts_home_summary_on">ショート動画はホームフィードや関連動画に表示されません</string>
|
||||
<string name="revanced_hide_shorts_home_summary_off">ショート動画はホームフィードや関連動画に表示されます</string>
|
||||
<!-- 'subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
|
||||
<string name="revanced_hide_shorts_subscriptions_title">登録チャンネル フィードのショート動画を非表示</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_title">登録チャンネル フィードでショート動画を非表示</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_on">ショート動画は登録チャンネル フィードに表示されません</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_off">ショート動画は登録チャンネル フィードに表示されます</string>
|
||||
<string name="revanced_hide_shorts_search_title">検索結果のショート動画を非表示</string>
|
||||
<string name="revanced_hide_shorts_search_title">検索結果でショート動画を非表示</string>
|
||||
<string name="revanced_hide_shorts_search_summary_on">ショート動画は検索結果に表示されません</string>
|
||||
<string name="revanced_hide_shorts_search_summary_off">ショート動画は検索結果に表示されます</string>
|
||||
<string name="revanced_hide_shorts_history_title">再生履歴のショート動画を非表示</string>
|
||||
<string name="revanced_hide_shorts_history_title">再生履歴でショート動画を非表示</string>
|
||||
<string name="revanced_hide_shorts_history_summary_on">ショート動画は再生履歴に表示されません</string>
|
||||
<string name="revanced_hide_shorts_history_summary_off">ショート動画は再生履歴に表示されます</string>
|
||||
<!-- 'join' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
@@ -1321,6 +1336,22 @@ Automotive レイアウト
|
||||
<string name="microg_settings_title">GmsCore 設定</string>
|
||||
<string name="microg_settings_summary">GmsCore の設定</string>
|
||||
</patch>
|
||||
<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_summary_on">ズームの触覚フィードバックは無効です</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_off">ズームの触覚フィードバックは有効です</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
<string name="microg_offline_account_login_error">最近アカウントのログイン情報を変更した場合は、MicroG をアンインストールして再インストールしてください。</string>
|
||||
</patch>
|
||||
@@ -1339,15 +1370,10 @@ Automotive レイアウト
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_on">追跡パラメータはリンクから削除されます</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_off">追跡パラメータはリンクから削除されません</string>
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
<string name="revanced_disable_zoom_haptics_title">ズームの触覚フィードバックを無効にする</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">ズームの触覚フィードバックは無効です</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">ズームの触覚フィードバックは有効です</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">デフォルトの吹き替えを無効にする</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_title">デフォルトの吹き替え再生を無効にする</string>
|
||||
<string name="revanced_force_original_audio_summary_on">デフォルトの吹き替え再生は無効です</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 -->
|
||||
<string name="revanced_force_original_audio_not_available">この機能を使用するには、「動画ストリームを偽装する」のクライアントを iOS TV に変更してください</string>
|
||||
</patch>
|
||||
@@ -1370,9 +1396,9 @@ Automotive レイアウト
|
||||
<string name="revanced_remember_video_quality_toast_shorts">ショートの画質 (%1$s): %2$s</string>
|
||||
</patch>
|
||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||
<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_title">再生速度設定ボタンを表示する</string>
|
||||
<string name="revanced_playback_speed_dialog_button_summary_on">ボタンはオーバーレイに表示されます。長押しすると、再生速度がデフォルトの値にリセットされます</string>
|
||||
<string name="revanced_playback_speed_dialog_button_summary_off">ボタンはオーバーレイに表示されません</string>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
<string name="revanced_custom_speed_menu_title">カスタムした再生速度リストを使用する</string>
|
||||
@@ -1383,8 +1409,9 @@ Automotive レイアウト
|
||||
<string name="revanced_custom_playback_speeds_invalid">再生速度は %s 未満である必要があります</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">カスタム再生速度リストが無効です</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_summary">長押し倍速再生の速度の値は 0-8 の範囲で、0 および 8 は含まれません</string>
|
||||
<string name="revanced_speed_tap_and_hold_summary">再生速度の範囲は 0-8 で、0 および 8 は含まれません</string>
|
||||
</patch>
|
||||
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
|
||||
<string name="revanced_remember_playback_speed_last_selected_title">再生速度の変更を保存する</string>
|
||||
@@ -1410,7 +1437,7 @@ Automotive レイアウト
|
||||
</patch>
|
||||
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
|
||||
<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_summary_on">動画ストリームは偽装されます</string>
|
||||
<string name="revanced_spoof_video_streams_summary_off">"動画ストリームは偽装されません
|
||||
@@ -1431,7 +1458,7 @@ AVC は、最大解像度が 1080p であり、Opus オーディオ コーデッ
|
||||
<string name="revanced_spoof_video_streams_about_android_title">Android クライアントの副作用</string>
|
||||
<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_kids_videos">• ログアウト時またはシークレット モード時に、子ども向け動画が再生されない可能性がある</string>
|
||||
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">統計情報に表示する</string>
|
||||
@@ -1491,9 +1518,9 @@ AVC は、最大解像度が 1080p であり、Opus オーディオ コーデッ
|
||||
<string name="revanced_other_category_title">その他の設定</string>
|
||||
<string name="revanced_client_ads_category_title">クライアントサイド広告</string>
|
||||
<string name="revanced_surestream_ads_category_title">サーバー側サレストリーム広告</string>
|
||||
<string name="revanced_twitch_debug_title">デバッグ ログ</string>
|
||||
<string name="revanced_twitch_debug_summary_on">デバッグ ログは有効です</string>
|
||||
<string name="revanced_twitch_debug_summary_off">デバッグ ログは無効です</string>
|
||||
<string name="revanced_twitch_debug_title">デバッグログ</string>
|
||||
<string name="revanced_twitch_debug_summary_on">デバッグログは有効です</string>
|
||||
<string name="revanced_twitch_debug_summary_off">デバッグログは無効です</string>
|
||||
</patch>
|
||||
</app>
|
||||
</resources>
|
||||
|
||||
@@ -199,6 +199,8 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
</patch>
|
||||
<patch id="misc.links.bypassURLRedirectsPatch">
|
||||
@@ -207,8 +209,6 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.privacy.removeTrackingQueryParameterPatch">
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
|
||||
</patch>
|
||||
|
||||
@@ -199,6 +199,8 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
</patch>
|
||||
<patch id="misc.links.bypassURLRedirectsPatch">
|
||||
@@ -207,8 +209,6 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.privacy.removeTrackingQueryParameterPatch">
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
|
||||
</patch>
|
||||
|
||||
@@ -199,6 +199,8 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
</patch>
|
||||
<patch id="misc.links.bypassURLRedirectsPatch">
|
||||
@@ -207,8 +209,6 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.privacy.removeTrackingQueryParameterPatch">
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
|
||||
</patch>
|
||||
|
||||
@@ -199,6 +199,8 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
</patch>
|
||||
<patch id="misc.links.bypassURLRedirectsPatch">
|
||||
@@ -207,8 +209,6 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.privacy.removeTrackingQueryParameterPatch">
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
|
||||
</patch>
|
||||
|
||||
@@ -112,11 +112,16 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
|
||||
<string name="revanced_debug_screen_title">디버깅</string>
|
||||
<string name="revanced_debug_screen_summary">디버깅 옵션을 활성화하거나 비활성화할 수 있습니다</string>
|
||||
<string name="revanced_debug_title">디버그 로깅</string>
|
||||
<string name="revanced_debug_summary_on">디버그 로그를 출력합니다</string>
|
||||
<string name="revanced_debug_summary_off">디버그 로그를 출력하지 않습니다</string>
|
||||
<string name="revanced_debug_summary_on">디버그 로깅을 활성화합니다</string>
|
||||
<string name="revanced_debug_summary_off">디버그 로깅을 비활성화합니다</string>
|
||||
<string name="revanced_debug_protobuffer_title">로그 프로토콜 버퍼</string>
|
||||
<string name="revanced_debug_protobuffer_summary_on">디버그 로그에 프로토콜 버퍼를 포함합니다</string>
|
||||
<string name="revanced_debug_protobuffer_summary_off">디버그 로그에 프로토콜 버퍼를 포함하지 않습니다</string>
|
||||
<string name="revanced_debug_protobuffer_user_dialog_message">"이 설정을 활성화하면 일부 UI 구성 요소에 대한 화면 텍스트를 포함한 추가 레이아웃 데이터가 기록됩니다.
|
||||
|
||||
이 설정은 사용자 정의 필터를 만들 경우에 구성 요소를 식별하는 데 도움이 될 수 있습니다.
|
||||
|
||||
그러나 이 설정을 활성화하면 IP 주소와 같은 일부 사용자 데이터도 기록됩니다."</string>
|
||||
<string name="revanced_debug_stacktrace_title">로그 스택 트레이스</string>
|
||||
<string name="revanced_debug_stacktrace_summary_on">디버그 로그에 로그 스택 트레이스를 포함합니다</string>
|
||||
<string name="revanced_debug_stacktrace_summary_off">디버그 로그에 로그 스택 트레이스를 포함하지 않습니다</string>
|
||||
@@ -126,6 +131,15 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"오류 메시지를 비활성화하면 모든 ReVanced 오류 알림이 숨겨집니다.
|
||||
|
||||
예상되지 않은 이벤트에 대한 알림을 받지 못할 수 있습니다."</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 id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_hide_album_cards_title">음악 앨범 카드 숨기기</string>
|
||||
@@ -442,9 +456,9 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
|
||||
<string name="revanced_external_downloader_not_installed_warning">%s 는 설치되어 있지 않습니다. 설치하세요</string>
|
||||
</patch>
|
||||
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
|
||||
<string name="revanced_disable_precise_seeking_gesture_title">세밀하게 보면서 탐색 제스처 비활성화하기</string>
|
||||
<string name="revanced_disable_precise_seeking_gesture_summary_on">세밀하게 보면서 탐색 제스처를 비활성화합니다\n• 필름 스트립 오버레이</string>
|
||||
<string name="revanced_disable_precise_seeking_gesture_summary_off">세밀하게 보면서 탐색 제스처를 활성화합니다\n• 필름 스트립 오버레이</string>
|
||||
<string name="revanced_disable_precise_seeking_gesture_title">세밀한 탐색 제스처 비활성화하기</string>
|
||||
<string name="revanced_disable_precise_seeking_gesture_summary_on">세밀한 탐색 제스처를 비활성화합니다</string>
|
||||
<string name="revanced_disable_precise_seeking_gesture_summary_off">세밀한 탐색 제스처를 활성화합니다</string>
|
||||
</patch>
|
||||
<patch id="interaction.seekbar.enableSeekbarTappingPatch">
|
||||
<string name="revanced_seekbar_tapping_title">재생바 터치 조작 활성화하기</string>
|
||||
@@ -474,13 +488,14 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
|
||||
<string name="revanced_swipe_overlay_timeout_title">스와이프 오버레이 타임아웃</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_summary">스와이프 불투명도 값은 0-100 사이여야 합니다</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">스와이프 불투명도 값은 0-100 사이여야 합니다</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_title">스와이프 오버레이 진행바 색상</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_summary">볼륨 및 밝기 조절 진행바 색상의 헥스 코드를 입력하세요</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_invalid_toast">잘못된 진행바 헥스 코드입니다</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_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_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_summary">제스처 인식을 위해 얼마나 스와이프를 해야 할지를 지정할 수 있으며, 원하지 않은 제스처 인식을 방지할 수 있습니다</string>
|
||||
@@ -835,7 +850,7 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
|
||||
</patch>
|
||||
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
|
||||
<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>
|
||||
</patch>
|
||||
<patch id="layout.returnyoutubedislike.returnYouTubeDislikePatch">
|
||||
@@ -881,10 +896,10 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
|
||||
<string name="revanced_ryd_statistics_getFetchCallCount_zero_summary">네트워크 호출한 적이 없습니다</string>
|
||||
<string name="revanced_ryd_statistics_getFetchCallCount_non_zero_summary">%d 건의 네트워크 호출이 이루어졌습니다</string>
|
||||
<string name="revanced_ryd_statistics_getFetchCallNumberOfFailures_title">API 투표 가져오기, 시간 초과 횟수</string>
|
||||
<string name="revanced_ryd_statistics_getFetchCallNumberOfFailures_zero_summary">네트워크 호출 시간 초과한 적이 없습니다</string>
|
||||
<string name="revanced_ryd_statistics_getFetchCallNumberOfFailures_zero_summary">네트워크 호출이 시간 초과한 적이 없습니다</string>
|
||||
<string name="revanced_ryd_statistics_getFetchCallNumberOfFailures_non_zero_summary">%d 건의 네트워크 호출이 시간 초과하였습니다</string>
|
||||
<string name="revanced_ryd_statistics_getNumberOfRateLimitRequestsEncountered_title">API 클라이언트 비율 제한</string>
|
||||
<string name="revanced_ryd_statistics_getNumberOfRateLimitRequestsEncountered_zero_summary">클라이언트 비율 제한한 적이 없습니다</string>
|
||||
<string name="revanced_ryd_statistics_getNumberOfRateLimitRequestsEncountered_zero_summary">클라이언트 비율을 제한한 적이 없습니다</string>
|
||||
<string name="revanced_ryd_statistics_getNumberOfRateLimitRequestsEncountered_non_zero_summary">%d 건의 클라이언트 비율 제한이 발생하였습니다</string>
|
||||
<string name="revanced_ryd_statistics_millisecond_text">%d 밀리초</string>
|
||||
</patch>
|
||||
@@ -1234,7 +1249,7 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
|
||||
<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_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>
|
||||
</patch>
|
||||
<patch id="layout.theme.themePatch">
|
||||
@@ -1245,10 +1260,10 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
|
||||
<string name="revanced_seekbar_custom_color_summary_on">사용자 정의 재생바 색상을 활성화합니다</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_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_summary">사용하고 싶은 재생바 보조 색상의 헥스 코드를 입력하세요</string>
|
||||
<string name="revanced_seekbar_custom_color_invalid">잘못된 재생바 헥스 코드입니다</string>
|
||||
<string name="revanced_seekbar_custom_color_accent_summary">재생바 보조 색상을 지정할 수 있습니다</string>
|
||||
<string name="revanced_seekbar_custom_color_invalid">잘못된 재생바 색상입니다</string>
|
||||
</patch>
|
||||
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
|
||||
<string name="revanced_bypass_image_region_restrictions_title">이미지 표시 제한 국가 우회하기</string>
|
||||
@@ -1325,6 +1340,22 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요"</string>
|
||||
<string name="microg_settings_title">GmsCore 설정</string>
|
||||
<string name="microg_settings_summary">알림 수신을 위한 클라우드 메시징을 설정할 수 있습니다</string>
|
||||
</patch>
|
||||
<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_summary_on">동영상 확대 진동 피드백을 비활성화합니다</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_off">동영상 확대 진동 피드백을 활성화합니다</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
<string name="microg_offline_account_login_error">최근에 계정 로그인 정보를 변경했다면 MicroG를 삭제하고 다시 설치하세요.</string>
|
||||
</patch>
|
||||
@@ -1343,11 +1374,6 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요"</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_on">링크를 공유할 때, URL에서 추적 쿼리 매개변수를 삭제합니다 (URL의 뒷부분 \'?si=...\' 이 삭제됨)</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_off">링크를 공유할 때, URL에서 추적 쿼리 매개변수를 삭제하지 않습니다</string>
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
<string name="revanced_disable_zoom_haptics_title">동영상을 확대할 때, 진동 피드백 비활성화하기</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">진동 피드백을 비활성화합니다</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">진동 피드백을 활성화합니다</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">원본 오디오 스트림 언어 강제로 활성화하기</string>
|
||||
<string name="revanced_force_original_audio_summary_on">원본 오디오 스트림 언어를 사용 중입니다</string>
|
||||
@@ -1375,7 +1401,7 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요"</string>
|
||||
</patch>
|
||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||
<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>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
@@ -1383,10 +1409,11 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요"</string>
|
||||
<string name="revanced_custom_speed_menu_summary_on">사용자 정의 동영상 재생 속도를 활성화합니다</string>
|
||||
<string name="revanced_custom_speed_menu_summary_off">사용자 정의 동영상 재생 속도를 비활성화합니다</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_parse_exception">잘못된 사용자 정의 재생 속도 값입니다</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_summary">화면을 길게 누르는 동안에 변경되는 동영상 재생 속도를 0-8 사이에서 지정할 수 있습니다</string>
|
||||
</patch>
|
||||
@@ -1495,8 +1522,8 @@ AVC의 최대 화질 값은 1080p이고, OPUS 코덱을 사용불가 및 HDR 동
|
||||
<string name="revanced_client_ads_category_title">클라이언트 광고</string>
|
||||
<string name="revanced_surestream_ads_category_title">서버 광고</string>
|
||||
<string name="revanced_twitch_debug_title">디버그 로깅</string>
|
||||
<string name="revanced_twitch_debug_summary_on">디버그 로그를 출력합니다</string>
|
||||
<string name="revanced_twitch_debug_summary_off">디버그 로그를 출력하지 않습니다</string>
|
||||
<string name="revanced_twitch_debug_summary_on">디버그 로깅을 활성화합니다</string>
|
||||
<string name="revanced_twitch_debug_summary_off">디버그 로깅을 비활성화합니다</string>
|
||||
</patch>
|
||||
</app>
|
||||
</resources>
|
||||
|
||||
@@ -199,6 +199,8 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
</patch>
|
||||
<patch id="misc.links.bypassURLRedirectsPatch">
|
||||
@@ -207,8 +209,6 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.privacy.removeTrackingQueryParameterPatch">
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
|
||||
</patch>
|
||||
|
||||
@@ -199,6 +199,8 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
</patch>
|
||||
<patch id="misc.links.bypassURLRedirectsPatch">
|
||||
@@ -207,8 +209,6 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.privacy.removeTrackingQueryParameterPatch">
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
|
||||
</patch>
|
||||
|
||||
@@ -117,6 +117,11 @@ Palieskite mygtuką Tęsti ir leiskite optimizavimo pakeitimus."</string>
|
||||
<string name="revanced_debug_protobuffer_title">Žurnalų protokolo buferis</string>
|
||||
<string name="revanced_debug_protobuffer_summary_on">Debugavimo žurnalai apima protokolo buferį</string>
|
||||
<string name="revanced_debug_protobuffer_summary_off">Debugavimo žurnalai neapima protokolo buferio</string>
|
||||
<string name="revanced_debug_protobuffer_user_dialog_message">"Įjungus šį nustatymą bus registruojami papildomi išdėstymo duomenys, įskaitant ekrane rodomą tekstą kai kuriems vartotojo sąsajos komponentams.
|
||||
|
||||
Tai gali padėti identifikuoti komponentus kuriant pasirinktinius filtrus.
|
||||
|
||||
Tačiau įjungus šį nustatymą taip pat bus registruojami kai kurie vartotojo duomenys, pvz., jūsų IP adresas."</string>
|
||||
<string name="revanced_debug_stacktrace_title">Žurnalų steko pėdsakai</string>
|
||||
<string name="revanced_debug_stacktrace_summary_on">Debugavimo žurnalai apima steko pėdsaką</string>
|
||||
<string name="revanced_debug_stacktrace_summary_off">Debugavimo žurnalai neapima steko pėdsako</string>
|
||||
@@ -126,6 +131,15 @@ Palieskite mygtuką Tęsti ir leiskite optimizavimo pakeitimus."</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"Klaidos isjungimas paslepia visus „ReVanced“ klaidu pranesimus.
|
||||
|
||||
Apie netikėtus įvykius nebus pranešta."</string>
|
||||
<string name="revanced_debug_export_logs_to_clipboard_title">Eksportuoti derinimo žurnalus</string>
|
||||
<string name="revanced_debug_export_logs_to_clipboard_summary">Nukopijuoja „ReVanced“ derinimo žurnalus į mainų sritį</string>
|
||||
<string name="revanced_debug_logs_disabled">Derinimo žurnalų registravimas išjungtas</string>
|
||||
<string name="revanced_debug_logs_none_found">Žurnalų nerasta</string>
|
||||
<string name="revanced_debug_logs_copied_to_clipboard">Žurnalai nukopijuoti</string>
|
||||
<string name="revanced_debug_logs_failed_to_export">Nepavyko eksportuoti žurnalų: $s</string>
|
||||
<string name="revanced_debug_logs_clear_buffer_title">Išvalyti derinimo žurnalus</string>
|
||||
<string name="revanced_debug_logs_clear_buffer_summary">Išvalo visus išsaugotus „ReVanced“ derinimo žurnalus</string>
|
||||
<string name="revanced_debug_logs_clear_toast">Žurnalai išvalyti</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_hide_album_cards_title">Slėpti albumo korteles</string>
|
||||
@@ -477,9 +491,10 @@ Reguliuokite garsumą braukdami vertikaliai dešinėje ekrano pusėje"</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_title">Užšliaukite dangos nušveitimo fono permatinumas</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_summary">Permatnumo vertė nuo 0 iki 100</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">Slinkties permatnumas turi būti nuo 0 iki 100</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_title">Perbraukimo perdangos eigos juostos spalva</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_summary">Garso ir ryškumo valdiklių eigos juostos spalva</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_invalid_toast">Netinkama eigos juostos spalva</string>
|
||||
<string name="revanced_swipe_overlay_progress_brightness_color_title">Perbraukimo perdangos ryškumo spalva</string>
|
||||
<string name="revanced_swipe_overlay_progress_brightness_color_summary">Ryškumo valdiklių eigos juostos spalva</string>
|
||||
<string name="revanced_swipe_overlay_progress_volume_color_title">Perbraukimo perdangos garsumo spalva</string>
|
||||
<string name="revanced_swipe_overlay_progress_volume_color_summary">Garsumo valdiklių eigos juostos spalva</string>
|
||||
<string name="revanced_swipe_text_overlay_size_title">Perbraukimo perdangos teksto dydis</string>
|
||||
<string name="revanced_swipe_text_overlay_size_summary">Perbraukimo perdangos teksto dydis turi būti nuo 1 iki 30</string>
|
||||
<string name="revanced_swipe_text_overlay_size_invalid_toast">Teksto dydis turi būti nuo 1 iki 30</string>
|
||||
@@ -1321,6 +1336,22 @@ Gali būti atrakinta aukštesnės vaizdo įrašų kokybės, bet galite patirti v
|
||||
<string name="microg_settings_title">„GmsCore“ nustatymai</string>
|
||||
<string name="microg_settings_summary">„GmsCore“ nustatymai</string>
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
<string name="revanced_disable_haptic_feedback_title">Vibracijos grįžtamasis ryšys</string>
|
||||
<string name="revanced_disable_haptic_feedback_summary">Keisti vibracijos grįžtamąjį ryšį</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_title">Išjungti skyrių vibraciją</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_summary_on">Skyrių vibracija išjungta</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_summary_off">Skyrių vibracija įjungta</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_title">Išjungti tikslaus slinkimo vibraciją</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_on">Tikslus ieškojimo vibracijos grįžtamasis ryšys išjungtas</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_off">Tikslaus slinkimo vibracija įjungta</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_title">Išjungti ieškojimo anuliavimo vibraciją</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_summary_on">Ieškojimo anuliavimo vibracijos grįžtamasis ryšys išjungtas</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_summary_off">Ieškojimo anuliavimo vibracijos grįžtamasis ryšys įjungtas</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_title">Išjungti priartinimo vibraciją</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_on">Priartinimo vibracija išjungta</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_off">Priartinimo vibracija įjungta</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
<string name="microg_offline_account_login_error">Jei neseniai pakeitėte savo paskyros prisijungimo duomenis, išdiekite ir iš naujo įdiekite „MicroG“.</string>
|
||||
</patch>
|
||||
@@ -1339,11 +1370,6 @@ Gali būti atrakinta aukštesnės vaizdo įrašų kokybės, bet galite patirti v
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_on">Stebėjimo užklausų parametras pašalinamas iš nuorodų</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_off">Stebėjimo užklausų parametras nėra pašalinamas iš nuorodų</string>
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
<string name="revanced_disable_zoom_haptics_title">Išjungti priartinimo vibraciją</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">Vibracija išjungta</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">Vibracija įjungta</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">Priversti originalią garso kalbą</string>
|
||||
<string name="revanced_force_original_audio_summary_on">Naudojama originali garso kalba</string>
|
||||
@@ -1371,7 +1397,7 @@ Gali būti atrakinta aukštesnės vaizdo įrašų kokybės, bet galite patirti v
|
||||
</patch>
|
||||
<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_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>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
@@ -1383,6 +1409,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_parse_exception">Netinkamas pasirinktinis atkūrimo greitis</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_summary">Atkūrimo greitis: nuo 0 iki 8</string>
|
||||
</patch>
|
||||
|
||||
@@ -117,6 +117,11 @@ Nospiediet turpināt pogu un atļaujiet optimizācijas izmaiņas."</string>
|
||||
<string name="revanced_debug_protobuffer_title">Reģistrēt protokola buferi</string>
|
||||
<string name="revanced_debug_protobuffer_summary_on">Atkļūdošanas žurnāli ietver protokola buferi</string>
|
||||
<string name="revanced_debug_protobuffer_summary_off">Atkļūdošanas žurnāli neietver protokola buferi</string>
|
||||
<string name="revanced_debug_protobuffer_user_dialog_message">"Iespējojot šo iestatījumu, tiks reģistrēti papildu izkārtojuma dati, tostarp teksta attēlojums ekrānā dažiem lietotāja interfeisa komponentiem.
|
||||
|
||||
Tas var palīdzēt identificēt komponentus, veidojot pielāgotus filtrus.
|
||||
|
||||
Tomēr, iespējojot šo iestatījumu, tiks reģistrēti arī daži lietotāja dati, piemēram, jūsu IP adrese."</string>
|
||||
<string name="revanced_debug_stacktrace_title">Reģistrēt steka izsekošanu</string>
|
||||
<string name="revanced_debug_stacktrace_summary_on">Atkļūdošanas žurnāli ietver steka izsekošanu</string>
|
||||
<string name="revanced_debug_stacktrace_summary_off">Atkļūdošanas žurnāli neietver steka izsekošanu</string>
|
||||
@@ -126,6 +131,15 @@ Nospiediet turpināt pogu un atļaujiet optimizācijas izmaiņas."</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"Kļūdu paziņojumu izslēgšana paslēpj visus ReVanced kļūdu paziņojumus.
|
||||
|
||||
Jūs netiksit informēts par neparedzētiem notikumiem."</string>
|
||||
<string name="revanced_debug_export_logs_to_clipboard_title">Eksportēt atkļūdošanas žurnālus</string>
|
||||
<string name="revanced_debug_export_logs_to_clipboard_summary">Kopē ReVanced atkļūdošanas žurnālus starpliktuvē</string>
|
||||
<string name="revanced_debug_logs_disabled">Atkļūdošanas žurnālu reģistrēšana ir atspējota</string>
|
||||
<string name="revanced_debug_logs_none_found">Žurnāli nav atrasti</string>
|
||||
<string name="revanced_debug_logs_copied_to_clipboard">Žurnāli ir kopēti</string>
|
||||
<string name="revanced_debug_logs_failed_to_export">Neizdevās eksportēt žurnālus: $s</string>
|
||||
<string name="revanced_debug_logs_clear_buffer_title">Notīrīt atkļūdošanas žurnālus</string>
|
||||
<string name="revanced_debug_logs_clear_buffer_summary">Notīra visus saglabātos ReVanced atkļūdošanas žurnālus</string>
|
||||
<string name="revanced_debug_logs_clear_toast">Žurnāli ir notīrīti</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_hide_album_cards_title">Paslēpt albumu kartītes</string>
|
||||
@@ -477,9 +491,10 @@ Regulējiet skaļumu, velkot vertikāli ekrāna labajā pusē"</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_title">Pārvilkšanas pārklājuma fona necaurredzamība</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_summary">Necaurredzamības vērtība no 0 līdz 100</string>
|
||||
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">Pārvilkšanas necaurredzamībai jābūt no 0 līdz 100</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_title">Pārvelciet pārklājuma progresa joslas krāsu</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_summary">Skaļuma un spilgtuma vadīklu progresa joslas krāsa</string>
|
||||
<string name="revanced_swipe_overlay_progress_color_invalid_toast">Nederīga progresa joslas krāsa</string>
|
||||
<string name="revanced_swipe_overlay_progress_brightness_color_title">Velciet pārklājuma spilgtuma krāsu</string>
|
||||
<string name="revanced_swipe_overlay_progress_brightness_color_summary">Spilgtuma vadīklu progresa joslas krāsa</string>
|
||||
<string name="revanced_swipe_overlay_progress_volume_color_title">Velciet pārklājuma skaļuma krāsu</string>
|
||||
<string name="revanced_swipe_overlay_progress_volume_color_summary">Skaļuma vadīklu progresa joslas krāsa</string>
|
||||
<string name="revanced_swipe_text_overlay_size_title">Pārvelciet pārklājuma teksta lielumu</string>
|
||||
<string name="revanced_swipe_text_overlay_size_summary">Pārvelciet pārklājuma teksta lielumu starp 1–30</string>
|
||||
<string name="revanced_swipe_text_overlay_size_invalid_toast">Teksta lielumam jābūt starp 1–30</string>
|
||||
@@ -1321,6 +1336,22 @@ Var tikt atbloķētas augstākas video kvalitātes, taču var rasties video atsk
|
||||
<string name="microg_settings_title">GmsCore iestatījumi</string>
|
||||
<string name="microg_settings_summary">GmsCore iestatījumi</string>
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
<string name="revanced_disable_haptic_feedback_title">Haptiskā atgriezeniskā saite</string>
|
||||
<string name="revanced_disable_haptic_feedback_summary">Mainīt haptisko atgriezenisko saiti</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_title">Atspējot nodaļu haptisko atgriezenisko saiti</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_summary_on">Nodaļu haptiskā atgriezeniskā saite ir atspējota</string>
|
||||
<string name="revanced_disable_haptic_feedback_chapters_summary_off">Nodaļu haptiskā atgriezeniskā saite ir iespējota</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_title">Atspējot precīzas meklēšanas haptisko atgriezenisko saiti</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_on">Precīza meklēšanas haptiskā atgriezeniskā saite ir atspējota</string>
|
||||
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_off">Precīzas meklēšanas haptiskā atgriezeniskā saite ir iespējota</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_title">Atspējot meklēšanas atsaukšanas haptisko atgriezenisko saiti</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_summary_on">Meklēšanas atsaukšanas haptiskā atgriezeniskā saite ir atspējota</string>
|
||||
<string name="revanced_disable_haptic_feedback_seek_undo_summary_off">Meklēšanas atsaukšanas haptiskā atgriezeniskā saite ir iespējota</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_title">Atspējot tālummaiņas haptisko atgriezenisko saiti</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_on">Tālummaiņas haptiskā atgriezeniskā saite ir atspējota</string>
|
||||
<string name="revanced_disable_haptic_feedback_zoom_summary_off">Tālummaiņas haptiskā atgriezeniskā saite ir iespējota</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
<string name="microg_offline_account_login_error">Ja nesen mainījāt sava konta pieteikšanās informāciju, atinstalējiet un atkārtoti instalējiet MicroG.</string>
|
||||
</patch>
|
||||
@@ -1339,11 +1370,6 @@ Var tikt atbloķētas augstākas video kvalitātes, taču var rasties video atsk
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_on">Izsekošanas vaicājuma parametrs tiek noņemts no saitēm</string>
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_off">Izsekošanas vaicājuma parametrs netiek noņemts no saitēm</string>
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
<string name="revanced_disable_zoom_haptics_title">Atspējot tālummaiņas haptisko atgriezenisko saiti</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">Haptiskā atgriezeniskā saite ir atspējota</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">Haptiskā atgriezeniskā saite ir iespējota</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">Piespiest oriģinālo audio valodu</string>
|
||||
<string name="revanced_force_original_audio_summary_on">Izmantot oriģinālo audio valodu</string>
|
||||
@@ -1371,7 +1397,7 @@ Var tikt atbloķētas augstākas video kvalitātes, taču var rasties video atsk
|
||||
</patch>
|
||||
<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_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>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
@@ -1383,6 +1409,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_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_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_summary">Atskaņošanas ātrums no 0 līdz 8</string>
|
||||
</patch>
|
||||
|
||||
@@ -199,6 +199,8 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
</patch>
|
||||
<patch id="misc.links.bypassURLRedirectsPatch">
|
||||
@@ -207,8 +209,6 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.privacy.removeTrackingQueryParameterPatch">
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
|
||||
</patch>
|
||||
|
||||
@@ -199,6 +199,8 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
</patch>
|
||||
<patch id="misc.links.bypassURLRedirectsPatch">
|
||||
@@ -207,8 +209,6 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.privacy.removeTrackingQueryParameterPatch">
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
|
||||
</patch>
|
||||
|
||||
@@ -199,6 +199,8 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
</patch>
|
||||
<patch id="misc.links.bypassURLRedirectsPatch">
|
||||
@@ -207,8 +209,6 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.privacy.removeTrackingQueryParameterPatch">
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
|
||||
</patch>
|
||||
|
||||
@@ -199,6 +199,8 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
</patch>
|
||||
<patch id="misc.links.bypassURLRedirectsPatch">
|
||||
@@ -207,8 +209,6 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.privacy.removeTrackingQueryParameterPatch">
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
|
||||
</patch>
|
||||
|
||||
@@ -199,6 +199,8 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
</patch>
|
||||
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
|
||||
</patch>
|
||||
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
|
||||
</patch>
|
||||
<patch id="misc.links.bypassURLRedirectsPatch">
|
||||
@@ -207,8 +209,6 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="misc.privacy.removeTrackingQueryParameterPatch">
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
|
||||
</patch>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user