mirror of
https://github.com/revanced/revanced-patches.git
synced 2025-12-25 10:24:08 +01:00
Compare commits
47 Commits
v5.26.0-de
...
v5.27.0-de
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c09255eaed | ||
|
|
e78d6240ea | ||
|
|
ed0d807d70 | ||
|
|
1c39004350 | ||
|
|
6127f48a9e | ||
|
|
ad416f4aa7 | ||
|
|
adfac8a1f2 | ||
|
|
498488d45b | ||
|
|
f8e31c820a | ||
|
|
826a391591 | ||
|
|
af827e2f1a | ||
|
|
97cd31509e | ||
|
|
c0448dece4 | ||
|
|
f00a95c0d8 | ||
|
|
7a432e5741 | ||
|
|
966a78bd81 | ||
|
|
6aff8e8ca4 | ||
|
|
11aa463fa6 | ||
|
|
bf1b639a2f | ||
|
|
6d5380d44d | ||
|
|
7e1547b5b9 | ||
|
|
c790b45cc5 | ||
|
|
65fc6b43f5 | ||
|
|
2257dd90aa | ||
|
|
4b8499ff2c | ||
|
|
bde3fda972 | ||
|
|
e2e07b5cb2 | ||
|
|
9d10ab6c00 | ||
|
|
d7644152fd | ||
|
|
9be21f4824 | ||
|
|
a2eae0bf04 | ||
|
|
679354b5b3 | ||
|
|
91dec21033 | ||
|
|
1d0c56819b | ||
|
|
4410816c22 | ||
|
|
7e4e48bc9f | ||
|
|
e435b33593 | ||
|
|
bf288b83ae | ||
|
|
7a53580380 | ||
|
|
6439efa2a9 | ||
|
|
bc45433dcb | ||
|
|
8871803e83 | ||
|
|
18954a0285 | ||
|
|
ce5385b28e | ||
|
|
3f4cdf6f83 | ||
|
|
094b4a1ea8 | ||
|
|
a320e35c32 |
144
CHANGELOG.md
144
CHANGELOG.md
@@ -1,3 +1,147 @@
|
||||
# [5.27.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.27.0-dev.8...v5.27.0-dev.9) (2025-06-09)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **Messenger:** Add `Hide Facebook button` patch ([#5057](https://github.com/ReVanced/revanced-patches/issues/5057)) ([9175b23](https://github.com/ReVanced/revanced-patches/commit/9175b23e8360d13c8c1c9c8602ca0b5931d13627))
|
||||
|
||||
# [5.27.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v5.27.0-dev.7...v5.27.0-dev.8) (2025-06-09)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* Add `Hide app icon` patch ([#4977](https://github.com/ReVanced/revanced-patches/issues/4977)) ([92311b8](https://github.com/ReVanced/revanced-patches/commit/92311b8e5675f3d4b80ed690d34b699fb847e3cd))
|
||||
|
||||
# [5.27.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.27.0-dev.6...v5.27.0-dev.7) (2025-06-08)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **YouTube - Hide player overlay buttons:** Add in app setting for "Hide player control buttons background" ([#5147](https://github.com/ReVanced/revanced-patches/issues/5147)) ([dd8afa2](https://github.com/ReVanced/revanced-patches/commit/dd8afa2b07b50be24d764c0f6ddc9e1bbdb91bf1))
|
||||
|
||||
# [5.27.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.27.0-dev.5...v5.27.0-dev.6) (2025-06-08)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **YouTube - Hide Shorts components:** Add hide 'New posts' button ([ac6b916](https://github.com/ReVanced/revanced-patches/commit/ac6b916c0c212167c4645e2110500dc811b3e54a))
|
||||
|
||||
# [5.27.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.27.0-dev.4...v5.27.0-dev.5) (2025-06-08)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **Google Photos:** Add `Enable DCIM folders backup control` patch ([#5138](https://github.com/ReVanced/revanced-patches/issues/5138)) ([328d232](https://github.com/ReVanced/revanced-patches/commit/328d232fe77406fa93a14768fc66e7b998506fba))
|
||||
|
||||
# [5.27.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.27.0-dev.3...v5.27.0-dev.4) (2025-06-06)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Bandcamp - Remove play limits:** Support latest app version ([#5124](https://github.com/ReVanced/revanced-patches/issues/5124)) ([863e92b](https://github.com/ReVanced/revanced-patches/commit/863e92b20ad6682f10524e475ed18f879048ecae))
|
||||
|
||||
# [5.27.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.27.0-dev.2...v5.27.0-dev.3) (2025-06-06)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Spotify:** `Hide Create button` patch failing in edge cases ([#5131](https://github.com/ReVanced/revanced-patches/issues/5131)) ([0923600](https://github.com/ReVanced/revanced-patches/commit/0923600739a126329fc62100b500216860d7005e))
|
||||
|
||||
# [5.27.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.27.0-dev.1...v5.27.0-dev.2) (2025-06-06)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Video quality:** Remove non-functional Shorts 144p default quality ([3113cd6](https://github.com/ReVanced/revanced-patches/commit/3113cd6d092952c8657454452f34c0ae85358ec9))
|
||||
|
||||
# [5.27.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.26.1-dev.3...v5.27.0-dev.1) (2025-06-05)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **YouTube - Theme:** Add option for black and white splash screen animation ([#5119](https://github.com/ReVanced/revanced-patches/issues/5119)) ([42db0c2](https://github.com/ReVanced/revanced-patches/commit/42db0c2e36fefccdbeaa072edcec48b1e05b6270))
|
||||
|
||||
## [5.26.1-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.26.1-dev.2...v5.26.1-dev.3) (2025-06-05)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Spotify:** Prevent hiding all navigation bar buttons ([#5122](https://github.com/ReVanced/revanced-patches/issues/5122)) ([8afbef0](https://github.com/ReVanced/revanced-patches/commit/8afbef01343c1e3e6e7e4a4cec6319aebfa4b11c))
|
||||
|
||||
## [5.26.1-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.26.1-dev.1...v5.26.1-dev.2) (2025-06-05)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Hide layout components:** Remove broken option 'Hide comments emoji picker' ([#5121](https://github.com/ReVanced/revanced-patches/issues/5121)) ([9a6a639](https://github.com/ReVanced/revanced-patches/commit/9a6a639c4905b00d6dffb0923c839c8e3ae54d0c))
|
||||
|
||||
## [5.26.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.26.0...v5.26.1-dev.1) (2025-06-05)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Hide Shorts components:** Disable A/B player flags that prevents hiding buttons ([bef0dac](https://github.com/ReVanced/revanced-patches/commit/bef0dacac54caf1ca9511d7bc19b19140ccb4eaf))
|
||||
|
||||
# [5.26.0](https://github.com/ReVanced/revanced-patches/compare/v5.25.0...v5.26.0) (2025-06-04)
|
||||
|
||||
|
||||
### 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))
|
||||
* **YouTube - Hide Shorts components:** Disable A/B player that prevents hiding buttons ([#5104](https://github.com/ReVanced/revanced-patches/issues/5104)) ([835b7bd](https://github.com/ReVanced/revanced-patches/commit/835b7bd7bd667abd632822c98898972e5124dbb6))
|
||||
* **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))
|
||||
|
||||
|
||||
### 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))
|
||||
* **Spotify:** Add `Hide Create button` patch ([#5062](https://github.com/ReVanced/revanced-patches/issues/5062)) ([3201681](https://github.com/ReVanced/revanced-patches/commit/32016819d2adbdfdd5e028941d56feda36d20b00))
|
||||
* **Sync for Reddit:** Add `Fix post thumbnails` patch ([e1ec30c](https://github.com/ReVanced/revanced-patches/commit/e1ec30c5b07560a39d7b8ab293b0c1f39fd59ef2))
|
||||
* **YouTube - Hide Shorts components:** Add option to hide comment panel ([#5102](https://github.com/ReVanced/revanced-patches/issues/5102)) ([22b9bee](https://github.com/ReVanced/revanced-patches/commit/22b9beedd3243a8d6a5635f591b91cdcf307be37))
|
||||
* **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.8](https://github.com/ReVanced/revanced-patches/compare/v5.26.0-dev.7...v5.26.0-dev.8) (2025-06-04)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Hide Shorts components:** Disable A/B player that prevents hiding buttons ([#5104](https://github.com/ReVanced/revanced-patches/issues/5104)) ([835b7bd](https://github.com/ReVanced/revanced-patches/commit/835b7bd7bd667abd632822c98898972e5124dbb6))
|
||||
|
||||
# [5.26.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.26.0-dev.6...v5.26.0-dev.7) (2025-06-04)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **YouTube - Hide Shorts components:** Add option to hide comment panel ([#5102](https://github.com/ReVanced/revanced-patches/issues/5102)) ([22b9bee](https://github.com/ReVanced/revanced-patches/commit/22b9beedd3243a8d6a5635f591b91cdcf307be37))
|
||||
|
||||
# [5.26.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.26.0-dev.5...v5.26.0-dev.6) (2025-06-03)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **Sync for Reddit:** Add `Fix post thumbnails` patch ([e1ec30c](https://github.com/ReVanced/revanced-patches/commit/e1ec30c5b07560a39d7b8ab293b0c1f39fd59ef2))
|
||||
|
||||
# [5.26.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.26.0-dev.4...v5.26.0-dev.5) (2025-06-03)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Spotify - Custom theme:** Apply accent color in more places ([#5039](https://github.com/ReVanced/revanced-patches/issues/5039)) ([9357887](https://github.com/ReVanced/revanced-patches/commit/9357887b6fca7aaf34dfb0163645b6a998e1db76))
|
||||
|
||||
# [5.26.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.26.0-dev.3...v5.26.0-dev.4) (2025-06-03)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **Spotify:** Add `Hide Create button` patch ([#5062](https://github.com/ReVanced/revanced-patches/issues/5062)) ([3201681](https://github.com/ReVanced/revanced-patches/commit/32016819d2adbdfdd5e028941d56feda36d20b00))
|
||||
|
||||
# [5.26.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.26.0-dev.2...v5.26.0-dev.3) (2025-06-01)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **YouTube - Playback Speed:** Use modern custom speed dialog ([#5069](https://github.com/ReVanced/revanced-patches/issues/5069)) ([9a1e6ca](https://github.com/ReVanced/revanced-patches/commit/9a1e6ca178d9833ee2c681fb130b9290a4e89cd8))
|
||||
|
||||
# [5.26.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.26.0-dev.1...v5.26.0-dev.2) (2025-06-01)
|
||||
|
||||
|
||||
|
||||
@@ -2,13 +2,15 @@ package app.revanced.extension.messenger.metaai;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class RemoveMetaAIPatch {
|
||||
public static boolean overrideConfigBool(long id, boolean value) {
|
||||
// It seems like all configs starting with 363219 are related to Meta AI.
|
||||
// A list of specific ones that need disabling would probably be better,
|
||||
// but these config numbers seem to change slightly with each update.
|
||||
// These first 6 digits don't though.
|
||||
if (Long.toString(id).startsWith("363219"))
|
||||
public static boolean overrideBooleanFlag(long id, boolean value) {
|
||||
// This catches all flag IDs related to Meta AI.
|
||||
// The IDs change slightly with every update,
|
||||
// so to work around this, IDs from different versions were compared
|
||||
// to find what they have in common, which turned out to be those first bits.
|
||||
// TODO: Find the specific flags that we care about and patch the code they control instead.
|
||||
if ((id & 0x7FFFFFC000000000L) == 0x810A8000000000L) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -6,11 +6,11 @@ dependencies {
|
||||
|
||||
android {
|
||||
defaultConfig {
|
||||
minSdk = 24
|
||||
minSdk = 21
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility = JavaVersion.VERSION_11
|
||||
targetCompatibility = JavaVersion.VERSION_11
|
||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||
targetCompatibility = JavaVersion.VERSION_1_8
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
package app.revanced.extension.spotify.layout.hide.createbutton;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import app.revanced.extension.shared.Logger;
|
||||
import app.revanced.extension.spotify.shared.ComponentFilters.*;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public final class HideCreateButtonPatch {
|
||||
|
||||
/**
|
||||
* A list of component filters that match whether a navigation bar item is the Create button.
|
||||
* The main approach used is matching the resource id for the Create button title.
|
||||
*/
|
||||
private static final List<ComponentFilter> CREATE_BUTTON_COMPONENT_FILTERS = List.of(
|
||||
new ResourceIdComponentFilter("navigationbar_musicappitems_create_title", "string"),
|
||||
// Temporary fallback and fix for APKs merged with AntiSplit-M not having resources properly encoded,
|
||||
// and thus getting the resource identifier for the Create button title always return 0.
|
||||
// FIXME: Remove this once the above issue is no longer relevant.
|
||||
new StringComponentFilter("spotify:create-menu")
|
||||
);
|
||||
|
||||
/**
|
||||
* A component filter for the old id of the resource which contained the Create button title.
|
||||
* Used in older versions of the app.
|
||||
*/
|
||||
private static final ResourceIdComponentFilter OLD_CREATE_BUTTON_COMPONENT_FILTER =
|
||||
new ResourceIdComponentFilter("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();
|
||||
|
||||
for (ComponentFilter componentFilter : CREATE_BUTTON_COMPONENT_FILTERS) {
|
||||
if (componentFilter.filterUnavailable()) {
|
||||
Logger.printInfo(() -> "returnNullIfIsCreateButton: Filter " +
|
||||
componentFilter.getFilterRepresentation() + " not available, skipping");
|
||||
continue;
|
||||
}
|
||||
|
||||
if (stringifiedNavigationBarItem.contains(componentFilter.getFilterValue())) {
|
||||
Logger.printInfo(() -> "Hiding Create button because the navigation bar item " + navigationBarItem +
|
||||
" matched the filter " + componentFilter.getFilterRepresentation());
|
||||
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) {
|
||||
if (OLD_CREATE_BUTTON_COMPONENT_FILTER.filterUnavailable()) {
|
||||
Logger.printInfo(() -> "Skipping hiding old Create button because the resource id for " +
|
||||
OLD_CREATE_BUTTON_COMPONENT_FILTER.resourceName + " is not available");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (oldNavigationBarItemTitleResId == OLD_CREATE_BUTTON_COMPONENT_FILTER.getResourceId()) {
|
||||
Logger.printInfo(() -> "Hiding old Create button because the navigation bar item title resource id" +
|
||||
" matched " + OLD_CREATE_BUTTON_COMPONENT_FILTER.getFilterRepresentation());
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,10 +33,11 @@ public final class SanitizeSharingLinksPatch {
|
||||
}
|
||||
}
|
||||
|
||||
return builder.build().toString();
|
||||
String sanitizedUrl = builder.build().toString();
|
||||
Logger.printInfo(() -> "Sanitized url " + url + " to " + sanitizedUrl);
|
||||
return sanitizedUrl;
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "sanitizeUrl failure", ex);
|
||||
|
||||
Logger.printException(() -> "sanitizeUrl failure with " + url, ex);
|
||||
return url;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
package app.revanced.extension.spotify.shared;
|
||||
|
||||
import app.revanced.extension.shared.Logger;
|
||||
import app.revanced.extension.shared.Utils;
|
||||
|
||||
public final class ComponentFilters {
|
||||
|
||||
public interface ComponentFilter {
|
||||
String getFilterValue();
|
||||
String getFilterRepresentation();
|
||||
default boolean filterUnavailable() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static final class ResourceIdComponentFilter implements ComponentFilter {
|
||||
|
||||
public final String resourceName;
|
||||
public final String resourceType;
|
||||
// Android resources are always positive, so -1 is a valid sentinel value to indicate it has not been loaded.
|
||||
// 0 is returned when a resource has not been found.
|
||||
private int resourceId = -1;
|
||||
private String stringfiedResourceId = null;
|
||||
|
||||
public ResourceIdComponentFilter(String resourceName, String resourceType) {
|
||||
this.resourceName = resourceName;
|
||||
this.resourceType = resourceType;
|
||||
}
|
||||
|
||||
public int getResourceId() {
|
||||
if (resourceId == -1) {
|
||||
resourceId = Utils.getResourceIdentifier(resourceName, resourceType);
|
||||
}
|
||||
return resourceId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFilterValue() {
|
||||
if (stringfiedResourceId == null) {
|
||||
stringfiedResourceId = Integer.toString(getResourceId());
|
||||
}
|
||||
return stringfiedResourceId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFilterRepresentation() {
|
||||
boolean resourceFound = getResourceId() != 0;
|
||||
return (resourceFound ? getFilterValue() + " (" : "") + resourceName + (resourceFound ? ")" : "");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean filterUnavailable() {
|
||||
boolean resourceNotFound = getResourceId() == 0;
|
||||
if (resourceNotFound) {
|
||||
Logger.printInfo(() -> "Resource id for " + resourceName + " was not found");
|
||||
}
|
||||
return resourceNotFound;
|
||||
}
|
||||
}
|
||||
|
||||
public static final class StringComponentFilter implements ComponentFilter {
|
||||
|
||||
public final String string;
|
||||
|
||||
public StringComponentFilter(String string) {
|
||||
this.string = string;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFilterValue() {
|
||||
return string;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFilterRepresentation() {
|
||||
return string;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7,11 +7,11 @@ android {
|
||||
compileSdk = 34
|
||||
|
||||
defaultConfig {
|
||||
minSdk = 26
|
||||
minSdk = 21
|
||||
}
|
||||
|
||||
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.
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package app.revanced.extension.youtube.patches;
|
||||
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import app.revanced.extension.shared.Logger;
|
||||
@@ -58,6 +59,22 @@ public final class HidePlayerOverlayButtonsPatch {
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
public static void hidePlayerControlButtonsBackground(View rootView) {
|
||||
try {
|
||||
if (!Settings.HIDE_PLAYER_CONTROL_BUTTONS_BACKGROUND.get()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Each button is an ImageView with a background set to another drawable.
|
||||
removeImageViewsBackgroundRecursive(rootView);
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "removePlayerControlButtonsBackground failure", ex);
|
||||
}
|
||||
}
|
||||
|
||||
private static void hideView(View parentView, int resourceId) {
|
||||
View nextPreviousButton = parentView.findViewById(resourceId);
|
||||
|
||||
@@ -69,4 +86,16 @@ public final class HidePlayerOverlayButtonsPatch {
|
||||
Logger.printDebug(() -> "Hiding previous/next button");
|
||||
Utils.hideViewByRemovingFromParentUnderCondition(true, nextPreviousButton);
|
||||
}
|
||||
|
||||
private static void removeImageViewsBackgroundRecursive(View currentView) {
|
||||
if (currentView instanceof ImageView imageView) {
|
||||
imageView.setBackground(null);
|
||||
}
|
||||
|
||||
if (currentView instanceof ViewGroup viewGroup) {
|
||||
for (int i = 0; i < viewGroup.getChildCount(); i++) {
|
||||
removeImageViewsBackgroundRecursive(viewGroup.getChildAt(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -153,14 +153,12 @@ public class ReturnYouTubeDislikePatch {
|
||||
}
|
||||
|
||||
if (Utils.containsAny(conversionContextString,
|
||||
"|shorts_dislike_button.eml", "|reel_dislike_button.eml"
|
||||
)) {
|
||||
"|shorts_dislike_button.eml", "|reel_dislike_button.eml")) {
|
||||
return getShortsSpan(original, true);
|
||||
}
|
||||
|
||||
if (Utils.containsAny(conversionContextString,
|
||||
"|shorts_like_button.eml", "|reel_like_button.eml"
|
||||
)) {
|
||||
"|shorts_like_button.eml", "|reel_like_button.eml")) {
|
||||
if (!Utils.containsNumber(original)) {
|
||||
Logger.printDebug(() -> "Replacing hidden likes count");
|
||||
return getShortsSpan(original, false);
|
||||
@@ -365,6 +363,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,
|
||||
@@ -419,6 +422,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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,11 +7,6 @@ import app.revanced.extension.youtube.settings.Settings;
|
||||
@SuppressWarnings("unused")
|
||||
final class CommentsFilter extends Filter {
|
||||
|
||||
private static final String TIMESTAMP_OR_EMOJI_BUTTONS_ENDS_WITH_PATH
|
||||
= "|CellType|ContainerType|ContainerType|ContainerType|ContainerType|ContainerType|";
|
||||
|
||||
private final StringFilterGroup commentComposer;
|
||||
private final ByteArrayFilterGroup emojiPickerBufferGroup;
|
||||
private final StringFilterGroup filterChipBar;
|
||||
private final ByteArrayFilterGroup aiCommentsSummary;
|
||||
|
||||
@@ -50,14 +45,9 @@ final class CommentsFilter extends Filter {
|
||||
"super_thanks_button.eml"
|
||||
);
|
||||
|
||||
commentComposer = new StringFilterGroup(
|
||||
Settings.HIDE_COMMENTS_TIMESTAMP_AND_EMOJI_BUTTONS,
|
||||
"comment_composer.eml"
|
||||
);
|
||||
|
||||
emojiPickerBufferGroup = new ByteArrayFilterGroup(
|
||||
null,
|
||||
"id.comment.quick_emoji.button"
|
||||
StringFilterGroup timestampButton = new StringFilterGroup(
|
||||
Settings.HIDE_COMMENTS_TIMESTAMP_BUTTON,
|
||||
"composer_timestamp_button.eml"
|
||||
);
|
||||
|
||||
filterChipBar = new StringFilterGroup(
|
||||
@@ -77,7 +67,7 @@ final class CommentsFilter extends Filter {
|
||||
createAShort,
|
||||
previewComment,
|
||||
thanksButton,
|
||||
commentComposer,
|
||||
timestampButton,
|
||||
filterChipBar
|
||||
);
|
||||
}
|
||||
@@ -85,14 +75,6 @@ final class CommentsFilter extends Filter {
|
||||
@Override
|
||||
boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
|
||||
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
|
||||
if (matchedGroup == commentComposer) {
|
||||
// To completely hide the emoji buttons (and leave no empty space), the timestamp button is
|
||||
// also hidden because the buffer is exactly the same and there's no way selectively hide.
|
||||
return contentIndex == 0
|
||||
&& path.endsWith(TIMESTAMP_OR_EMOJI_BUTTONS_ENDS_WITH_PATH)
|
||||
&& emojiPickerBufferGroup.check(protobufBufferArray).isFiltered();
|
||||
}
|
||||
|
||||
if (matchedGroup == filterChipBar) {
|
||||
return aiCommentsSummary.check(protobufBufferArray).isFiltered();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -217,6 +217,12 @@ public final class ShortsFilter extends Filter {
|
||||
// Suggested actions.
|
||||
//
|
||||
suggestedActionsGroupList.addAll(
|
||||
new ByteArrayFilterGroup(
|
||||
Settings.HIDE_SHORTS_PREVIEW_COMMENT,
|
||||
// Preview comment that can popup while a Short is playing.
|
||||
// Uses no bundled icons, and instead the users profile photo is shown.
|
||||
"shorts-comments-panel"
|
||||
),
|
||||
new ByteArrayFilterGroup(
|
||||
Settings.HIDE_SHORTS_SHOP_BUTTON,
|
||||
"yt_outline_bag_"
|
||||
@@ -261,6 +267,10 @@ public final class ShortsFilter extends Filter {
|
||||
Settings.HIDE_SHORTS_GREEN_SCREEN_BUTTON,
|
||||
"greenscreen_temp"
|
||||
),
|
||||
new ByteArrayFilterGroup(
|
||||
Settings.HIDE_SHORTS_NEW_POSTS_BUTTON,
|
||||
"yt_outline_box_pencil"
|
||||
),
|
||||
new ByteArrayFilterGroup(
|
||||
Settings.HIDE_SHORTS_HASHTAG_BUTTON,
|
||||
"yt_outline_hashtag_"
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -2,6 +2,7 @@ package app.revanced.extension.youtube.patches.theme;
|
||||
|
||||
import static app.revanced.extension.shared.StringRef.str;
|
||||
import static app.revanced.extension.shared.Utils.clamp;
|
||||
import static app.revanced.extension.youtube.patches.theme.ThemePatch.SplashScreenAnimationStyle;
|
||||
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Color;
|
||||
@@ -60,7 +61,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 +78,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 +116,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));
|
||||
@@ -171,23 +174,15 @@ public final class SeekbarColorPatch {
|
||||
*/
|
||||
public static void setSplashAnimationLottie(LottieAnimationView view, int resourceId) {
|
||||
try {
|
||||
if (!SEEKBAR_CUSTOM_COLOR_ENABLED) {
|
||||
SplashScreenAnimationStyle animationStyle = Settings.SPLASH_SCREEN_ANIMATION_STYLE.get();
|
||||
if (!SEEKBAR_CUSTOM_COLOR_ENABLED
|
||||
// Black and white animations cannot use color replacements.
|
||||
|| animationStyle == SplashScreenAnimationStyle.FPS_30_BLACK_AND_WHITE
|
||||
|| animationStyle == SplashScreenAnimationStyle.FPS_60_BLACK_AND_WHITE) {
|
||||
view.patch_setAnimation(resourceId);
|
||||
return;
|
||||
}
|
||||
|
||||
//noinspection ConstantConditions
|
||||
if (false) { // Set true to force slow animation for development.
|
||||
final int longAnimation = Utils.getResourceIdentifier(
|
||||
Utils.isDarkModeEnabled()
|
||||
? "startup_animation_5s_30fps_dark"
|
||||
: "startup_animation_5s_30fps_light",
|
||||
"raw");
|
||||
if (longAnimation != 0) {
|
||||
resourceId = longAnimation;
|
||||
}
|
||||
}
|
||||
|
||||
// Must specify primary key name otherwise the morphing YT logo color is also changed.
|
||||
String originalKey = "\"k\":";
|
||||
String originalPrimary = originalKey + "[1,0,0.2,1]";
|
||||
@@ -197,21 +192,16 @@ public final class SeekbarColorPatch {
|
||||
String replacementAccent = originalKey + getColorStringArray(customSeekbarColorGradient[1]);
|
||||
|
||||
String json = loadRawResourceAsString(resourceId);
|
||||
if (json == null) {
|
||||
return; // Should never happen.
|
||||
}
|
||||
String replacement = json
|
||||
.replace(originalPrimary, replacementPrimary)
|
||||
.replace(originalAccent, replacementAccent);
|
||||
|
||||
if (BaseSettings.DEBUG.get() && (!json.contains(originalPrimary) || !json.contains(originalAccent))) {
|
||||
String jsonFinal = json;
|
||||
Logger.printException(() -> "Could not replace launch animation colors: " + jsonFinal);
|
||||
Logger.printException(() -> "Could not replace splash animation colors: " + json);
|
||||
}
|
||||
|
||||
Logger.printDebug(() -> "Replacing Lottie animation JSON");
|
||||
json = json.replace(originalPrimary, replacementPrimary);
|
||||
json = json.replace(originalAccent, replacementAccent);
|
||||
|
||||
// cacheKey is not needed since the animation will not be reused.
|
||||
view.patch_setAnimation(new ByteArrayInputStream(json.getBytes()), null);
|
||||
view.patch_setAnimation(new ByteArrayInputStream(replacement.getBytes()), null);
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "setSplashAnimationLottie failure", ex);
|
||||
}
|
||||
@@ -232,8 +222,7 @@ public final class SeekbarColorPatch {
|
||||
Scanner scanner = new Scanner(inputStream, StandardCharsets.UTF_8.name()).useDelimiter("\\A")) {
|
||||
return scanner.next();
|
||||
} catch (IOException e) {
|
||||
Logger.printException(() -> "Could not load resource: " + resourceId);
|
||||
return null;
|
||||
throw new IllegalStateException("Could not load resource: " + resourceId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,11 +1,49 @@
|
||||
package app.revanced.extension.youtube.patches.theme;
|
||||
|
||||
import static app.revanced.extension.youtube.patches.theme.ThemePatch.SplashScreenAnimationStyle.styleFromOrdinal;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import app.revanced.extension.shared.Logger;
|
||||
import app.revanced.extension.shared.Utils;
|
||||
import app.revanced.extension.youtube.ThemeHelper;
|
||||
import app.revanced.extension.youtube.settings.Settings;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class ThemePatch {
|
||||
|
||||
public enum SplashScreenAnimationStyle {
|
||||
DEFAULT(0),
|
||||
FPS_60_ONE_SECOND(1),
|
||||
FPS_60_TWO_SECOND(2),
|
||||
FPS_60_FIVE_SECOND(3),
|
||||
FPS_60_BLACK_AND_WHITE(4),
|
||||
FPS_30_ONE_SECOND(5),
|
||||
FPS_30_TWO_SECOND(6),
|
||||
FPS_30_FIVE_SECOND(7),
|
||||
FPS_30_BLACK_AND_WHITE(8);
|
||||
// There exists a 10th json style used as the switch statement default,
|
||||
// but visually it is identical to 60fps one second.
|
||||
|
||||
@Nullable
|
||||
static SplashScreenAnimationStyle styleFromOrdinal(int style) {
|
||||
// Alternatively can return using values()[style]
|
||||
for (SplashScreenAnimationStyle value : values()) {
|
||||
if (value.style == style) {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
final int style;
|
||||
|
||||
SplashScreenAnimationStyle(int style) {
|
||||
this.style = style;
|
||||
}
|
||||
}
|
||||
|
||||
// color constants used in relation with litho components
|
||||
private static final int[] WHITE_VALUES = {
|
||||
-1, // comments chip background
|
||||
@@ -58,4 +96,22 @@ public class ThemePatch {
|
||||
public static boolean gradientLoadingScreenEnabled(boolean original) {
|
||||
return GRADIENT_LOADING_SCREEN_ENABLED;
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
public static int getLoadingScreenType(int original) {
|
||||
SplashScreenAnimationStyle style = Settings.SPLASH_SCREEN_ANIMATION_STYLE.get();
|
||||
if (style == SplashScreenAnimationStyle.DEFAULT) {
|
||||
return original;
|
||||
}
|
||||
|
||||
final int replacement = style.style;
|
||||
if (original != replacement) {
|
||||
Logger.printDebug(() -> "Overriding splash screen style from: "
|
||||
+ styleFromOrdinal(original) + " to: " + style);
|
||||
}
|
||||
|
||||
return replacement;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,14 +21,12 @@ import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerT
|
||||
import static app.revanced.extension.youtube.patches.OpenShortsInRegularPlayerPatch.ShortsPlayerType;
|
||||
import static app.revanced.extension.youtube.patches.SeekbarThumbnailsPatch.SeekbarThumbnailsHighQualityAvailability;
|
||||
import static app.revanced.extension.youtube.patches.components.PlayerFlyoutMenuItemsFilter.HideAudioFlyoutMenuAvailability;
|
||||
import static app.revanced.extension.youtube.patches.theme.ThemePatch.SplashScreenAnimationStyle;
|
||||
import static app.revanced.extension.youtube.sponsorblock.objects.CategoryBehaviour.IGNORE;
|
||||
import static app.revanced.extension.youtube.sponsorblock.objects.CategoryBehaviour.MANUAL_SKIP;
|
||||
import static app.revanced.extension.youtube.sponsorblock.objects.CategoryBehaviour.SKIP_AUTOMATICALLY;
|
||||
import static app.revanced.extension.youtube.sponsorblock.objects.CategoryBehaviour.SKIP_AUTOMATICALLY_ONCE;
|
||||
|
||||
import app.revanced.extension.shared.settings.preference.SharedPrefCategory;
|
||||
import app.revanced.extension.youtube.swipecontrols.SwipeControlsConfigurationProvider.SwipeOverlayStyle;
|
||||
|
||||
import android.graphics.Color;
|
||||
|
||||
import app.revanced.extension.shared.Logger;
|
||||
@@ -40,12 +38,14 @@ import app.revanced.extension.shared.settings.IntegerSetting;
|
||||
import app.revanced.extension.shared.settings.LongSetting;
|
||||
import app.revanced.extension.shared.settings.Setting;
|
||||
import app.revanced.extension.shared.settings.StringSetting;
|
||||
import app.revanced.extension.shared.settings.preference.SharedPrefCategory;
|
||||
import app.revanced.extension.youtube.patches.AlternativeThumbnailsPatch.DeArrowAvailability;
|
||||
import app.revanced.extension.youtube.patches.AlternativeThumbnailsPatch.StillImagesAvailability;
|
||||
import app.revanced.extension.youtube.patches.AlternativeThumbnailsPatch.ThumbnailOption;
|
||||
import app.revanced.extension.youtube.patches.AlternativeThumbnailsPatch.ThumbnailStillTime;
|
||||
import app.revanced.extension.youtube.patches.MiniplayerPatch;
|
||||
import app.revanced.extension.youtube.sponsorblock.SponsorBlockSettings;
|
||||
import app.revanced.extension.youtube.swipecontrols.SwipeControlsConfigurationProvider.SwipeOverlayStyle;
|
||||
|
||||
public class Settings extends BaseSettings {
|
||||
// Video
|
||||
@@ -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());
|
||||
|
||||
@@ -135,6 +135,7 @@ public class Settings extends BaseSettings {
|
||||
public static final BooleanSetting HIDE_AUTOPLAY_BUTTON = new BooleanSetting("revanced_hide_autoplay_button", TRUE, true);
|
||||
public static final BooleanSetting HIDE_CAPTIONS_BUTTON = new BooleanSetting("revanced_hide_captions_button", FALSE);
|
||||
public static final BooleanSetting HIDE_CAST_BUTTON = new BooleanSetting("revanced_hide_cast_button", TRUE, true);
|
||||
public static final BooleanSetting HIDE_PLAYER_CONTROL_BUTTONS_BACKGROUND = new BooleanSetting("revanced_hide_player_control_buttons_background", FALSE, true);
|
||||
public static final BooleanSetting HIDE_CHANNEL_BAR = new BooleanSetting("revanced_hide_channel_bar", FALSE);
|
||||
public static final BooleanSetting HIDE_CHANNEL_MEMBER_SHELF = new BooleanSetting("revanced_hide_channel_member_shelf", TRUE);
|
||||
public static final BooleanSetting HIDE_COMMUNITY_GUIDELINES = new BooleanSetting("revanced_hide_community_guidelines", TRUE);
|
||||
@@ -179,7 +180,7 @@ public class Settings extends BaseSettings {
|
||||
public static final BooleanSetting HIDE_COMMENTS_AI_SUMMARY = new BooleanSetting("revanced_hide_comments_ai_summary", FALSE);
|
||||
public static final BooleanSetting HIDE_COMMENTS_BY_MEMBERS_HEADER = new BooleanSetting("revanced_hide_comments_by_members_header", FALSE);
|
||||
public static final BooleanSetting HIDE_COMMENTS_CREATE_A_SHORT_BUTTON = new BooleanSetting("revanced_hide_comments_create_a_short_button", TRUE);
|
||||
public static final BooleanSetting HIDE_COMMENTS_TIMESTAMP_AND_EMOJI_BUTTONS = new BooleanSetting("revanced_hide_comments_timestamp_and_emoji_buttons", TRUE);
|
||||
public static final BooleanSetting HIDE_COMMENTS_TIMESTAMP_BUTTON = new BooleanSetting("revanced_hide_comments_timestamp_button", FALSE);
|
||||
public static final BooleanSetting HIDE_COMMENTS_PREVIEW_COMMENT = new BooleanSetting("revanced_hide_comments_preview_comment", FALSE);
|
||||
public static final BooleanSetting HIDE_COMMENTS_SECTION = new BooleanSetting("revanced_hide_comments_section", FALSE);
|
||||
public static final BooleanSetting HIDE_COMMENTS_THANKS_BUTTON = new BooleanSetting("revanced_hide_comments_thanks_button", TRUE);
|
||||
@@ -226,6 +227,8 @@ public class Settings extends BaseSettings {
|
||||
public static final EnumSetting<FormFactor> CHANGE_FORM_FACTOR = new EnumSetting<>("revanced_change_form_factor", FormFactor.DEFAULT, true, "revanced_change_form_factor_user_dialog_message");
|
||||
public static final BooleanSetting BYPASS_IMAGE_REGION_RESTRICTIONS = new BooleanSetting("revanced_bypass_image_region_restrictions", FALSE, true);
|
||||
public static final BooleanSetting GRADIENT_LOADING_SCREEN = new BooleanSetting("revanced_gradient_loading_screen", FALSE, true);
|
||||
public static final EnumSetting<SplashScreenAnimationStyle> SPLASH_SCREEN_ANIMATION_STYLE = new EnumSetting<>("splash_screen_animation_style", SplashScreenAnimationStyle.FPS_60_ONE_SECOND, true);
|
||||
|
||||
public static final BooleanSetting REMOVE_VIEWER_DISCRETION_DIALOG = new BooleanSetting("revanced_remove_viewer_discretion_dialog", FALSE,
|
||||
"revanced_remove_viewer_discretion_dialog_user_dialog_message");
|
||||
public static final BooleanSetting SPOOF_APP_VERSION = new BooleanSetting("revanced_spoof_app_version", FALSE, true, "revanced_spoof_app_version_user_dialog_message");
|
||||
@@ -260,6 +263,7 @@ public class Settings extends BaseSettings {
|
||||
public static final BooleanSetting HIDE_SHORTS_DISLIKE_BUTTON = new BooleanSetting("revanced_hide_shorts_dislike_button", FALSE);
|
||||
public static final BooleanSetting HIDE_SHORTS_FULL_VIDEO_LINK_LABEL = new BooleanSetting("revanced_hide_shorts_full_video_link_label", FALSE);
|
||||
public static final BooleanSetting HIDE_SHORTS_GREEN_SCREEN_BUTTON = new BooleanSetting("revanced_hide_shorts_green_screen_button", TRUE);
|
||||
public static final BooleanSetting HIDE_SHORTS_NEW_POSTS_BUTTON = new BooleanSetting("revanced_hide_shorts_new_posts_button", TRUE);
|
||||
public static final BooleanSetting HIDE_SHORTS_HASHTAG_BUTTON = new BooleanSetting("revanced_hide_shorts_hashtag_button", TRUE);
|
||||
public static final BooleanSetting HIDE_SHORTS_HISTORY = new BooleanSetting("revanced_hide_shorts_history", FALSE);
|
||||
public static final BooleanSetting HIDE_SHORTS_HOME = new BooleanSetting("revanced_hide_shorts_home", FALSE);
|
||||
@@ -275,6 +279,7 @@ public class Settings extends BaseSettings {
|
||||
public static final BooleanSetting HIDE_SHORTS_SEARCH = new BooleanSetting("revanced_hide_shorts_search", FALSE);
|
||||
public static final BooleanSetting HIDE_SHORTS_SEARCH_SUGGESTIONS = new BooleanSetting("revanced_hide_shorts_search_suggestions", TRUE);
|
||||
public static final BooleanSetting HIDE_SHORTS_SHARE_BUTTON = new BooleanSetting("revanced_hide_shorts_share_button", FALSE);
|
||||
public static final BooleanSetting HIDE_SHORTS_PREVIEW_COMMENT = new BooleanSetting("revanced_hide_shorts_preview_comment", TRUE);
|
||||
public static final BooleanSetting HIDE_SHORTS_SHOP_BUTTON = new BooleanSetting("revanced_hide_shorts_shop_button", TRUE);
|
||||
public static final BooleanSetting HIDE_SHORTS_SOUND_BUTTON = new BooleanSetting("revanced_hide_shorts_sound_button", FALSE);
|
||||
public static final BooleanSetting HIDE_SHORTS_SOUND_METADATA_LABEL = new BooleanSetting("revanced_hide_shorts_sound_metadata_label", FALSE);
|
||||
|
||||
@@ -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.26.0-dev.2
|
||||
version = 5.27.0-dev.9
|
||||
|
||||
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"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,10 @@ public final class app/revanced/patches/all/misc/adb/HideAdbPatchKt {
|
||||
public static final fun getHideAdbStatusPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/all/misc/appicon/HideAppIconPatchKt {
|
||||
public static final fun getHideAppIconPatch ()Lapp/revanced/patcher/patch/ResourcePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/all/misc/build/BaseSpoofBuildInfoPatchKt {
|
||||
public static final fun baseSpoofBuildInfoPatch (Lkotlin/jvm/functions/Function0;)Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
@@ -192,6 +196,10 @@ public final class app/revanced/patches/googlenews/misc/gms/GmsCoreSupportPatchK
|
||||
public static final fun getGmsCoreSupportPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/googlephotos/misc/backup/EnableDCIMFoldersBackupControlPatchKt {
|
||||
public static final fun getEnableDCIMFoldersBackupControlPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/googlephotos/misc/extension/ExtensionPatchKt {
|
||||
public static final fun getExtensionPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
@@ -284,6 +292,10 @@ public final class app/revanced/patches/messenger/inputfield/DisableTypingIndica
|
||||
public static final fun getDisableTypingIndicatorPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/messenger/layout/HideFacebookButtonPatchKt {
|
||||
public static final fun getHideFacebookButtonPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/messenger/metaai/RemoveMetaAIPatchKt {
|
||||
public static final fun getRemoveMetaAIPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
@@ -575,6 +587,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;
|
||||
}
|
||||
@@ -873,6 +889,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;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
package app.revanced.patches.all.misc.appicon
|
||||
|
||||
import app.revanced.patcher.patch.resourcePatch
|
||||
import app.revanced.util.asSequence
|
||||
import app.revanced.util.childElementsSequence
|
||||
import java.util.logging.Logger
|
||||
import org.w3c.dom.Element
|
||||
|
||||
@Suppress("unused")
|
||||
val hideAppIconPatch = resourcePatch(
|
||||
name = "Hide app icon",
|
||||
description = "Hides the app icon from the Android launcher.",
|
||||
use = false,
|
||||
) {
|
||||
execute {
|
||||
document("AndroidManifest.xml").use { document ->
|
||||
var changed = false
|
||||
|
||||
val intentFilters = document.getElementsByTagName("intent-filter")
|
||||
for (node in intentFilters.asSequence().filterIsInstance<Element>()) {
|
||||
var hasMainAction = false
|
||||
var launcherCategory: Element? = null
|
||||
|
||||
for (child in node.childElementsSequence()) {
|
||||
when (child.tagName) {
|
||||
"action" -> if (child.getAttribute("android:name") == "android.intent.action.MAIN") {
|
||||
hasMainAction = true
|
||||
}
|
||||
"category" -> if (child.getAttribute("android:name") == "android.intent.category.LAUNCHER") {
|
||||
launcherCategory = child
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (hasMainAction && launcherCategory != null) {
|
||||
launcherCategory.setAttribute("android:name", "android.intent.category.DEFAULT")
|
||||
changed = true
|
||||
}
|
||||
}
|
||||
|
||||
if (!changed) {
|
||||
Logger.getLogger(this::class.java.name)
|
||||
.warning("No changes made: Did not find any launcher intent-filters to change.")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,5 +3,5 @@ package app.revanced.patches.bandcamp.limitations
|
||||
import app.revanced.patcher.fingerprint
|
||||
|
||||
internal val handlePlaybackLimitsFingerprint = fingerprint {
|
||||
strings("play limits processing track", "found play_count")
|
||||
strings("track_id", "play_count")
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package app.revanced.patches.bandcamp.limitations
|
||||
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.util.returnEarly
|
||||
|
||||
@Suppress("unused")
|
||||
val removePlayLimitsPatch = bytecodePatch(
|
||||
@@ -11,6 +11,6 @@ val removePlayLimitsPatch = bytecodePatch(
|
||||
compatibleWith("com.bandcamp.android")
|
||||
|
||||
execute {
|
||||
handlePlaybackLimitsFingerprint.method.addInstructions(0, "return-void")
|
||||
handlePlaybackLimitsFingerprint.method.returnEarly()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
package app.revanced.patches.googlephotos.misc.backup
|
||||
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.util.returnEarly
|
||||
|
||||
@Suppress("unused")
|
||||
val enableDCIMFoldersBackupControlPatch = bytecodePatch(
|
||||
name = "Enable DCIM folders backup control",
|
||||
description = "Disables always on backup for the Camera and other DCIM folders, allowing you to control backup " +
|
||||
"for each folder individually. This will make the app default to having no folders backed up.",
|
||||
use = false,
|
||||
) {
|
||||
compatibleWith("com.google.android.apps.photos")
|
||||
|
||||
execute {
|
||||
isDCIMFolderBackupControlDisabled.method.returnEarly(false)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package app.revanced.patches.googlephotos.misc.backup
|
||||
|
||||
import app.revanced.patcher.fingerprint
|
||||
|
||||
internal val isDCIMFolderBackupControlDisabled = fingerprint {
|
||||
returns("Z")
|
||||
strings("/dcim", "/mars_files/")
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package app.revanced.patches.messenger.layout
|
||||
|
||||
import app.revanced.patcher.fingerprint
|
||||
|
||||
internal val isFacebookButtonEnabledFingerprint = fingerprint {
|
||||
parameters()
|
||||
returns("Z")
|
||||
strings("com.facebook.messaging.inbox.tab.plugins.core.tabtoolbarbutton." +
|
||||
"facebookbutton.facebooktoolbarbutton.FacebookButtonTabButtonImplementation")
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package app.revanced.patches.messenger.layout
|
||||
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.util.returnEarly
|
||||
|
||||
@Suppress("unused")
|
||||
val hideFacebookButtonPatch = bytecodePatch(
|
||||
name = "Hide Facebook button",
|
||||
description = "Hides the Facebook button in the top toolbar."
|
||||
) {
|
||||
compatibleWith("com.facebook.orca")
|
||||
|
||||
execute {
|
||||
isFacebookButtonEnabledFingerprint.method.returnEarly(false)
|
||||
}
|
||||
}
|
||||
@@ -6,9 +6,8 @@ import app.revanced.patcher.fingerprint
|
||||
internal val getMobileConfigBoolFingerprint = fingerprint {
|
||||
parameters("J")
|
||||
returns("Z")
|
||||
opcodes(Opcode.RETURN)
|
||||
custom { method, classDef ->
|
||||
method.implementation ?: return@custom false // unsure if this is necessary
|
||||
opcodes(Opcode.RETURN)
|
||||
custom { _, classDef ->
|
||||
classDef.interfaces.contains("Lcom/facebook/mobileconfig/factory/MobileConfigUnsafeContext;")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,10 +25,10 @@ val removeMetaAIPatch = bytecodePatch(
|
||||
addInstructions(
|
||||
returnIndex,
|
||||
"""
|
||||
invoke-static { p1, p2, v$returnRegister }, $EXTENSION_CLASS_DESCRIPTOR->overrideConfigBool(JZ)Z
|
||||
invoke-static { p1, p2, v$returnRegister }, $EXTENSION_CLASS_DESCRIPTOR->overrideBooleanFlag(JZ)Z
|
||||
move-result v$returnRegister
|
||||
"""
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,4 +2,4 @@ package app.revanced.patches.messenger.misc.extension
|
||||
|
||||
import app.revanced.patches.shared.misc.extension.sharedExtensionPatch
|
||||
|
||||
val sharedExtensionPatch = sharedExtensionPatch("messenger", mainActivityOnCreateHook)
|
||||
val sharedExtensionPatch = sharedExtensionPatch("messenger", mainActivityOnCreateHook)
|
||||
|
||||
@@ -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
|
||||
"""
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -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 the 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 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;")
|
||||
}
|
||||
}
|
||||
@@ -91,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)
|
||||
|
||||
@@ -15,7 +15,7 @@ val fixFacebookLoginPatch = bytecodePatch(
|
||||
// The Facebook SDK tries to handle the login using the Facebook app in case it is installed.
|
||||
// However, the Facebook app does signature checks with the app that is requesting the authentication,
|
||||
// which ends up making the Facebook server reject with an invalid key hash for the app signature.
|
||||
// Override the Faceboook SDK to always handle the login using the web browser, which does not perform
|
||||
// Override the Facebook SDK to always handle the login using the web browser, which does not perform
|
||||
// signature checks.
|
||||
|
||||
val katanaProxyLoginMethodHandlerClass = katanaProxyLoginMethodHandlerClassFingerprint.originalClassDef
|
||||
|
||||
@@ -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,6 @@
|
||||
package app.revanced.patches.spotify.misc.widgets
|
||||
|
||||
import app.revanced.patcher.fingerprint
|
||||
import app.revanced.util.indexOfFirstInstruction
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
|
||||
internal val canBindAppWidgetPermissionFingerprint = fingerprint {
|
||||
|
||||
@@ -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!!
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package app.revanced.patches.youtube.layout.buttons.overlay
|
||||
|
||||
import app.revanced.patcher.fingerprint
|
||||
import app.revanced.util.containsLiteralInstruction
|
||||
import app.revanced.util.literal
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
|
||||
internal val playerControlsPreviousNextOverlayTouchFingerprint = fingerprint {
|
||||
@@ -20,3 +21,10 @@ internal val mediaRouteButtonFingerprint = fingerprint {
|
||||
methodDef.definingClass.endsWith("/MediaRouteButton;") && methodDef.name == "setVisibility"
|
||||
}
|
||||
}
|
||||
|
||||
internal val inflateControlsGroupLayoutStubFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||
parameters()
|
||||
returns("V")
|
||||
literal { controlsButtonGroupLayoutStub }
|
||||
}
|
||||
|
||||
@@ -28,6 +28,8 @@ internal var playerControlPreviousButtonTouchArea = -1L
|
||||
private set
|
||||
internal var playerControlNextButtonTouchArea = -1L
|
||||
private set
|
||||
internal var controlsButtonGroupLayoutStub = -1L
|
||||
private set
|
||||
|
||||
private val hidePlayerOverlayButtonsResourcePatch = resourcePatch {
|
||||
dependsOn(resourceMappingPatch)
|
||||
@@ -35,6 +37,7 @@ private val hidePlayerOverlayButtonsResourcePatch = resourcePatch {
|
||||
execute {
|
||||
playerControlPreviousButtonTouchArea = resourceMappings["id", "player_control_previous_button_touch_area"]
|
||||
playerControlNextButtonTouchArea = resourceMappings["id", "player_control_next_button_touch_area"]
|
||||
controlsButtonGroupLayoutStub = resourceMappings["id", "youtube_controls_button_group_layout_stub"]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,7 +46,8 @@ private const val EXTENSION_CLASS_DESCRIPTOR =
|
||||
|
||||
val hidePlayerOverlayButtonsPatch = bytecodePatch(
|
||||
name = "Hide player overlay buttons",
|
||||
description = "Adds options to hide the player Cast, Autoplay, Captions, and Previous & Next buttons.",
|
||||
description = "Adds options to hide the player Cast, Autoplay, Captions, Previous & Next buttons, and the player " +
|
||||
"control buttons background.",
|
||||
) {
|
||||
dependsOn(
|
||||
sharedExtensionPatch,
|
||||
@@ -72,6 +76,7 @@ val hidePlayerOverlayButtonsPatch = bytecodePatch(
|
||||
SwitchPreference("revanced_hide_cast_button"),
|
||||
SwitchPreference("revanced_hide_captions_button"),
|
||||
SwitchPreference("revanced_hide_autoplay_button"),
|
||||
SwitchPreference("revanced_hide_player_control_buttons_background"),
|
||||
)
|
||||
|
||||
// region Hide player next/previous button.
|
||||
@@ -147,5 +152,32 @@ val hidePlayerOverlayButtonsPatch = bytecodePatch(
|
||||
}
|
||||
|
||||
// endregion
|
||||
|
||||
// region Hide player control buttons background.
|
||||
|
||||
inflateControlsGroupLayoutStubFingerprint.method.apply {
|
||||
val controlsButtonGroupLayoutStubResIdConstIndex =
|
||||
indexOfFirstLiteralInstructionOrThrow(controlsButtonGroupLayoutStub)
|
||||
val inflateControlsGroupLayoutStubIndex =
|
||||
indexOfFirstInstruction(controlsButtonGroupLayoutStubResIdConstIndex) {
|
||||
getReference<MethodReference>()?.name == "inflate"
|
||||
}
|
||||
|
||||
val freeRegister = findFreeRegister(inflateControlsGroupLayoutStubIndex)
|
||||
val hidePlayerControlButtonsBackgroundDescriptor =
|
||||
"$EXTENSION_CLASS_DESCRIPTOR->hidePlayerControlButtonsBackground(Landroid/view/View;)V"
|
||||
|
||||
addInstructions(
|
||||
inflateControlsGroupLayoutStubIndex + 1,
|
||||
"""
|
||||
# Move the inflated layout to a temporary register.
|
||||
# The result of the inflate method is by default not moved to a register after the method is called.
|
||||
move-result-object v$freeRegister
|
||||
invoke-static { v$freeRegister }, $hidePlayerControlButtonsBackgroundDescriptor
|
||||
"""
|
||||
)
|
||||
}
|
||||
|
||||
// endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -161,7 +161,7 @@ val hideLayoutComponentsPatch = bytecodePatch(
|
||||
SwitchPreference("revanced_hide_comments_by_members_header"),
|
||||
SwitchPreference("revanced_hide_comments_section"),
|
||||
SwitchPreference("revanced_hide_comments_create_a_short_button"),
|
||||
SwitchPreference("revanced_hide_comments_timestamp_and_emoji_buttons"),
|
||||
SwitchPreference("revanced_hide_comments_timestamp_button"),
|
||||
SwitchPreference("revanced_hide_comments_preview_comment"),
|
||||
SwitchPreference("revanced_hide_comments_thanks_button"),
|
||||
),
|
||||
|
||||
@@ -74,3 +74,21 @@ internal val setPivotBarVisibilityParentFingerprint = fingerprint {
|
||||
parameters("Z")
|
||||
strings("FEnotifications_inbox")
|
||||
}
|
||||
|
||||
internal val shortsExperimentalPlayerFeatureFlagFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||
returns("Z")
|
||||
parameters()
|
||||
literal {
|
||||
45677719L
|
||||
}
|
||||
}
|
||||
|
||||
internal val renderNextUIFeatureFlagFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||
returns("Z")
|
||||
parameters()
|
||||
literal {
|
||||
45649743L
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ import app.revanced.patches.youtube.misc.litho.filter.addLithoFilter
|
||||
import app.revanced.patches.youtube.misc.litho.filter.lithoFilterPatch
|
||||
import app.revanced.patches.youtube.misc.navigation.navigationBarHookPatch
|
||||
import app.revanced.patches.youtube.misc.playservice.is_19_41_or_greater
|
||||
import app.revanced.patches.youtube.misc.playservice.is_20_07_or_greater
|
||||
import app.revanced.patches.youtube.misc.playservice.versionCheckPatch
|
||||
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
|
||||
import app.revanced.patches.youtube.misc.settings.settingsPatch
|
||||
@@ -26,6 +27,7 @@ import app.revanced.util.forEachLiteralValueInstruction
|
||||
import app.revanced.util.getReference
|
||||
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||
import app.revanced.util.indexOfFirstLiteralInstruction
|
||||
import app.revanced.util.returnLate
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||
|
||||
@@ -90,11 +92,13 @@ private val hideShortsComponentsResourcePatch = resourcePatch {
|
||||
SwitchPreference("revanced_hide_shorts_paused_overlay_buttons"),
|
||||
|
||||
// Suggested actions.
|
||||
SwitchPreference("revanced_hide_shorts_preview_comment"),
|
||||
SwitchPreference("revanced_hide_shorts_save_sound_button"),
|
||||
SwitchPreference("revanced_hide_shorts_use_template_button"),
|
||||
SwitchPreference("revanced_hide_shorts_upcoming_button"),
|
||||
SwitchPreference("revanced_hide_shorts_green_screen_button"),
|
||||
SwitchPreference("revanced_hide_shorts_hashtag_button"),
|
||||
SwitchPreference("revanced_hide_shorts_new_posts_button"),
|
||||
SwitchPreference("revanced_hide_shorts_shop_button"),
|
||||
SwitchPreference("revanced_hide_shorts_tagged_products"),
|
||||
SwitchPreference("revanced_hide_shorts_search_suggestions"),
|
||||
@@ -251,5 +255,27 @@ val hideShortsComponentsPatch = bytecodePatch(
|
||||
}
|
||||
|
||||
// endregion
|
||||
|
||||
// region Disable experimental Shorts flags.
|
||||
|
||||
// Flags might be present in earlier targets, but they are not found in 19.47.53.
|
||||
// If these flags are forced on, the experimental layout is still not used and
|
||||
// it appears the features requires additional server side data to fully use.
|
||||
if (is_20_07_or_greater) {
|
||||
// Experimental Shorts player uses Android native buttons and not Litho,
|
||||
// and the layout is provided by the server.
|
||||
//
|
||||
// Since the buttons are native components and not Litho, it should be possible to
|
||||
// fix the RYD Shorts loading delay by asynchronously loading RYD and updating
|
||||
// the button text after RYD has loaded.
|
||||
shortsExperimentalPlayerFeatureFlagFingerprint.method.returnLate(false)
|
||||
|
||||
// Experimental UI renderer must also be disabled since it requires the
|
||||
// experimental Shorts player. If this is enabled but Shorts player
|
||||
// is disabled then the app crashes when the Shorts player is opened.
|
||||
renderNextUIFeatureFlagFingerprint.method.returnLate(false)
|
||||
}
|
||||
|
||||
// endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,37 +1,12 @@
|
||||
package app.revanced.patches.youtube.layout.player.background
|
||||
|
||||
import app.revanced.patcher.patch.resourcePatch
|
||||
import app.revanced.util.doRecursively
|
||||
import org.w3c.dom.Element
|
||||
import app.revanced.patches.youtube.layout.buttons.overlay.hidePlayerOverlayButtonsPatch
|
||||
|
||||
@Suppress("unused")
|
||||
@Deprecated("Functionality added to hidePlayerOverlayButtonsPatch", ReplaceWith("hidePlayerOverlayButtonsPatch"))
|
||||
val playerControlsBackgroundPatch = resourcePatch(
|
||||
name = "Remove player controls background",
|
||||
description = "Removes the dark background surrounding the video player controls.",
|
||||
use = false,
|
||||
description = "Removes the dark background surrounding the video player control buttons.",
|
||||
) {
|
||||
compatibleWith(
|
||||
"com.google.android.youtube"(
|
||||
"19.16.39",
|
||||
"19.25.37",
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
)
|
||||
)
|
||||
|
||||
execute {
|
||||
document("res/drawable/player_button_circle_background.xml").use { document ->
|
||||
|
||||
document.doRecursively node@{ node ->
|
||||
if (node !is Element) return@node
|
||||
|
||||
node.getAttributeNode("android:color")?.let { attribute ->
|
||||
attribute.textContent = "@android:color/transparent"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
dependsOn(hidePlayerOverlayButtonsPatch)
|
||||
}
|
||||
|
||||
@@ -44,6 +44,19 @@ internal val themeHelperLightColorFingerprint = fingerprint {
|
||||
}
|
||||
}
|
||||
|
||||
internal const val GRADIENT_LOADING_SCREEN_AB_CONSTANT = 45412406L
|
||||
|
||||
internal val useGradientLoadingScreenFingerprint = fingerprint {
|
||||
literal { GRADIENT_LOADING_SCREEN_AB_CONSTANT }
|
||||
}
|
||||
|
||||
internal const val SPLASH_SCREEN_STYLE_FEATURE_FLAG = 269032877L
|
||||
|
||||
internal val splashScreenStyleFingerprint = fingerprint {
|
||||
returns("V")
|
||||
parameters("Landroid/os/Bundle;")
|
||||
literal { SPLASH_SCREEN_STYLE_FEATURE_FLAG }
|
||||
custom { method, classDef ->
|
||||
method.name == "onCreate" && classDef.endsWith("/MainActivity;")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import app.revanced.patches.all.misc.resources.addResourcesPatch
|
||||
import app.revanced.patches.shared.misc.mapping.resourceMappingPatch
|
||||
import app.revanced.patches.shared.misc.settings.preference.BasePreference
|
||||
import app.revanced.patches.shared.misc.settings.preference.InputType
|
||||
import app.revanced.patches.shared.misc.settings.preference.ListPreference
|
||||
import app.revanced.patches.shared.misc.settings.preference.PreferenceCategory
|
||||
import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference.Sorting
|
||||
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
|
||||
@@ -17,6 +18,7 @@ import app.revanced.patches.shared.misc.settings.preference.TextPreference
|
||||
import app.revanced.patches.youtube.layout.seekbar.seekbarColorPatch
|
||||
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
||||
import app.revanced.patches.youtube.misc.playservice.is_19_25_or_greater
|
||||
import app.revanced.patches.youtube.misc.playservice.is_19_47_or_greater
|
||||
import app.revanced.patches.youtube.misc.playservice.versionCheckPatch
|
||||
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
|
||||
import app.revanced.patches.youtube.misc.settings.settingsPatch
|
||||
@@ -27,8 +29,6 @@ import org.w3c.dom.Element
|
||||
private const val EXTENSION_CLASS_DESCRIPTOR =
|
||||
"Lapp/revanced/extension/youtube/patches/theme/ThemePatch;"
|
||||
|
||||
internal const val GRADIENT_LOADING_SCREEN_AB_CONSTANT = 45412406L
|
||||
|
||||
val themePatch = bytecodePatch(
|
||||
name = "Theme",
|
||||
description = "Adds options for theming and applies a custom background theme (dark background theme defaults to amoled black).",
|
||||
@@ -232,15 +232,32 @@ val themePatch = bytecodePatch(
|
||||
addResources("youtube", "layout.theme.themePatch")
|
||||
|
||||
PreferenceScreen.GENERAL_LAYOUT.addPreferences(
|
||||
SwitchPreference("revanced_gradient_loading_screen"),
|
||||
SwitchPreference("revanced_gradient_loading_screen")
|
||||
)
|
||||
|
||||
if (is_19_47_or_greater) {
|
||||
PreferenceScreen.GENERAL_LAYOUT.addPreferences(
|
||||
ListPreference(
|
||||
key = "splash_screen_animation_style",
|
||||
summaryKey = null
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
useGradientLoadingScreenFingerprint.method.insertLiteralOverride(
|
||||
GRADIENT_LOADING_SCREEN_AB_CONSTANT,
|
||||
"$EXTENSION_CLASS_DESCRIPTOR->gradientLoadingScreenEnabled(Z)Z"
|
||||
)
|
||||
|
||||
mapOf(
|
||||
if (is_19_47_or_greater) {
|
||||
// Lottie splash screen exists in earlier versions, but it may not be always on.
|
||||
splashScreenStyleFingerprint.method.insertLiteralOverride(
|
||||
SPLASH_SCREEN_STYLE_FEATURE_FLAG,
|
||||
"$EXTENSION_CLASS_DESCRIPTOR->getLoadingScreenType(I)I"
|
||||
)
|
||||
}
|
||||
|
||||
arrayOf(
|
||||
themeHelperLightColorFingerprint to lightThemeBackgroundColor,
|
||||
themeHelperDarkColorFingerprint to darkThemeBackgroundColor,
|
||||
).forEach { (fingerprint, color) ->
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -52,14 +52,14 @@ val rememberVideoQualityPatch = bytecodePatch {
|
||||
ListPreference(
|
||||
key = "revanced_shorts_quality_default_mobile",
|
||||
summaryKey = null,
|
||||
entriesKey = "revanced_video_quality_default_entries",
|
||||
entryValuesKey = "revanced_video_quality_default_entry_values",
|
||||
entriesKey = "revanced_shorts_quality_default_entries",
|
||||
entryValuesKey = "revanced_shorts_quality_default_entry_values",
|
||||
),
|
||||
ListPreference(
|
||||
key = "revanced_shorts_quality_default_wifi",
|
||||
summaryKey = null,
|
||||
entriesKey = "revanced_video_quality_default_entries",
|
||||
entryValuesKey = "revanced_video_quality_default_entry_values",
|
||||
entriesKey = "revanced_shorts_quality_default_entries",
|
||||
entryValuesKey = "revanced_shorts_quality_default_entry_values",
|
||||
),
|
||||
SwitchPreference("revanced_remember_shorts_quality_last_selected")
|
||||
))
|
||||
|
||||
@@ -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.
|
||||
*
|
||||
|
||||
@@ -35,7 +35,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">الإعدادات</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_reset_color">Reset color</string>
|
||||
<string name="revanced_settings_color_invalid">لون غير صالح</string>
|
||||
<string name="revanced_settings_restart_title">تحديث وإعادة التشغيل</string>
|
||||
<string name="revanced_settings_restart">إعادة التشغيل</string>
|
||||
@@ -311,9 +311,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">إخفاء زر \'إنشاء Short\'</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">تم إخفاء زر إنشاء Short</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">يتم عرض زر إنشاء Short</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">إخفاء أزرار الرموز التعبيرية والطوابع الزمنية</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">تم إخفاء أزرار الرموز التعبيرية والطوابع الزمنية</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">يتم عرض أزرار الرموز التعبيرية والطوابع الزمنية</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_title">زر إخفاء الطابع الزمني</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_on">زر الطابع الزمني مخفي</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_off">زر الطابع الزمني معروض</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">إخفاء تعليق المعاينة</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">تم إخفاء تعليق المعاينة</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">يتم عرض تعليق المعاينة</string>
|
||||
@@ -681,6 +681,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_autoplay_button_title">إخفاء زر التشغيل التلقائي</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">تم إخفاء زر التشغيل التلقائي</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">يتم عرض زر التشغيل التلقائي</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_title">إخفاء خلفية أزرار التحكم في المشغل</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_on">تم إخفاء خلفية أزرار التحكم في المشغل</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">تم إظهار خلفية أزرار التحكم في المشغل</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">إخفاء بطاقات شاشة النهاية</string>
|
||||
@@ -750,6 +753,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_shorts_location_label_title">إخفاء تسمية الموقع</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">تم إخفاء تسمية الموقع</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">يتم عرض تسمية الموقع</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">إخفاء تعليق المعاينة</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">تم إخفاء تعليق المعاينة</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">يتم عرض تعليق المعاينة</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">إخفاء زر حفظ الموسيقى</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">تم إخفاء زر حفظ الموسيقى</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">يتم عرض زر حفظ الموسيقى</string>
|
||||
@@ -762,6 +768,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">إخفاء زر الشاشة الخضراء</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">تم إخفاء زر الشاشة الخضراء</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">يتم عرض زر الشاشة الخضراء</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_title">إخفاء زر \"مشاركات جديدة\"</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">يتم عرض زر \"مشاركات جديدة\"</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">تم إخفاء زر \"مشاركات جديدة\"</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">إخفاء زر الهاشتاج</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">تم إخفاء زر الهاشتاج</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">يتم عرض زر الهاشتاج</string>
|
||||
@@ -1253,6 +1262,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_gradient_loading_screen_title">تمكين شاشة التحميل المتدرجة</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_on">ستحتوي شاشة التحميل على خلفية متدرجة</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_off">ستحتوي شاشة التحميل على خلفية ثابتة</string>
|
||||
<string name="splash_screen_animation_style_title">نمط الشاشة الترحيبية</string>
|
||||
<string name="splash_screen_animation_style_entry_1">اللون</string>
|
||||
<string name="splash_screen_animation_style_entry_2">أبيض وأسود</string>
|
||||
<string name="revanced_seekbar_custom_color_title">تمكين لون شريط تقدم الفيديو المخصص</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">يتم عرض لون شريط تقدم الفيديو المخصص</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">يتم عرض لون شريط تقدم الفيديو الاصلي</string>
|
||||
@@ -1398,7 +1410,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">
|
||||
@@ -1410,6 +1422,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>
|
||||
|
||||
@@ -311,9 +311,9 @@ Gözlənilməz hallardan xəbərdar olmayacaqsınız."</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">\"Shorts Yarat\" düyməsini gizlət</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">Short yarat düyməsi gizlidir</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">Short yarat düyməsi görünür</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Emoji və vaxt möhürü düymələrin gizlət</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Emoji və vaxt möhürü düymələri gizlidir</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Emoji və vaxt möhürü düymələri görünür</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_title">Vaxt möhürü düyməsini gizlət</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_on">Vaxt damğası düyməsi gizlidir</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_off">Vaxt möhürü düyməsi göstərilir</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Önbaxış şərhin gizlət</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">Önbaxış şərhi gizlədilib</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">Önbaxış şərhi göstərilir</string>
|
||||
@@ -750,6 +750,9 @@ Audio trek seçimin göstərmək üçün \"Video axınları saxtalaşdır\"ı iO
|
||||
<string name="revanced_hide_shorts_location_label_title">Məkan etiketini gizlət</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">Məkan etiketi gizlidir</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">Məkan etiketi göstərilir</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">Öncül baxış şərhini gizlət</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Öncül baxış şərhi gizlidir</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Öncül baxış şərhi göstərilir</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Musiqini saxla düyməsini gizlət</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">\"Musiqini saxla\" düyməsi gizlidir</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">\"Musiqini saxla\" düyməsi göstərilir</string>
|
||||
@@ -1252,6 +1255,9 @@ Genişləndirmək və ya bağlamaq üçün sürüşdür"</string>
|
||||
<string name="revanced_gradient_loading_screen_title">Dəyişkən yükləmə ekranını aktivləşdir</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_on">Yükləmə ekranı, dəyişkən arxa plana malik olacaq</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_off">Yükləmə ekranı, vahid arxa plana malik olacaq</string>
|
||||
<string name="splash_screen_animation_style_title">Sıçrama ekran üslubu</string>
|
||||
<string name="splash_screen_animation_style_entry_1">Rəng</string>
|
||||
<string name="splash_screen_animation_style_entry_2">Qara və ağ</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Fərdi irəliləmə cizgisi rəngini aktivləşdir</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">Fərdi irəliləmə cizgisi rəngi göstərilir</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">Orijinal irəliləmə cizgisi rəngi göstərilir</string>
|
||||
@@ -1397,7 +1403,7 @@ 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_on">Düymə göstərilir. Oynatma sürətin standart olaraq qaytarmaq üçün toxunub saxla</string>
|
||||
<string name="revanced_playback_speed_dialog_button_summary_off">Düymə göstərilmir</string>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
@@ -1409,6 +1415,7 @@ Bunu aktivləşdirmə daha yüksək video keyfiyyətləri əngəlin silə bilər
|
||||
<string name="revanced_custom_playback_speeds_invalid">Fərdi sürətlər %s dəyərindən az olmalıdır</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">Fərdi oynatma sürətləri etibarsızdır</string>
|
||||
<string name="revanced_custom_playback_speeds_auto">Avtomatik</string>
|
||||
<string name="revanced_custom_playback_speeds_reset_toast">Oynatma sürəti sıfırlandı: %s</string>
|
||||
<string name="revanced_speed_tap_and_hold_title">Xüsusi toxunma və saxlanılma sürəti</string>
|
||||
<string name="revanced_speed_tap_and_hold_summary">0-8 arası oynatma sürəti</string>
|
||||
</patch>
|
||||
|
||||
@@ -311,9 +311,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">Схаваць кнопку \"Створиць Short\"</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">Кнопка «Стварыць Shorts» схаваная</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">Кнопка «Стварыць Shorts» паказаная</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Схаваць кнопкі эмодзі і адзнак часу</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Кнопкі эмодзі і адзнак часу схаваныя</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Кнопкі эмодзі і адзнак часу паказаныя</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_title">Схаваць кнопку часу</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_on">Кнопка часу схаваная</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_off">Кнопка часу паказаная</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Схаваць каментарый для папярэдняга прагляду</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">Каментарый перад праглядам схаваны</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">Паказваецца папярэдні прагляд каментарыя</string>
|
||||
@@ -681,6 +681,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_autoplay_button_title">Схаваць кнопку «Аўтапрайграванне»</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">Кнопка аўтазапуску схавана</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">Паказана кнопка аўтазапуску</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_title">Схаваць фон кнопак кіравання прайгравальнікам</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_on">Фон кнопак кіравання прайгравальнікам схаваны</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">Фон кнопак кіравання прайгравальнікам паказаны</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">Схаваць карткі канцавога экрана</string>
|
||||
@@ -750,6 +753,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_shorts_location_label_title">Схаваць метку месцазнаходжання</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">Метка месцазнаходжання схавана</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">Паказана метка месцазнаходжання</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">Схаваць папярэдні прагляд каментарыя</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Папярэдні прагляд каментарыя схаваны</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Паказваецца папярэдні прагляд каментарыя</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Схаваць кнопку «Захаваць музыку»</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Кнопка захавання музыкі схавана</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Кнопка захавання музыкі паказана</string>
|
||||
@@ -762,6 +768,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Схаваць кнопку «Зялёны экран»</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">Кнопка с зелёным экраном Shorts скрыта</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">Кнопка с зелёным экраном Shorts отображается</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_title">Схаваць кнопку «Новыя паведамленні»</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">Кнопка «Новыя паведамленні» паказана</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">Кнопка «Новыя паведамленні» схавана</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">Скрыть хештег-кнопку Shorts</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">Хештег-кнопка Shorts скрыта</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">Хештег-кнопка Shorts отображается</string>
|
||||
@@ -1254,6 +1263,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_gradient_loading_screen_title">Уключыць градыентны экран загрузкі</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_on">Экран загрузкі будзе мець градыентны фон</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_off">Экран загрузкі будзе мець суцэльны фон</string>
|
||||
<string name="splash_screen_animation_style_title">Стыль застаўкі</string>
|
||||
<string name="splash_screen_animation_style_entry_1">Колер</string>
|
||||
<string name="splash_screen_animation_style_entry_2">Чорна-белы</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Уключыць уласны колер панэлі пошуку</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">Паказваецца карыстальніцкі колер панэлі пошуку</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">Паказаны зыходны колер панэлі пошуку</string>
|
||||
@@ -1399,7 +1411,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">
|
||||
@@ -1411,6 +1423,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>
|
||||
|
||||
@@ -311,9 +311,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">Бутон за създаване на Shorts</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">Бутонът \"Създаване на Short\" е скрит</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">Бутонът \"Създаване на Short\" е показан</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Скриване на бутоните за емоджи и времеви печат</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Бутоните за емоджи и времеви печат са скрити</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Бутоните за емоджи и времеви печат са показани</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_title">Скриване на бутона за времеви печат</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_on">Бутонът за времеви печат е скрит</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_off">Бутонът за времеви печат е показан</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Преглед на коментари</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">Прегледа на коментари е скрит</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">Прегледа на коментари се показва</string>
|
||||
@@ -681,6 +681,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_autoplay_button_title">Скриване на бутона Autoplay</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">Бутона за авт. изпълнение е скрит</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">Бутона за авт. изпълнение се показва</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_title">Скриване на фона на бутоните за управление на плейъра</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_on">Фонът на бутоните за управление на плейъра е скрит</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">Фонът на бутоните за управление на плейъра е показан</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">Скриване на препоръките в края</string>
|
||||
@@ -750,6 +753,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_shorts_location_label_title">Етикет за местоположение</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">Етикет за местоположение е скрит</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">Етикет за местоположение се показва</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">Скриване на коментара за визуализация</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Коментарът за визуализация е скрит</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Показва се визуализация на коментара</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Скриване на бутона Save music</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Бутонът за запазване на музика е скрит</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Показан е бутонът за запазване на музика</string>
|
||||
@@ -762,6 +768,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Скриване на бутона Green screen</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">Бутон \"Зелен екран\" е скрит</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">Бутон \"Зелен екран\" се показва</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_title">Скриване на бутона \"Нови публикации\"</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">Бутонът \"Нови публикации\" се показва</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">Бутонът \"Нови публикации\" е скрит</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">Скриване на бутона за хаштаг</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">Бутона за хаштаг е скрит</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">Бутона за хаштаг се показва</string>
|
||||
@@ -1253,6 +1262,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_gradient_loading_screen_title">Фон на екрана при зареждане на видео</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_on">Екранът за зареждане ще има градиентен фон</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_off">Екранът за зареждане ще има плътен фон</string>
|
||||
<string name="splash_screen_animation_style_title">Стил на началния екран</string>
|
||||
<string name="splash_screen_animation_style_entry_1">Цвят</string>
|
||||
<string name="splash_screen_animation_style_entry_2">Черно и бяло</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Промяна на цвета на индикатора за време</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">Показва се персонализиран цвят на лентата за напредък</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">Показва се оригиналния цвят на лентата за напредък</string>
|
||||
@@ -1398,7 +1410,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">
|
||||
@@ -1410,6 +1422,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>
|
||||
|
||||
@@ -307,9 +307,9 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">\'Short তৈরি করুন\' বোতাম লুকান</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">একটি Shorts বোতাম তৈরি করুন লুকানো আছে</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">একটি Shorts বোতাম তৈরি করুন দেখানো হয়েছে</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">ইমোজি এবং টাইমস্ট্যাম্প বোতাম লুকান</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">ইমোজি এবং টাইমস্ট্যাম্প বোতাম লুকানো আছে</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">ইমোজি এবং টাইমস্ট্যাম্প বোতাম দেখানো হয়েছে</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_title">সময় চিহ্নিত করার বোতাম লুকান</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_on">সময় চিহ্নিত করার বোতাম লুকানো আছে</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_off">সময় চিহ্নিত করার বোতাম দেখানো হয়েছে</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">মন্তব্যের পূর্বরূপ লুকান</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">মন্তব্যের পূর্বরূপ লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">মন্তব্যের পূর্বরূপ প্রদর্শিত হয়েছে</string>
|
||||
@@ -677,6 +677,9 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
||||
<string name="revanced_hide_autoplay_button_title">অটোপ্লে বোতামটি লুকান</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">autoplay বোতাম লুকানো আছে</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">autoplay বোতাম দেখানো হচ্ছে</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_title">প্লেয়ার কন্ট্রোল বোতামগুলির পটভূমি লুকান</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_on">প্লেয়ার কন্ট্রোল বোতামগুলির পটভূমি লুকানো আছে</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">প্লেয়ার কন্ট্রোল বোতামগুলির পটভূমি দেখানো হয়েছে</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">শেষ স্ক্রীন কার্ড লুকান</string>
|
||||
@@ -746,6 +749,9 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
||||
<string name="revanced_hide_shorts_location_label_title">অবস্থান লেবেল লুকান</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">অবস্থান লেবেল লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">অবস্থান লেবেল প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">Preview comment লুকান</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Preview comment লুকানো আছে</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Preview comment দেখানো হয়েছে</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">সেভ মিউজিক বোতামটি লুকান</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Save music বোতাম লুকানো আছে</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Save music বোতাম দেখানো হচ্ছে</string>
|
||||
@@ -758,6 +764,9 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">গ্রিন স্ক্রিন বোতামটি লুকান</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">সবুজ পর্দা বোতাম লুকানো আছে</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">সবুজ পর্দা বোতাম দেখানো হচ্ছে</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_title">নতুন পোস্ট বোতাম লুকান</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">নতুন পোস্ট বোতাম দেখানো হয়েছে</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">নতুন পোস্ট বোতাম লুকানো হয়েছে</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">হ্যাশট্যাগ বোতাম লুকান</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">হ্যাশট্যাগ বোতাম লুকানো আছে</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">হ্যাশট্যাগ বোতাম দেখানো হচ্ছে</string>
|
||||
@@ -1249,6 +1258,9 @@ Miniplayer স্ক্রিন থেকে বামে বা ডানে
|
||||
<string name="revanced_gradient_loading_screen_title">গ্রেডিয়েন্ট লোডিং স্ক্রিণ সক্রিয় করুন</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_on">লোডিং স্ক্রিণে একটি গ্রেডিয়েন্ড ব্যাকগ্রাউন্ড থাকবে</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_off">লোডিং স্ক্রিণে একটি সলিড ব্যাকগ্রাউন্ড থাকবে</string>
|
||||
<string name="splash_screen_animation_style_title">স্প্ল্যাশ স্ক্রিন শৈলী</string>
|
||||
<string name="splash_screen_animation_style_entry_1">রং</string>
|
||||
<string name="splash_screen_animation_style_entry_2">কালো এবং সাদা</string>
|
||||
<string name="revanced_seekbar_custom_color_title">সিকবারে নিজস্ব রং সক্রিয় করুন</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">সিকবারে নিজস্ব রং প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">সিকবারে মূল রং প্রদর্শিত হয়েছে</string>
|
||||
@@ -1394,7 +1406,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">
|
||||
@@ -1406,6 +1418,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>
|
||||
|
||||
@@ -311,9 +311,9 @@ No se t'informarà de cap esdeveniment inesperat."</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">Amaga el botó \"Crear un Short\"</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">El botó Crea un Short s\'amaga</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">El botó Crea un Short es mostra</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Amaga els botons d\'emojis i marca de temps</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Els botons d\'emojis i marca de temps s\'amaguen</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Els botons d\'emojis i marca de temps es mostren</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_title">Amaga el botó de marca de temps</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_on">S\'amaga el botó de marca de temps</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_off">Es mostra el botó de marca de temps</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Amaga la vista prèvia del comentari</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">La vista prèvia del comentari s\'amaga</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">La vista prèvia del comentari es mostra</string>
|
||||
@@ -681,6 +681,9 @@ Per mostrar el menú de la pista d'àudio, canvieu \"Suplanta els fluxos de víd
|
||||
<string name="revanced_hide_autoplay_button_title">Amaga el botó Reproducció automàtica</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">El botó de reproducció automàtica està ocult</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">El botón de reproducción automática se muestra</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_title">Amaga el fons dels botons de control del reproductor</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_on">S\'amaga el fons dels botons de control del reproductor</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">Es mostra el fons dels botons de control del reproductor</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">Ocultar tarjetas de pantalla final</string>
|
||||
@@ -750,6 +753,9 @@ Per mostrar el menú de la pista d'àudio, canvieu \"Suplanta els fluxos de víd
|
||||
<string name="revanced_hide_shorts_location_label_title">Amaga l\'etiqueta de ubicació</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">L\'etiqueta de ubicació està oculta</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">L\'etiqueta de ubicació es mostra</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">Amaga el comentari de vista prèvia</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">El comentari de vista prèvia s\'ha amagat</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Es mostra la vista prèvia del comentari</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Amaga el botó Desa música</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">El botó de desar música està ocult</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">El botó de desar música es mostra</string>
|
||||
@@ -762,6 +768,9 @@ Per mostrar el menú de la pista d'àudio, canvieu \"Suplanta els fluxos de víd
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Amaga el botó Pantalla verda</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">El botó de pantalla verda està ocult</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">El botó de pantalla verda està visible</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_title">Amaga el botó de publicacions noves</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">Es mostra el botó de publicacions noves</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">S\'amaga el botó de publicacions noves</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">Amagar botó de hashtag</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">El botó de hashtag està ocult</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">El botó de hashtag està visible</string>
|
||||
@@ -1252,6 +1261,9 @@ Llisca per expandir o tancar"</string>
|
||||
<string name="revanced_gradient_loading_screen_title">Habilita la pantalla de càrrega amb degradació</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_on">La pantalla de càrrega tindrà un fons de degradació</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_off">La pantalla de càrrega tindrà un fons sòlid</string>
|
||||
<string name="splash_screen_animation_style_title">Estil de la pantalla de presentació</string>
|
||||
<string name="splash_screen_animation_style_entry_1">Color</string>
|
||||
<string name="splash_screen_animation_style_entry_2">Blanc i negre</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Habilita el color personalitzat de la barra de cerca</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">El color personalitzat de la barra de cerca es mostra</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">El color original de la barra de cerca es mostra</string>
|
||||
@@ -1397,7 +1409,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">
|
||||
@@ -1409,6 +1421,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>
|
||||
|
||||
@@ -311,9 +311,9 @@ Nebudete informováni o žádné neočekávané události."</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">Skrýt tlačítko \"Vytvořit Short\"</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">Tlačítko Vytvořit Short je skryté</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">Tlačítko Vytvořit Short je zobrazeno</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Skrýt tlačítka emoji a časového razítka</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Tlačítka emoji a časového razítka jsou skryta</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Tlačítka emoji a časového razítka jsou zobrazena</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_title">Skrýt tlačítko časové osy</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_on">Tlačítko časové osy je skryté</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_off">Tlačítko časové osy je zobrazeno</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Skrýt náhled komentáře</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">Náhled komentáře je skryt</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">Náhled komentáře je zobrazen</string>
|
||||
@@ -681,6 +681,9 @@ Chcete-li zobrazit nabídku zvukové stopy, změňte možnost „Zfalšovat stre
|
||||
<string name="revanced_hide_autoplay_button_title">Skrýt tlačítko Automatické přehrávání</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">Tlačítko automatického přehrávání je skryto</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">Tlačítko automatického přehrávání je zobrazeno</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_title">Skrýt pozadí ovládacích tlačítek přehrávače</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_on">Pozadí ovládacích tlačítek přehrávače je skryté</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">Zobrazuje se pozadí ovládacích tlačítek přehrávače</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">Skrýt karty s informacemi o videu</string>
|
||||
@@ -750,6 +753,9 @@ Chcete-li zobrazit nabídku zvukové stopy, změňte možnost „Zfalšovat stre
|
||||
<string name="revanced_hide_shorts_location_label_title">Skrýt štítek umístění</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">Štítek umístění je skrytý</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">Štítek umístění je zobrazen</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">Skrýt náhled komentáře</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Náhled komentáře je skrytý</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Zobrazuje se náhled komentáře</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Skrýt tlačítko Uložit hudbu</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Tlačítko Uložit hudbu je skryté</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Tlačítko Uložit hudbu je zobrazeno</string>
|
||||
@@ -762,6 +768,9 @@ Chcete-li zobrazit nabídku zvukové stopy, změňte možnost „Zfalšovat stre
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Skrýt tlačítko Zelená obrazovka</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">Tlačítko zelené obrazovky je skryté</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">Tlačítko zelené obrazovky je zobrazeno</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_title">Skrýt tlačítko Nové příspěvky</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">Tlačítko Nové příspěvky je zobrazeno</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">Tlačítko Nové příspěvky je skryto</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">Skrýt tlačítko hashtagů</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">Tlačítko hashtagů je skryté</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">Tlačítko hashtagů je zobrazeno</string>
|
||||
@@ -1252,6 +1261,9 @@ Rozbalte nebo zavřete přejetím prstem"</string>
|
||||
<string name="revanced_gradient_loading_screen_title">Povolit přechodovou obrazovku načítání</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_on">Obrazovka načítání bude mít přechodové pozadí</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_off">Obrazovka načítání bude mít pevné pozadí</string>
|
||||
<string name="splash_screen_animation_style_title">Styl úvodní obrazovky</string>
|
||||
<string name="splash_screen_animation_style_entry_1">Barva</string>
|
||||
<string name="splash_screen_animation_style_entry_2">Černobílá</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Povolit vlastní barvu posuvníku</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">Vlasní barva posuvníku je zobrazena</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">Původní barva posuvníku je zobrazena</string>
|
||||
@@ -1397,7 +1409,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">
|
||||
@@ -1409,6 +1421,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>
|
||||
|
||||
@@ -169,6 +169,8 @@ Du modtager ikke notifikationer om uventede hændelser."</string>
|
||||
<string name="revanced_hide_join_membership_button_summary_off">Knappen er vist</string>
|
||||
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
|
||||
<string name="revanced_hide_for_you_shelf_title">Skjul hylden \"Til dig\"</string>
|
||||
<string name="revanced_hide_for_you_shelf_summary_on">Hylde på kanalsiden er skjult</string>
|
||||
<string name="revanced_hide_for_you_shelf_summary_off">Hylde på kanalsiden vises</string>
|
||||
<!-- 'Notify me' should be translated using the same localized wording YouTube displays.
|
||||
This item appear in the subscription feed for future livestreams or unreleased videos. -->
|
||||
<string name="revanced_hide_notify_me_button_title">Skjul knappen \'Underret mig\'</string>
|
||||
@@ -196,6 +198,8 @@ Du modtager ikke notifikationer om uventede hændelser."</string>
|
||||
<string name="revanced_hide_chips_shelf_summary_on">Chips hylde er skjult</string>
|
||||
<string name="revanced_hide_chips_shelf_summary_off">Chips hylde er vist</string>
|
||||
<string name="revanced_hide_expandable_chip_title">Skjul udvidelige kort under videoer</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_on">Udvidelseskort er skjult</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_off">Udvidelseskort vises</string>
|
||||
<string name="revanced_hide_community_posts_title">Skjul fællesskabs indlæg</string>
|
||||
<string name="revanced_hide_community_posts_summary_on">Fællesskabs indlæg er skjult</string>
|
||||
<string name="revanced_hide_community_posts_summary_off">Fællesskabs indlæg er vist</string>
|
||||
@@ -211,6 +215,7 @@ Du modtager ikke notifikationer om uventede hændelser."</string>
|
||||
<string name="revanced_hide_community_guidelines_title">Skjul fællesskabs retningslinjer</string>
|
||||
<string name="revanced_hide_community_guidelines_summary_on">Fællesskabets retningslinjer er skjult</string>
|
||||
<string name="revanced_hide_community_guidelines_summary_off">Der er opstillet EF-retningslinjer</string>
|
||||
<string name="revanced_hide_subscribers_community_guidelines_title">Skjul retningslinjer for abonnenter</string>
|
||||
<string name="revanced_hide_subscribers_community_guidelines_summary_on">Abonnenter community retningslinjer er skjult</string>
|
||||
<string name="revanced_hide_subscribers_community_guidelines_summary_off">Abonnenter community retningslinjer er vist</string>
|
||||
<string name="revanced_hide_channel_member_shelf_title">Skjul kanalmedlems hylde</string>
|
||||
@@ -255,10 +260,25 @@ Du modtager ikke notifikationer om uventede hændelser."</string>
|
||||
<string name="revanced_hide_ask_section_title">Skjul Spørg</string>
|
||||
<string name="revanced_hide_ask_section_summary_on">Spørgsmål sektionen er skjult</string>
|
||||
<string name="revanced_hide_ask_section_summary_off">Spørgsmål sektionen vises</string>
|
||||
<string name="revanced_hide_attributes_section_title">Skjul attributter</string>
|
||||
<string name="revanced_hide_attributes_section_summary_on">Fremhævede steder, spil, musik og sektioner med omtalte personer er skjult</string>
|
||||
<string name="revanced_hide_attributes_section_summary_off">Fremhævede steder, spil, musik og sektioner med omtalte personer vises</string>
|
||||
<string name="revanced_hide_chapters_section_title">Skjul kapitler</string>
|
||||
<string name="revanced_hide_chapters_section_summary_on">Kapitler sektion er skjult</string>
|
||||
<string name="revanced_hide_chapters_section_summary_off">Kapitel afsnit er vist</string>
|
||||
<string name="revanced_hide_how_this_was_made_section_title">Skjul \"Hvordan dette indhold blev lavet\"</string>
|
||||
<string name="revanced_hide_how_this_was_made_section_summary_on">Sektionen Sådan blev dette indhold lavet er skjult</string>
|
||||
<string name="revanced_hide_how_this_was_made_section_summary_off">Sektionen Sådan blev dette indhold lavet vises</string>
|
||||
<string name="revanced_hide_podcast_section_title">Skjul \"Udforsk podcasten\"</string>
|
||||
<string name="revanced_hide_podcast_section_summary_on">Sektionen Udforsk podcasten er skjult</string>
|
||||
<string name="revanced_hide_podcast_section_summary_off">Sektionen Udforsk podcasten vises</string>
|
||||
<string name="revanced_hide_info_cards_section_title">Skjul infokort</string>
|
||||
<string name="revanced_hide_info_cards_section_summary_on">Info-kort sektion er skjult</string>
|
||||
<string name="revanced_hide_info_cards_section_summary_off">Info-kort sektion er vist</string>
|
||||
<string name="revanced_hide_key_concepts_section_title">Skjul \"Nøglebegreber\"</string>
|
||||
<string name="revanced_hide_key_concepts_section_summary_on">Nøglebegrebssektionen er skjult</string>
|
||||
<string name="revanced_hide_key_concepts_section_summary_off">Nøglebegrebssektionen vises</string>
|
||||
<string name="revanced_hide_transcript_section_title">Skjul udskrift</string>
|
||||
<string name="revanced_hide_transcript_section_summary_on">Afsnittet er skjult</string>
|
||||
<string name="revanced_hide_transcript_section_summary_off">Afsnittet er vist</string>
|
||||
<string name="revanced_hide_description_components_screen_title">Video beskrivelse</string>
|
||||
@@ -283,10 +303,17 @@ Du modtager ikke notifikationer om uventede hændelser."</string>
|
||||
<string name="revanced_hide_comments_ai_summary_summary_on">Kommentar-oversigt er skjult</string>
|
||||
<string name="revanced_hide_comments_ai_summary_summary_off">Kommentar-oversigt er vist</string>
|
||||
<string name="revanced_hide_comments_by_members_header_title">Skjul \'Kommentarer fra medlemmer\' header</string>
|
||||
<string name="revanced_hide_comments_by_members_header_summary_on">Kommentarer fra medlemmers overskrift er skjult</string>
|
||||
<string name="revanced_hide_comments_by_members_header_summary_off">Kommentarer fra medlemmers overskrift vises</string>
|
||||
<string name="revanced_hide_comments_section_title">Skjul kommentarsektion</string>
|
||||
<string name="revanced_hide_comments_section_summary_on">Kommentarer sektion er skjult</string>
|
||||
<string name="revanced_hide_comments_section_summary_off">Kommentarer sektion er vist</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">Skjul knappen \"Opret en Short\"</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">Opret en Short knap er skjult</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">Opret en Short knap vises</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_title">Skjul tidsstempelknap</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_on">Tidsstempelknappen er skjult</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_off">Tidsstempelknappen vises</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Skjul forhåndsvisning kommentar</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">Forhåndsvisning kommentar er skjult</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">Forhåndsvis kommentar er vist</string>
|
||||
@@ -370,8 +397,12 @@ Denne funktion er kun tilgængelig for ældre enheder"</string>
|
||||
<string name="revanced_hide_player_store_shelf_summary_on">Shopping hylde er skjult</string>
|
||||
<string name="revanced_hide_player_store_shelf_summary_off">Shopping hylde er vist</string>
|
||||
<string name="revanced_hide_shopping_links_title">Skjul shopping links i video beskrivelse</string>
|
||||
<string name="revanced_hide_shopping_links_summary_on">Shopping links i videobeskrivelsen er skjult</string>
|
||||
<string name="revanced_hide_shopping_links_summary_off">Shopping links i videobeskrivelsen vises</string>
|
||||
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
|
||||
<string name="revanced_hide_visit_store_button_title">Skjul knappen \'Besøg butik\' på kanalsider</string>
|
||||
<string name="revanced_hide_visit_store_button_summary_on">Knap på kanalsiden er skjult</string>
|
||||
<string name="revanced_hide_visit_store_button_summary_off">Knap på kanalsiden vises</string>
|
||||
<string name="revanced_hide_web_search_results_title">Skjul søgeresultater</string>
|
||||
<string name="revanced_hide_web_search_results_summary_on">Websøgeresultater er skjult</string>
|
||||
<string name="revanced_hide_web_search_results_summary_off">Websøgeresultater vises</string>
|
||||
@@ -411,6 +442,8 @@ Denne funktion er kun tilgængelig for ældre enheder"</string>
|
||||
<string name="revanced_external_downloader_screen_title">Eksterne downloads</string>
|
||||
<string name="revanced_external_downloader_screen_summary">Indstillinger for brug af en ekstern downloader</string>
|
||||
<string name="revanced_external_downloader_title">Vis ekstern download-knap</string>
|
||||
<string name="revanced_external_downloader_summary_on">Download-knappen i afspilleren vises</string>
|
||||
<string name="revanced_external_downloader_summary_off">Download-knappen i afspilleren vises ikke</string>
|
||||
<!-- 'download action button' should be translated using the same wording as the translation of 'revanced_hide_download_button_title' -->
|
||||
<string name="revanced_external_downloader_action_button_title">Overskriv knappen Download-handling</string>
|
||||
<string name="revanced_external_downloader_action_button_summary_on">Download-knappen åbner din eksterne downloader</string>
|
||||
@@ -489,6 +522,7 @@ Juster lydstyrken ved at swipe lodret i højre side af skærmen"</string>
|
||||
<patch id="layout.buttons.action.hideButtonsPatch">
|
||||
<string name="revanced_hide_buttons_screen_title">Handlingsknapper</string>
|
||||
<string name="revanced_hide_buttons_screen_summary">Skjul eller vis knapper under videoer</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_title">Deaktiver Like og Abonner-knappen glød</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_on">Lykke- og abonnér-knappen gløder ikke, når den nævnes</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_off">Lykke- og abonnér-knappen gløder, når den nævnes</string>
|
||||
<string name="revanced_hide_like_dislike_button_title">Skjul Like og Dislike</string>
|
||||
@@ -647,6 +681,9 @@ For at vise lydspormenuen skal du ændre \"Spoof videostream\" til iOS TV"</stri
|
||||
<string name="revanced_hide_autoplay_button_title">Skjul knappen Automatisk afspilning</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">Automatisk spil-knap er skjult</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">Automatisk afspilningsknap vises</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_title">Skjul baggrunden for afspillerens kontrolknapper</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_on">Baggrunden for afspillerens kontrolknapper er skjult</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">Baggrunden for afspillerens kontrolknapper vises</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">Skjul slutskærmkort</string>
|
||||
@@ -716,6 +753,9 @@ For at vise lydspormenuen skal du ændre \"Spoof videostream\" til iOS TV"</stri
|
||||
<string name="revanced_hide_shorts_location_label_title">Skjul placeringsetiket</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">Placeringsetiket er skjult</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">Placeringsetiket er vist</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">Skjul forhåndsvisning af kommentar</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Forhåndsvisning af kommentar er skjult</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Forhåndsvisningskommentar vises</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Skjul knappen Gem musik</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Gem musik knap er skjult</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Gem musik knap er vist</string>
|
||||
@@ -728,6 +768,9 @@ For at vise lydspormenuen skal du ændre \"Spoof videostream\" til iOS TV"</stri
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Skjul knappen Grøn skærm</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">Grøn skærmknap er skjult</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">Grøn skærmknap vises</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_title">Skjul knappen Nye indlæg</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">Knappen Nye indlæg vises</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">Knappen Nye indlæg er skjult</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">Skjul hashtag knap</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">Hashtag knap er skjult</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">Hashtag knappen er vist</string>
|
||||
@@ -823,6 +866,7 @@ Indstillinger → Afspilning → Afspil næste video automatisk"</string>
|
||||
<!-- Toast shown if network connection times out. Translations of this should not be longer than the original English or the text can be clipped and not entirely shown. -->
|
||||
<string name="revanced_ryd_failure_connection_timeout">Dislikerer midlertidigt ikke tilgængelig (API-timeout ud)</string>
|
||||
<string name="revanced_ryd_failure_connection_status_code">Dislikationer er ikke tilgængelige (status %d)</string>
|
||||
<string name="revanced_ryd_failure_client_rate_limit_requested">Synes ikke godt om er ikke tilgængelige (klient API-grænse)</string>
|
||||
<string name="revanced_ryd_failure_generic">Dislikationer ikke tilgængelige (%s)</string>
|
||||
<!-- Toast shown if the user enables RYD while a video is opened, and then tries to vote for the video. -->
|
||||
<string name="revanced_ryd_failure_ryd_enabled_while_playing_video_then_user_voted">Genindlæs video for at stemme ved hjælp af Return YouTube Dislike</string>
|
||||
@@ -831,7 +875,13 @@ Indstillinger → Afspilning → Afspil næste video automatisk"</string>
|
||||
<string name="revanced_ryd_enabled_summary_on">Dislikationer vises</string>
|
||||
<string name="revanced_ryd_enabled_summary_off">Dislikationer vises ikke</string>
|
||||
<string name="revanced_ryd_shorts_title">Vis ikke på Shorts</string>
|
||||
<string name="revanced_ryd_shorts_summary_on">"Synes ikke godt om på Shorts vises
|
||||
|
||||
Begrænsning: Synes ikke godt om vises muligvis ikke i inkognitotilstand"</string>
|
||||
<string name="revanced_ryd_shorts_summary_off">Synes ikke godt om på Shorts vises ikke</string>
|
||||
<string name="revanced_ryd_dislike_percentage_title">Synes ikke som procent</string>
|
||||
<string name="revanced_ryd_dislike_percentage_summary_on">Synes ikke godt om vises som en procentdel</string>
|
||||
<string name="revanced_ryd_dislike_percentage_summary_off">Synes ikke godt om vises som et tal</string>
|
||||
<!-- Translations should use language similar to 'revanced_sb_enable_compact_skip_button' -->
|
||||
<string name="revanced_ryd_compact_layout_title">Kompakt like-knap</string>
|
||||
<string name="revanced_ryd_compact_layout_summary_on">Lideknap stylet for mindste bredde</string>
|
||||
@@ -892,15 +942,20 @@ Denne funktion fungerer bedst med en videokvalitet på 720p eller lavere og ved
|
||||
<string name="revanced_sb_square_layout_sum_on">Knapper og kontrolelementer er firkantede</string>
|
||||
<string name="revanced_sb_square_layout_sum_off">Knapper og kontrolelementer er afrundede</string>
|
||||
<!-- Translations should use language similar to 'revanced_ryd_compact_layout_title' -->
|
||||
<string name="revanced_sb_enable_compact_skip_button">Brug kompakt Spring over-knap</string>
|
||||
<string name="revanced_sb_enable_compact_skip_button_sum_on">Skip knap stylet for mindste bredde</string>
|
||||
<string name="revanced_sb_enable_compact_skip_button_sum_off">Skip knap stylet for bedste udseende</string>
|
||||
<string name="revanced_sb_enable_auto_hide_skip_segment_button">Skjul automatisk Spring over-knap</string>
|
||||
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_on">Skip knap skjuler efter et par sekunder</string>
|
||||
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_off">Spring over-knappen vises for hele segmentet</string>
|
||||
<string name="revanced_sb_general_skiptoast">Vis en toast ved spring</string>
|
||||
<string name="revanced_sb_general_skiptoast_sum_on">Toast vises, når et segment automatisk springes over. Tryk her for at se et eksempel</string>
|
||||
<string name="revanced_sb_general_skiptoast_sum_off">Toast er ikke vist. Tryk her for at se et eksempel</string>
|
||||
<string name="revanced_sb_general_time_without">Vis videolængde uden segmenter</string>
|
||||
<string name="revanced_sb_general_time_without_sum_on">Videolængde minus alle segmenter, vist i parentes ved siden af den fulde videolængde</string>
|
||||
<string name="revanced_sb_general_time_without_sum_off">Fuld videolængde vist</string>
|
||||
<string name="revanced_sb_create_segment_category">Opretter nye segmenter</string>
|
||||
<string name="revanced_sb_enable_create_segment">Vis Opret nyt segment-knap</string>
|
||||
<string name="revanced_sb_enable_create_segment_sum_on">Opret ny segmentknap vises</string>
|
||||
<string name="revanced_sb_enable_create_segment_sum_off">Opret ny segmentknap vises ikke</string>
|
||||
<string name="revanced_sb_general_adjusting">Juster nyt segment trin</string>
|
||||
@@ -994,6 +1049,7 @@ Dit bruger-id er som en adgangskode, og det må aldrig deles.
|
||||
<string name="revanced_sb_skipped_multiple_segments">Oversprunget over flere segmenter</string>
|
||||
<string name="revanced_sb_skip_automatically">Spring automatisk over</string>
|
||||
<string name="revanced_sb_skip_automatically_once">Spring automatisk over én gang</string>
|
||||
<string name="revanced_sb_skip_showbutton">Vis en Spring over-knap</string>
|
||||
<string name="revanced_sb_skip_seekbaronly">Vis i søgelinjen</string>
|
||||
<string name="revanced_sb_skip_ignore">Deaktivér</string>
|
||||
<string name="revanced_sb_submit_failed_invalid">Kan ikke indsende segment: %s</string>
|
||||
@@ -1021,6 +1077,9 @@ Eksisterer allerede"</string>
|
||||
<string name="revanced_sb_new_segment_disabled_category">Kategori er deaktiveret i indstillinger. Aktivér kategori for at indsende.</string>
|
||||
<string name="revanced_sb_new_segment_title">Nyt SponsorBlock segment</string>
|
||||
<string name="revanced_sb_new_segment_mark_time_as_question">Sæt %s som start eller afslutning af et nyt segment?</string>
|
||||
<string name="revanced_sb_new_segment_mark_start">Start</string>
|
||||
<string name="revanced_sb_new_segment_mark_end">Slut</string>
|
||||
<string name="revanced_sb_new_segment_now">Nu</string>
|
||||
<string name="revanced_sb_new_segment_time_start">Tidspunkt for segmentet begynder på</string>
|
||||
<string name="revanced_sb_new_segment_time_end">Tidspunkt for segmentet slutter på</string>
|
||||
<string name="revanced_sb_new_segment_confirm_title">Er tiderne korrekte?</string>
|
||||
@@ -1041,6 +1100,7 @@ Er du klar til at indsende?"</string>
|
||||
<string name="revanced_sb_new_segment_edit_by_hand_parse_error">Ugyldig tid givet</string>
|
||||
<string name="revanced_sb_stats_title">Statistik</string>
|
||||
<!-- Shown in the settings preferences, and translations can be any text length. -->
|
||||
<string name="revanced_sb_stats_connection_failure">Statistikker er midlertidigt ikke tilgængelige (API er nede)</string>
|
||||
<string name="revanced_sb_stats_loading">Indlæser...</string>
|
||||
<string name="revanced_sb_stats_sb_disabled">SponsorBloker er deaktiveret</string>
|
||||
<string name="revanced_sb_stats_username">Dit brugernavn: <b>%s</b></string>
|
||||
@@ -1093,6 +1153,7 @@ Hvis det senere slås fra, anbefales det at rydde app-dataene for at forhindre U
|
||||
This is because the 'General layout' menu uses alphabetic sorting, and it functionally works better if the spoof target selector appears below the 'Spoof app version' UI switch -->
|
||||
<string name="revanced_spoof_app_version_target_title">Spoof app version mål</string>
|
||||
<string name="revanced_spoof_app_version_target_entry_1">19.35.36 - Gendan gamle Shorts player ikoner</string>
|
||||
<string name="revanced_spoof_app_version_target_entry_2">19.01.34 - Gendan gamle navigationsikoner</string>
|
||||
</patch>
|
||||
<patch id="layout.startpage.changeStartPagePatch">
|
||||
<string name="revanced_change_start_page_title">Skift startside</string>
|
||||
@@ -1201,6 +1262,9 @@ Stryg for at udvide eller lukke"</string>
|
||||
<string name="revanced_gradient_loading_screen_title">Aktiver gradient indlæsning af skærmen</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_on">Indlæser skærmen vil have en gradient baggrund</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_off">Indlæser skærmen vil have en solid baggrund</string>
|
||||
<string name="splash_screen_animation_style_title">Splash screens udseende</string>
|
||||
<string name="splash_screen_animation_style_entry_1">Farve</string>
|
||||
<string name="splash_screen_animation_style_entry_2">Sort og hvid</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Aktivér brugerdefineret søgelinjefarve</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">Brugerdefineret søgelinje farve vises</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">Original søgelinje farve vises</string>
|
||||
@@ -1250,9 +1314,13 @@ Tryk her for at lære mere om DeArrow"</string>
|
||||
<string name="revanced_alt_thumbnail_stills_time_entry_2">Midten af video</string>
|
||||
<string name="revanced_alt_thumbnail_stills_time_entry_3">Slut på video</string>
|
||||
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
|
||||
<string name="revanced_alt_thumbnail_dearrow_error">DeArrow er midlertidigt ikke tilgængelig (statuskode: %s)</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_error_generic">DeArrow er midlertidigt ikke tilgængelig</string>
|
||||
</patch>
|
||||
<patch id="misc.announcements.announcementsPatch">
|
||||
<string name="revanced_announcements_title">Vis ReVanced meddelelser</string>
|
||||
<string name="revanced_announcements_summary_on">Meddelelser ved opstart vises</string>
|
||||
<string name="revanced_announcements_summary_off">Meddelelser ved opstart vises ikke</string>
|
||||
<string name="revanced_announcements_enabled_summary">Vis meddelelser ved opstart</string>
|
||||
<string name="revanced_announcements_connection_failed">Kunne ikke forbinde til udbyder af annonceringer</string>
|
||||
<string name="revanced_announcements_dialog_dismiss">Luk</string>
|
||||
@@ -1342,7 +1410,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">
|
||||
@@ -1354,6 +1422,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>
|
||||
|
||||
@@ -307,9 +307,9 @@ Sie werden nicht über unerwartete Ereignisse informiert."</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">\'Verknüpfung erstellen\'-Button ausblenden</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">Schaltfläche \" Short erstellen\" ist ausgeblendet</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">Schaltfläche \" Short erstellen\" wird angezeigt</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Emoji- und Zeitstempel-Buttons ausblenden</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Emoji- und Zeitstempel-Buttons sind ausgeblendet</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Emoji- und Zeitstempel-Buttons werden angezeigt</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_title">Timestamp-Button ausblenden</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_on">Timestamp-Button ist ausgeblendet</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_off">Timestamp-Button wird angezeigt</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Vorschaukommentar ausblenden</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">Vorschaukommentar ist ausgeblendet</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">Vorschau des Kommentars wird angezeigt</string>
|
||||
@@ -674,6 +674,9 @@ Um das Audiotrack-Menü anzuzeigen, ändere \"Video-Streams fälschen\" zu iOS T
|
||||
<string name="revanced_hide_autoplay_button_title">Autoplay-Button ausblenden</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">Autoplay Button ist ausgeblendet</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">Autoplay Button wird angezeigt</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_title">Hintergrund der Player-Steuerungstasten ausblenden</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_on">Hintergrund der Player-Steuerungstasten ist ausgeblendet</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">Hintergrund der Player-Steuerungstasten wird angezeigt</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">Endkarte ausblenden</string>
|
||||
@@ -743,6 +746,9 @@ Um das Audiotrack-Menü anzuzeigen, ändere \"Video-Streams fälschen\" zu iOS T
|
||||
<string name="revanced_hide_shorts_location_label_title">Standortbezeichnung ausblenden</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">Ortsbezeichnung ist ausgeblendet</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">Ortsbezeichnung wird angezeigt</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">Kommentarvorschau ausblenden</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Vorschaukommentar ist ausgeblendet</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Vorschaukommentar wird angezeigt</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">\'Musik speichern\'-Button ausblenden</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Musikspeicher Button ist ausgeblendet</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Musikspeicher Button wird angezeigt</string>
|
||||
@@ -755,6 +761,9 @@ Um das Audiotrack-Menü anzuzeigen, ändere \"Video-Streams fälschen\" zu iOS T
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Green-Screen-Button ausblenden</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">Grünbildschirm-Taste ist ausgeblendet</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">Grünbildschirm-Taste wird angezeigt</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_title">Schaltfläche \"Neue Beiträge ausblenden\"</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">Schaltfläche \"Neue Beiträge\" wird angezeigt</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">Schaltfläche \"Neue Beiträge\" ist ausgeblendet</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">Hashtag Button ausblenden</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">Hashtag Button ist ausgeblendet</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">Hashtag Button wird angezeigt</string>
|
||||
@@ -1246,6 +1255,9 @@ Zum Erweitern oder Schließen wischen"</string>
|
||||
<string name="revanced_gradient_loading_screen_title">Gradientenladebildschirm aktivieren</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_on">Lade Bildschirm hat einen Farbverlauf Hintergrund</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_off">Das Laden des Bildschirms wird einen soliden Hintergrund haben</string>
|
||||
<string name="splash_screen_animation_style_title">Art des Begrüßungsbildschirms</string>
|
||||
<string name="splash_screen_animation_style_entry_1">Farbe</string>
|
||||
<string name="splash_screen_animation_style_entry_2">Schwarz und Weiß</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Eigene Suchleistenfarbe aktivieren</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">Angepasste Suchleistenfarbe wird angezeigt</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">Originalfarbe der Suchleiste wird angezeigt</string>
|
||||
@@ -1391,7 +1403,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">
|
||||
@@ -1403,6 +1415,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>
|
||||
|
||||
@@ -313,9 +313,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">Κουμπί «Δημιουργία Short»</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">Κρυμμένο</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">Εμφανίζεται</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Κουμπιά χρονοσήμανσης και emoji</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Κρυμμένα</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Εμφανίζονται</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_title">Κουμπί χρονοσήμανσης</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_on">Κρυμμένο</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_off">Εμφανίζεται</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Προεπισκόπηση σχολίου</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">Κρυμμένη</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">Εμφανίζεται</string>
|
||||
@@ -683,6 +683,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_autoplay_button_title">Κουμπί αυτόματης αναπαραγωγής</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">Κρυμμένο</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">Εμφανίζεται</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_title">Φόντο κουμπιών ελέγχου οθόνης αναπαραγωγής</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_on">Κρυμμένο</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">Εμφανίζεται</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">Κάρτες τελικής οθόνης</string>
|
||||
@@ -752,6 +755,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_shorts_location_label_title">Ετικέτα τοποθεσίας</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">Κρυμμένη</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">Εμφανίζεται</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">Προεπισκόπηση σχολίου</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Κρυμμένη</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Εμφανίζεται</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Κουμπί «Αποθήκευση μουσικής»</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Κρυμμένο</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Εμφανίζεται</string>
|
||||
@@ -764,6 +770,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Κουμπί «Green screen»</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">Κρυμμένο</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">Εμφανίζεται</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_title">Κουμπί «Νέες αναρτήσεις»</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">Εμφανίζεται</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">Κρυμμένο</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">Κουμπί hashtag</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">Κρυμμένο</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">Εμφανίζεται</string>
|
||||
@@ -1254,6 +1263,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_gradient_loading_screen_title">Διαβάθμιση οθόνης φόρτωσης</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_on">Η οθόνη φόρτωσης θα έχει σταδιακές αποχρώσεις φόντο</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_off">Η οθόνη φόρτωσης θα έχει στατική απόχρωση φόντο</string>
|
||||
<string name="splash_screen_animation_style_title">Στυλ οθόνης εκκίνησης</string>
|
||||
<string name="splash_screen_animation_style_entry_1">Χρωματιστή</string>
|
||||
<string name="splash_screen_animation_style_entry_2">Ασπρόμαυρη</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Προσαρμοσμένο χρώμα γραμμής προόδου</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">Η γραμμή προόδου εμφανίζεται με προσαρμοσμένο χρώμα</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">Η γραμμή προόδου εμφανίζεται με το αρχικό χρώμα</string>
|
||||
@@ -1397,7 +1409,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">
|
||||
@@ -1409,6 +1421,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>
|
||||
|
||||
@@ -308,9 +308,9 @@ Sin embargo, si activas esto, también se registrarán algunos datos del usuario
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">Ocultar botón \'Crear un Short\'</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">El botón Crear un Short está oculto</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">Se muestra el botón Crear un Short</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Ocultar los botones de emoji y marca de tiempo</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Los botones de emoji y marca de tiempo están ocultos</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Se muestran los botones de emoji y marca de tiempo</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_title">Ocultar botón de marca de tiempo</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_on">Botón de marca de tiempo oculto</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_off">Botón de marca de tiempo mostrado</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Ocultar comentario de vista previa</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">El comentario de la vista previa está oculto</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">Vista previa del comentario se muestra</string>
|
||||
@@ -678,6 +678,9 @@ Para mostrar el menú de la pista de audio, cambia \"Suplantar transmisiones de
|
||||
<string name="revanced_hide_autoplay_button_title">Ocultar el botón Reproducción automática</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">El botón de reproducción automática está oculto</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">Se muestra el botón de reproducción automática</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_title">Ocultar el fondo de los botones de control del reproductor</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_on">El fondo de los botones de control del reproductor está oculto</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">Se muestra el fondo de los botones de control del reproductor</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">Ocultar tarjetas de pantalla final</string>
|
||||
@@ -747,6 +750,9 @@ Para mostrar el menú de la pista de audio, cambia \"Suplantar transmisiones de
|
||||
<string name="revanced_hide_shorts_location_label_title">Ocultar etiqueta de ubicación</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">Etiqueta de ubicación oculta</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">Etiqueta de ubicación mostrada</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">Ocultar comentario de vista previa</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">El comentario de vista previa está oculto</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Se muestra la vista previa del comentario</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Ocultar el botón Guardar música</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">El botón Guardar música está oculto</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Mostrar el botón de guardar música</string>
|
||||
@@ -759,6 +765,9 @@ Para mostrar el menú de la pista de audio, cambia \"Suplantar transmisiones de
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Ocultar el botón Pantalla verde</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">El botón verde de pantalla está oculto</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">Se muestra el botón verde de pantalla</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_title">Ocultar el botón Publicaciones nuevas</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">Se muestra el botón Publicaciones nuevas</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">El botón Publicaciones nuevas está oculto</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">Ocultar botón de hashtag</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">El botón Hashtag está oculto</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">Se muestra el botón Hashtag</string>
|
||||
@@ -1241,6 +1250,9 @@ Desliza el dedo para expandir o cerrar"</string>
|
||||
<string name="revanced_gradient_loading_screen_title">Activar la pantalla de carga del degradado</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_on">La pantalla de carga tendrá un fondo de degradado</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_off">La pantalla de carga tendrá un fondo sólido</string>
|
||||
<string name="splash_screen_animation_style_title">Estilo de la pantalla de presentación</string>
|
||||
<string name="splash_screen_animation_style_entry_1">Color</string>
|
||||
<string name="splash_screen_animation_style_entry_2">Blanco y negro</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Activar el color personalizado de la barra de búsqueda</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">Se muestra el color personalizado de la barra de búsqueda</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">Se muestra el color original de la barra de búsqueda</string>
|
||||
@@ -1386,7 +1398,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">
|
||||
@@ -1398,6 +1410,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>
|
||||
|
||||
@@ -311,9 +311,9 @@ Teid ei teavitata ühestki ootamatust sündmusest."</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">Peida nupp \"Loo lühis\"</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">Nupp Loo lühivideo on peidetud</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">Nupp Loo lühivideo on kuvatud</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Peida emotikonide ja ajatempli nupud</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Emotikonide ja ajatempli nupud on peidetud</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Emotikonide ja ajatempli nupud on kuvatud</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_title">Peida ajatempli nupp</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_on">Ajatempli nupp on peidetud</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_off">Ajatempli nupp on nähtav</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Peida eelvaate kommentaar</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">Eelvaate kommentaar on peidetud</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">Eelvaate kommentaar on kuvatud</string>
|
||||
@@ -681,6 +681,9 @@ Heliriba menüü kuvamiseks muutke valikut „Võltsitud videovoogedastus“ vä
|
||||
<string name="revanced_hide_autoplay_button_title">Peida Automaatse esitamise nupp</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">Automaatse esituse nupp on peidetud</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">Automaatse esituse nupp on nähtav</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_title">Peida pleieri juhtnuppude taust</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_on">Pleieri juhtnuppude taust on peidetud</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">Pleieri juhtnuppude taust on näidatud</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">Peida lõpukujunduse kaardid</string>
|
||||
@@ -750,6 +753,9 @@ Heliriba menüü kuvamiseks muutke valikut „Võltsitud videovoogedastus“ vä
|
||||
<string name="revanced_hide_shorts_location_label_title">Peida asukoha silt</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">Asukoha silt on peidetud</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">Asukoha silt on nähtav</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">Peida eelvaate kommentaar</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Kommentaari eelvaade on peidetud</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Kommentaari eelvaade on nähtav</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Peida Salvesta muusika nupp</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Muusika salvestamise nupp on peidetud</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Muusika salvestamise nupp on nähtav</string>
|
||||
@@ -762,6 +768,9 @@ Heliriba menüü kuvamiseks muutke valikut „Võltsitud videovoogedastus“ vä
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Peida Roheline ekraan nupp</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">Rohelise ekraani nupp on peidetud</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">Rohelise ekraani nupp on nähtav</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_title">Peida uute postituste nupp</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">Uute postituste nupp on nähtav</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">Uute postituste nupp on peidetud</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">Peida räsimärgi nupp</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">Räsimärgi nupp on peidetud</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">Räsimärgi nupp on nähtav</string>
|
||||
@@ -1253,6 +1262,9 @@ Laiendamiseks või sulgemiseks libista"</string>
|
||||
<string name="revanced_gradient_loading_screen_title">Lülita gradientega laadimiskuva sisse</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_on">Laadimiskuval on gradientega taust</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_off">Laadimiskuval on tahke taust</string>
|
||||
<string name="splash_screen_animation_style_title">Sissejuhatava ekraani stiil</string>
|
||||
<string name="splash_screen_animation_style_entry_1">Värv</string>
|
||||
<string name="splash_screen_animation_style_entry_2">Mustvalge</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Lülita kohandatud edastusriba värv sisse</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">Kohandatud edastusriba värv on nähtav</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">Originaal edastusriba värv on nähtav</string>
|
||||
@@ -1398,7 +1410,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">
|
||||
@@ -1410,6 +1422,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>
|
||||
|
||||
@@ -88,9 +88,13 @@ Second \"item\" text"</string>
|
||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<!-- 'Join' should be translated using the same localized wording YouTube displays.
|
||||
This appears in the video player for certain videos. -->
|
||||
<string name="revanced_hide_join_membership_button_summary_on">دکمه پنهان است</string>
|
||||
<string name="revanced_hide_join_membership_button_summary_off">دکمه نمایان است</string>
|
||||
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
|
||||
<!-- 'Notify me' should be translated using the same localized wording YouTube displays.
|
||||
This item appear in the subscription feed for future livestreams or unreleased videos. -->
|
||||
<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. -->
|
||||
<!-- 'Show more' should be translated with the same localized wording that YouTube displays.
|
||||
This button usually appears when searching for a YT creator. -->
|
||||
@@ -210,9 +214,12 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="layout.sponsorblock.sponsorBlockResourcePatch">
|
||||
<!-- Translations should use language similar to 'revanced_ryd_compact_layout_title' -->
|
||||
<string name="revanced_sb_general">عمومی</string>
|
||||
<string name="revanced_sb_settings_copy">رونوشت</string>
|
||||
<!-- Toast shown if network connection times out. Translations of this should not be longer than the original English or the text can be clipped and not entirely shown. -->
|
||||
<!-- A segment start and end time, such as "02:10 to 03:40" -->
|
||||
<!-- Shown in the settings preferences, and translations can be any text length. -->
|
||||
<string name="revanced_sb_about_title">درباره</string>
|
||||
</patch>
|
||||
<patch id="layout.formfactor.changeFormFactorPatch">
|
||||
</patch>
|
||||
@@ -296,6 +303,10 @@ Second \"item\" text"</string>
|
||||
<!-- Twitch specific internal debug mode, and not the same as 'revanced_debug_title' -->
|
||||
</patch>
|
||||
<patch id="misc.settings.settingsPatch">
|
||||
<string name="revanced_about_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>
|
||||
</patch>
|
||||
</app>
|
||||
</resources>
|
||||
|
||||
@@ -117,7 +117,7 @@ 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ä.
|
||||
<string name="revanced_debug_protobuffer_user_dialog_message">"Tämän asetuksen käyttöönotto kirjaa lisätietoja asettelusta, mm. joidenkin käyttöliittymän osien näyttötekstiä.
|
||||
|
||||
Tämä voi auttaa komponenttien tunnistamisessa, kun luot mukautettuja suodattimia.
|
||||
|
||||
@@ -311,9 +311,9 @@ Et saa ilmoituksia odottamattomista tapahtumista."</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">Piilota \"Luo Shorts-video\" -painike</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">Luo Shorts-video -painike on piilotettu</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">Luo Shorts-video -painike näytetään</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Piilota emoji- ja aikaleima-painikkeet</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Emoji- ja aikaleima-painikkeet on piilotettu</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Emoji- ja aikaleima-painikkeet näytetään</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_title">Piilota aikaleimapainike</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_on">Aikaleimapainike on piilotettu</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_off">Aikaleimapainike näytetään</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Piilota kommentin esikatselu</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">Kommentin esikatselu on piilotettu</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">Kommentin esikatselu näytetään</string>
|
||||
@@ -327,15 +327,15 @@ Et saa ilmoituksia odottamattomista tapahtumista."</string>
|
||||
<string name="revanced_hide_doodles_user_dialog_message">"YouTube Doodlet näkyvät muutamana päivänä vuodessa.
|
||||
|
||||
Jos Doodle näkyy tällä hetkellä alueellasi ja tämä piilotusasetus on käytössä, myös hakupalkin alla oleva suodatinpalkki piilotetaan."</string>
|
||||
<string name="revanced_custom_filter_screen_title">Oma suodatin</string>
|
||||
<string name="revanced_custom_filter_screen_summary">Piilota osia omilla suodattimilla</string>
|
||||
<string name="revanced_custom_filter_title">Ota oma suodatin käyttöön</string>
|
||||
<string name="revanced_custom_filter_summary_on">Oma suodatin on käytössä</string>
|
||||
<string name="revanced_custom_filter_summary_off">Oma suodatin ei ole käytössä</string>
|
||||
<string name="revanced_custom_filter_strings_title">Oma suodatin</string>
|
||||
<string name="revanced_custom_filter_screen_title">Mukautettu suodatin</string>
|
||||
<string name="revanced_custom_filter_screen_summary">Piilota osia mukautetuilla suodattimilla</string>
|
||||
<string name="revanced_custom_filter_title">Ota mukautettu suodatin käyttöön</string>
|
||||
<string name="revanced_custom_filter_summary_on">Mukautettu suodatin on käytössä</string>
|
||||
<string name="revanced_custom_filter_summary_off">Mukautettu suodatin ei ole käytössä</string>
|
||||
<string name="revanced_custom_filter_strings_title">Mukautettu suodatin</string>
|
||||
<!-- 'Component path builder strings' is the technical name for identifying the Litho UI layout items to hide. This is an advanced feature and most users will never use this. -->
|
||||
<string name="revanced_custom_filter_strings_summary">Luettelo komponentin polun rakentajan merkkijonoista suodatettavaksi uudella rivillä erotettuna</string>
|
||||
<string name="revanced_custom_filter_toast_invalid_syntax">Virheellinen oma suodatin: %s</string>
|
||||
<string name="revanced_custom_filter_toast_invalid_syntax">Virheellinen mukautettu suodatin: %s</string>
|
||||
<string name="revanced_hide_keyword_content_screen_title">Piilota sisältöä avainsanojen mukaan</string>
|
||||
<string name="revanced_hide_keyword_content_screen_summary">Piilota haku- ja syötevideoita avainsanasuodattimilla</string>
|
||||
<string name="revanced_hide_keyword_content_home_title">Piilota koti-videoita avainsanojen mukaan</string>
|
||||
@@ -750,6 +750,9 @@ Jos haluat nähdä sen, aseta \"Naamioi videovirrat\" iOS TV:ksi"</string>
|
||||
<string name="revanced_hide_shorts_location_label_title">Piilota sijaintitieto</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">Sijaintitieto on piilotettu</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">Sijaintitieto näytetään</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">Piilota kommentin esikatselu</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Kommentin esikatselu on piilotettu</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Kommentin esikatselu näytetään</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Piilota Tallenna musiikki -painike</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Tallenna musiikki -painike on piilotettu</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Tallenna musiikki -painike näytetään</string>
|
||||
@@ -1253,12 +1256,15 @@ 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 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="splash_screen_animation_style_title">Aloitussivun tyyli</string>
|
||||
<string name="splash_screen_animation_style_entry_1">Väri</string>
|
||||
<string name="splash_screen_animation_style_entry_2">Musta ja valkoinen</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Ota mukautettu etenemispalkin väri käyttöön</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">Mukautettu 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_title">Mukautettu 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_title">Mukautettu 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>
|
||||
@@ -1398,19 +1404,20 @@ 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_on">Painike näytetään. Napauta ja pidä pohjassa palauttaaksesi soiton nopeuden oletukseksi</string>
|
||||
<string name="revanced_playback_speed_dialog_button_summary_off">Painiketta ei näytetä</string>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
<string name="revanced_custom_speed_menu_title">Oma toistonopeusvalikko</string>
|
||||
<string name="revanced_custom_speed_menu_summary_on">Oma nopeusvalikko näytetään</string>
|
||||
<string name="revanced_custom_speed_menu_summary_off">Omaa nopeusvalikkoa ei näytetä</string>
|
||||
<string name="revanced_custom_playback_speeds_title">Omat toistonopeudet</string>
|
||||
<string name="revanced_custom_playback_speeds_summary">Lisää tai muuta omia toistonopeuksia</string>
|
||||
<string name="revanced_custom_playback_speeds_invalid">Omien nopeuksien tulee olla alle %s</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">Virheelliset omat toistonopeudet</string>
|
||||
<string name="revanced_custom_speed_menu_title">Mukautettu toistonopeusvalikko</string>
|
||||
<string name="revanced_custom_speed_menu_summary_on">Mukautettu nopeusvalikko näytetään</string>
|
||||
<string name="revanced_custom_speed_menu_summary_off">Mukautettua nopeusvalikkoa ei näytetä</string>
|
||||
<string name="revanced_custom_playback_speeds_title">Mukautetut toistonopeudet</string>
|
||||
<string name="revanced_custom_playback_speeds_summary">Lisää tai muuta mukautettuja toistonopeuksia</string>
|
||||
<string name="revanced_custom_playback_speeds_invalid">Mukautettujen nopeuksien tulee olla alle %s</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">Virheelliset mukautetut toistonopeudet</string>
|
||||
<string name="revanced_custom_playback_speeds_auto">Automaattinen</string>
|
||||
<string name="revanced_speed_tap_and_hold_title">Oma napauta ja pidä pohjassa -nopeus</string>
|
||||
<string name="revanced_custom_playback_speeds_reset_toast">Toistonopeus palautettu: %s</string>
|
||||
<string name="revanced_speed_tap_and_hold_title">Mukautettu napauta ja pidä pohjassa -nopeus</string>
|
||||
<string name="revanced_speed_tap_and_hold_summary">Toistonopeus 0–8 välillä</string>
|
||||
</patch>
|
||||
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
|
||||
|
||||
@@ -311,9 +311,9 @@ Hindi ka aabisuhan ng anumang hindi inaasahang mga kaganapan."</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">Itago ang butong \'Gumawa ng Short\'</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">Nakatago ang button na Gumawa ng isang Short</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">Ipinapakita ang button na Gumawa ng isang Short</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Itago ang mga button ng emoji at timestamp</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Nakatago ang mga button ng Emoji at timestamp</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Ipinapakita ang mga button ng Emoji at timestamp</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_title">Itago ang button na timestamp</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_on">Nakatago ang button na timestamp</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_off">Ipinapakita ang button na timestamp</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Itago ang preview na komento</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">Nakatago ang preview ng komento</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">Ang pag-preview ng komento ay ipinapakita</string>
|
||||
@@ -679,6 +679,9 @@ Upang ipakita ang menu ng Audio track, baguhin ang 'Spoof video streams' sa iOS
|
||||
<string name="revanced_hide_autoplay_button_title">Itago ang Autoplay button</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">Nakatago ang autoplay button</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">Ang autoplay na button ay ipinapakita</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_title">Itago ang background ng mga button ng kontrol ng player</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_on">Nakatago ang background ng mga button ng kontrol ng player</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">Ipinapakita ang background ng mga button ng kontrol ng player</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">Itago ang mga end screen card</string>
|
||||
@@ -748,6 +751,9 @@ Upang ipakita ang menu ng Audio track, baguhin ang 'Spoof video streams' sa iOS
|
||||
<string name="revanced_hide_shorts_location_label_title">Itago ang label ng lokasyon</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">Nakatago ang label ng lokasyon</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">Ipinapakita ang label ng lokasyon</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">Itago ang komento sa preview</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Nakatago ang komento sa preview</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Ipinapakita ang preview na komento</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Itago ang Save music button</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Ang buton ng pag-save ng musika ay nakatago</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Ang buton ng pag-save ng musika ay ipinapakita</string>
|
||||
@@ -760,6 +766,9 @@ Upang ipakita ang menu ng Audio track, baguhin ang 'Spoof video streams' sa iOS
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Itago ang Green screen button</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">Nakatago ang pindutan ng \"Green screen\"</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">Ipinapakita ang pindutan ng \"Green screen\"</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_title">Itago ang button na Mga bagong post</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">Ipinapakita ang button na Mga bagong post</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">Nakatago ang button na Mga bagong post</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">Itago ang pindutan ng \"Hashtag\"</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">Nakatago ang pindutan ng \"Hashtag\"</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">Ipinapakita ang pindutan ng \"Hashtag\"</string>
|
||||
@@ -1251,6 +1260,9 @@ Mag-swipe para palawakin o isara"</string>
|
||||
<string name="revanced_gradient_loading_screen_title">Paganahin ang gradient loading screen</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_on">Ang paglo-load ng screen ay magkakaroon ng gradient na background</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_off">Ang paglo-load ng screen ay magkakaroon ng solidong background</string>
|
||||
<string name="splash_screen_animation_style_title">Estilo ng splash screen</string>
|
||||
<string name="splash_screen_animation_style_entry_1">Kulay</string>
|
||||
<string name="splash_screen_animation_style_entry_2">Itim at puti</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Paganahin ang custom na kulay ng seekbar</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">Ipinapakita ang kulay ng custom na seekbar</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">Ipinapakita ang orihinal na kulay ng seekbar</string>
|
||||
@@ -1396,7 +1408,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">
|
||||
@@ -1408,6 +1420,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>
|
||||
|
||||
@@ -311,9 +311,9 @@ Vous ne serez pas informé des événements inattendus."</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">Masquer le bouton Créer un Short</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">Le bouton \"Créer un Short\" est masqué</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">Le bouton \"Créer un Short\" est affiché</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Masquer les boutons emoji et d\'horodatage</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Les boutons emoji et d\'horodatage sont masqués</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Les boutons emoji et d\'horodatage sont affichés</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_title">Masquer le bouton d\'horodatage</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_on">Le bouton d\'horodatage est masqué</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_off">Le bouton d\'horodatage est affiché</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Masquer le commentaire servant d\'aperçu</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">Le commentaire servant d\'aperçu est masqué</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">Le commentaire servant d\'aperçu est affiché</string>
|
||||
@@ -681,6 +681,9 @@ Pour afficher le menu Piste audio, définissez \"Falsifier les flux vidéo\" sur
|
||||
<string name="revanced_hide_autoplay_button_title">Masquer le bouton Lecture automatique</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">Le bouton Lecture automatique est masqué</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">Le bouton Lecture automatique est affiché</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_title">Masquer l\'arrière-plan des boutons de commande du lecteur</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_on">L\'arrière-plan des boutons de commande du lecteur est masqué</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">L\'arrière-plan des boutons de commande du lecteur est affiché</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">Masquer les écrans de fin au format fiche</string>
|
||||
@@ -750,6 +753,9 @@ Pour afficher le menu Piste audio, définissez \"Falsifier les flux vidéo\" sur
|
||||
<string name="revanced_hide_shorts_location_label_title">Masquer le libellé de lieu</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">Le libellé de lieu est masqué</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">Le libellé de lieu est affiché</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">Masquer le commentaire servant d\'aperçu</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Le commentaire servant d\'aperçu est masqué</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Le commentaire servant d\'aperçu est affiché</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Masquer le bouton Enregistrer la musique</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Le bouton Enregistrer la musique est masqué</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Le bouton Enregistrer la musique est affiché</string>
|
||||
@@ -762,6 +768,9 @@ Pour afficher le menu Piste audio, définissez \"Falsifier les flux vidéo\" sur
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Masquer le bouton Écran vert</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">Le bouton Écran vert est masqué</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">Le bouton Écran vert est affiché</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_title">Masquer le bouton Nouveaux posts</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">Le bouton Nouveaux posts est affiché</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">Le bouton Nouveaux posts est masqué</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">Masquer le bouton de hashtag</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">Le bouton de hashtag est masqué</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">Le bouton de hashtag est affiché</string>
|
||||
@@ -1252,6 +1261,9 @@ Balayez pour agrandir ou fermer"</string>
|
||||
<string name="revanced_gradient_loading_screen_title">Activer le dégradé sur l\'écran de chargement</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_on">Le fond de l\'écran de chargement sera un dégradé de couleurs</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_off">Le fond de l\'écran de chargement sera une couleur unie</string>
|
||||
<string name="splash_screen_animation_style_title">Style de l\'écran de lancement</string>
|
||||
<string name="splash_screen_animation_style_entry_1">Couleur </string>
|
||||
<string name="splash_screen_animation_style_entry_2">Noir et blanc</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Personnaliser la couleur de la barre de progression</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">La couleur de la barre de progression est personnalisée</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">La couleur originale de la barre de progression est affichée</string>
|
||||
@@ -1397,7 +1409,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">
|
||||
@@ -1409,6 +1421,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>
|
||||
|
||||
@@ -311,9 +311,9 @@ Ní chuirfear ar an eolas thú faoi aon imeachtaí gan choinne."</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">Folaigh an cnaipe \'Cruthaigh Short\'</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">Tá cnaipe Cruthaigh gearrscéal i bhfolach</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">Taispeántar cnaipe Cruthaigh gearrscéal</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Folaigh cnaipí emoji agus amlínte</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Tá cnaipí emoji agus amlínte i bhfolach</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Taispeántar cnaipí emoji agus amlínte</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_title">Folaigh cnaipe an stampa ama</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_on">Tá cnaipe an stampa ama i bhfolach</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_off">Taispeántar cnaipe an stampa ama</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Folaigh trácht réamhamharc</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">Tá trácht réamhamhar i bhfolach</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">Taispeántar trácht réamhamharc</string>
|
||||
@@ -681,6 +681,9 @@ Chun roghchlár na rian fuaime a thaispeáint, athraigh 'Srutháin físeáin bhr
|
||||
<string name="revanced_hide_autoplay_button_title">Folaigh cnaipe an Uathoimh</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">Tá cnaipe Autoplay i bhfolach</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">Taispeántar cnaipe Autoplay</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_title">Folaigh cúlra cnaipí rialaithe an tseinnteora</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_on">Tá cúlra cnaipí rialaithe an tseinnteora folaithe</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">Taispeántar cúlra cnaipí rialaithe an tseinnteora</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">Folaigh cártaí scáileáin deireadh</string>
|
||||
@@ -750,6 +753,9 @@ Chun roghchlár na rian fuaime a thaispeáint, athraigh 'Srutháin físeáin bhr
|
||||
<string name="revanced_hide_shorts_location_label_title">Folaigh lipéad suímh</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">Tá lipéad suímh i bhfolach</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">Taispeántar lipéad suímh</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">Folaigh réamhamharc ar an nóta tráchta</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Tá réamhamharc ar an nóta tráchta i bhfolach</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Taispeántar réamhamharc ar an nóta tráchta</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Folaigh cnaipe \'Sábháil ceol\'</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Tá an cnaipe Sábháil ceoil i bhfolach</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Taispeántar an cnaipe Sábháil ceoil</string>
|
||||
@@ -762,6 +768,9 @@ Chun roghchlár na rian fuaime a thaispeáint, athraigh 'Srutháin físeáin bhr
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Folaigh cnaipe \'Scáileán glas\'</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">Tá cnaipe an scáileáin glas i bhfolach</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">Taispeántar cnaipe an scáileáin glas</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_title">Folaigh cnaipe na bpostálacha nua</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">Taispeántar cnaipe na bpostálacha nua</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">Tá cnaipe na bpostálacha nua i bhfolach</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">Folaigh an cnaipe hashtag</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">Tá cnaipe hashtag i bhfolach</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">Taispeántar an cnaipe hashtag</string>
|
||||
@@ -1253,6 +1262,9 @@ Svaidhpeáil chun leathnú nó dúnadh"</string>
|
||||
<string name="revanced_gradient_loading_screen_title">Cumasaigh scáileán luchtaithe</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_on">Beidh cúlra grádáin ag an scáileán lódála</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_off">Beidh cúlra láidir ag scáileán luchtaithe</string>
|
||||
<string name="splash_screen_animation_style_title">Stíl scáileáin splancais</string>
|
||||
<string name="splash_screen_animation_style_entry_1">Dath</string>
|
||||
<string name="splash_screen_animation_style_entry_2">Dubh agus bán</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Cumasaigh dath barra cuardaigh saincheaptha</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">Taispeántar dath barra cuardaigh saincheaptha</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">Taispeántar dath barr cuardaigh bunaidh</string>
|
||||
@@ -1398,7 +1410,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">
|
||||
@@ -1410,6 +1422,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>
|
||||
|
||||
@@ -311,9 +311,9 @@ Nem fog értesülni semmilyen váratlan eseményről."</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">A „Rövid létrehozása” gomb elrejtése</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">A Rövidfilm létrehozása gomb rejtett</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">A Rövidfilm létrehozása gomb látható</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Hangulatjel- és időbélyegző gombok elrejtése</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">A hangulatjel- és időbélyegző gombok rejtettek</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">A hangulatjel- és időbélyegző gombok láthatók</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_title">Az időbélyegző gomb elrejtése</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_on">Az időbélyegző gomb el van rejtve</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_off">Az időbélyegző gomb megjelenik</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Megjegyzés előnézet elrejtése</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">A megjegyzés előnézet el van rejtve</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">A megjegyzés előnézet megjelenik</string>
|
||||
@@ -681,6 +681,9 @@ Az audiosáv menü megjelenítéséhez módosítsa a \"Videófolyamok hamisítá
|
||||
<string name="revanced_hide_autoplay_button_title">Automatikus lejátszás gomb elrejtése</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">Az automatikus lejátszás gomb el van rejtve</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">Az automatikus lejátszás gomb látható</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_title">A lejátszó vezérlőgombjainak hátterének elrejtése</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_on">A lejátszó vezérlőgombjainak háttere rejtve</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">A lejátszó vezérlőgombjainak háttere látható</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">Záróképernyő kártyák elrejtése</string>
|
||||
@@ -750,6 +753,9 @@ Az audiosáv menü megjelenítéséhez módosítsa a \"Videófolyamok hamisítá
|
||||
<string name="revanced_hide_shorts_location_label_title">Helycímke elrejtése</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">A helycízke címke el van rejtve</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">A helycízke címke meg van jelenítve</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">Elrejtés előnézeti megjegyzés</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Az előnézeti megjegyzés rejtve van</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Megjelenik a megjegyzés előnézete</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Zene mentése gomb elrejtése</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">A zene mentés gomb el van rejtve</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">A zene mentés gomb látható</string>
|
||||
@@ -762,6 +768,9 @@ Az audiosáv menü megjelenítéséhez módosítsa a \"Videófolyamok hamisítá
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Zöld háttér gomb elrejtése</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">A zöld képernyő gomb el van rejtve</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">A zöld képernyő gomb látható</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_title">Új bejegyzések gomb elrejtése</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">Az új bejegyzések gomb megjelenik</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">Az új bejegyzések gomb rejtve van</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">A hashtag gomb elrejtése</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">A Hashtag gomb el van rejtve</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">A Hashtag gomb látható</string>
|
||||
@@ -1250,6 +1259,9 @@ Húzza el a képernyőt a kibontáshoz vagy bezáráshoz"</string>
|
||||
<string name="revanced_gradient_loading_screen_title">Színátmenetes betöltési képernyő engedélyezése</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_on">A betöltési képernyő színátmenetes hatterű lesz</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_off">A betöltési képernyő egyszínű hátterű lesz</string>
|
||||
<string name="splash_screen_animation_style_title">Üdvözlőképernyő stílusa</string>
|
||||
<string name="splash_screen_animation_style_entry_1">Színes</string>
|
||||
<string name="splash_screen_animation_style_entry_2">Fekete-fehér</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Egyéni keresősáv szín engedélyezése</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">Az egyéni keresősáv szín megjelenik</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">Az egyéni keresősáv szín nem jelenik meg</string>
|
||||
@@ -1395,7 +1407,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">
|
||||
@@ -1407,6 +1419,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>
|
||||
|
||||
@@ -311,9 +311,9 @@ MicroG-ի համար մարտկոցի օպտիմալացումը անջատել
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">Թաքցնել \"Ստեղծել Shorts\" կոճակը</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">\"Ստեղծել Short\" կոճակը թաքցված է</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">\"Ստեղծել Short\" կոճակը ցուցադրվում է</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Թաքցնել էմոջիների և ժամանակային կնիքի կոճակները</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Էմոջիների և ժամանակային կնիքի կոճակները թաքցված են</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Էմոջիների և ժամանակային կնիքի կոճակները ցուցադրվում են</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_title">Թաքցնել ժամանակային նշումով կոճակը</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_on">Ժամանակային նշումով կոճակը թաքցված է</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_off">Ժամանակային նշումով կոճակը ցուցադրվում է</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Թաքցնել նախադիտման մեկնաբանությունը</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">Նախադիտման մեկնաբանությունը թաքցված է</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">Նախադիտման մեկնաբանությունը երևում է</string>
|
||||
@@ -681,6 +681,9 @@ MicroG-ի համար մարտկոցի օպտիմալացումը անջատել
|
||||
<string name="revanced_hide_autoplay_button_title">Թաքցնել Ավտոմատ կրկնում կոճակը</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">Ավտոմատ վերարտադրման կոճակը թաքցված է</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">Ավտոմատ վերարտադրման կոճակը երևում է</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_title">Թաքցնել նվագարկչի կառավարման կոճակների ֆոնը</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_on">Նվագարկչի կառավարման կոճակների ֆոնը թաքնված է</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">Նվագարկչի կառավարման կոճակների ֆոնը ցուցադրվում է</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">Էկրանի վերջում քարտերը թաքցնել</string>
|
||||
@@ -750,6 +753,9 @@ MicroG-ի համար մարտկոցի օպտիմալացումը անջատել
|
||||
<string name="revanced_hide_shorts_location_label_title">Թաքցնել տեղանքի նշումը</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">Տեղանքի նշումը թաքցված է</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">Տեղանքի նշումը ցուցադրվում է</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">Թաքցնել նախադիտման մեկնաբանությունը</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Նախադիտման մեկնաբանությունը թաքնված է</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Ցուցադրվում է մեկնաբանության նախադիտումը</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Թաքցնել երաժշտությունը պահպանել կոճակը</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">«Save music» կոճակը թաքցված է</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">«Save music» կոճակը ցուցադրվում է</string>
|
||||
@@ -762,6 +768,9 @@ MicroG-ի համար մարտկոցի օպտիմալացումը անջատել
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Թաքցնել Կանաչ էկրան կոճակը</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">\"Green Screen\" կոճակը թաքցված է</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">\"Green Screen\" կոճակը երևում է</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_title">Թաքցնել «Նոր գրառումներ» կոճակը</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">«Նոր գրառումներ» կոճակը երևում է</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">«Նոր գրառումներ» կոճակը թաքցված է</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">Թաքցնել \"Hashtag\" կոճակը</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">\"Hashtag\" կոճակը թաքցված է</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">\"Hashtag\" կոճակը երևում է</string>
|
||||
@@ -1253,6 +1262,9 @@ Mini-player-ը կարող է գրավվել էկրանից դուրս՝ դեպի
|
||||
<string name="revanced_gradient_loading_screen_title">Աктиվացնել գրադիենտի բեռնման էկրանը</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_on">Բեռնման էկրանը կունենա գրադիենտի ֆոն</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_off">Բեռնման էկրանը կունենա մեկ գույնի ֆոն</string>
|
||||
<string name="splash_screen_animation_style_title">Մեկնարկային էկրանի ոճը</string>
|
||||
<string name="splash_screen_animation_style_entry_1">Գույն</string>
|
||||
<string name="splash_screen_animation_style_entry_2">Սև և սպիտակ</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Աктиվացնել հարմարեցված seekbar-ի գույնը</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">Հարմարեցված seekbar-ի գույնը ցուցադրվում է</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">Սկզբնական seekbar-ի գույնը ցուցադրվում է</string>
|
||||
@@ -1398,7 +1410,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">
|
||||
@@ -1410,6 +1422,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. -->
|
||||
@@ -311,9 +311,9 @@ Anda tidak akan diberi tahu tentang kejadian yang tidak terduga."</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">Sembunyikan tombol \'Buat Short\'</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">Tombol Buat Short disembunyikan</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">Tombol Buat Short ditampilkan</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Sembunyikan tombol emoji dan stempel waktu</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Tombol emoji dan stempel waktu disembunyikan</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Tombol emoji dan stempel waktu ditampilkan</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_title">Sembunyikan tombol penanda waktu</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_on">Tombol penanda waktu disembunyikan</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_off">Tombol penanda waktu ditampilkan</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Sembunyikan pratinjau komentar</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">Pratinjau komentar disembunyikan</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">Pratinjau komentar ditampilkan</string>
|
||||
@@ -424,12 +424,12 @@ Fitur ini hanya tersedia untuk perangkat yang lebih lama"</string>
|
||||
</patch>
|
||||
<patch id="interaction.copyvideourl.copyVideoUrlResourcePatch">
|
||||
<string name="revanced_share_copy_url_success">URL disalin ke papan klip</string>
|
||||
<string name="revanced_share_copy_url_timestamp_success">URL dengan timestamp telah disalin</string>
|
||||
<string name="revanced_share_copy_url_timestamp_success">URL dengan penanda waktu telah disalin</string>
|
||||
<string name="revanced_copy_video_url_title">Tampilkan tombol salin URL video</string>
|
||||
<string name="revanced_copy_video_url_summary_on">Tombol ditampilkan. Ketuk untuk menyalin URL video. Ketuk dan tahan untuk menyalin dengan stempel waktu</string>
|
||||
<string name="revanced_copy_video_url_summary_on">Tombol ditampilkan. Ketuk untuk menyalin URL video. Ketuk dan tahan untuk menyalin dengan penanda waktu</string>
|
||||
<string name="revanced_copy_video_url_summary_off">Tombol tidak ditampilkan</string>
|
||||
<string name="revanced_copy_video_url_timestamp_title">Tampilkan tombol salin timestamp URL</string>
|
||||
<string name="revanced_copy_video_url_timestamp_summary_on">Tombol ditampilkan. Ketuk untuk menyalin URL video dengan stempel waktu. Ketuk dan tahan untuk menyalin tanpa stempel waktu</string>
|
||||
<string name="revanced_copy_video_url_timestamp_title">Tampilkan tombol salin penanda waktu URL</string>
|
||||
<string name="revanced_copy_video_url_timestamp_summary_on">Tombol ditampilkan. Ketuk untuk menyalin URL video dengan stempel waktu. Ketuk dan tahan untuk menyalin tanpa penanda waktu</string>
|
||||
<string name="revanced_copy_video_url_timestamp_summary_off">Tombol tidak ditampilkan</string>
|
||||
</patch>
|
||||
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
|
||||
@@ -681,6 +681,9 @@ Untuk menampilkan menu trek Audio, ubah 'Spoof aliran video' ke iOS TV"</string>
|
||||
<string name="revanced_hide_autoplay_button_title">Sembunyikan tombol Putar Otomatis</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">Tombol putar otomatis disembunyikan</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">Tombol putar otomatis ditampilkan</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_title">Sembunyikan latar belakang tombol kontrol pemutar</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_on">Latar belakang tombol kontrol pemutar disembunyikan</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">Latar belakang tombol kontrol pemutar ditampilkan</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">Sembunyikan kartu layar akhir</string>
|
||||
@@ -750,6 +753,9 @@ Untuk menampilkan menu trek Audio, ubah 'Spoof aliran video' ke iOS TV"</string>
|
||||
<string name="revanced_hide_shorts_location_label_title">Sembunyikan label lokasi</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">Label lokasi disembunyikan</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">Label lokasi ditampilkan</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">Sembunyikan pratinjau komentar</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Pratinjau komentar disembunyikan</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Pratinjau komentar ditampilkan</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Sembunyikan Simpan musik</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Tombol simpan musik disembunyikan</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Tombol simpan musik ditampilkan</string>
|
||||
@@ -762,6 +768,9 @@ Untuk menampilkan menu trek Audio, ubah 'Spoof aliran video' ke iOS TV"</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Sembunyikan tombol Layar Hijau</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">Tombol layar hijau disembunyikan</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">Tombol layar hijau ditampilkan</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_title">Sembunyikan tombol postingan Baru</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">Tombol postingan baru ditampilkan</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">Tombol postingan baru disembunyikan</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">Sembunyikan tombol tagar</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">Tombol tagar disembunyikan</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">Tombol tagar ditampilkan</string>
|
||||
@@ -827,9 +836,9 @@ Pengaturan → Pemutaran → Putar otomatis video berikutnya"</string>
|
||||
<string name="revanced_hide_related_video_overlay_summary_off">Hamparan video terkait ditampilkan</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.time.hideTimestampPatch">
|
||||
<string name="revanced_hide_timestamp_title">Sembunyikan timestamp video</string>
|
||||
<string name="revanced_hide_timestamp_summary_on">Timestamp disembunyikan</string>
|
||||
<string name="revanced_hide_timestamp_summary_off">Timestamp ditampilkan</string>
|
||||
<string name="revanced_hide_timestamp_title">Sembunyikan penanda waktu video</string>
|
||||
<string name="revanced_hide_timestamp_summary_on">Penanda waktu disembunyikan</string>
|
||||
<string name="revanced_hide_timestamp_summary_off">Penanda waktu ditampilkan</string>
|
||||
</patch>
|
||||
<patch id="layout.panels.popup.playerPopupPanelsPatch">
|
||||
<string name="revanced_hide_player_popup_panels_title">Sembunyikan panel popup pemutar</string>
|
||||
@@ -1252,6 +1261,9 @@ Geser untuk memperluas atau menutup"</string>
|
||||
<string name="revanced_gradient_loading_screen_title">Aktifkan layar pemuatan gradien</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_on">Layar pemuatan akan memiliki latar belakang gradien</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_off">Layar pemuatan akan memiliki latar belakang yang solid</string>
|
||||
<string name="splash_screen_animation_style_title">Gaya layar pembuka</string>
|
||||
<string name="splash_screen_animation_style_entry_1">Berwarna</string>
|
||||
<string name="splash_screen_animation_style_entry_2">Hitam dan putih</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Aktifkan warna seekbar khusus</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">Warna seekbar khusus ditampilkan</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">Warna seekbar asli ditampilkan</string>
|
||||
@@ -1397,7 +1409,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">
|
||||
@@ -1409,6 +1421,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>
|
||||
|
||||
@@ -311,9 +311,9 @@ Non sarai notificato di eventi imprevisti."</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">Nascondi il pulsante \'Crea uno Short\'</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">Il pulsante Crea uno Short è nascosto</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">Il pulsante Crea uno Short è visibile</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Nascondi i pulsanti emoji e timestamp</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">I pulsanti emoji e timestamp sono nascosti</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">I pulsanti emoji e timestamp sono visibili</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_title">Nascondi pulsante timestamp</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_on">Il pulsante timestamp è nascosto</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_off">Il pulsante timestamp è visibile</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Nascondi il commento di anteprima</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">Il commento di anteprima è nascosto</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">Il commento di anteprima è visibile</string>
|
||||
@@ -681,6 +681,9 @@ Per mostrare il menu della traccia audio, cambia \"Spoof video streams\" in iOS
|
||||
<string name="revanced_hide_autoplay_button_title">Nascondi il pulsante Riproduzione Automatica</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">Il pulsante Riproduzione Automatica è nascosto</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">Il pulsante Riproduzione Automatica è visibile</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_title">Nascondi sfondo dei pulsanti di controllo del player</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_on">Lo sfondo dei pulsanti di controllo del player è nascosto</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">Lo sfondo dei pulsanti di controllo del player è mostrato</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">Nascondi le schede della schermata finale</string>
|
||||
@@ -750,6 +753,9 @@ Per mostrare il menu della traccia audio, cambia \"Spoof video streams\" in iOS
|
||||
<string name="revanced_hide_shorts_location_label_title">Nascondi etichetta di posizione</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">L\'etichetta di posizione è nascosta</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">L\'etichetta di posizione è visibile</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">Nascondi commento di anteprima</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Il commento di anteprima è nascosto</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Viene mostrata l\'anteprima del commento</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Nascondi il pulsante Salva Musica</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Il pulsante Salva traccia è nascosto</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Il pulsante Salva traccia è visibile</string>
|
||||
@@ -762,6 +768,9 @@ Per mostrare il menu della traccia audio, cambia \"Spoof video streams\" in iOS
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Nascondi il pulsante Green Screen</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">Il pulsante Schermo verde è nascosto</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">Il pulsante Schermo verde è visibile</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_title">Nascondi il pulsante Nuovi post</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">Il pulsante Nuovi post è visibile</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">Il pulsante Nuovi post è nascosto</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">Nascondi il pulsante Hashtag</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">Il pulsante Hashtag è nascosto</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">Il pulsante Hashtag è visibile</string>
|
||||
@@ -1252,6 +1261,9 @@ Scorri per espandere o chiudere"</string>
|
||||
<string name="revanced_gradient_loading_screen_title">Abilita la schermata di caricamento col gradiente</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_on">La schermata di caricamento avrà uno sfondo col gradiente</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_off">La schermata di caricamento avrà uno sfondo a tinta unita</string>
|
||||
<string name="splash_screen_animation_style_title">Stile schermata iniziale</string>
|
||||
<string name="splash_screen_animation_style_entry_1">Colore</string>
|
||||
<string name="splash_screen_animation_style_entry_2">Bianco e nero</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Abilita colore personalizzato della barra di avanzamento</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">Il colore personalizzato della barra di avanzamento è visibile</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">Il colore originale della barra di avanzamento è visibile</string>
|
||||
@@ -1397,7 +1409,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">
|
||||
@@ -1409,6 +1421,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>
|
||||
|
||||
@@ -311,9 +311,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">הסתר לחצן \'יצירת Short\'</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">לחצן יצירת Short מוסתר</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">לחצן יצירת Short מוצג</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">הסתר לחצני אמוג\'י וחותמת זמן</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">לחצני אמוג\'י וחותמת זמן מוסתרים</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">לחצני אמוג\'י וחותמת זמן מוצגים</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_title">הסתר לחצן חותם זמן</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_on">לחצן חותם זמן מוסתר</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_off">לחצן חותם זמן מוצג</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">הסתר תצוגה מקדימה של תגובה</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">תצוגה מקדימה של תגובה מוסתרת</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">תצוגה מקדימה של תגובה מוצגת</string>
|
||||
@@ -681,6 +681,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_autoplay_button_title">הסתר לחצן הפעלה אוטומטית</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">לחצן הפעלה אוטומטית מוסתר</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">לחצן הפעלה אוטומטית מוצג</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_title">הסתר רקע של לחצני שליטה בנגן</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_on">רקע לחצני השליטה בנגן מוסתר</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">רקע לחצני השליטה בנגן מוצג</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">הסתר כרטיסי מסך סיום</string>
|
||||
@@ -750,6 +753,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_shorts_location_label_title">הסתר תווית מיקום</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">תווית מיקום מוסתרת</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">תווית מיקום מוצגת</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">הסתר תצוגה מקדימה של תגובה</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">תצוגה מקדימה של תגובה מוסתרת</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">תצוגה מקדימה של תגובה מוצגת</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">הסתר לחצן שמור מוזיקה</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">לחצן שמור מוזיקה מוסתר</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">לחצן שמור מוזיקה מוצג</string>
|
||||
@@ -762,6 +768,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">הסתר לחצן מסך ירוק</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">לחצן מסך ירוק מוסתר</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">לחצן מסך ירוק מוצג</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_title">הסתר לחצן \"פוסטים חדשים\"</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">לחצן \"פוסטים חדשים\" מוצג</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">לחצן \"פוסטים חדשים\" מוסתר</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">הסתר לחצן hashtag</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">לחצן hashtag מוסתר</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">לחצן hashtag מוצג</string>
|
||||
@@ -1253,6 +1262,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_gradient_loading_screen_title">הפעל מסך טעינה עם מעבר צבע</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_on">מסך הטעינה יהיה בעל רקע עם מעבר צבע</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_off">מסך הטעינה יהיה בעל רקע מוצק</string>
|
||||
<string name="splash_screen_animation_style_title">סגנון מסך פתיחה</string>
|
||||
<string name="splash_screen_animation_style_entry_1">צבע</string>
|
||||
<string name="splash_screen_animation_style_entry_2">שחור ולבן</string>
|
||||
<string name="revanced_seekbar_custom_color_title">הפעל צבע סרגל דילוג מותאם אישית</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">צבע סרגל דילוג מותאם אישית מוצג</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">צבע סרגל דילוג מקורי מוצג</string>
|
||||
@@ -1398,7 +1410,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">
|
||||
@@ -1410,6 +1422,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>
|
||||
|
||||
@@ -140,7 +140,7 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ
|
||||
<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>
|
||||
<string name="revanced_debug_logs_clear_toast">ログを消去しました</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_hide_album_cards_title">アルバム情報を非表示</string>
|
||||
@@ -314,9 +314,9 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">「ショートを作成」ボタンを非表示</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">「ショートを作成」ボタンは表示されません</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">「ショートを作成」ボタンは表示されます</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">絵文字ボタンとタイムスタンプ ボタンを非表示</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">絵文字ボタンとタイムスタンプ ボタンは表示されません</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">絵文字ボタンとタイムスタンプ ボタンは表示されます</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_title">タイムスタンプ ボタンを非表示</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_on">タイムスタンプ ボタンは表示されません</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_off">タイムスタンプ ボタンは表示されます</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">コメントのプレビューを非表示</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">コメントのプレビューは表示されません</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">コメントのプレビューは表示されます</string>
|
||||
@@ -428,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>
|
||||
@@ -684,6 +684,9 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ
|
||||
<string name="revanced_hide_autoplay_button_title">自動再生ボタンを非表示</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">自動再生ボタンはオーバーレイに表示されません</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">自動再生ボタンはオーバーレイに表示されます</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_title">プレーヤーのコントロール ボタンの背景を非表示</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_on">プレーヤーのコントロール ボタンの背景は表示されません</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">プレーヤーのコントロール ボタンの背景は表示されます</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">動画の終了画面を非表示</string>
|
||||
@@ -753,6 +756,9 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ
|
||||
<string name="revanced_hide_shorts_location_label_title">位置情報ラベルを非表示</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">位置情報ラベルは表示されません</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">位置情報ラベルは表示されます</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">コメントのプレビューを非表示</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">コメントのプレビューは表示されません</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">コメントのプレビューは表示されます</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">「音楽を保存」ボタンを非表示</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">「音楽を保存」ボタンは表示されません</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">「音楽を保存」ボタンは表示されます</string>
|
||||
@@ -765,6 +771,9 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">グリーンスクリーン ボタンを非表示</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">グリーンスクリーン ボタンは表示されません</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">グリーンスクリーン ボタンは表示されます</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_title">「新しい投稿」ボタンを非表示</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">「新しい投稿」ボタンは表示されます</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">「新しい投稿」ボタンは表示されません</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">ハッシュタグ ボタンを非表示</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">ハッシュタグ ボタンは表示されません</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">ハッシュタグ ボタンは表示されます</string>
|
||||
@@ -1122,14 +1131,14 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ
|
||||
<string name="revanced_change_form_factor_entry_2">スマートフォン</string>
|
||||
<string name="revanced_change_form_factor_entry_3">タブレット</string>
|
||||
<string name="revanced_change_form_factor_entry_4">Automotive</string>
|
||||
<string name="revanced_change_form_factor_user_dialog_message">"変更点は以下のとおりです:
|
||||
<string name="revanced_change_form_factor_user_dialog_message">"以下の変更を伴います:
|
||||
|
||||
タブレット レイアウト
|
||||
• コミュニティ投稿が表示されない
|
||||
|
||||
Automotive レイアウト
|
||||
• ショート動画を通常のプレーヤーで開く
|
||||
• フィードがトピックとチャンネルで分類される"</string>
|
||||
• フィードがトピックやチャンネルごとに分類された形で表示される"</string>
|
||||
</patch>
|
||||
<patch id="layout.spoofappversion.spoofAppVersionPatch">
|
||||
<string name="revanced_spoof_app_version_title">アプリのバージョンを偽装する</string>
|
||||
@@ -1253,6 +1262,9 @@ Automotive レイアウト
|
||||
<string name="revanced_gradient_loading_screen_title">グラデーションの読み込み画面を使用する</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_on">画面読み込み時にグラデーションの背景が表示されます</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_off">画面読み込み時に通常の背景が表示されます</string>
|
||||
<string name="splash_screen_animation_style_title">スプラッシュ画面のスタイル</string>
|
||||
<string name="splash_screen_animation_style_entry_1">カラー</string>
|
||||
<string name="splash_screen_animation_style_entry_2">白黒</string>
|
||||
<string name="revanced_seekbar_custom_color_title">編集したシークバーの色を使用する</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">編集したシークバーの色が表示されます</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">デフォルトのシークバーの色が表示されます</string>
|
||||
@@ -1371,9 +1383,9 @@ Automotive レイアウト
|
||||
<string name="revanced_remove_tracking_query_parameter_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>
|
||||
@@ -1396,9 +1408,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>
|
||||
@@ -1409,8 +1421,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>
|
||||
@@ -1436,7 +1449,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">"動画ストリームは偽装されません
|
||||
@@ -1457,7 +1470,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>
|
||||
|
||||
@@ -189,9 +189,9 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
|
||||
<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">콘서트 티켓 선반이 숨겨집니다\n• 일부 국가에서는 아직 서비스가 제공되지 않습니다</string>
|
||||
<string name="revanced_hide_ticket_shelf_summary_off">콘서트 티켓 선반이 표시됩니다\n• 일부 국가에서는 아직 서비스가 제공되지 않습니다</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>
|
||||
@@ -315,9 +315,9 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">Shorts 만들기 버튼 숨기기</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">Shorts 만들기 버튼이 숨겨집니다</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">Shorts 만들기 버튼이 표시됩니다</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">타임스탬프 & 이모지 버튼 숨기기</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">타임스탬프 & 이모지 버튼이 숨겨집니다</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">타임스탬프 & 이모지 버튼이 표시됩니다</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_title">타임스탬프 버튼 숨기기</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_on">타임스탬프 버튼이 숨겨집니다</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_off">타임스탬프 버튼이 표시됩니다</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">댓글 미리보기 숨기기</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">댓글 미리보기가 숨겨집니다</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">댓글 미리보기가 표시됩니다</string>
|
||||
@@ -488,14 +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_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>
|
||||
@@ -681,6 +681,9 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
|
||||
<string name="revanced_hide_autoplay_button_title">자동재생 버튼 숨기기</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">자동재생 버튼이 숨겨집니다</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">자동재생 버튼이 표시됩니다</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_title">플레이어 컨트롤 버튼 배경 숨기기</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_on">플레이어 컨트롤 버튼 배경이 숨겨집니다</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">플레이어 컨트롤 버튼 배경이 표시됩니다</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">최종 화면 카드 숨기기</string>
|
||||
@@ -750,6 +753,9 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
|
||||
<string name="revanced_hide_shorts_location_label_title">위치 라벨 숨기기</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">위치 라벨이 숨겨집니다</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">위치 라벨이 표시됩니다</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">댓글 미리보기 숨기기</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">댓글 미리보기가 숨겨집니다</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">댓글 미리보기가 표시됩니다</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">(재생목록에) 음악 저장 버튼 숨기기</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">(재생목록에) 음악 저장 버튼이 숨겨집니다</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">(재생목록에) 음악 저장 버튼이 표시됩니다</string>
|
||||
@@ -762,6 +768,9 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">그린 스크린 버튼 숨기기</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">그린 스크린 버튼이 숨겨집니다</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">그린 스크린 버튼이 표시됩니다</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_title">새로운 게시물 버튼 숨기기</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">새로운 게시물 버튼이 표시됩니다</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">새로운 게시물 버튼이 숨겨집니다</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">해시태그 버튼 숨기기</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">해시태그 버튼이 숨겨집니다</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">해시태그 버튼이 표시됩니다</string>
|
||||
@@ -850,7 +859,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">
|
||||
@@ -1249,13 +1258,16 @@ 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">
|
||||
<string name="revanced_gradient_loading_screen_title">그라데이션 색상 로딩 화면 활성화하기</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_on">그라데이션 색상 로딩 화면을 활성화합니다</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_off">기본 로딩 화면을 활성화합니다</string>
|
||||
<string name="splash_screen_animation_style_title">스플래시 애니메이션 스타일</string>
|
||||
<string name="splash_screen_animation_style_entry_1">컬러</string>
|
||||
<string name="splash_screen_animation_style_entry_2">흑백</string>
|
||||
<string name="revanced_seekbar_custom_color_title">사용자 정의 재생바 색상 활성화하기</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">사용자 정의 재생바 색상을 활성화합니다</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">기본 재생바 색상을 활성화합니다</string>
|
||||
@@ -1401,7 +1413,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">
|
||||
@@ -1413,6 +1425,7 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요"</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>
|
||||
|
||||
@@ -311,9 +311,9 @@ Apie netikėtus įvykius nebus pranešta."</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">Slėpti \"Kurti Short\" mygtuką</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">Mygtukas „Sukurti Short“ paslėptas</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">Mygtukas „Sukurti Short“ rodomas</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Slėpti jaustukų ir laiko žymų mygtukus</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Jaustukų ir laiko žymų mygtukai paslėpti</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Jaustukų ir laiko žymų mygtukai rodomi</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_title">Slėpti datos ir laiko žymos mygtuką</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_on">Datos ir laiko žymos mygtukas paslėptas</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_off">Datos ir laiko žymos mygtukas rodomas</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Slėpti peržiūros komentarą</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">Peržiūros komentaras yra paslėptas</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">Peržiūros komentaras yra rodomas</string>
|
||||
@@ -679,6 +679,9 @@ Jei pakeitus šį nustatymą neįsigalioja, pabandykite perjungti į inkognito r
|
||||
<string name="revanced_hide_autoplay_button_title">Paslėpti mygtuką „Automatinis atkūrimas\"</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">Automatinio paleidimo mygtukas yra paslėptas</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">Automatinio paleidimo mygtukas yra rodomas</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_title">Slėpti grotuvo valdymo mygtukų foną</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_on">Grotuvo valdymo mygtukų fonas paslėptas</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">Grotuvo valdymo mygtukų fonas rodomas</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">Slėpti ekrano pabaigos korteles</string>
|
||||
@@ -748,6 +751,9 @@ Jei pakeitus šį nustatymą neįsigalioja, pabandykite perjungti į inkognito r
|
||||
<string name="revanced_hide_shorts_location_label_title">Slėpti vietovės etiketę</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">Vietovės etiketė paslėpta</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">Vietovės etiketė rodoma</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">Slėpti peržiūros komentarą</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Komentaro peržiūra paslėpta</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Parodyta komentaro peržiūra</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Paslėpti mygtuką „Įrašyti muziką\"</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">\"Išsaugoti muziką\" mygtukas paslėptas</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">\"Išsaugoti muziką\" mygtukas rodomas</string>
|
||||
@@ -760,6 +766,9 @@ Jei pakeitus šį nustatymą neįsigalioja, pabandykite perjungti į inkognito r
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Paslėpti mygtuką „Žalias ekranas\"</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">\"Žaliojo ekrano\" mygtukas paslėptas</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">\"Žaliojo ekrano\" mygtukas rodomas</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_title">Slėpti mygtuką „Nauji įrašai“</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">Rodomas mygtukas „Nauji įrašai“</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">Paslėptas mygtukas „Nauji įrašai“</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">Slėpti grotažymės mygtuką</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">Grotažymės mygtukas paslėptas</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">Grotažymės mygtukas rodomas</string>
|
||||
@@ -1252,6 +1261,9 @@ Braukite, kad išplėstumėte arba uždarytumėte"</string>
|
||||
<string name="revanced_gradient_loading_screen_title">Įgalinti gradientinį įkėlimo ekraną</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_on">Įkėlimo ekranas turės gradientinį foną</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_off">Įkėlimo ekranas turės tvirtą foną</string>
|
||||
<string name="splash_screen_animation_style_title">Paleidimo ekrano stilius</string>
|
||||
<string name="splash_screen_animation_style_entry_1">Spalva</string>
|
||||
<string name="splash_screen_animation_style_entry_2">Juoda ir balta</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Įgalinti pritaikytą slankiklio spalvą</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">Rodoma pritaikyta slankiklio spalva</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">Rodoma originali slankiklio spalva</string>
|
||||
@@ -1397,7 +1409,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">
|
||||
@@ -1409,6 +1421,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>
|
||||
|
||||
@@ -311,9 +311,9 @@ Jūs netiksit informēts par neparedzētiem notikumiem."</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">Paslēpt \"Izveidot īso\" pogu</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">Poga Izveidot Short ir paslēpta</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">Poga Izveidot Short ir redzama</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Paslēpt emocijzīmju un laikazīmogu pogas</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Emocijzīmju un laikazīmogu pogas ir paslēptas</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Emocijzīmju un laikazīmogu pogas ir redzamas</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_title">Paslēpt laika zīmoga pogu</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_on">Laika zīmoga poga ir paslēpta</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_off">Laika zīmoga poga ir redzama</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Paslēpt priekšskatījuma komentāru</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">Priekšskatījuma komentārs ir paslēpts</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">Priekšskatījuma komentārs ir redzams</string>
|
||||
@@ -681,6 +681,9 @@ Lai parādītu audio celiņu izvēlni, mainiet \"Video straumju viltošana\" uz
|
||||
<string name="revanced_hide_autoplay_button_title">Paslēpt pogu \"Automātiskā atskaņošana\"</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">Automātiskās atskaņošanas poga ir paslēpta</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">Automātiskās atskaņošanas poga ir redzama</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_title">Slēpt atskaņotāja vadības pogu fonu</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_on">Atskaņotāja vadības pogu fons ir paslēpts</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">Atskaņotāja vadības pogu fons ir redzams</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">Paslēpt ekrāna beigās esošās kartītes</string>
|
||||
@@ -750,6 +753,9 @@ Lai parādītu audio celiņu izvēlni, mainiet \"Video straumju viltošana\" uz
|
||||
<string name="revanced_hide_shorts_location_label_title">Paslēpt atrašanās vietas nosaukumu</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">Atrašanās vietas nosaukums ir paslēpts</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">Atrašanās vietas nosaukums ir redzams</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">Paslēpt priekšskatījuma komentāru</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Komentāra priekšskatījums ir paslēpts</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Priekšskatījuma komentārs tiek rādīts</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Paslēpt pogu \"Saglabāt mūziku\"</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">“Saglabāt mūziku” poga ir paslēpta</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">“Saglabāt mūziku” poga ir redzama</string>
|
||||
@@ -762,6 +768,9 @@ Lai parādītu audio celiņu izvēlni, mainiet \"Video straumju viltošana\" uz
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Paslēpt pogu \"Zaļais ekrāns\"</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">Zaļā ekrāna poga ir paslēpta</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">Zaļā ekrāna poga ir redzama</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_title">Paslēpt pogu Jauni ieraksti</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">Poga Jauni ieraksti ir redzama</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">Poga Jauni ieraksti ir paslēpta</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">Paslēpt hashtags pogu</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">Hashtags poga ir paslēpta</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">Hashtags poga ir redzama</string>
|
||||
@@ -1252,6 +1261,9 @@ Velciet, lai izvērstu vai aizvērtu"</string>
|
||||
<string name="revanced_gradient_loading_screen_title">Iespējot gradientu ielādes ekrānu</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_on">Ielādes ekrānam būs gradientu fons</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_off">Ielādes ekrānam būs ciets fons</string>
|
||||
<string name="splash_screen_animation_style_title">Sākuma ekrāna stils</string>
|
||||
<string name="splash_screen_animation_style_entry_1">Krāsa</string>
|
||||
<string name="splash_screen_animation_style_entry_2">Melnbalts</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Iespējot pielāgotu meklēšanas joslas krāsu</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">Pielāgota meklēšanas joslas krāsa ir redzama</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">Oriģinālā meklēšanas joslas krāsa ir redzama</string>
|
||||
@@ -1397,7 +1409,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">
|
||||
@@ -1409,6 +1421,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>
|
||||
|
||||
@@ -190,6 +190,7 @@ Second \"item\" text"</string>
|
||||
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
|
||||
</patch>
|
||||
<patch id="misc.announcements.announcementsPatch">
|
||||
<string name="revanced_announcements_dialog_dismiss">Melepaskan</string>
|
||||
</patch>
|
||||
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
|
||||
</patch>
|
||||
|
||||
@@ -311,9 +311,9 @@ U wordt niet op de hoogte gesteld van onverwachte gebeurtenissen."</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">Verberg \'Create a Short\' knop</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">Knop \'Een Short maken\' is verborgen</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">Knop \'Een Short maken\' wordt weergegeven</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Emoji- en tijdstempelknoppen verbergen</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Emoji- en tijdstempelknoppen zijn verborgen</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Emoji- en tijdstempelknoppen worden weergegeven</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_title">Knop voor tijdstempel verbergen</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_on">Knop voor tijdstempel is verborgen</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_off">Knop voor tijdstempel wordt weergegeven</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Reactie in preview verbergen</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">Preview reactie is verborgen</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">Preview reactie wordt getoond</string>
|
||||
@@ -681,6 +681,9 @@ Om het audiotrackmenu weer te geven, wijzigt u 'Videostreams vervalsen' in iOS T
|
||||
<string name="revanced_hide_autoplay_button_title">Verberg knop voor automatisch afspelen</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">Automatische afspeelknop is verborgen</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">Automatische afspeelknop wordt weergegeven</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_title">Achtergrond van afspeelknoppen verbergen</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_on">Achtergrond van afspeelknoppen is verborgen</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">Achtergrond van afspeelknoppen wordt weergegeven</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">Verberg eindschermkaarten</string>
|
||||
@@ -750,6 +753,9 @@ Om het audiotrackmenu weer te geven, wijzigt u 'Videostreams vervalsen' in iOS T
|
||||
<string name="revanced_hide_shorts_location_label_title">Verberg locatie-etiket</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">Locatie-etiket is verborgen</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">Locatie-etiket wordt weergegeven</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">Voorbeeldcommentaar verbergen</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Voorbeeldcommentaar is verborgen</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Voorbeeldcommentaar wordt weergegeven</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Verberg de knop \"Muziek opslaan\"</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Muziek opslaan-knop is verborgen</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Muziek opslaan-knop wordt weergegeven</string>
|
||||
@@ -762,6 +768,9 @@ Om het audiotrackmenu weer te geven, wijzigt u 'Videostreams vervalsen' in iOS T
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Verberg de knop \"Groen scherm\"</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">De knop \"Groen scherm\" is verborgen</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">De knop \"Groen scherm\" is zichtbaar</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_title">Knop Nieuwe berichten verbergen</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">Knop Nieuwe berichten wordt weergegeven</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">Knop Nieuwe berichten is verborgen</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">Verberg de knop \"Hashtag\"</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">De knop \"Hashtag\" is verborgen</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">De knop \"Hashtag\" is zichtbaar</string>
|
||||
@@ -1251,6 +1260,9 @@ Swipe om uit te vouwen of te sluiten"</string>
|
||||
<string name="revanced_gradient_loading_screen_title">Schakel het laden van het verloopscherm in</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_on">Het laadscherm heeft een verlopende achtergrond</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_off">Het laadscherm heeft een effen achtergrond</string>
|
||||
<string name="splash_screen_animation_style_title">Stijl van opstartscherm</string>
|
||||
<string name="splash_screen_animation_style_entry_1">Kleur</string>
|
||||
<string name="splash_screen_animation_style_entry_2">Zwart-wit</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Schakel aangepaste schuifregelaar kleur in</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">De aangepaste kleur van de schuifregelaar is zichtbaar</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">De oorspronkelijke kleur van de schuifregelaar is zichtbaar</string>
|
||||
@@ -1396,7 +1408,7 @@ Het inschakelen hiervan kan hogere videokwaliteiten ontgrendelen"</string>
|
||||
</patch>
|
||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||
<string name="revanced_playback_speed_dialog_button_title">Snelheidsdialoogknop weergeven</string>
|
||||
<string name="revanced_playback_speed_dialog_button_summary_on">Knop wordt weergegeven</string>
|
||||
<string name="revanced_playback_speed_dialog_button_summary_on">De knop wordt weergegeven. Tik en houd vast om de afspeelsnelheid terug te zetten naar de standaardwaarde</string>
|
||||
<string name="revanced_playback_speed_dialog_button_summary_off">Knop wordt niet weergegeven</string>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
@@ -1408,6 +1420,7 @@ Het inschakelen hiervan kan hogere videokwaliteiten ontgrendelen"</string>
|
||||
<string name="revanced_custom_playback_speeds_invalid">Aangepaste snelheden moeten lager zijn dan %s</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">Ongeldige aangepaste afspeelsnelheden</string>
|
||||
<string name="revanced_custom_playback_speeds_auto">Automatisch</string>
|
||||
<string name="revanced_custom_playback_speeds_reset_toast">Afspeelsnelheid hersteld naar: %s</string>
|
||||
<string name="revanced_speed_tap_and_hold_title">De snelheid van aangepast tikken en vasthouden</string>
|
||||
<string name="revanced_speed_tap_and_hold_summary">Afspeelsnelheid tussen 0-8</string>
|
||||
</patch>
|
||||
|
||||
@@ -307,9 +307,9 @@ Nie będziesz informowany o żadnych nieoczekiwanych zdarzeniach."</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">Przycisk od tworzenia Shortsów</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">Przycisk Utwórz Short jest ukryty</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">Przycisk Utwórz Short jest widoczny</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Ukryj przyciski emoji i znacznika czasu</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Przyciski emoji i znacznika czasu są ukryte</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Przyciski emoji i znacznika czasu są widoczne</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_title">Ukryj przycisk znacznika czasu</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_on">Przycisk znacznika czasu jest ukryty</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_off">Przycisk znacznika czasu jest widoczny</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Ukryj podgląd komentarzy</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">Podgląd komentarzy jest ukryty</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">Podgląd komentarzy jest widoczny</string>
|
||||
@@ -677,6 +677,9 @@ Aby pokazać menu ścieżki audio, zmień opcję „Fałszuj strumienie wideo”
|
||||
<string name="revanced_hide_autoplay_button_title">Ukryj przycisk automatycznego odtwarzania</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">Przycisk automatycznego odtwarzania jest ukryty</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">Przycisk automatycznego odtwarzania jest widoczny</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_title">Ukryj tło przycisków sterowania odtwarzacza</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_on">Tło przycisków sterowania odtwarzacza jest ukryte</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">Tło przycisków sterowania odtwarzacza jest wyświetlane</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">Karty ekranu końcowego</string>
|
||||
@@ -746,6 +749,9 @@ Aby pokazać menu ścieżki audio, zmień opcję „Fałszuj strumienie wideo”
|
||||
<string name="revanced_hide_shorts_location_label_title">Etykieta lokalizacji</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">Etykieta lokalizacji jest ukryta</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">Etykieta lokalizacji jest widoczna</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">Ukryj komentarz podglądu</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Komentarz podglądu jest ukryty</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Podgląd komentarza jest wyświetlany</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Ukryj przycisk \"Zapisz muzykę\"</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Przycisk od zapisywania muzyki jest ukryty</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Przycisk od zapisywania muzyki jest widoczny</string>
|
||||
@@ -758,6 +764,9 @@ Aby pokazać menu ścieżki audio, zmień opcję „Fałszuj strumienie wideo”
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Ukryj przycisk \"Zielony ekran\"</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">Przycisk od greenscreena jest ukryty</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">Przycisk od greenscreena jest widoczny</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_title">Ukryj przycisk Nowe posty</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">Przycisk Nowe posty jest widoczny</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">Przycisk Nowe posty jest ukryty</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">Przycisk hashtagu</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">Przycisk hashtagu jest ukryty</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">Przycisk hashtagu jest widoczny</string>
|
||||
@@ -1249,6 +1258,9 @@ Przesuń, aby rozwinąć lub zamknąć"</string>
|
||||
<string name="revanced_gradient_loading_screen_title">Kolorowy ekran ładowania</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_on">Ekran ładowania będzie miał kolorowe tło</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_off">Ekran ładowania będzie miał stałe tło</string>
|
||||
<string name="splash_screen_animation_style_title">Styl ekranu powitalnego</string>
|
||||
<string name="splash_screen_animation_style_entry_1">Kolor</string>
|
||||
<string name="splash_screen_animation_style_entry_2">Czarno-biały</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Niestandardowy kolor paska postępu</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">Niestandardowy</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">Oryginalny</string>
|
||||
@@ -1394,7 +1406,7 @@ Włączenie tego może odblokować wyższe jakości wideo"</string>
|
||||
</patch>
|
||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||
<string name="revanced_playback_speed_dialog_button_title">Przycisk od prędkości</string>
|
||||
<string name="revanced_playback_speed_dialog_button_summary_on">Przycisk jest widoczny</string>
|
||||
<string name="revanced_playback_speed_dialog_button_summary_on">Przycisk jest widoczny. Dotknij i przytrzymaj, aby zresetować prędkość odtwarzania do domyślnej</string>
|
||||
<string name="revanced_playback_speed_dialog_button_summary_off">Przycisk nie jest widoczny</string>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
@@ -1406,6 +1418,7 @@ Włączenie tego może odblokować wyższe jakości wideo"</string>
|
||||
<string name="revanced_custom_playback_speeds_invalid">Prędkości niestandardowe muszą być mniejsze niż %s</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">Nieprawidłowe prędkości odtwarzania niestandardowego</string>
|
||||
<string name="revanced_custom_playback_speeds_auto">Automatyczne</string>
|
||||
<string name="revanced_custom_playback_speeds_reset_toast">Prędkość odtwarzania zresetowana do: %s</string>
|
||||
<string name="revanced_speed_tap_and_hold_title">Szybkość dostosowywania dotknięciem i przytrzymaniem</string>
|
||||
<string name="revanced_speed_tap_and_hold_summary">Prędkość odtwarzania w granicach 0-8</string>
|
||||
</patch>
|
||||
|
||||
@@ -309,9 +309,9 @@ Você não será notificado sobre nenhum evento inesperado."</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">Ocultar botão \'Criar um Short\'</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">O botão Criar um Short está oculto</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">O botão Criar um Short é mostrado</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Ocultar botões de emoji e carimbo de data/hora</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Os botões de emoji e carimbo de data/hora estão ocultos</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Os botões de emoji e carimbo de data/hora são mostrados</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_title">Ocultar o botão de carimbo de data/hora</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_on">O botão de carimbo de data/hora está oculto</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_off">O botão de carimbo de data/hora é mostrado</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Ocultar prévia de comentário</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">Prévia de comentário está oculta</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">A prévia de comentário é exibida</string>
|
||||
@@ -679,6 +679,9 @@ Para exibir o menu da faixa de áudio, altere \"Spoof video streams\" para iOS T
|
||||
<string name="revanced_hide_autoplay_button_title">Ocultar botão Reprodução automática</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">Botão de reprodução automática está oculto</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">Botão de reprodução automática não está oculto</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_title">Ocultar o fundo dos botões de controle do player</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_on">O fundo dos botões de controle do player está oculto</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">O fundo dos botões de controle do player está visível</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">Ocultar cartões de tela final</string>
|
||||
@@ -748,6 +751,9 @@ Para exibir o menu da faixa de áudio, altere \"Spoof video streams\" para iOS T
|
||||
<string name="revanced_hide_shorts_location_label_title">Ocultar rótulo de localização</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">Rótulo de localização está oculto</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">Rótulo de localização é mostrado</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">Ocultar comentário de visualização</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">O comentário de visualização está oculto</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">A visualização do comentário é mostrada</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Ocultar botão Salvar música</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">O botão Salvar música está oculto</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">O botão Salvar música será exibido</string>
|
||||
@@ -760,6 +766,9 @@ Para exibir o menu da faixa de áudio, altere \"Spoof video streams\" para iOS T
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Ocultar botão Tela verde</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">O botão de tela verde está oculto</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">O botão de tela verde será exibido</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_title">Ocultar botão de novas postagens</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">O botão de novas postagens é exibido</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">O botão de novas postagens está oculto</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">Ocultar botão hashtag</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">O botão hashtag está oculto</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">Botão hashtag é mostrado</string>
|
||||
@@ -1250,6 +1259,9 @@ Passe o dedo para expandir ou fechar"</string>
|
||||
<string name="revanced_gradient_loading_screen_title">Ativar tela de carregamento em gradiente</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_on">Tela de carregamento terá um fundo em gradiente</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_off">Tela de carregamento terá um fundo sólido</string>
|
||||
<string name="splash_screen_animation_style_title">Estilo da tela inicial</string>
|
||||
<string name="splash_screen_animation_style_entry_1">Cor</string>
|
||||
<string name="splash_screen_animation_style_entry_2">Preto e branco</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Ativar cor personalizada da barra de busca</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">Cor personalizada da barra de busca é mostrada</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">Cor original da barra de busca é mostrada</string>
|
||||
@@ -1395,7 +1407,7 @@ Habilitar isso pode desbloquear qualidades de vídeo mais altas"</string>
|
||||
</patch>
|
||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||
<string name="revanced_playback_speed_dialog_button_title">Mostrar botão de velocidade</string>
|
||||
<string name="revanced_playback_speed_dialog_button_summary_on">Botão não esta oculto</string>
|
||||
<string name="revanced_playback_speed_dialog_button_summary_on">O botão é exibido. Toque e mantenha pressionado para redefinir a velocidade de reprodução para o padrão</string>
|
||||
<string name="revanced_playback_speed_dialog_button_summary_off">Botão não está visível</string>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
@@ -1407,6 +1419,7 @@ Habilitar isso pode desbloquear qualidades de vídeo mais altas"</string>
|
||||
<string name="revanced_custom_playback_speeds_invalid">Velocidades personalizadas devem ser menores que %s</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">Velocidades de reprodução personalizadas inválidas</string>
|
||||
<string name="revanced_custom_playback_speeds_auto">Automático</string>
|
||||
<string name="revanced_custom_playback_speeds_reset_toast">Velocidade de reprodução redefinida para: %s</string>
|
||||
<string name="revanced_speed_tap_and_hold_title">Velocidade personalizada de tocar e segurar</string>
|
||||
<string name="revanced_speed_tap_and_hold_summary">Velocidade de reprodução entre 0-8</string>
|
||||
</patch>
|
||||
|
||||
@@ -311,9 +311,9 @@ Não será notificado de quaisquer eventos inesperados."</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">Ocultar o botão \'Criar um Short\'</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">O botão Criar um Short está oculto</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">O botão Criar um Short é mostrado</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Ocultar botões de emoji e carimbo de data/hora</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Os botões de emoji e carimbo de data/hora estão ocultos</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Os botões de emoji e carimbo de data/hora são mostrados</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_title">Ocultar o botão de carimbo de data/hora</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_on">O botão de carimbo de data/hora está oculto</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_off">O botão de carimbo de data/hora está visível</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Esconder comentário de pré-visualização</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">Visualização do comentário está escondida</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">Pré-visualização de comentário é exibida</string>
|
||||
@@ -681,6 +681,9 @@ Para mostrar o menu da faixa de áudio, altere \"Spoof video streams\" para iOS
|
||||
<string name="revanced_hide_autoplay_button_title">Ocultar botão de reprodução automática</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">O botão de reprodução automática está escondido</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">Botão de reprodução automática é visível</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_title">Ocultar o fundo dos botões de controlo do reprodutor</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_on">O fundo dos botões de controlo do reprodutor está oculto</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">O fundo dos botões de controlo do reprodutor é mostrado</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">Esconder cartões de ecrã final</string>
|
||||
@@ -750,6 +753,9 @@ Para mostrar o menu da faixa de áudio, altere \"Spoof video streams\" para iOS
|
||||
<string name="revanced_hide_shorts_location_label_title">Ocultar rótulo de localização</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">Rótulo de localização está oculto</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">Rótulo de localização é mostrado</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">Esconder comentário de pré-visualização</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Visualização do comentário está escondida</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Pré-visualização de comentário é exibida</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Ocultar botão de salvar música</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">O botão salvar música está oculto</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">O botão salvar música é mostrado</string>
|
||||
@@ -762,6 +768,9 @@ Para mostrar o menu da faixa de áudio, altere \"Spoof video streams\" para iOS
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Botão de ecrã verde está oculto</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">O botão de ecrã verde está oculto</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">Botão de ecrã verde é mostrado</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_title">Ocultar botão Novas postagens</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">O botão Novas postagens é exibido</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">O botão Novas postagens está oculto</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">Ocultar botão de hashtag</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">O botão Hashtag está oculto</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">Botão Hashtag é mostrado</string>
|
||||
@@ -1253,6 +1262,9 @@ Deslize para expandir ou fechar"</string>
|
||||
<string name="revanced_gradient_loading_screen_title">Ativar ecrã de carregamento do gradiente</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_on">Carregar ecrã terá um fundo em gradiente</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_off">Carregar ecrã terá um fundo sólido</string>
|
||||
<string name="splash_screen_animation_style_title">Estilo da tela inicial</string>
|
||||
<string name="splash_screen_animation_style_entry_1">Cor</string>
|
||||
<string name="splash_screen_animation_style_entry_2">Preto e branco</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Ativar a cor personalizada</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">Cor personalizada da barra de busca é visível</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">Cor original da barra de busca é visível</string>
|
||||
@@ -1398,7 +1410,7 @@ Bật tính năng này có thể mở khóa chất lượng video cao hơn"</str
|
||||
</patch>
|
||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||
<string name="revanced_playback_speed_dialog_button_title">Mostrar botão de diálogo de velocidade</string>
|
||||
<string name="revanced_playback_speed_dialog_button_summary_on">O botão está visível</string>
|
||||
<string name="revanced_playback_speed_dialog_button_summary_on">O botão é mostrado. Toque e segure para redefinir a velocidade de reprodução para o padrão</string>
|
||||
<string name="revanced_playback_speed_dialog_button_summary_off">O botão não está visível</string>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
@@ -1410,6 +1422,7 @@ Bật tính năng này có thể mở khóa chất lượng video cao hơn"</str
|
||||
<string name="revanced_custom_playback_speeds_invalid">Tốc độ tùy chỉnh phải nhỏ hơn %s</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">Tốc độ phát lại tùy chỉnh không hợp lệ</string>
|
||||
<string name="revanced_custom_playback_speeds_auto">Automático</string>
|
||||
<string name="revanced_custom_playback_speeds_reset_toast">Velocidade de reprodução redefinida para: %s</string>
|
||||
<string name="revanced_speed_tap_and_hold_title">Velocidade personalizada ao tocar e segurar</string>
|
||||
<string name="revanced_speed_tap_and_hold_summary">Velocidade de reprodução de 0 a 8</string>
|
||||
</patch>
|
||||
|
||||
@@ -311,9 +311,9 @@ Nu veți fi notificat de niciun eveniment neașteptat."</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">Ascunde butonul \'Creare Short\'</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">Butonul Creează un Short este ascuns</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">Butonul Creează un Short este afișat</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Ascunde butoanele emoji și timestamp</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Butoanele Emoji și timestamp sunt ascunse</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Butoanele Emoji și timestamp sunt afișate</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_title">Ascunde butonul de marcaj temporal</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_on">Butonul de marcaj temporal este ascuns</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_off">Butonul de marcaj temporal este afișat</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Ascunde previzualizarea comentariului</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">Previzualizarea comentariului este ascunsă</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">Previzualizarea comentariului este afișată</string>
|
||||
@@ -681,6 +681,9 @@ Pentru a afișa meniul pentru pista audio, schimbați opțiunea „Falsifică fl
|
||||
<string name="revanced_hide_autoplay_button_title">Ascunde butonul Redare automată</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">Butonul Autoplay este ascuns</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">Butonul Auto-redare este afișat</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_title">Ascunde fundalul butoanelor de control al playerului</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_on">Fundalul butoanelor de control al playerului este ascuns</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">Fundalul butoanelor de control al playerului este afișat</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">Ascunde cardurile ecranului final</string>
|
||||
@@ -750,6 +753,9 @@ Pentru a afișa meniul pentru pista audio, schimbați opțiunea „Falsifică fl
|
||||
<string name="revanced_hide_shorts_location_label_title">Ascunde eticheta locației</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">Eticheta locației este ascunsă</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">Eticheta locației este afișată</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">Ascunde comentariul de previzualizare</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Comentariul de previzualizare este ascuns</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Previzualizarea comentariului este afișată</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Ascunde butonul Salvează melodia</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Butonul de salvare a muzicii este ascuns</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Butonul de salvare a muzicii este afișat</string>
|
||||
@@ -762,6 +768,9 @@ Pentru a afișa meniul pentru pista audio, schimbați opțiunea „Falsifică fl
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Ascunde butonul Ecran verde</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">Butonul de ecran verde este ascuns</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">Butonul de ecran verde este afișat</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_title">Ascunde butonul Postări noi</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">Butonul Postări noi este afișat</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">Butonul Postări noi este ascuns</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">Ascunde butonul hashtag</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">Butonul Hashtag este ascuns</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">Butonul Hashtag este afișat</string>
|
||||
@@ -1252,6 +1261,9 @@ Trageți pentru a extinde sau a închide"</string>
|
||||
<string name="revanced_gradient_loading_screen_title">Activează ecranul de încărcare gradient</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_on">Încărcarea ecranului va avea un fundal pentru gradient</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_off">Ecranul de încărcare va avea un fundal solid</string>
|
||||
<string name="splash_screen_animation_style_title">Stil ecran de pornire</string>
|
||||
<string name="splash_screen_animation_style_entry_1">Culoare</string>
|
||||
<string name="splash_screen_animation_style_entry_2">Alb-negru</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Activează culoarea barei de căutare personalizate</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">Culoarea personalizată a barei de căutare este afișată</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">Culoarea bara de căutare originală este afișată</string>
|
||||
@@ -1397,7 +1409,7 @@ Activarea acestei opțiuni poate debloca calități video mai mari"</string>
|
||||
</patch>
|
||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||
<string name="revanced_playback_speed_dialog_button_title">Arată butonul de dialog de viteză</string>
|
||||
<string name="revanced_playback_speed_dialog_button_summary_on">Butonul este afișat</string>
|
||||
<string name="revanced_playback_speed_dialog_button_summary_on">Butonul este afișat. Atingeți și mențineți apăsat pentru a reseta viteza de redare la cea implicită</string>
|
||||
<string name="revanced_playback_speed_dialog_button_summary_off">Butonul nu este afișat</string>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
@@ -1409,6 +1421,7 @@ Activarea acestei opțiuni poate debloca calități video mai mari"</string>
|
||||
<string name="revanced_custom_playback_speeds_invalid">Vitezele personalizate trebuie să fie mai mici de %s</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">Viteze de redare personalizate nevalide</string>
|
||||
<string name="revanced_custom_playback_speeds_auto">Automat</string>
|
||||
<string name="revanced_custom_playback_speeds_reset_toast">Viteza de redare a fost resetată la: %s</string>
|
||||
<string name="revanced_speed_tap_and_hold_title">Viteză personalizată de apăsare și menținere</string>
|
||||
<string name="revanced_speed_tap_and_hold_summary">Viteză de redare între 0-8</string>
|
||||
</patch>
|
||||
|
||||
@@ -311,9 +311,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">Скрыть кнопку \"Создать Short\"</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">Кнопка \"Создать Short\" при ответе на комментарий скрыта</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">Кнопка \"Создать Short\" при ответе на комментарий показана</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Скрыть кнопки эмодзи и меток времени</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Кнопки эмодзи и меток времени скрыты</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Кнопки эмодзи и меток времени показаны</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_title">Скрыть кнопку метки времени</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_on">Кнопка метки времени скрыта</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_off">Кнопка метки времени показана</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Скрыть предпросмотр комментария</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">Предпросмотр комментария под плеером скрыт</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">Предпросмотр комментария под плеером показан</string>
|
||||
@@ -681,6 +681,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_autoplay_button_title">Скрыть кнопку \"Автовоспроизведение\"</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">Кнопка \"Автовоспроизведение\" в плеере скрыта</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">Кнопка \"Автовоспроизведение\" в плеере показана</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_title">Скрыть фон кнопок управления плеера</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_on">Фон кнопок управления плеера скрыт</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">Фон кнопок управления плеера показан</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">Скрыть заставки следующих видео</string>
|
||||
@@ -750,6 +753,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_shorts_location_label_title">Скрыть метку местоположения</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">Метка местоположения в Shorts скрыта</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">Метка местоположения в Shorts показана</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">Скрыть превью комментариев</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Превью комментариев под плеером скрыто</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Превью комментариев под плеером показано</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Скрыть кнопку \"Сохранить музыку\"</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Кнопка \"Сохранить музыку\" в Shorts скрыта</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Кнопка \"Сохранить музыку\" в Shorts показана</string>
|
||||
@@ -762,6 +768,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Скрыть кнопку \"Зеленый экран\"</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">Кнопка \"Зеленый экран\" в Shorts скрыта</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">Кнопка \"Зеленый экран\" в Shorts показана</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_title">Скрыть кнопку \"Новые публикации\"</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">Кнопка \"Новые публикации\" в плеере Shorts показана</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">Кнопка \"Новые публикации\" в плеере Shorts скрыта</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">Скрыть кнопку хэштега</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">Кнопка хэштега в Shorts скрыта</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">Кнопка хэштега в Shorts показана</string>
|
||||
@@ -1253,6 +1262,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_gradient_loading_screen_title">Включить градиентный фон экрана загрузки</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_on">Градиентный фон экрана загрузки макета включен</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_off">Сплошной фон экрана загрузки макета включен</string>
|
||||
<string name="splash_screen_animation_style_title">Стиль экрана заставки</string>
|
||||
<string name="splash_screen_animation_style_entry_1">Цветной</string>
|
||||
<string name="splash_screen_animation_style_entry_2">Черно-белый</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Включить кастомный цвет полосы прогресса</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">Кастомный цвет полосы прогресса включен</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">Оригинальный цвет полосы прогресса включен</string>
|
||||
@@ -1398,7 +1410,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">
|
||||
@@ -1410,6 +1422,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>
|
||||
|
||||
@@ -309,9 +309,9 @@ Nebudete informovaní o žiadnych nepredvídaných udalostiach."</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">Skryť tlačidlo „Vytvoriť krátke video“</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">Tlačidlo Vytvoriť Short je skryté</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">Tlačidlo Vytvoriť Short je zobrazené</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Skryť tlačidlá s emoji a časovou pečiatkou</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Tlačidlá s emoji a časovou pečiatkou sú skryté</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Tlačidlá s emoji a časovou pečiatkou sú zobrazené</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_title">Skryť tlačidlo s časovou pečiatkou</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_on">Tlačidlo s časovou pečiatkou je skryté</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_off">Zobrazí sa tlačidlo s časovou pečiatkou</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Skryť ukážkový komentár</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">Komentár ukážky je skrytý</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">Zobrazí sa ukážka komentára</string>
|
||||
@@ -674,6 +674,9 @@ Ak chcete zobraziť ponuku zvukovej stopy, zmeňte možnosť „Oklamať videost
|
||||
<string name="revanced_hide_autoplay_button_title">Skryť tlačidlo Automatické prehrávanie</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">Tlačidlo automatického prehrávania je skryté</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">Zobrazí sa tlačidlo automatického prehrávania</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_title">Skryť pozadie tlačidiel ovládania prehrávača</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_on">Pozadie tlačidiel ovládania prehrávača je skryté</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">Zobrazuje sa pozadie tlačidiel ovládania prehrávača</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">Skryť karty záverečnej obrazovky</string>
|
||||
@@ -743,6 +746,9 @@ Ak chcete zobraziť ponuku zvukovej stopy, zmeňte možnosť „Oklamať videost
|
||||
<string name="revanced_hide_shorts_location_label_title">Skryť štítok polohy</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">Štítok miesta je skrytý</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">Zobrazí sa štítok s umiestnením</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">Skryť náhľadový komentár</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Náhľadový komentár je skrytý</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Zobrazuje sa ukážka komentára</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Skryť tlačidlo Uložiť hudbu</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Tlačidlo na uloženie hudby je skryté</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Tlačidlo na uloženie hudby sa zobrazuje</string>
|
||||
@@ -755,6 +761,9 @@ Ak chcete zobraziť ponuku zvukovej stopy, zmeňte možnosť „Oklamať videost
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Skryť tlačidlo Zelená obrazovka</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">Tlačidlo pre zelené pozadie bude skryté</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">Tlačidlo pre zelené pozadie bude zobrazené</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_title">Skryť tlačidlo Nové príspevky</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">Zobrazí sa tlačidlo Nové príspevky</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">Tlačidlo Nové príspevky je skryté</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">Skryť tlačidlo pre hashtag</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">Tlačidlo pre hashtag bude skryté</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">Tlačidlo pre hashtag bude zobrazené</string>
|
||||
@@ -1241,6 +1250,9 @@ Potiahnutím rozbalíte alebo zatvoríte"</string>
|
||||
<string name="revanced_gradient_loading_screen_title">Povoliť obrazovku načítania gradientu</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_on">Načítavacia obrazovka bude mať pozadie s prechodom</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_off">Načítavacia obrazovka bude mať pevné pozadie</string>
|
||||
<string name="splash_screen_animation_style_title">Štýl úvodnej obrazovky</string>
|
||||
<string name="splash_screen_animation_style_entry_1">Farba</string>
|
||||
<string name="splash_screen_animation_style_entry_2">Čiernobiela</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Povoliť vlastnú farbu vyhľadávacieho panela</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">Zobrazí sa vlastná farba panela vyhľadávania</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">Zobrazí sa pôvodná farba vyhľadávacieho panela</string>
|
||||
@@ -1386,7 +1398,7 @@ Povolením tejto možnosti môžete odomknúť vyššie kvality videa"</string>
|
||||
</patch>
|
||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||
<string name="revanced_playback_speed_dialog_button_title">Zobraziť dialógové tlačidlo rýchlosti</string>
|
||||
<string name="revanced_playback_speed_dialog_button_summary_on">Tlačidlo je zobrazené</string>
|
||||
<string name="revanced_playback_speed_dialog_button_summary_on">Zobrazuje sa tlačidlo. Ťuknite a podržte, ak chcete obnoviť predvolenú rýchlosť prehrávania</string>
|
||||
<string name="revanced_playback_speed_dialog_button_summary_off">Tlačidlo nie je zobrazené</string>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
@@ -1398,6 +1410,7 @@ Povolením tejto možnosti môžete odomknúť vyššie kvality videa"</string>
|
||||
<string name="revanced_custom_playback_speeds_invalid">Vlastné rýchlosti musia byť menšie ako %s</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">Neplatné vlastné rýchlosti prehrávania</string>
|
||||
<string name="revanced_custom_playback_speeds_auto">Automaticky</string>
|
||||
<string name="revanced_custom_playback_speeds_reset_toast">Rýchlosť prehrávania obnovená na: %s</string>
|
||||
<string name="revanced_speed_tap_and_hold_title">Vlastná rýchlosť ťuknutia a podržania</string>
|
||||
<string name="revanced_speed_tap_and_hold_summary">Rýchlosť prehrávania medzi 0-8</string>
|
||||
</patch>
|
||||
|
||||
@@ -311,9 +311,9 @@ Ne boste obveščeni o nobenih nepričakovanih dogodkih."</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">Skrij gumb \"Ustvari Shorts\"</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">Gumb »Ustvari Short« je skrit</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">Gumb »Ustvari Short« je prikazan</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Skrij gumbe z emojiji in časovnim žigom</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Gumbi z emojiji in časovnim žigom so skriti</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Gumbi z emojiji in časovnim žigom so prikazani</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_title">Skrij gumb časovnega žiga</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_on">Gumb časovnega žiga je skrit</string>
|
||||
<string name="revanced_hide_comments_timestamp_button_summary_off">Gumb časovnega žiga je prikazan</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Skrij predogled komentarja</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">Predogled komentarja je skrit</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">Predogled komentarja je prikazan</string>
|
||||
@@ -681,6 +681,9 @@ Opomba: Omogočanje tega tudi prisilno skrije video oglase"</string>
|
||||
<string name="revanced_hide_autoplay_button_title">Skrij gumb \'Samodejno predvajanje\'</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">Gumb za samodejno predvajanje je skrit</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">Gumb za samodejno predvajanje je prikazan</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_title">Skrij ozadje gumbov za upravljanje predvajalnika</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_on">Ozadje gumbov za upravljanje predvajalnika je skrito</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">Ozadje gumbov za upravljanje predvajalnika je prikazano</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">Skrij kartice na končnem zaslonu</string>
|
||||
@@ -750,6 +753,9 @@ Opomba: Omogočanje tega tudi prisilno skrije video oglase"</string>
|
||||
<string name="revanced_hide_shorts_location_label_title">Skrij oznako lokacije</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">Oznaka lokacije je skrita</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">Oznaka lokacije je prikazana</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">Skrij predogled komentarja</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Predogled komentarja je skrit</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Predogled komentarja je prikazan</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Skrij gumb \'Shrani glasbo\'</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Gumb za shranjevanje glasbe je skrit</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Gumb za shranjevanje glasbe je prikazan</string>
|
||||
@@ -762,6 +768,9 @@ Opomba: Omogočanje tega tudi prisilno skrije video oglase"</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Skrij gumb \'Zelena scena\'</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">Gumb za zeleno ozadje je skrit</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">Gumb za zeleno ozadje je prikazan</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_title">Skrij gumb za nove objave</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">Gumb za nove objave je prikazan</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">Gumb za nove objave je skrit</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">Skrij gumb za ključnik</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">Gumb za ključnik je skrit</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">Gumb za ključnik je prikazan</string>
|
||||
@@ -1252,6 +1261,9 @@ Podrsnite za razširitev ali zapiranje"</string>
|
||||
<string name="revanced_gradient_loading_screen_title">Omogoči zaslon za nalaganje z gradientom</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_on">Zaslon za nalaganje bo imel ozadje z gradientom</string>
|
||||
<string name="revanced_gradient_loading_screen_summary_off">Zaslon za nalaganje bo imel enobarvno ozadje</string>
|
||||
<string name="splash_screen_animation_style_title">Slog uvodnega zaslona</string>
|
||||
<string name="splash_screen_animation_style_entry_1">Barva</string>
|
||||
<string name="splash_screen_animation_style_entry_2">Črno-belo</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Omogoči prilagojeno barvo drsnika</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">Prilagojena barva drsnika je prikazana</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">Izvorna barva drsnika je prikazana</string>
|
||||
@@ -1397,7 +1409,7 @@ Omogočanje tega lahko odklene višje kakovosti videa"</string>
|
||||
</patch>
|
||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||
<string name="revanced_playback_speed_dialog_button_title">Pokaži gumb za pogovor o hitrosti</string>
|
||||
<string name="revanced_playback_speed_dialog_button_summary_on">Gumb je prikazan</string>
|
||||
<string name="revanced_playback_speed_dialog_button_summary_on">Gumb je prikazan. Dotaknite se ga in ga pridržite, da ponastavite hitrost predvajanja na privzeto.</string>
|
||||
<string name="revanced_playback_speed_dialog_button_summary_off">Gumb ni prikazan</string>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
@@ -1409,6 +1421,7 @@ Omogočanje tega lahko odklene višje kakovosti videa"</string>
|
||||
<string name="revanced_custom_playback_speeds_invalid">Hitrosti predvajanja po meri morajo biti manjše od %s</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">Neveljavne hitrosti predvajanja po meri</string>
|
||||
<string name="revanced_custom_playback_speeds_auto">Samodejno</string>
|
||||
<string name="revanced_custom_playback_speeds_reset_toast">Hitrost predvajanja je bila ponastavljena na: %s</string>
|
||||
<string name="revanced_speed_tap_and_hold_title">Hitrost pritiska in pridržanja po meri</string>
|
||||
<string name="revanced_speed_tap_and_hold_summary">Hitrost predvajanja med 0 in 8</string>
|
||||
</patch>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user