mirror of
https://github.com/revanced/revanced-patches.git
synced 2025-12-25 10:24:08 +01:00
Compare commits
44 Commits
v5.18.0-de
...
v5.19.0-de
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e084f01fd0 | ||
|
|
d573386e0f | ||
|
|
0f3aeb35e5 | ||
|
|
e30f593af0 | ||
|
|
df965b8a9b | ||
|
|
654587a75e | ||
|
|
9956833781 | ||
|
|
c585b26188 | ||
|
|
de0d11fcfb | ||
|
|
d321504fcf | ||
|
|
6005c97bf5 | ||
|
|
e404d84c83 | ||
|
|
1abed31968 | ||
|
|
a75a88d3c6 | ||
|
|
3d67d90473 | ||
|
|
fa1e137a43 | ||
|
|
ac71a53c73 | ||
|
|
0bff207efc | ||
|
|
e1a8b388a5 | ||
|
|
628d18489c | ||
|
|
36772b8b2e | ||
|
|
49c849979f | ||
|
|
0bdb8cdf2b | ||
|
|
2035c9e2e9 | ||
|
|
7cb38fd3fc | ||
|
|
8ed9d5bf08 | ||
|
|
cd467d6244 | ||
|
|
fdefb67d02 | ||
|
|
5274cd18f0 | ||
|
|
3d68c06146 | ||
|
|
ef3d5bafd5 | ||
|
|
2d7b1b09af | ||
|
|
0572d48fde | ||
|
|
37984b8b99 | ||
|
|
6e63193f06 | ||
|
|
b2384b22a5 | ||
|
|
ccb76983ff | ||
|
|
318b55b8fe | ||
|
|
49ade9efbc | ||
|
|
d77515bd68 | ||
|
|
087bf1e152 | ||
|
|
c2994d583d | ||
|
|
127b0a63fe | ||
|
|
27aafd0ee1 |
137
CHANGELOG.md
137
CHANGELOG.md
@@ -1,3 +1,140 @@
|
||||
# [5.19.0-dev.14](https://github.com/ReVanced/revanced-patches/compare/v5.19.0-dev.13...v5.19.0-dev.14) (2025-04-11)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Spotify - Unlock Spotify Premium:** Remove restrictions for Google voice assistant ([#4702](https://github.com/ReVanced/revanced-patches/issues/4702)) ([106202f](https://github.com/ReVanced/revanced-patches/commit/106202f9ebb7699c4ba4ae46b82133e35f1ac6b9))
|
||||
|
||||
# [5.19.0-dev.13](https://github.com/ReVanced/revanced-patches/compare/v5.19.0-dev.12...v5.19.0-dev.13) (2025-04-11)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **Spotify:** Add limited support for version `8.6.98.900` (last version that supports Kenwood and Pioneer car stereos) ([#4750](https://github.com/ReVanced/revanced-patches/issues/4750)) ([a3fde87](https://github.com/ReVanced/revanced-patches/commit/a3fde874af993125ba7a741820e7bd48e3641b84))
|
||||
|
||||
# [5.19.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v5.19.0-dev.11...v5.19.0-dev.12) (2025-04-11)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **Strava - Disable subscription suggestions:** Make compatible with latest version ([#4739](https://github.com/ReVanced/revanced-patches/issues/4739)) ([649a2c0](https://github.com/ReVanced/revanced-patches/commit/649a2c06161c72a2040b179dbed5b415847d7527))
|
||||
|
||||
# [5.19.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v5.19.0-dev.10...v5.19.0-dev.11) (2025-04-10)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **Messenger:** Add `Remove Meta AI tab` patch ([#4726](https://github.com/ReVanced/revanced-patches/issues/4726)) ([e3fad97](https://github.com/ReVanced/revanced-patches/commit/e3fad97484d7eb962aeb53d44a0047b34a881071))
|
||||
|
||||
# [5.19.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v5.19.0-dev.9...v5.19.0-dev.10) (2025-04-10)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Hide layout components:** Do not hide video description music/game links if hide horizontal shelves is enabled ([3864f35](https://github.com/ReVanced/revanced-patches/commit/3864f3550153617e23ad9979fb543d8a7fb4dc0a))
|
||||
|
||||
# [5.19.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.19.0-dev.8...v5.19.0-dev.9) (2025-04-10)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Hide player flyout menu items:** Show more detailed summary text for 'Hide Audio track' if using Android spoof client ([#4756](https://github.com/ReVanced/revanced-patches/issues/4756)) ([b67bbb2](https://github.com/ReVanced/revanced-patches/commit/b67bbb299669336addb68cf52a8ce5b39c68cec0))
|
||||
|
||||
# [5.19.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v5.19.0-dev.7...v5.19.0-dev.8) (2025-04-09)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Return YouTube Dislike:** Fix inconsistent label after disliking a Short ([ea92a2e](https://github.com/ReVanced/revanced-patches/commit/ea92a2e36c7aab3bd115f7d0ec40467179485b32))
|
||||
|
||||
# [5.19.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.19.0-dev.6...v5.19.0-dev.7) (2025-04-07)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Return YouTube Dislike:** Correctly update label after disliking a Short with 20.07 ([0bb3e32](https://github.com/ReVanced/revanced-patches/commit/0bb3e32244fa10809aee5c4e549f77ed4054537e))
|
||||
|
||||
# [5.19.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.19.0-dev.5...v5.19.0-dev.6) (2025-04-04)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Spotify:** Remove ads sections from home ([#4722](https://github.com/ReVanced/revanced-patches/issues/4722)) ([0b9a5e7](https://github.com/ReVanced/revanced-patches/commit/0b9a5e7f89a89d971762b3539166d4f145111481))
|
||||
|
||||
# [5.19.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.19.0-dev.4...v5.19.0-dev.5) (2025-04-02)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Spotify - Custom theme:** Override more color resources ([#4690](https://github.com/ReVanced/revanced-patches/issues/4690)) ([d7a7a0b](https://github.com/ReVanced/revanced-patches/commit/d7a7a0b982dbafa181b04f984a5f7618fb067c2a))
|
||||
|
||||
# [5.19.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.19.0-dev.3...v5.19.0-dev.4) (2025-04-02)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Seekbar:** Correctly hide the feed seekbar with target 20.07 ([ddc6e4c](https://github.com/ReVanced/revanced-patches/commit/ddc6e4c34fe35fa34bd859bf34e25645a23dbdc9))
|
||||
|
||||
# [5.19.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.19.0-dev.2...v5.19.0-dev.3) (2025-04-02)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **Proton Mail:** Add `Remove 'Sent from' signature` patch ([#4514](https://github.com/ReVanced/revanced-patches/issues/4514)) ([34c14c9](https://github.com/ReVanced/revanced-patches/commit/34c14c9b443092824d035afd77adb678c6f89e3e))
|
||||
|
||||
# [5.19.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.19.0-dev.1...v5.19.0-dev.2) (2025-04-02)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **YouTube - Settings:** Add icons to the ReVanced settings ([#4496](https://github.com/ReVanced/revanced-patches/issues/4496)) ([d0c85f0](https://github.com/ReVanced/revanced-patches/commit/d0c85f044083d720c63a8ea4ff15d42eefeb9db7))
|
||||
|
||||
# [5.19.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.18.1-dev.2...v5.19.0-dev.1) (2025-04-01)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Twitter - Hide recommended users:** Make hiding work again by filtering for new entryId prefix ([#4456](https://github.com/ReVanced/revanced-patches/issues/4456)) ([ff846b0](https://github.com/ReVanced/revanced-patches/commit/ff846b0b7ef5060caaffedb08c1f901172f5b2d1))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **Angulus:** Add `Hide ads` patch ([#4604](https://github.com/ReVanced/revanced-patches/issues/4604)) ([87c86b5](https://github.com/ReVanced/revanced-patches/commit/87c86b53a91b0054ac892a3f02bbe7bf83bbf813))
|
||||
* **Photomath:** Support latest version ([#4672](https://github.com/ReVanced/revanced-patches/issues/4672)) ([8e16483](https://github.com/ReVanced/revanced-patches/commit/8e1648322948151e4565fb0d86e0f37d0a02d73f))
|
||||
|
||||
## [5.18.1-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.18.1-dev.1...v5.18.1-dev.2) (2025-04-01)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube:** Combine multiple seekbar patches into a single patch ([#4705](https://github.com/ReVanced/revanced-patches/issues/4705)) ([503b7eb](https://github.com/ReVanced/revanced-patches/commit/503b7eb8d413ef7f248394f128f3b2a6f3192ba6))
|
||||
|
||||
## [5.18.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.18.0...v5.18.1-dev.1) (2025-03-31)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Remove background playback restrictions:** Do not show media controls when playing Shorts from the feed ([2ed675c](https://github.com/ReVanced/revanced-patches/commit/2ed675cdd058fb5876381a9d30dee5263f6b2e26))
|
||||
|
||||
# [5.18.0](https://github.com/ReVanced/revanced-patches/compare/v5.17.0...v5.18.0) (2025-03-28)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Spotify:** Ignore optional attributes if not present ([#4688](https://github.com/ReVanced/revanced-patches/issues/4688)) ([84f5854](https://github.com/ReVanced/revanced-patches/commit/84f585492e4be3604c6c7680ffb3bebcea5a675f))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **YouTube:** Support version `20.07.39` ([#4677](https://github.com/ReVanced/revanced-patches/issues/4677)) ([c1379f6](https://github.com/ReVanced/revanced-patches/commit/c1379f6e520c683d2c9d6a490a69ca542168b3b3))
|
||||
|
||||
# [5.18.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.18.0-dev.1...v5.18.0-dev.2) (2025-03-28)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Spotify:** Ignore optional attributes if not present ([#4688](https://github.com/ReVanced/revanced-patches/issues/4688)) ([84f5854](https://github.com/ReVanced/revanced-patches/commit/84f585492e4be3604c6c7680ffb3bebcea5a675f))
|
||||
|
||||
# [5.18.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.17.0...v5.18.0-dev.1) (2025-03-28)
|
||||
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Color;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
@@ -799,4 +800,14 @@ public class Utils {
|
||||
builder.getContext().setTheme(editTextDialogStyle);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse a color resource or hex code to an int representation of the color.
|
||||
*/
|
||||
public static int getColorFromString(String colorString) throws IllegalArgumentException, Resources.NotFoundException {
|
||||
if (colorString.startsWith("#")) {
|
||||
return Color.parseColor(colorString);
|
||||
}
|
||||
return getResourceColor(colorString);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,6 +23,11 @@ public class BaseSettings {
|
||||
|
||||
public static final EnumSetting<AppLanguage> REVANCED_LANGUAGE = new EnumSetting<>("revanced_language", AppLanguage.DEFAULT, true, "revanced_language_user_dialog_message");
|
||||
|
||||
/**
|
||||
* Use the icons declared in the preferences created during patching. If no icons or styles are declared then this setting does nothing.
|
||||
*/
|
||||
public static final BooleanSetting SHOW_MENU_ICONS = new BooleanSetting("revanced_show_menu_icons", TRUE, true);
|
||||
|
||||
public static final BooleanSetting SPOOF_VIDEO_STREAMS = new BooleanSetting("revanced_spoof_video_streams", TRUE, true, "revanced_spoof_video_streams_user_dialog_message");
|
||||
public static final EnumSetting<AppLanguage> SPOOF_VIDEO_STREAMS_LANGUAGE = new EnumSetting<>("revanced_spoof_video_streams_language", AppLanguage.DEFAULT, new AudioStreamLanguageOverrideAvailability());
|
||||
public static final BooleanSetting SPOOF_STREAMING_DATA_STATS_FOR_NERDS = new BooleanSetting("revanced_spoof_streaming_data_stats_for_nerds", TRUE, parent(SPOOF_VIDEO_STREAMS));
|
||||
|
||||
@@ -86,7 +86,6 @@ public abstract class AbstractPreferenceFragment extends PreferenceFragment {
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Initialize this instance, and do any custom behavior.
|
||||
* <p>
|
||||
@@ -95,7 +94,10 @@ public abstract class AbstractPreferenceFragment extends PreferenceFragment {
|
||||
* so all app specific {@link Setting} instances are loaded before this method returns.
|
||||
*/
|
||||
protected void initialize() {
|
||||
final var identifier = Utils.getResourceIdentifier("revanced_prefs", "xml");
|
||||
String preferenceResourceName = BaseSettings.SHOW_MENU_ICONS.get()
|
||||
? "revanced_prefs_icons"
|
||||
: "revanced_prefs";
|
||||
final var identifier = Utils.getResourceIdentifier(preferenceResourceName, "xml");
|
||||
if (identifier == 0) return;
|
||||
addPreferencesFromResource(identifier);
|
||||
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
package app.revanced.extension.spotify.layout.theme;
|
||||
|
||||
import android.graphics.Color;
|
||||
|
||||
import app.revanced.extension.shared.Logger;
|
||||
import app.revanced.extension.shared.Utils;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public final class CustomThemePatch {
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
public static long getThemeColor(String colorString) {
|
||||
try {
|
||||
return Utils.getColorFromString(colorString);
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "Invalid custom color: " + colorString, ex);
|
||||
return Color.BLACK;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.spotify.home.evopage.homeapi.proto;
|
||||
|
||||
public final class Section {
|
||||
public static final int VIDEO_BRAND_AD_FIELD_NUMBER = 20;
|
||||
public static final int IMAGE_BRAND_AD_FIELD_NUMBER = 21;
|
||||
public int featureTypeCase_;
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package com.spotify.useraccount.v1;
|
||||
|
||||
/**
|
||||
* Used for target 8.6.98.900. Class is still present in newer app targets.
|
||||
*/
|
||||
public class AccountAttribute {
|
||||
public Object value_;
|
||||
}
|
||||
@@ -9,7 +9,6 @@ import app.revanced.extension.tiktok.settings.preference.categories.DownloadsPre
|
||||
import app.revanced.extension.tiktok.settings.preference.categories.FeedFilterPreferenceCategory;
|
||||
import app.revanced.extension.tiktok.settings.preference.categories.ExtensionPreferenceCategory;
|
||||
import app.revanced.extension.tiktok.settings.preference.categories.SimSpoofPreferenceCategory;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* Preference fragment for ReVanced settings
|
||||
|
||||
@@ -163,7 +163,7 @@ internal object TwiFucker {
|
||||
|
||||
private fun JSONObject.entryIsWhoToFollow(): Boolean =
|
||||
optString("entryId").let {
|
||||
it.startsWith("whoToFollow-") || it.startsWith("who-to-follow-") || it.startsWith("connect-module-")
|
||||
it.startsWith("whoToFollow-") || it.startsWith("who-to-follow-") || it.startsWith("connect-module-") || it.startsWith("who-to-subscribe-")
|
||||
}
|
||||
|
||||
private fun JSONObject.itemContainsPromotedUser(): Boolean =
|
||||
|
||||
@@ -45,13 +45,24 @@ public class ThemeHelper {
|
||||
return "@color/yt_black3";
|
||||
}
|
||||
|
||||
private static int getThemeColor(String resourceName, int defaultColor) {
|
||||
try {
|
||||
return Utils.getColorFromString(resourceName);
|
||||
} catch (Exception ex) {
|
||||
// User entered an invalid custom theme color.
|
||||
// Normally this should never be reached, and no localized strings are needed.
|
||||
Utils.showToastLong("Invalid custom theme color: " + resourceName);
|
||||
return defaultColor;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The dark theme color as specified by the Theme patch (if included),
|
||||
* or the dark mode background color unpatched YT uses.
|
||||
*/
|
||||
public static int getDarkThemeColor() {
|
||||
if (darkThemeColor == null) {
|
||||
darkThemeColor = getColorInt(darkThemeResourceName());
|
||||
darkThemeColor = getThemeColor(darkThemeResourceName(), Color.BLACK);
|
||||
}
|
||||
return darkThemeColor;
|
||||
}
|
||||
@@ -71,18 +82,11 @@ public class ThemeHelper {
|
||||
*/
|
||||
public static int getLightThemeColor() {
|
||||
if (lightThemeColor == null) {
|
||||
lightThemeColor = getColorInt(lightThemeResourceName());
|
||||
lightThemeColor = getThemeColor(lightThemeResourceName(), Color.WHITE);
|
||||
}
|
||||
return lightThemeColor;
|
||||
}
|
||||
|
||||
private static int getColorInt(String colorString) {
|
||||
if (colorString.startsWith("#")) {
|
||||
return Color.parseColor(colorString);
|
||||
}
|
||||
return Utils.getResourceColor(colorString);
|
||||
}
|
||||
|
||||
public static int getBackgroundColor() {
|
||||
return isDarkTheme() ? getDarkThemeColor() : getLightThemeColor();
|
||||
}
|
||||
@@ -96,6 +100,6 @@ public class ThemeHelper {
|
||||
? "yt_black3"
|
||||
: "yt_white1";
|
||||
|
||||
return getColorInt(colorName);
|
||||
return Utils.getColorFromString(colorName);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package app.revanced.extension.youtube.patches;
|
||||
|
||||
import app.revanced.extension.youtube.settings.Settings;
|
||||
import app.revanced.extension.youtube.shared.PlayerType;
|
||||
import app.revanced.extension.youtube.shared.ShortsPlayerState;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
@@ -23,7 +24,13 @@ public class BackgroundPlaybackPatch {
|
||||
// 7. Close the Short
|
||||
// 8. Resume playing the regular video
|
||||
// 9. Minimize the app (PIP should appear)
|
||||
return !ShortsPlayerState.isOpen();
|
||||
if (ShortsPlayerState.isOpen()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check if the video player is opened and it's not playing in the feed.
|
||||
PlayerType current = PlayerType.getCurrent();
|
||||
return !current.isNoneOrHidden() && current != PlayerType.INLINE_MINIMAL;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -2,20 +2,16 @@ package app.revanced.extension.youtube.patches;
|
||||
|
||||
import static app.revanced.extension.youtube.returnyoutubedislike.ReturnYouTubeDislike.Vote;
|
||||
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.drawable.ShapeDrawable;
|
||||
import android.text.Spannable;
|
||||
import android.text.SpannableString;
|
||||
import android.text.Spanned;
|
||||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.GuardedBy;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import app.revanced.extension.shared.Logger;
|
||||
@@ -60,12 +56,12 @@ public class ReturnYouTubeDislikePatch {
|
||||
private static volatile ReturnYouTubeDislike lastLithoShortsVideoData;
|
||||
|
||||
/**
|
||||
* Because the litho Shorts spans are created after {@link ReturnYouTubeDislikeFilterPatch}
|
||||
* detects the video ids, after the user votes the litho will update
|
||||
* but {@link #lastLithoShortsVideoData} is not the correct data to use.
|
||||
* If this is true, then instead use {@link #currentVideoData}.
|
||||
* Because litho Shorts spans are created offscreen after {@link ReturnYouTubeDislikeFilterPatch}
|
||||
* detects the video ids, but the current Short can arbitrarily reload the same span,
|
||||
* then use the {@link #lastLithoShortsVideoData} if this value is greater than zero.
|
||||
*/
|
||||
private static volatile boolean lithoShortsShouldUseCurrentData;
|
||||
@GuardedBy("ReturnYouTubeDislikePatch.class")
|
||||
private static int useLithoShortsVideoDataCount;
|
||||
|
||||
/**
|
||||
* Last video id prefetched. Field is to prevent prefetching the same video id multiple times in a row.
|
||||
@@ -83,12 +79,28 @@ public class ReturnYouTubeDislikePatch {
|
||||
private static void clearData() {
|
||||
currentVideoData = null;
|
||||
lastLithoShortsVideoData = null;
|
||||
lithoShortsShouldUseCurrentData = false;
|
||||
synchronized (ReturnYouTubeDislike.class) {
|
||||
useLithoShortsVideoDataCount = 0;
|
||||
}
|
||||
|
||||
// Rolling number text should not be cleared,
|
||||
// as it's used if incognito Short is opened/closed
|
||||
// while a regular video is on screen.
|
||||
}
|
||||
|
||||
/**
|
||||
* @return If {@link #useLithoShortsVideoDataCount} was greater than zero.
|
||||
*/
|
||||
private static boolean decrementUseLithoDataIfNeeded() {
|
||||
synchronized (ReturnYouTubeDislikePatch.class) {
|
||||
if (useLithoShortsVideoDataCount > 0) {
|
||||
useLithoShortsVideoDataCount--;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Litho player for both regular videos and Shorts.
|
||||
@@ -152,10 +164,13 @@ public class ReturnYouTubeDislikePatch {
|
||||
return getShortsSpan(original, true);
|
||||
}
|
||||
|
||||
if (conversionContextString.contains("|shorts_like_button.eml")
|
||||
&& !Utils.containsNumber(original)) {
|
||||
Logger.printDebug(() -> "Replacing hidden likes count");
|
||||
return getShortsSpan(original, false);
|
||||
if (conversionContextString.contains("|shorts_like_button.eml")) {
|
||||
if (!Utils.containsNumber(original)) {
|
||||
Logger.printDebug(() -> "Replacing hidden likes count");
|
||||
return getShortsSpan(original, false);
|
||||
} else {
|
||||
decrementUseLithoDataIfNeeded();
|
||||
}
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "onLithoTextLoaded failure", ex);
|
||||
@@ -170,7 +185,14 @@ public class ReturnYouTubeDislikePatch {
|
||||
return original;
|
||||
}
|
||||
|
||||
ReturnYouTubeDislike videoData = lastLithoShortsVideoData;
|
||||
final ReturnYouTubeDislike videoData;
|
||||
if (decrementUseLithoDataIfNeeded()) {
|
||||
// New Short is loading off screen.
|
||||
videoData = lastLithoShortsVideoData;
|
||||
} else {
|
||||
videoData = currentVideoData;
|
||||
}
|
||||
|
||||
if (videoData == null) {
|
||||
// The Shorts litho video id filter did not detect the video id.
|
||||
// This is normal in incognito mode, but otherwise is abnormal.
|
||||
@@ -178,19 +200,6 @@ public class ReturnYouTubeDislikePatch {
|
||||
return original;
|
||||
}
|
||||
|
||||
// Use the correct dislikes data after voting.
|
||||
if (lithoShortsShouldUseCurrentData) {
|
||||
if (isDislikesSpan) {
|
||||
lithoShortsShouldUseCurrentData = false;
|
||||
}
|
||||
videoData = currentVideoData;
|
||||
if (videoData == null) {
|
||||
Logger.printException(() -> "currentVideoData is null"); // Should never happen
|
||||
return original;
|
||||
}
|
||||
Logger.printDebug(() -> "Using current video data for litho span");
|
||||
}
|
||||
|
||||
return isDislikesSpan
|
||||
? videoData.getDislikeSpanForShort((Spanned) original)
|
||||
: videoData.getLikeSpanForShort((Spanned) original);
|
||||
@@ -445,7 +454,10 @@ public class ReturnYouTubeDislikePatch {
|
||||
ReturnYouTubeDislike videoData = ReturnYouTubeDislike.getFetchForVideoId(videoId);
|
||||
videoData.setVideoIdIsShort(true);
|
||||
lastLithoShortsVideoData = videoData;
|
||||
lithoShortsShouldUseCurrentData = false;
|
||||
synchronized (ReturnYouTubeDislikePatch.class) {
|
||||
// Use litho Shorts data for the next like and dislike spans.
|
||||
useLithoShortsVideoDataCount = 2;
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean videoIdIsSame(@Nullable ReturnYouTubeDislike fetch, @Nullable String videoId) {
|
||||
@@ -480,13 +492,6 @@ public class ReturnYouTubeDislikePatch {
|
||||
for (Vote v : Vote.values()) {
|
||||
if (v.value == vote) {
|
||||
videoData.sendVote(v);
|
||||
|
||||
if (isNoneHiddenOrMinimized) {
|
||||
if (lastLithoShortsVideoData != null) {
|
||||
lithoShortsShouldUseCurrentData = true;
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -454,16 +454,20 @@ public final class LayoutComponentsFilter extends Filter {
|
||||
}
|
||||
|
||||
private static boolean hideShelves() {
|
||||
// If the player is opened while library is selected,
|
||||
// then filter any recommendations below the player.
|
||||
if (PlayerType.getCurrent().isMaximizedOrFullscreen()
|
||||
// Or if the search is active while library is selected, then also filter.
|
||||
|| NavigationBar.isSearchBarActive()) {
|
||||
// Horizontal shelves are used for music/game links in video descriptions,
|
||||
// such as https://youtube.com/watch?v=W8kI1na3S2M
|
||||
if (PlayerType.getCurrent().isMaximizedOrFullscreen()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Must check search bar after player type, since search results
|
||||
// can be in the background behind an open player.
|
||||
if (NavigationBar.isSearchBarActive()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Do not hide if the navigation back button is visible,
|
||||
// otherwise the content shelves in the YouTube Movie/Courses pages is hidden.
|
||||
// otherwise the content shelves in the explore/music/courses pages are hidde.
|
||||
if (NavigationBar.isBackButtonVisible()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -2,12 +2,25 @@ package app.revanced.extension.youtube.patches.components;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import app.revanced.extension.shared.settings.Setting;
|
||||
import app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch;
|
||||
import app.revanced.extension.youtube.settings.Settings;
|
||||
import app.revanced.extension.youtube.shared.PlayerType;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class PlayerFlyoutMenuItemsFilter extends Filter {
|
||||
|
||||
public static final class HideAudioFlyoutMenuAvailability implements Setting.Availability {
|
||||
private static final boolean AVAILABLE_ON_LAUNCH = SpoofVideoStreamsPatch.notSpoofingToAndroid();
|
||||
|
||||
@Override
|
||||
public boolean isAvailable() {
|
||||
// Check conditions of launch and now. Otherwise if spoofing is changed
|
||||
// without a restart the setting will show as available when it's not.
|
||||
return AVAILABLE_ON_LAUNCH && SpoofVideoStreamsPatch.notSpoofingToAndroid();
|
||||
}
|
||||
}
|
||||
|
||||
private final ByteArrayFilterGroupList flyoutFilterGroupList = new ByteArrayFilterGroupList();
|
||||
|
||||
private final ByteArrayFilterGroup exception;
|
||||
|
||||
@@ -226,6 +226,7 @@ public final class SeekbarColorPatch {
|
||||
}
|
||||
|
||||
private static String loadRawResourceAsString(int resourceId) {
|
||||
//noinspection CharsetObjectCanBeUsed
|
||||
try (InputStream inputStream = Utils.getContext().getResources().openRawResource(resourceId);
|
||||
Scanner scanner = new Scanner(inputStream, StandardCharsets.UTF_8.name()).useDelimiter("\\A")) {
|
||||
return scanner.next();
|
||||
@@ -281,6 +282,20 @@ public final class SeekbarColorPatch {
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
* 19.49+
|
||||
*/
|
||||
public static int[] getPlayerLinearGradient(int[] original, int x0, int y1) {
|
||||
// This hook is used for both the player and the feed.
|
||||
// Feed usage always has x0 and y1 value of zero, and the player is always non zero.
|
||||
if (HIDE_SEEKBAR_THUMBNAIL_ENABLED && x0 == 0 && y1 == 0) {
|
||||
return HIDDEN_SEEKBAR_GRADIENT_COLORS;
|
||||
}
|
||||
return getPlayerLinearGradient(original);
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
* Pre 19.49
|
||||
*/
|
||||
public static int[] getPlayerLinearGradient(int[] original) {
|
||||
return SEEKBAR_CUSTOM_COLOR_ENABLED
|
||||
|
||||
@@ -19,6 +19,7 @@ import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerT
|
||||
import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerType.MODERN_4;
|
||||
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.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;
|
||||
@@ -198,7 +199,7 @@ public class Settings extends BaseSettings {
|
||||
// Player flyout menu items
|
||||
public static final BooleanSetting HIDE_PLAYER_FLYOUT_ADDITIONAL_SETTINGS = new BooleanSetting("revanced_hide_player_flyout_additional_settings", FALSE);
|
||||
public static final BooleanSetting HIDE_PLAYER_FLYOUT_AMBIENT_MODE = new BooleanSetting("revanced_hide_player_flyout_ambient_mode", FALSE);
|
||||
public static final BooleanSetting HIDE_PLAYER_FLYOUT_AUDIO_TRACK = new BooleanSetting("revanced_hide_player_flyout_audio_track", FALSE);
|
||||
public static final BooleanSetting HIDE_PLAYER_FLYOUT_AUDIO_TRACK = new BooleanSetting("revanced_hide_player_flyout_audio_track", FALSE, new HideAudioFlyoutMenuAvailability());
|
||||
public static final BooleanSetting HIDE_PLAYER_FLYOUT_CAPTIONS = new BooleanSetting("revanced_hide_player_flyout_captions", FALSE);
|
||||
public static final BooleanSetting HIDE_PLAYER_FLYOUT_HELP = new BooleanSetting("revanced_hide_player_flyout_help", TRUE);
|
||||
public static final BooleanSetting HIDE_PLAYER_FLYOUT_LOCK_SCREEN = new BooleanSetting("revanced_hide_player_flyout_lock_screen", FALSE);
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
package app.revanced.extension.youtube.settings.preference;
|
||||
|
||||
import static app.revanced.extension.shared.StringRef.str;
|
||||
|
||||
import android.content.Context;
|
||||
import android.preference.SwitchPreference;
|
||||
import android.util.AttributeSet;
|
||||
|
||||
import app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch;
|
||||
|
||||
@SuppressWarnings({"deprecation", "unused"})
|
||||
public class HideAudioFlyoutMenuPreference extends SwitchPreference {
|
||||
|
||||
{
|
||||
// Audio menu is not available if spoofing to Android client type.
|
||||
if (!SpoofVideoStreamsPatch.notSpoofingToAndroid()) {
|
||||
String summary = str("revanced_hide_player_flyout_audio_track_not_available");
|
||||
setSummary(summary);
|
||||
setSummaryOn(summary);
|
||||
setSummaryOff(summary);
|
||||
}
|
||||
}
|
||||
|
||||
public HideAudioFlyoutMenuPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
|
||||
super(context, attrs, defStyleAttr, defStyleRes);
|
||||
}
|
||||
public HideAudioFlyoutMenuPreference(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||
super(context, attrs, defStyleAttr);
|
||||
}
|
||||
public HideAudioFlyoutMenuPreference(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
public HideAudioFlyoutMenuPreference(Context context) {
|
||||
super(context);
|
||||
}
|
||||
}
|
||||
@@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M
|
||||
org.gradle.parallel = true
|
||||
android.useAndroidX = true
|
||||
kotlin.code.style = official
|
||||
version = 5.18.0-dev.1
|
||||
version = 5.19.0-dev.14
|
||||
|
||||
@@ -132,6 +132,10 @@ public final class app/revanced/patches/amazon/DeepLinkingPatchKt {
|
||||
public static final fun getDeepLinkingPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/angulus/ads/RemoveAdsPatchKt {
|
||||
public static final fun getAngulusPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/backdrops/misc/pro/ProUnlockPatchKt {
|
||||
public static final fun getProUnlockPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
@@ -268,6 +272,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/navbar/RemoveMetaAITabPatchKt {
|
||||
public static final fun getRemoveMetaAITabPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/mifitness/misc/locale/ForceEnglishLocalePatchKt {
|
||||
public static final fun getForceEnglishLocalePatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
@@ -396,6 +404,10 @@ public final class app/revanced/patches/pixiv/ads/HideAdsPatchKt {
|
||||
public static final fun getHideAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/protonmail/signature/RemoveSentFromSignaturePatchKt {
|
||||
public static final fun getRemoveSentFromSignaturePatch ()Lapp/revanced/patcher/patch/ResourcePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/rar/misc/annoyances/purchasereminder/HidePurchaseReminderPatchKt {
|
||||
public static final fun getHidePurchaseReminderPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
@@ -1096,6 +1108,14 @@ public final class app/revanced/patches/youtube/interaction/seekbar/EnableSlideT
|
||||
public static final fun getEnableSlideToSeekPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/youtube/interaction/seekbar/HideSeekbarPatchKt {
|
||||
public static final fun getHideSeekbarPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/youtube/interaction/seekbar/SeekbarPatchKt {
|
||||
public static final fun getSeekbarPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/youtube/interaction/seekbar/SeekbarThumbnailsPatchKt {
|
||||
public static final fun getSeekbarThumbnailsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
package app.revanced.patches.angulus.ads
|
||||
|
||||
import app.revanced.patcher.fingerprint
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
|
||||
// Keywords to search for in case the method name changes:
|
||||
// dailyMeasurementCount
|
||||
// lastMeasurementDate
|
||||
// dailyAdResetCount
|
||||
// MeasurementPrefs
|
||||
|
||||
// This fingerprint targets a method that returns the daily measurement count.
|
||||
// This method is used to determine if the user has reached the daily limit of measurements.
|
||||
internal val getDailyMeasurementCountFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PRIVATE)
|
||||
returns("I")
|
||||
strings("dailyMeasurementCount")
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package app.revanced.patches.angulus.ads
|
||||
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.util.returnEarly
|
||||
|
||||
@Suppress("unused")
|
||||
val angulusPatch = bytecodePatch(name = "Hide ads") {
|
||||
compatibleWith("com.drinkplusplus.angulus")
|
||||
|
||||
execute {
|
||||
// Always return 0 as the daily measurement count.
|
||||
getDailyMeasurementCountFingerprint.method.returnEarly()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package app.revanced.patches.messenger.navbar
|
||||
|
||||
import app.revanced.patcher.fingerprint
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
|
||||
internal val createTabConfigurationFingerprint = fingerprint {
|
||||
strings("MessengerTabConfigurationCreator.createTabConfiguration")
|
||||
opcodes(
|
||||
Opcode.INVOKE_DIRECT,
|
||||
Opcode.MOVE_RESULT,
|
||||
Opcode.IF_EQZ,
|
||||
Opcode.INVOKE_DIRECT,
|
||||
Opcode.MOVE_RESULT,
|
||||
Opcode.IF_EQZ,
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package app.revanced.patches.messenger.navbar
|
||||
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
|
||||
@Suppress("unused")
|
||||
val removeMetaAITabPatch = bytecodePatch(
|
||||
name = "Remove Meta AI tab",
|
||||
description = "Removes the 'Meta AI' tab from the navbar.",
|
||||
) {
|
||||
compatibleWith("com.facebook.orca")
|
||||
|
||||
execute {
|
||||
createTabConfigurationFingerprint.let {
|
||||
val moveResultIndex = it.patternMatch!!.startIndex + 1
|
||||
val enabledRegister = it.method.getInstruction<OneRegisterInstruction>(moveResultIndex).registerA
|
||||
it.method.replaceInstruction(
|
||||
moveResultIndex,
|
||||
"const/4 v$enabledRegister, 0x0"
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -12,7 +12,7 @@ val getDeviceIdPatch = bytecodePatch(
|
||||
) {
|
||||
dependsOn(signatureDetectionPatch)
|
||||
|
||||
compatibleWith("com.microblink.photomath"("8.37.0"))
|
||||
compatibleWith("com.microblink.photomath")
|
||||
|
||||
execute {
|
||||
getDeviceIdFingerprint.method.replaceInstructions(
|
||||
|
||||
@@ -14,5 +14,5 @@ internal val checkSignatureFingerprint = fingerprint {
|
||||
Opcode.INVOKE_STATIC,
|
||||
Opcode.MOVE_RESULT,
|
||||
)
|
||||
strings("signatures")
|
||||
}
|
||||
strings("SHA")
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ val hideUpdatePopupPatch = bytecodePatch(
|
||||
) {
|
||||
dependsOn(signatureDetectionPatch)
|
||||
|
||||
compatibleWith("com.microblink.photomath"("8.32.0"))
|
||||
compatibleWith("com.microblink.photomath")
|
||||
|
||||
execute {
|
||||
hideUpdatePopupFingerprint.method.addInstructions(
|
||||
|
||||
@@ -11,7 +11,7 @@ val unlockPlusPatch = bytecodePatch(
|
||||
) {
|
||||
dependsOn(signatureDetectionPatch, enableBookpointPatch)
|
||||
|
||||
compatibleWith("com.microblink.photomath"("8.37.0"))
|
||||
compatibleWith("com.microblink.photomath")
|
||||
|
||||
execute {
|
||||
isPlusUnlockedFingerprint.method.addInstructions(
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
package app.revanced.patches.protonmail.signature
|
||||
|
||||
import app.revanced.patcher.patch.PatchException
|
||||
import app.revanced.patcher.patch.resourcePatch
|
||||
import app.revanced.util.findElementByAttributeValue
|
||||
import java.io.File
|
||||
|
||||
@Suppress("unused")
|
||||
val removeSentFromSignaturePatch = resourcePatch(
|
||||
name = "Remove 'Sent from' signature",
|
||||
description = "Removes the 'Sent from Proton Mail mobile' signature from emails.",
|
||||
) {
|
||||
compatibleWith("ch.protonmail.android")
|
||||
|
||||
execute {
|
||||
val stringResourceFiles = mutableListOf<File>()
|
||||
|
||||
get("res").walk().forEach { file ->
|
||||
if (file.isFile && file.name.equals("strings.xml", ignoreCase = true)) {
|
||||
stringResourceFiles.add(file)
|
||||
}
|
||||
}
|
||||
|
||||
var foundString = false
|
||||
stringResourceFiles.forEach { filePath ->
|
||||
document(filePath.absolutePath).use { document ->
|
||||
var node = document.documentElement.childNodes.findElementByAttributeValue(
|
||||
"name",
|
||||
"mail_settings_identity_mobile_footer_default_free"
|
||||
)
|
||||
|
||||
// String is not localized in all languages.
|
||||
if (node != null) {
|
||||
node.textContent = ""
|
||||
foundString = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!foundString) throw PatchException("Could not find 'sent from' string in resources")
|
||||
}
|
||||
}
|
||||
@@ -92,7 +92,7 @@ fun sharedExtensionPatch(
|
||||
}
|
||||
|
||||
class ExtensionHook internal constructor(
|
||||
private val fingerprint: Fingerprint,
|
||||
internal val fingerprint: Fingerprint,
|
||||
private val insertIndexResolver: ((Method) -> Int),
|
||||
private val contextRegisterResolver: (Method) -> String,
|
||||
) {
|
||||
|
||||
@@ -7,6 +7,8 @@ import app.revanced.patches.all.misc.resources.addResources
|
||||
import app.revanced.patches.all.misc.resources.addResourcesPatch
|
||||
import app.revanced.patches.shared.misc.settings.preference.BasePreference
|
||||
import app.revanced.patches.shared.misc.settings.preference.IntentPreference
|
||||
import app.revanced.patches.shared.misc.settings.preference.PreferenceCategory
|
||||
import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference
|
||||
import app.revanced.util.ResourceGroup
|
||||
import app.revanced.util.copyResources
|
||||
import app.revanced.util.getNode
|
||||
@@ -36,14 +38,14 @@ fun settingsPatch (
|
||||
execute {
|
||||
copyResources(
|
||||
"settings",
|
||||
ResourceGroup("xml", "revanced_prefs.xml"),
|
||||
ResourceGroup("xml", "revanced_prefs.xml", "revanced_prefs_icons.xml"),
|
||||
)
|
||||
|
||||
addResources("shared", "misc.settings.settingsResourcePatch")
|
||||
}
|
||||
|
||||
finalize {
|
||||
fun Node.addPreference(preference: BasePreference, prepend: Boolean = false) {
|
||||
fun Node.addPreference(preference: BasePreference) {
|
||||
preference.serialize(ownerDocument) { resource ->
|
||||
// TODO: Currently, resources can only be added to "values", which may not be the correct place.
|
||||
// It may be necessary to ask for the desired resourceValue in the future.
|
||||
@@ -61,7 +63,7 @@ fun settingsPatch (
|
||||
val preferenceFileName = "res/xml/$fileName.xml"
|
||||
if (get(preferenceFileName).exists()) {
|
||||
document(preferenceFileName).use { document ->
|
||||
document.getNode("PreferenceScreen").addPreference(intent, true)
|
||||
document.getNode("PreferenceScreen").addPreference(intent)
|
||||
}
|
||||
modified = true
|
||||
}
|
||||
@@ -71,6 +73,30 @@ fun settingsPatch (
|
||||
}
|
||||
|
||||
// Add all preferences to the ReVanced fragment.
|
||||
document("res/xml/revanced_prefs_icons.xml").use { document ->
|
||||
val revancedPreferenceScreenNode = document.getNode("PreferenceScreen")
|
||||
preferences.forEach { revancedPreferenceScreenNode.addPreference(it) }
|
||||
}
|
||||
|
||||
// Because the icon preferences require declaring a layout resource,
|
||||
// there is no easy way to change to the Android default preference layout
|
||||
// after the preference is inflated.
|
||||
// Using two different preference files is the simplest and most robust solution.
|
||||
fun removeIconsAndLayout(preferences: Collection<BasePreference>) {
|
||||
preferences.forEach { preference ->
|
||||
preference.icon = null
|
||||
preference.layout = null
|
||||
|
||||
if (preference is PreferenceCategory) {
|
||||
removeIconsAndLayout(preference.preferences)
|
||||
}
|
||||
if (preference is PreferenceScreenPreference) {
|
||||
removeIconsAndLayout(preference.preferences)
|
||||
}
|
||||
}
|
||||
}
|
||||
removeIconsAndLayout(preferences)
|
||||
|
||||
document("res/xml/revanced_prefs.xml").use { document ->
|
||||
val revancedPreferenceScreenNode = document.getNode("PreferenceScreen")
|
||||
preferences.forEach { revancedPreferenceScreenNode.addPreference(it) }
|
||||
|
||||
@@ -19,10 +19,17 @@ abstract class BasePreference(
|
||||
val key: String? = null,
|
||||
val titleKey: String? = "${key}_title",
|
||||
val summaryKey: String? = "${key}_summary",
|
||||
val icon: String? = null,
|
||||
val layout: String? = null,
|
||||
icon: String? = null,
|
||||
layout: String? = null,
|
||||
val tag: String
|
||||
) {
|
||||
|
||||
var icon: String? = icon
|
||||
internal set
|
||||
|
||||
var layout: String? = layout
|
||||
internal set
|
||||
|
||||
/**
|
||||
* Serialize preference element to XML.
|
||||
* Overriding methods should invoke super and operate on its return value.
|
||||
|
||||
@@ -10,6 +10,7 @@ import app.revanced.patcher.patch.BytecodePatchContext
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMutable
|
||||
import app.revanced.patches.all.misc.resources.addResourcesPatch
|
||||
import app.revanced.util.findFreeRegister
|
||||
import app.revanced.util.findInstructionIndicesReversedOrThrow
|
||||
import app.revanced.util.getReference
|
||||
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||
@@ -94,14 +95,14 @@ fun spoofVideoStreamsPatch(
|
||||
getReference<MethodReference>()?.name == "newUrlRequestBuilder"
|
||||
}
|
||||
val urlRegister = getInstruction<FiveRegisterInstruction>(newRequestBuilderIndex).registerD
|
||||
val freeRegister = getInstruction<OneRegisterInstruction>(newRequestBuilderIndex + 1).registerA
|
||||
val freeRegister = findFreeRegister(newRequestBuilderIndex, urlRegister)
|
||||
|
||||
addInstructions(
|
||||
newRequestBuilderIndex,
|
||||
"""
|
||||
move-object v$freeRegister, p1
|
||||
invoke-static { v$urlRegister, v$freeRegister }, $EXTENSION_CLASS_DESCRIPTOR->fetchStreams(Ljava/lang/String;Ljava/util/Map;)V
|
||||
""",
|
||||
move-object v$freeRegister, p1
|
||||
invoke-static { v$urlRegister, v$freeRegister }, $EXTENSION_CLASS_DESCRIPTOR->fetchStreams(Ljava/lang/String;Ljava/util/Map;)V
|
||||
"""
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
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.bytecodePatch
|
||||
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.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
|
||||
|
||||
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/spotify/layout/theme/CustomThemePatch;"
|
||||
|
||||
internal val customThemeByteCodePatch = bytecodePatch {
|
||||
dependsOn(sharedExtensionPatch)
|
||||
|
||||
val backgroundColor by spotifyBackgroundColor
|
||||
val backgroundColorSecondary by spotifyBackgroundColorSecondary
|
||||
|
||||
execute {
|
||||
if (IS_SPOTIFY_LEGACY_APP_TARGET) {
|
||||
// Bytecode changes are not needed for legacy app target.
|
||||
// Player background color is changed with existing resource patch.
|
||||
return@execute
|
||||
}
|
||||
|
||||
fun MutableMethod.addColorChangeInstructions(literal: Long, colorString: String) {
|
||||
val index = indexOfFirstLiteralInstructionOrThrow(literal)
|
||||
val register = getInstruction<OneRegisterInstruction>(index).registerA
|
||||
|
||||
addInstructions(
|
||||
index + 1,
|
||||
"""
|
||||
const-string v$register, "$colorString"
|
||||
invoke-static { v$register }, $EXTENSION_CLASS_DESCRIPTOR->getThemeColor(Ljava/lang/String;)J
|
||||
move-result-wide v$register
|
||||
"""
|
||||
)
|
||||
}
|
||||
|
||||
val encoreColorsClassName = with(encoreThemeFingerprint) {
|
||||
// Find index of the first static get found after the string constant.
|
||||
val encoreColorsFieldReferenceIndex = originalMethod.indexOfFirstInstructionOrThrow(
|
||||
stringMatches!!.first().index,
|
||||
Opcode.SGET_OBJECT
|
||||
)
|
||||
|
||||
originalMethod.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)
|
||||
}
|
||||
}
|
||||
|
||||
encoreColorsConstructorFingerprint.method.apply {
|
||||
// Playlist song list background color.
|
||||
addColorChangeInstructions(PLAYLIST_BACKGROUND_COLOR_LITERAL, backgroundColor!!)
|
||||
|
||||
// Share menu background color.
|
||||
addColorChangeInstructions(SHARE_MENU_BACKGROUND_COLOR_LITERAL, backgroundColorSecondary!!)
|
||||
}
|
||||
|
||||
homeCategoryPillColorsFingerprint.method.apply {
|
||||
// Home category pills background color.
|
||||
addColorChangeInstructions(HOME_CATEGORY_PILL_COLOR_LITERAL, backgroundColorSecondary!!)
|
||||
}
|
||||
|
||||
settingsHeaderColorFingerprint.method.apply {
|
||||
// Settings header background color.
|
||||
addColorChangeInstructions(SETTINGS_HEADER_COLOR_LITERAL, backgroundColorSecondary!!)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,59 +1,24 @@
|
||||
@file:Suppress("NAME_SHADOWING")
|
||||
|
||||
package app.revanced.patches.spotify.layout.theme
|
||||
|
||||
import app.revanced.patcher.patch.resourcePatch
|
||||
import app.revanced.patcher.patch.stringOption
|
||||
import org.w3c.dom.Element
|
||||
|
||||
@Suppress("unused")
|
||||
val customThemePatch = resourcePatch(
|
||||
name = "Custom theme",
|
||||
description = "Applies a custom theme.",
|
||||
description = "Applies a custom theme (defaults to amoled black)",
|
||||
use = false,
|
||||
) {
|
||||
compatibleWith("com.spotify.music")
|
||||
|
||||
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,
|
||||
)
|
||||
dependsOn(customThemeByteCodePatch)
|
||||
|
||||
val backgroundColorSecondary by stringOption(
|
||||
key = "backgroundColorSecondary",
|
||||
default = "#ff282828",
|
||||
title = "Secondary background color",
|
||||
description = "The secondary background color. (e.g. search box, artist & podcast). 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 = "#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,
|
||||
)
|
||||
val backgroundColor by spotifyBackgroundColor()
|
||||
val backgroundColorSecondary by spotifyBackgroundColorSecondary()
|
||||
val accentColor by spotifyAccentColor()
|
||||
val accentColorPressed by spotifyAccentColorPressed()
|
||||
|
||||
execute {
|
||||
val backgroundColor = backgroundColor!!
|
||||
val backgroundColorSecondary = backgroundColorSecondary!!
|
||||
val accentColor = accentColor!!
|
||||
val accentColorPressed = accentColorPressed!!
|
||||
|
||||
document("res/values/colors.xml").use { document ->
|
||||
val resourcesNode = document.getElementsByTagName("resources").item(0) as Element
|
||||
|
||||
@@ -61,20 +26,37 @@ val customThemePatch = resourcePatch(
|
||||
for (i in 0 until childNodes.length) {
|
||||
val node = childNodes.item(i) as? Element ?: continue
|
||||
|
||||
node.textContent =
|
||||
when (node.getAttribute("name")) {
|
||||
"dark_base_background_elevated_base", "design_dark_default_color_background",
|
||||
"design_dark_default_color_surface", "gray_7", "gray_background", "gray_layer",
|
||||
"sthlm_blk",
|
||||
node.textContent = when (node.getAttribute("name")) {
|
||||
// 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
|
||||
"dark_base_background_elevated_base",
|
||||
// Song/player background
|
||||
"bg_gradient_start_color", "bg_gradient_end_color",
|
||||
// Login screen
|
||||
"sthlm_blk", "sthlm_blk_grad_start", "stockholm_black",
|
||||
// Misc
|
||||
"image_placeholder_color",
|
||||
-> backgroundColor
|
||||
|
||||
"gray_15" -> backgroundColorSecondary
|
||||
// Track credits, merch in song player
|
||||
"track_credits_card_bg", "benefit_list_default_color", "merch_card_background",
|
||||
// Playlist list background in home page
|
||||
"opacity_white_10",
|
||||
// About 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
|
||||
else -> continue
|
||||
}
|
||||
"dark_brightaccent_background_base", "dark_base_text_brightaccent", "green_light" -> accentColor
|
||||
"dark_brightaccent_background_press" -> accentColorPressed
|
||||
else -> continue
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
package app.revanced.patches.spotify.layout.theme
|
||||
|
||||
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.
|
||||
}
|
||||
|
||||
internal const val SETTINGS_HEADER_COLOR_LITERAL = 0xFF282828
|
||||
internal const val HOME_CATEGORY_PILL_COLOR_LITERAL = 0xFF333333
|
||||
internal const val PLAYLIST_BACKGROUND_COLOR_LITERAL = 0xFF121212
|
||||
internal const val SHARE_MENU_BACKGROUND_COLOR_LITERAL = 0xFF1F1F1F
|
||||
|
||||
internal val homeCategoryPillColorsFingerprint = fingerprint{
|
||||
accessFlags(AccessFlags.STATIC, AccessFlags.CONSTRUCTOR)
|
||||
custom { method, _ ->
|
||||
method.containsLiteralInstruction(HOME_CATEGORY_PILL_COLOR_LITERAL) &&
|
||||
method.containsLiteralInstruction(0x33000000)
|
||||
}
|
||||
}
|
||||
|
||||
internal val settingsHeaderColorFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.STATIC, AccessFlags.CONSTRUCTOR)
|
||||
custom { method, _ ->
|
||||
method.containsLiteralInstruction(SETTINGS_HEADER_COLOR_LITERAL) &&
|
||||
method.containsLiteralInstruction(0)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package app.revanced.patches.spotify.layout.theme
|
||||
|
||||
import app.revanced.patcher.patch.stringOption
|
||||
|
||||
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 spotifyBackgroundColorSecondary = stringOption(
|
||||
key = "backgroundColorSecondary",
|
||||
default = "#FF121212",
|
||||
title = "Secondary background color",
|
||||
description = "The secondary background color. (e.g. playlist list, player arist, 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,
|
||||
)
|
||||
@@ -1,15 +1,28 @@
|
||||
package app.revanced.patches.spotify.misc
|
||||
|
||||
import app.revanced.patcher.fingerprint
|
||||
import app.revanced.patches.spotify.misc.extension.IS_SPOTIFY_LEGACY_APP_TARGET
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
|
||||
internal val accountAttributeFingerprint = fingerprint {
|
||||
custom { _, c -> c.endsWith("internal/AccountAttribute;") }
|
||||
custom { _, classDef ->
|
||||
classDef.type == if (IS_SPOTIFY_LEGACY_APP_TARGET) {
|
||||
"Lcom/spotify/useraccount/v1/AccountAttribute;"
|
||||
} else {
|
||||
"Lcom/spotify/remoteconfig/internal/AccountAttribute;"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal val productStateProtoFingerprint = fingerprint {
|
||||
returns("Ljava/util/Map;")
|
||||
custom { _, classDef ->
|
||||
classDef.endsWith("ProductStateProto;")
|
||||
classDef.type == if (IS_SPOTIFY_LEGACY_APP_TARGET) {
|
||||
"Lcom/spotify/ucs/proto/v0/UcsResponseWrapper${'$'}AccountAttributesResponse;"
|
||||
} else {
|
||||
"Lcom/spotify/remoteconfig/internal/ProductStateProto;"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,3 +34,38 @@ internal val contextMenuExperimentsFingerprint = fingerprint {
|
||||
parameters("L")
|
||||
strings("remove_ads_upsell_enabled")
|
||||
}
|
||||
|
||||
internal val contextFromJsonFingerprint = fingerprint {
|
||||
opcodes(
|
||||
Opcode.INVOKE_STATIC,
|
||||
Opcode.MOVE_RESULT_OBJECT,
|
||||
Opcode.INVOKE_VIRTUAL,
|
||||
Opcode.MOVE_RESULT_OBJECT,
|
||||
Opcode.INVOKE_STATIC
|
||||
)
|
||||
custom { methodDef, classDef ->
|
||||
methodDef.name == "fromJson" &&
|
||||
classDef.endsWith("voiceassistants/playermodels/ContextJsonAdapter;")
|
||||
}
|
||||
}
|
||||
|
||||
internal val readPlayerOptionOverridesFingerprint = fingerprint {
|
||||
custom { methodDef, classDef ->
|
||||
methodDef.name == "readPlayerOptionOverrides" &&
|
||||
classDef.endsWith("voiceassistants/playermodels/PreparePlayOptionsJsonAdapter;")
|
||||
}
|
||||
}
|
||||
|
||||
internal val homeSectionFingerprint = fingerprint {
|
||||
custom { _, classDef -> classDef.endsWith("homeapi/proto/Section;") }
|
||||
}
|
||||
|
||||
internal val protobufListsFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC)
|
||||
custom { method, _ -> method.name == "emptyProtobufList" }
|
||||
}
|
||||
|
||||
internal val homeStructureFingerprint = fingerprint {
|
||||
opcodes(Opcode.IGET_OBJECT, Opcode.RETURN_OBJECT)
|
||||
custom { _, classDef -> classDef.endsWith("homeapi/proto/HomeStructure;") }
|
||||
}
|
||||
|
||||
@@ -1,5 +1,20 @@
|
||||
package app.revanced.patches.spotify.misc.extension
|
||||
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.patches.shared.misc.extension.sharedExtensionPatch
|
||||
|
||||
val sharedExtensionPatch = sharedExtensionPatch("spotify", spotifyMainActivityOnCreate)
|
||||
/**
|
||||
* 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", spotifyMainActivityOnCreate))
|
||||
|
||||
execute {
|
||||
IS_SPOTIFY_LEGACY_APP_TARGET = spotifyMainActivityOnCreate.fingerprint
|
||||
.originalClassDef.type == SPOTIFY_MAIN_ACTIVITY_LEGACY
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,9 +2,16 @@ package app.revanced.patches.spotify.misc.extension
|
||||
|
||||
import app.revanced.patches.shared.misc.extension.extensionHook
|
||||
|
||||
private const val SPOTIFY_MAIN_ACTIVITY = "Lcom/spotify/music/SpotifyMainActivity;"
|
||||
|
||||
/**
|
||||
* Main activity of target 8.6.98.900.
|
||||
*/
|
||||
internal const val SPOTIFY_MAIN_ACTIVITY_LEGACY = "Lcom/spotify/music/MainActivity;"
|
||||
|
||||
internal val spotifyMainActivityOnCreate = extensionHook {
|
||||
custom { method, classDef ->
|
||||
classDef.type == "Lcom/spotify/music/SpotifyMainActivity;" &&
|
||||
method.name == "onCreate"
|
||||
method.name == "onCreate" && (classDef.type == SPOTIFY_MAIN_ACTIVITY
|
||||
|| classDef.type == SPOTIFY_MAIN_ACTIVITY_LEGACY)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
|
||||
val disableSubscriptionSuggestionsPatch = bytecodePatch(
|
||||
name = "Disable subscription suggestions",
|
||||
) {
|
||||
compatibleWith("com.strava"("320.12"))
|
||||
compatibleWith("com.strava")
|
||||
|
||||
execute {
|
||||
val helperMethodName = "getModulesIfNotUpselling"
|
||||
|
||||
@@ -11,8 +11,10 @@ import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
||||
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
|
||||
import app.revanced.patches.youtube.misc.settings.settingsPatch
|
||||
|
||||
private const val EXTENSION_CLASS_DESCRIPTOR =
|
||||
"Lapp/revanced/extension/youtube/patches/DisablePreciseSeekingGesturePatch;"
|
||||
|
||||
val disablePreciseSeekingGesturePatch = bytecodePatch(
|
||||
name = "Disable precise seeking gesture",
|
||||
description = "Adds an option to disable precise seeking when swiping up on the seekbar.",
|
||||
) {
|
||||
dependsOn(
|
||||
@@ -21,25 +23,12 @@ val disablePreciseSeekingGesturePatch = bytecodePatch(
|
||||
addResourcesPatch,
|
||||
)
|
||||
|
||||
compatibleWith(
|
||||
"com.google.android.youtube"(
|
||||
"19.16.39",
|
||||
"19.25.37",
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
),
|
||||
)
|
||||
|
||||
execute {
|
||||
addResources("youtube", "interaction.seekbar.disablePreciseSeekingGesturePatch")
|
||||
|
||||
PreferenceScreen.SEEKBAR.addPreferences(
|
||||
SwitchPreference("revanced_disable_precise_seeking_gesture"),
|
||||
)
|
||||
val extensionMethodDescriptor =
|
||||
"Lapp/revanced/extension/youtube/patches/DisablePreciseSeekingGesturePatch;"
|
||||
|
||||
allowSwipingUpGestureFingerprint.match(
|
||||
swipingUpGestureParentFingerprint.originalClassDef,
|
||||
@@ -47,7 +36,7 @@ val disablePreciseSeekingGesturePatch = bytecodePatch(
|
||||
addInstructionsWithLabels(
|
||||
0,
|
||||
"""
|
||||
invoke-static { }, $extensionMethodDescriptor->isGestureDisabled()Z
|
||||
invoke-static { }, $EXTENSION_CLASS_DESCRIPTOR->isGestureDisabled()Z
|
||||
move-result v0
|
||||
if-eqz v0, :disabled
|
||||
return-void
|
||||
@@ -62,7 +51,7 @@ val disablePreciseSeekingGesturePatch = bytecodePatch(
|
||||
addInstructionsWithLabels(
|
||||
0,
|
||||
"""
|
||||
invoke-static { }, $extensionMethodDescriptor->isGestureDisabled()Z
|
||||
invoke-static { }, $EXTENSION_CLASS_DESCRIPTOR->isGestureDisabled()Z
|
||||
move-result v0
|
||||
if-eqz v0, :disabled
|
||||
const/4 v0, 0x0
|
||||
|
||||
@@ -15,7 +15,6 @@ import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction35c
|
||||
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||
|
||||
val enableSeekbarTappingPatch = bytecodePatch(
|
||||
name = "Enable tap to seek",
|
||||
description = "Adds an option to enable tap to seek on the seekbar of the video player.",
|
||||
) {
|
||||
dependsOn(
|
||||
@@ -24,17 +23,6 @@ val enableSeekbarTappingPatch = bytecodePatch(
|
||||
addResourcesPatch,
|
||||
)
|
||||
|
||||
compatibleWith(
|
||||
"com.google.android.youtube"(
|
||||
"19.16.39",
|
||||
"19.25.37",
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
),
|
||||
)
|
||||
|
||||
execute {
|
||||
addResources("youtube", "interaction.seekbar.enableSeekbarTappingPatch")
|
||||
|
||||
|
||||
@@ -18,11 +18,9 @@ import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||
|
||||
internal const val EXTENSION_METHOD_DESCRIPTOR =
|
||||
"Lapp/revanced/extension/youtube/patches/SlideToSeekPatch;->isSlideToSeekDisabled(Z)Z"
|
||||
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/youtube/patches/SlideToSeekPatch;"
|
||||
|
||||
val enableSlideToSeekPatch = bytecodePatch(
|
||||
name = "Enable slide to seek",
|
||||
description = "Adds an option to enable slide to seek " +
|
||||
"instead of playing at 2x speed when pressing and holding in the video player."
|
||||
) {
|
||||
@@ -33,17 +31,6 @@ val enableSlideToSeekPatch = bytecodePatch(
|
||||
versionCheckPatch,
|
||||
)
|
||||
|
||||
compatibleWith(
|
||||
"com.google.android.youtube"(
|
||||
"19.16.39",
|
||||
"19.25.37",
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
),
|
||||
)
|
||||
|
||||
execute {
|
||||
addResources("youtube", "interaction.seekbar.enableSlideToSeekPatch")
|
||||
|
||||
@@ -59,6 +46,8 @@ val enableSlideToSeekPatch = bytecodePatch(
|
||||
val checkReference = slideToSeekFingerprint.method.getInstruction(checkIndex)
|
||||
.getReference<MethodReference>()!!
|
||||
|
||||
val extensionMethodDescriptor = "$EXTENSION_CLASS_DESCRIPTOR->isSlideToSeekDisabled(Z)Z"
|
||||
|
||||
// A/B check method was only called on this class.
|
||||
slideToSeekFingerprint.classDef.methods.forEach { method ->
|
||||
method.findInstructionIndicesReversed {
|
||||
@@ -70,7 +59,7 @@ val enableSlideToSeekPatch = bytecodePatch(
|
||||
addInstructions(
|
||||
index + 2,
|
||||
"""
|
||||
invoke-static { v$register }, $EXTENSION_METHOD_DESCRIPTOR
|
||||
invoke-static { v$register }, $extensionMethodDescriptor
|
||||
move-result v$register
|
||||
""",
|
||||
)
|
||||
@@ -95,7 +84,7 @@ val enableSlideToSeekPatch = bytecodePatch(
|
||||
addInstructions(
|
||||
targetIndex + 1,
|
||||
"""
|
||||
invoke-static { v$targetRegister }, $EXTENSION_METHOD_DESCRIPTOR
|
||||
invoke-static { v$targetRegister }, $extensionMethodDescriptor
|
||||
move-result v$targetRegister
|
||||
""",
|
||||
)
|
||||
@@ -109,7 +98,7 @@ val enableSlideToSeekPatch = bytecodePatch(
|
||||
addInstructions(
|
||||
insertIndex,
|
||||
"""
|
||||
invoke-static { v$targetRegister }, $EXTENSION_METHOD_DESCRIPTOR
|
||||
invoke-static { v$targetRegister }, $extensionMethodDescriptor
|
||||
move-result v$targetRegister
|
||||
""",
|
||||
)
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
package app.revanced.patches.youtube.interaction.seekbar
|
||||
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.patches.all.misc.resources.addResources
|
||||
import app.revanced.patches.all.misc.resources.addResourcesPatch
|
||||
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
|
||||
import app.revanced.patches.youtube.layout.seekbar.seekbarColorPatch
|
||||
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
||||
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
|
||||
import app.revanced.patches.youtube.misc.settings.settingsPatch
|
||||
import app.revanced.patches.youtube.shared.seekbarFingerprint
|
||||
import app.revanced.patches.youtube.shared.seekbarOnDrawFingerprint
|
||||
|
||||
val hideSeekbarPatch = bytecodePatch(
|
||||
description = "Adds an option to hide the seekbar.",
|
||||
) {
|
||||
dependsOn(
|
||||
sharedExtensionPatch,
|
||||
settingsPatch,
|
||||
seekbarColorPatch,
|
||||
addResourcesPatch,
|
||||
)
|
||||
|
||||
execute {
|
||||
addResources("youtube", "layout.hide.seekbar.hideSeekbarPatch")
|
||||
|
||||
PreferenceScreen.SEEKBAR.addPreferences(
|
||||
SwitchPreference("revanced_hide_seekbar"),
|
||||
SwitchPreference("revanced_hide_seekbar_thumbnail"),
|
||||
)
|
||||
|
||||
seekbarOnDrawFingerprint.match(seekbarFingerprint.originalClassDef).method.addInstructionsWithLabels(
|
||||
0,
|
||||
"""
|
||||
const/4 v0, 0x0
|
||||
invoke-static { }, Lapp/revanced/extension/youtube/patches/HideSeekbarPatch;->hideSeekbar()Z
|
||||
move-result v0
|
||||
if-eqz v0, :hide_seekbar
|
||||
return-void
|
||||
:hide_seekbar
|
||||
nop
|
||||
""",
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package app.revanced.patches.youtube.interaction.seekbar
|
||||
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
|
||||
@Suppress("unused")
|
||||
val seekbarPatch = bytecodePatch(
|
||||
name = "Seekbar",
|
||||
description = "Adds options to disable precise seeking when swiping up on the seekbar, " +
|
||||
"slide to seek instead of playing at 2x speed when pressing and holding, " +
|
||||
"tapping the player seekbar to seek, " +
|
||||
"and hiding the video player seekbar."
|
||||
) {
|
||||
dependsOn(
|
||||
disablePreciseSeekingGesturePatch,
|
||||
enableSlideToSeekPatch,
|
||||
enableSeekbarTappingPatch,
|
||||
hideSeekbarPatch,
|
||||
seekbarThumbnailsPatch
|
||||
)
|
||||
|
||||
compatibleWith(
|
||||
"com.google.android.youtube"(
|
||||
"19.16.39",
|
||||
"19.25.37",
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
)
|
||||
)
|
||||
}
|
||||
@@ -10,6 +10,7 @@ import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
|
||||
import app.revanced.patches.youtube.layout.seekbar.fullscreenSeekbarThumbnailsFingerprint
|
||||
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
||||
import app.revanced.patches.youtube.misc.playservice.is_19_17_or_greater
|
||||
import app.revanced.patches.youtube.misc.playservice.is_20_09_or_greater
|
||||
import app.revanced.patches.youtube.misc.playservice.versionCheckPatch
|
||||
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
|
||||
|
||||
@@ -17,7 +18,6 @@ private const val EXTENSION_CLASS_DESCRIPTOR =
|
||||
"Lapp/revanced/extension/youtube/patches/SeekbarThumbnailsPatch;"
|
||||
|
||||
val seekbarThumbnailsPatch = bytecodePatch(
|
||||
name = "Seekbar thumbnails",
|
||||
description = "Adds an option to use high quality fullscreen seekbar thumbnails. " +
|
||||
"Patching 19.16.39 adds an option to restore old seekbar thumbnails.",
|
||||
) {
|
||||
@@ -27,18 +27,13 @@ val seekbarThumbnailsPatch = bytecodePatch(
|
||||
versionCheckPatch,
|
||||
)
|
||||
|
||||
compatibleWith(
|
||||
"com.google.android.youtube"(
|
||||
"19.16.39",
|
||||
"19.25.37",
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
)
|
||||
)
|
||||
|
||||
execute {
|
||||
if (is_20_09_or_greater) {
|
||||
// High quality seekbar thumbnails is partially broken in 20.09
|
||||
// and the code is completely removed in 20.10+
|
||||
return@execute
|
||||
}
|
||||
|
||||
addResources("youtube", "layout.seekbar.seekbarThumbnailsPatch")
|
||||
|
||||
if (is_19_17_or_greater) {
|
||||
|
||||
@@ -20,11 +20,10 @@ import app.revanced.patches.shared.misc.settings.preference.*
|
||||
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_47_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
|
||||
import app.revanced.util.findFreeRegister
|
||||
import app.revanced.util.findInstructionIndicesReversedOrThrow
|
||||
import app.revanced.util.getReference
|
||||
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||
@@ -123,7 +122,6 @@ val hideLayoutComponentsPatch = bytecodePatch(
|
||||
addResourcesPatch,
|
||||
hideLayoutComponentsResourcePatch,
|
||||
navigationBarHookPatch,
|
||||
versionCheckPatch
|
||||
)
|
||||
|
||||
compatibleWith(
|
||||
@@ -132,8 +130,6 @@ val hideLayoutComponentsPatch = bytecodePatch(
|
||||
"19.25.37",
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.45.38",
|
||||
"19.46.42",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
),
|
||||
@@ -254,17 +250,16 @@ val hideLayoutComponentsPatch = bytecodePatch(
|
||||
(if (is_20_07_or_greater) parseElementFromBufferFingerprint
|
||||
else parseElementFromBufferLegacyFingerprint).let {
|
||||
it.method.apply {
|
||||
// Target code is a mess with a lot of register moves.
|
||||
// There is no simple way to find a free register for all versions so this is hard coded.
|
||||
val freeRegister = if (is_19_47_or_greater) 6 else 0
|
||||
val byteArrayParameter = "p3"
|
||||
val startIndex = it.patternMatch!!.startIndex
|
||||
val conversionContextRegister = getInstruction<TwoRegisterInstruction>(startIndex).registerA
|
||||
val returnEmptyComponentInstruction = instructions.last { it.opcode == Opcode.INVOKE_STATIC }
|
||||
val returnEmptyComponentRegister = (returnEmptyComponentInstruction as FiveRegisterInstruction).registerC
|
||||
val insertIndex = startIndex + 1
|
||||
val freeRegister = findFreeRegister(insertIndex, conversionContextRegister, returnEmptyComponentRegister)
|
||||
|
||||
addInstructionsWithLabels(
|
||||
startIndex + 1,
|
||||
insertIndex,
|
||||
"""
|
||||
invoke-static { v$conversionContextRegister, $byteArrayParameter }, $LAYOUT_COMPONENTS_FILTER_CLASS_DESCRIPTOR->filterMixPlaylists(Ljava/lang/Object;[B)Z
|
||||
move-result v$freeRegister
|
||||
@@ -272,7 +267,7 @@ val hideLayoutComponentsPatch = bytecodePatch(
|
||||
move-object v$returnEmptyComponentRegister, p1 # Required for 19.47
|
||||
goto :return_empty_component
|
||||
:show
|
||||
const/4 v$freeRegister, 0x0 # Restore register, required for 19.16
|
||||
nop
|
||||
""",
|
||||
ExternalLabel("return_empty_component", returnEmptyComponentInstruction),
|
||||
)
|
||||
|
||||
@@ -51,7 +51,10 @@ val hidePlayerFlyoutMenuPatch = bytecodePatch(
|
||||
SwitchPreference("revanced_hide_player_flyout_speed"),
|
||||
SwitchPreference("revanced_hide_player_flyout_lock_screen"),
|
||||
SwitchPreference("revanced_hide_player_flyout_more_info"),
|
||||
SwitchPreference("revanced_hide_player_flyout_audio_track"),
|
||||
SwitchPreference(
|
||||
key = "revanced_hide_player_flyout_audio_track",
|
||||
tag = "app.revanced.extension.youtube.settings.preference.HideAudioFlyoutMenuPreference"
|
||||
),
|
||||
SwitchPreference("revanced_hide_player_flyout_watch_in_vr"),
|
||||
SwitchPreference("revanced_hide_player_flyout_sleep_timer"),
|
||||
SwitchPreference("revanced_hide_player_flyout_video_quality_footer"),
|
||||
|
||||
@@ -1,58 +1,11 @@
|
||||
package app.revanced.patches.youtube.layout.hide.seekbar
|
||||
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.patches.all.misc.resources.addResources
|
||||
import app.revanced.patches.all.misc.resources.addResourcesPatch
|
||||
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
|
||||
import app.revanced.patches.youtube.layout.seekbar.seekbarColorPatch
|
||||
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
||||
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
|
||||
import app.revanced.patches.youtube.misc.settings.settingsPatch
|
||||
import app.revanced.patches.youtube.shared.seekbarFingerprint
|
||||
import app.revanced.patches.youtube.shared.seekbarOnDrawFingerprint
|
||||
import app.revanced.patches.youtube.interaction.seekbar.hideSeekbarPatch
|
||||
|
||||
val hideSeekbarPatch = bytecodePatch(
|
||||
name = "Hide seekbar",
|
||||
description = "Adds an option to hide the seekbar.",
|
||||
) {
|
||||
@Deprecated("Patch was moved to app.revanced.patches.youtube.interaction.seekbar")
|
||||
val hideSeekbarPatch = bytecodePatch {
|
||||
dependsOn(
|
||||
sharedExtensionPatch,
|
||||
settingsPatch,
|
||||
seekbarColorPatch,
|
||||
addResourcesPatch,
|
||||
hideSeekbarPatch
|
||||
)
|
||||
|
||||
compatibleWith(
|
||||
"com.google.android.youtube"(
|
||||
"19.16.39",
|
||||
"19.25.37",
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
),
|
||||
)
|
||||
|
||||
execute {
|
||||
addResources("youtube", "layout.hide.seekbar.hideSeekbarPatch")
|
||||
|
||||
PreferenceScreen.SEEKBAR.addPreferences(
|
||||
SwitchPreference("revanced_hide_seekbar"),
|
||||
SwitchPreference("revanced_hide_seekbar_thumbnail"),
|
||||
)
|
||||
|
||||
seekbarOnDrawFingerprint.match(seekbarFingerprint.originalClassDef).method.addInstructionsWithLabels(
|
||||
0,
|
||||
"""
|
||||
const/4 v0, 0x0
|
||||
invoke-static { }, Lapp/revanced/extension/youtube/patches/HideSeekbarPatch;->hideSeekbar()Z
|
||||
move-result v0
|
||||
if-eqz v0, :hide_seekbar
|
||||
return-void
|
||||
:hide_seekbar
|
||||
nop
|
||||
""",
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -168,11 +168,8 @@ val miniplayerPatch = bytecodePatch(
|
||||
// 19.30.39 // Modern 3 is less broken when double tap expand is enabled, but cannot swipe to expand when double tap is off.
|
||||
// 19.31.36 // All Modern 1 buttons are missing. Unusable.
|
||||
// 19.32.36 // 19.32+ and beyond all work without issues.
|
||||
// 19.33.35
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.45.38",
|
||||
"19.46.42",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
),
|
||||
|
||||
@@ -25,7 +25,6 @@ val openVideosFullscreenPatch = bytecodePatch(
|
||||
|
||||
compatibleWith(
|
||||
"com.google.android.youtube"(
|
||||
"19.46.42",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
)
|
||||
|
||||
@@ -70,6 +70,8 @@ val returnYouTubeDislikePatch = bytecodePatch(
|
||||
key = "revanced_settings_screen_09",
|
||||
titleKey = "revanced_ryd_settings_title",
|
||||
summaryKey = null,
|
||||
icon = "@drawable/revanced_settings_screen_09_ryd",
|
||||
layout = "@layout/preference_with_icon",
|
||||
intent = newIntent("revanced_ryd_settings_intent"),
|
||||
),
|
||||
)
|
||||
@@ -179,9 +181,6 @@ val returnYouTubeDislikePatch = bytecodePatch(
|
||||
|
||||
// region Hook rolling numbers.
|
||||
|
||||
// Do this last to allow patching old unsupported versions (if the user really wants),
|
||||
// On older unsupported version this will fail to match and throw an exception,
|
||||
// but everything will still work correctly anyway.
|
||||
val dislikesIndex = rollingNumberSetterFingerprint.patternMatch!!.endIndex
|
||||
|
||||
rollingNumberSetterFingerprint.method.apply {
|
||||
|
||||
@@ -84,31 +84,14 @@ internal val playerLinearGradientFingerprint = fingerprint {
|
||||
}
|
||||
|
||||
/**
|
||||
* 19.46 - 19.47
|
||||
* 19.25 - 19.47
|
||||
*/
|
||||
internal val playerLinearGradientLegacy1946Fingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||
parameters("I", "I", "I", "I")
|
||||
internal val playerLinearGradientLegacyFingerprint = fingerprint {
|
||||
returns("V")
|
||||
opcodes(
|
||||
Opcode.FILLED_NEW_ARRAY,
|
||||
Opcode.MOVE_RESULT_OBJECT
|
||||
)
|
||||
custom { method, _ ->
|
||||
method.name == "setBounds" && method.containsLiteralInstruction(ytYoutubeMagentaColorId)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 19.25 - 19.45
|
||||
*/
|
||||
internal val playerLinearGradientLegacy1925Fingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR)
|
||||
parameters("Landroid/content/Context;")
|
||||
opcodes(
|
||||
Opcode.FILLED_NEW_ARRAY,
|
||||
Opcode.MOVE_RESULT_OBJECT
|
||||
)
|
||||
literal { ytYoutubeMagentaColorId }
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package app.revanced.patches.youtube.layout.seekbar
|
||||
|
||||
import app.revanced.patcher.Fingerprint
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||
@@ -310,14 +311,15 @@ val seekbarColorPatch = bytecodePatch(
|
||||
"""
|
||||
)
|
||||
|
||||
val playerFingerprint =
|
||||
if (is_19_49_or_greater) {
|
||||
playerLinearGradientFingerprint
|
||||
} else if (is_19_46_or_greater) {
|
||||
playerLinearGradientLegacy1946Fingerprint
|
||||
} else {
|
||||
playerLinearGradientLegacy1925Fingerprint
|
||||
}
|
||||
val playerFingerprint: Fingerprint
|
||||
val checkGradientCoordinates: Boolean
|
||||
if (is_19_49_or_greater) {
|
||||
playerFingerprint = playerLinearGradientFingerprint
|
||||
checkGradientCoordinates = true
|
||||
} else {
|
||||
playerFingerprint = playerLinearGradientLegacyFingerprint
|
||||
checkGradientCoordinates = false
|
||||
}
|
||||
|
||||
playerFingerprint.let {
|
||||
it.method.apply {
|
||||
@@ -326,10 +328,17 @@ val seekbarColorPatch = bytecodePatch(
|
||||
|
||||
addInstructions(
|
||||
index + 1,
|
||||
"""
|
||||
invoke-static { v$register }, $EXTENSION_CLASS_DESCRIPTOR->getPlayerLinearGradient([I)[I
|
||||
move-result-object v$register
|
||||
"""
|
||||
if (checkGradientCoordinates) {
|
||||
"""
|
||||
invoke-static { v$register, p0, p1 }, $EXTENSION_CLASS_DESCRIPTOR->getPlayerLinearGradient([III)[I
|
||||
move-result-object v$register
|
||||
"""
|
||||
} else {
|
||||
"""
|
||||
invoke-static { v$register }, $EXTENSION_CLASS_DESCRIPTOR->getPlayerLinearGradient([I)[I
|
||||
move-result-object v$register
|
||||
"""
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,9 +16,9 @@ import app.revanced.patches.youtube.misc.playservice.versionCheckPatch
|
||||
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
|
||||
import app.revanced.patches.youtube.misc.settings.settingsPatch
|
||||
import app.revanced.patches.youtube.shared.mainActivityOnCreateFingerprint
|
||||
import app.revanced.util.findFreeRegister
|
||||
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.instruction.OneRegisterInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||
|
||||
@@ -106,11 +106,12 @@ val openShortsInRegularPlayerPatch = bytecodePatch(
|
||||
getReference<MethodReference>()?.returnType ==
|
||||
"Lcom/google/android/libraries/youtube/player/model/PlaybackStartDescriptor;"
|
||||
}
|
||||
val freeRegister = getInstruction<FiveRegisterInstruction>(index).registerC
|
||||
val playbackStartRegister = getInstruction<OneRegisterInstruction>(index + 1).registerA
|
||||
val insertIndex = index + 2
|
||||
val freeRegister = findFreeRegister(insertIndex, playbackStartRegister)
|
||||
|
||||
addInstructionsWithLabels(
|
||||
index + 2,
|
||||
insertIndex,
|
||||
extensionInstructions(playbackStartRegister, freeRegister)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -48,6 +48,8 @@ private val sponsorBlockResourcePatch = resourcePatch {
|
||||
key = "revanced_settings_screen_10",
|
||||
titleKey = "revanced_sb_settings_title",
|
||||
summaryKey = null,
|
||||
icon = "@drawable/revanced_settings_screen_10_sb",
|
||||
layout = "@layout/preference_with_icon",
|
||||
intent = newIntent("revanced_sb_settings_intent"),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
package app.revanced.patches.youtube.layout.startupshortsreset
|
||||
|
||||
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.removeInstruction
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.patches.all.misc.resources.addResources
|
||||
import app.revanced.patches.all.misc.resources.addResourcesPatch
|
||||
@@ -12,11 +10,12 @@ import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
||||
import app.revanced.patches.youtube.misc.playservice.is_20_02_or_greater
|
||||
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
|
||||
import app.revanced.patches.youtube.misc.settings.settingsPatch
|
||||
import app.revanced.util.addInstructionsAtControlFlowLabel
|
||||
import app.revanced.util.findFreeRegister
|
||||
import app.revanced.util.getReference
|
||||
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||
import app.revanced.util.indexOfFirstInstructionReversedOrThrow
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||
|
||||
@@ -39,8 +38,6 @@ val disableResumingShortsOnStartupPatch = bytecodePatch(
|
||||
"19.25.37",
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.45.38",
|
||||
"19.46.42",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
),
|
||||
@@ -80,23 +77,19 @@ val disableResumingShortsOnStartupPatch = bytecodePatch(
|
||||
reference?.definingClass == "Lcom/google/common/util/concurrent/ListenableFuture;" &&
|
||||
reference.name == "isDone"
|
||||
}
|
||||
val originalInstructionRegister =
|
||||
getInstruction<FiveRegisterInstruction>(listenableInstructionIndex).registerC
|
||||
val freeRegister =
|
||||
getInstruction<OneRegisterInstruction>(listenableInstructionIndex + 1).registerA
|
||||
val freeRegister = findFreeRegister(listenableInstructionIndex)
|
||||
|
||||
addInstructionsWithLabels(
|
||||
listenableInstructionIndex + 1,
|
||||
addInstructionsAtControlFlowLabel(
|
||||
listenableInstructionIndex,
|
||||
"""
|
||||
invoke-static {}, $EXTENSION_CLASS_DESCRIPTOR->disableResumingStartupShortsPlayer()Z
|
||||
move-result v$freeRegister
|
||||
if-eqz v$freeRegister, :show
|
||||
return-void
|
||||
:show
|
||||
invoke-interface {v$originalInstructionRegister}, Lcom/google/common/util/concurrent/ListenableFuture;->isDone()Z
|
||||
nop
|
||||
"""
|
||||
)
|
||||
removeInstruction(listenableInstructionIndex)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
||||
import app.revanced.patches.youtube.misc.playertype.playerTypeHookPatch
|
||||
import app.revanced.patches.youtube.misc.playservice.is_19_34_or_greater
|
||||
import app.revanced.patches.youtube.misc.playservice.versionCheckPatch
|
||||
import app.revanced.util.findFreeRegister
|
||||
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
|
||||
@@ -42,13 +43,14 @@ val fixPlaybackSpeedWhilePlayingPatch = bytecodePatch{
|
||||
}
|
||||
|
||||
playbackSpeedInFeedsFingerprint.method.apply {
|
||||
val freeRegister = implementation!!.registerCount - parameters.size - 2
|
||||
val playbackSpeedIndex = indexOfGetPlaybackSpeedInstruction(this)
|
||||
val playbackSpeedRegister = getInstruction<TwoRegisterInstruction>(playbackSpeedIndex).registerA
|
||||
val returnIndex = indexOfFirstInstructionOrThrow(playbackSpeedIndex, Opcode.RETURN_VOID)
|
||||
val insertIndex = playbackSpeedIndex + 1
|
||||
val freeRegister = findFreeRegister(insertIndex, playbackSpeedRegister)
|
||||
|
||||
addInstructionsWithLabels(
|
||||
playbackSpeedIndex + 1,
|
||||
insertIndex,
|
||||
"""
|
||||
invoke-static { v$playbackSpeedRegister }, $EXTENSION_CLASS_DESCRIPTOR->playbackSpeedChanged(F)Z
|
||||
move-result v$freeRegister
|
||||
|
||||
@@ -36,8 +36,6 @@ val bypassURLRedirectsPatch = bytecodePatch(
|
||||
"19.25.37",
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.45.38",
|
||||
"19.46.42",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
),
|
||||
|
||||
@@ -8,7 +8,6 @@ import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWith
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.removeInstructions
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
|
||||
import app.revanced.patcher.patch.PatchException
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.patcher.util.smali.ExternalLabel
|
||||
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
||||
@@ -16,12 +15,14 @@ import app.revanced.patches.youtube.misc.playservice.is_19_18_or_greater
|
||||
import app.revanced.patches.youtube.misc.playservice.is_19_25_or_greater
|
||||
import app.revanced.patches.youtube.misc.playservice.is_20_05_or_greater
|
||||
import app.revanced.patches.youtube.misc.playservice.versionCheckPatch
|
||||
import app.revanced.util.findFreeRegister
|
||||
import app.revanced.util.getReference
|
||||
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||
import app.revanced.util.indexOfFirstInstructionReversedOrThrow
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.*
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
|
||||
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||
|
||||
@@ -191,17 +192,7 @@ val lithoFilterPatch = bytecodePatch(
|
||||
},
|
||||
).registerA
|
||||
|
||||
// Find a free temporary register.
|
||||
val freeRegister = getInstruction<OneRegisterInstruction>(
|
||||
// Immediately before is a StringBuilder append constant character.
|
||||
indexOfFirstInstructionReversedOrThrow(insertHookIndex, Opcode.CONST_16),
|
||||
).registerA
|
||||
|
||||
// Verify the temp register will not clobber the method result register.
|
||||
if (stringBuilderRegister == freeRegister) {
|
||||
throw PatchException("Free register will clobber StringBuilder register")
|
||||
}
|
||||
|
||||
val freeRegister = findFreeRegister(insertHookIndex, identifierRegister, stringBuilderRegister)
|
||||
val invokeFilterInstructions = """
|
||||
invoke-static { v$identifierRegister, v$stringBuilderRegister }, $EXTENSION_CLASS_DESCRIPTOR->filter(Ljava/lang/String;Ljava/lang/StringBuilder;)Z
|
||||
move-result v$freeRegister
|
||||
|
||||
@@ -73,7 +73,22 @@ private val settingsResourcePatch = resourcePatch {
|
||||
appearanceStringId = resourceMappings["string", "app_theme_appearance_dark"]
|
||||
|
||||
arrayOf(
|
||||
ResourceGroup("drawable", "revanced_settings_icon.xml"),
|
||||
ResourceGroup("drawable",
|
||||
"revanced_settings_icon.xml",
|
||||
"revanced_settings_screen_00_about.xml",
|
||||
"revanced_settings_screen_01_ads.xml",
|
||||
"revanced_settings_screen_02_alt_thumbnails.xml",
|
||||
"revanced_settings_screen_03_feed.xml",
|
||||
"revanced_settings_screen_04_general.xml",
|
||||
"revanced_settings_screen_05_player.xml",
|
||||
"revanced_settings_screen_06_shorts.xml",
|
||||
"revanced_settings_screen_07_seekbar.xml",
|
||||
"revanced_settings_screen_08_swipe_controls.xml",
|
||||
"revanced_settings_screen_09_ryd.xml",
|
||||
"revanced_settings_screen_10_sb.xml",
|
||||
"revanced_settings_screen_11_misc.xml",
|
||||
"revanced_settings_screen_12_video.xml",
|
||||
),
|
||||
ResourceGroup("layout", "revanced_settings_with_toolbar.xml"),
|
||||
).forEach { resourceGroup ->
|
||||
copyResources("settings", resourceGroup)
|
||||
@@ -159,6 +174,8 @@ val settingsPatch = bytecodePatch(
|
||||
// Add an "about" preference to the top.
|
||||
preferences += NonInteractivePreference(
|
||||
key = "revanced_settings_screen_00_about",
|
||||
icon = "@drawable/revanced_settings_screen_00_about",
|
||||
layout = "@layout/preference_with_icon",
|
||||
summaryKey = null,
|
||||
tag = "app.revanced.extension.youtube.settings.preference.ReVancedYouTubeAboutPreference",
|
||||
selectable = true,
|
||||
@@ -170,6 +187,10 @@ val settingsPatch = bytecodePatch(
|
||||
)
|
||||
}
|
||||
|
||||
PreferenceScreen.GENERAL_LAYOUT.addPreferences(
|
||||
SwitchPreference("revanced_show_menu_icons")
|
||||
)
|
||||
|
||||
PreferenceScreen.MISC.addPreferences(
|
||||
TextPreference(
|
||||
key = null,
|
||||
@@ -277,37 +298,53 @@ object PreferenceScreen : BasePreferenceScreen() {
|
||||
val ADS = Screen(
|
||||
key = "revanced_settings_screen_01_ads",
|
||||
summaryKey = null,
|
||||
icon = "@drawable/revanced_settings_screen_01_ads",
|
||||
layout = "@layout/preference_with_icon",
|
||||
)
|
||||
val ALTERNATIVE_THUMBNAILS = Screen(
|
||||
key = "revanced_settings_screen_02_alt_thumbnails",
|
||||
summaryKey = null,
|
||||
icon = "@drawable/revanced_settings_screen_02_alt_thumbnails",
|
||||
layout = "@layout/preference_with_icon",
|
||||
sorting = Sorting.UNSORTED,
|
||||
)
|
||||
val FEED = Screen(
|
||||
key = "revanced_settings_screen_03_feed",
|
||||
summaryKey = null,
|
||||
icon = "@drawable/revanced_settings_screen_03_feed",
|
||||
layout = "@layout/preference_with_icon",
|
||||
)
|
||||
val GENERAL_LAYOUT = Screen(
|
||||
key = "revanced_settings_screen_04_general",
|
||||
summaryKey = null,
|
||||
icon = "@drawable/revanced_settings_screen_04_general",
|
||||
layout = "@layout/preference_with_icon",
|
||||
)
|
||||
val PLAYER = Screen(
|
||||
key = "revanced_settings_screen_05_player",
|
||||
summaryKey = null,
|
||||
icon = "@drawable/revanced_settings_screen_05_player",
|
||||
layout = "@layout/preference_with_icon",
|
||||
)
|
||||
|
||||
val SHORTS = Screen(
|
||||
key = "revanced_settings_screen_06_shorts",
|
||||
summaryKey = null,
|
||||
icon = "@drawable/revanced_settings_screen_06_shorts",
|
||||
layout = "@layout/preference_with_icon",
|
||||
)
|
||||
|
||||
val SEEKBAR = Screen(
|
||||
key = "revanced_settings_screen_07_seekbar",
|
||||
summaryKey = null,
|
||||
)
|
||||
icon = "@drawable/revanced_settings_screen_07_seekbar",
|
||||
layout = "@layout/preference_with_icon",
|
||||
)
|
||||
val SWIPE_CONTROLS = Screen(
|
||||
key = "revanced_settings_screen_08_swipe_controls",
|
||||
summaryKey = null,
|
||||
icon = "@drawable/revanced_settings_screen_08_swipe_controls",
|
||||
layout = "@layout/preference_with_icon",
|
||||
sorting = Sorting.UNSORTED,
|
||||
)
|
||||
|
||||
@@ -317,10 +354,14 @@ object PreferenceScreen : BasePreferenceScreen() {
|
||||
val MISC = Screen(
|
||||
key = "revanced_settings_screen_11_misc",
|
||||
summaryKey = null,
|
||||
icon = "@drawable/revanced_settings_screen_11_misc",
|
||||
layout = "@layout/preference_with_icon",
|
||||
)
|
||||
val VIDEO = Screen(
|
||||
key = "revanced_settings_screen_12_video",
|
||||
summaryKey = null,
|
||||
icon = "@drawable/revanced_settings_screen_12_video",
|
||||
layout = "@layout/preference_with_icon",
|
||||
sorting = Sorting.BY_KEY,
|
||||
)
|
||||
|
||||
|
||||
@@ -15,13 +15,185 @@ 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 com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.Opcode.*
|
||||
import com.android.tools.smali.dexlib2.iface.Method
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.Instruction
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.RegisterRangeInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.ThreeRegisterInstruction
|
||||
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.util.MethodUtil
|
||||
import java.util.EnumSet
|
||||
|
||||
/**
|
||||
* Starting from and including the instruction at index [startIndex],
|
||||
* finds the next register that is wrote to and not read from. If a return instruction
|
||||
* is encountered, then the lowest unused register is returned.
|
||||
*
|
||||
* This method can return a non 4-bit register, and the calling code may need to temporarily
|
||||
* swap register contents if a 4-bit register is required.
|
||||
*
|
||||
* @param startIndex Inclusive starting index.
|
||||
* @param registersToExclude Registers to exclude, and consider as used. For most use cases,
|
||||
* all registers used in injected code should be specified.
|
||||
* @throws IllegalArgumentException If a branch or conditional statement is encountered
|
||||
* before a suitable register is found.
|
||||
*/
|
||||
internal fun Method.findFreeRegister(startIndex: Int, vararg registersToExclude: Int): Int {
|
||||
if (implementation == null) {
|
||||
throw IllegalArgumentException("Method has no implementation: $this")
|
||||
}
|
||||
if (startIndex < 0 || startIndex >= instructions.count()) {
|
||||
throw IllegalArgumentException("startIndex out of bounds: $startIndex")
|
||||
}
|
||||
|
||||
// All registers used by an instruction.
|
||||
fun Instruction.getRegistersUsed() = when (this) {
|
||||
is FiveRegisterInstruction -> {
|
||||
when (registerCount) {
|
||||
1 -> listOf(registerC)
|
||||
2 -> listOf(registerC, registerD)
|
||||
3 -> listOf(registerC, registerD, registerE)
|
||||
4 -> listOf(registerC, registerD, registerE, registerF)
|
||||
else -> listOf(registerC, registerD, registerE, registerF, registerG)
|
||||
}
|
||||
}
|
||||
is ThreeRegisterInstruction -> listOf(registerA, registerB, registerC)
|
||||
is TwoRegisterInstruction -> listOf(registerA, registerB)
|
||||
is OneRegisterInstruction -> listOf(registerA)
|
||||
is RegisterRangeInstruction -> (startRegister until (startRegister + registerCount)).toList()
|
||||
else -> emptyList()
|
||||
}
|
||||
|
||||
// Register that is written to by an instruction.
|
||||
fun Instruction.getWriteRegister() : Int {
|
||||
// Two and three register instructions extend OneRegisterInstruction.
|
||||
if (this is OneRegisterInstruction) return registerA
|
||||
throw IllegalStateException("Not a write instruction: $this")
|
||||
}
|
||||
|
||||
val writeOpcodes = EnumSet.of(
|
||||
ARRAY_LENGTH,
|
||||
INSTANCE_OF,
|
||||
NEW_INSTANCE, NEW_ARRAY,
|
||||
MOVE, MOVE_FROM16, MOVE_16, MOVE_WIDE, MOVE_WIDE_FROM16, MOVE_WIDE_16, MOVE_OBJECT,
|
||||
MOVE_OBJECT_FROM16, MOVE_OBJECT_16, MOVE_RESULT, MOVE_RESULT_WIDE, MOVE_RESULT_OBJECT, MOVE_EXCEPTION,
|
||||
CONST, CONST_4, CONST_16, CONST_HIGH16, CONST_WIDE_16, CONST_WIDE_32,
|
||||
CONST_WIDE, CONST_WIDE_HIGH16, CONST_STRING, CONST_STRING_JUMBO,
|
||||
IGET, IGET_WIDE, IGET_OBJECT, IGET_BOOLEAN, IGET_BYTE, IGET_CHAR, IGET_SHORT,
|
||||
IGET_VOLATILE, IGET_WIDE_VOLATILE, IGET_OBJECT_VOLATILE,
|
||||
SGET, SGET_WIDE, SGET_OBJECT, SGET_BOOLEAN, SGET_BYTE, SGET_CHAR, SGET_SHORT,
|
||||
SGET_VOLATILE, SGET_WIDE_VOLATILE, SGET_OBJECT_VOLATILE,
|
||||
AGET, AGET_WIDE, AGET_OBJECT, AGET_BOOLEAN, AGET_BYTE, AGET_CHAR, AGET_SHORT,
|
||||
// Arithmetic and logical operations.
|
||||
ADD_DOUBLE_2ADDR, ADD_DOUBLE, ADD_FLOAT_2ADDR, ADD_FLOAT, ADD_INT_2ADDR,
|
||||
ADD_INT_LIT8, ADD_INT, ADD_LONG_2ADDR, ADD_LONG, ADD_INT_LIT16,
|
||||
AND_INT_2ADDR, AND_INT_LIT8, AND_INT_LIT16, AND_INT, AND_LONG_2ADDR, AND_LONG,
|
||||
DIV_DOUBLE_2ADDR, DIV_DOUBLE, DIV_FLOAT_2ADDR, DIV_FLOAT, DIV_INT_2ADDR,
|
||||
DIV_INT_LIT16, DIV_INT_LIT8, DIV_INT, DIV_LONG_2ADDR, DIV_LONG,
|
||||
DOUBLE_TO_FLOAT, DOUBLE_TO_INT, DOUBLE_TO_LONG,
|
||||
FLOAT_TO_DOUBLE, FLOAT_TO_INT, FLOAT_TO_LONG,
|
||||
INT_TO_BYTE, INT_TO_CHAR, INT_TO_DOUBLE, INT_TO_FLOAT, INT_TO_LONG, INT_TO_SHORT,
|
||||
LONG_TO_DOUBLE, LONG_TO_FLOAT, LONG_TO_INT,
|
||||
MUL_DOUBLE_2ADDR, MUL_DOUBLE, MUL_FLOAT_2ADDR, MUL_FLOAT, MUL_INT_2ADDR,
|
||||
MUL_INT_LIT16, MUL_INT_LIT8, MUL_INT, MUL_LONG_2ADDR, MUL_LONG,
|
||||
NEG_DOUBLE, NEG_FLOAT, NEG_INT, NEG_LONG,
|
||||
NOT_INT, NOT_LONG,
|
||||
OR_INT_2ADDR, OR_INT_LIT16, OR_INT_LIT8, OR_INT, OR_LONG_2ADDR, OR_LONG,
|
||||
REM_DOUBLE_2ADDR, REM_DOUBLE, REM_FLOAT_2ADDR, REM_FLOAT, REM_INT_2ADDR,
|
||||
REM_INT_LIT16, REM_INT_LIT8, REM_INT, REM_LONG_2ADDR, REM_LONG,
|
||||
RSUB_INT_LIT8, RSUB_INT,
|
||||
SHL_INT_2ADDR, SHL_INT_LIT8, SHL_INT, SHL_LONG_2ADDR, SHL_LONG,
|
||||
SHR_INT_2ADDR, SHR_INT_LIT8, SHR_INT, SHR_LONG_2ADDR, SHR_LONG,
|
||||
SUB_DOUBLE_2ADDR, SUB_DOUBLE, SUB_FLOAT_2ADDR, SUB_FLOAT, SUB_INT_2ADDR,
|
||||
SUB_INT, SUB_LONG_2ADDR, SUB_LONG,
|
||||
USHR_INT_2ADDR, USHR_INT_LIT8, USHR_INT, USHR_LONG_2ADDR, USHR_LONG,
|
||||
XOR_INT_2ADDR, XOR_INT_LIT16, XOR_INT_LIT8, XOR_INT, XOR_LONG_2ADDR, XOR_LONG,
|
||||
)
|
||||
|
||||
val branchOpcodes = EnumSet.of(
|
||||
GOTO, GOTO_16, GOTO_32,
|
||||
IF_EQ, IF_NE, IF_LT, IF_GE, IF_GT, IF_LE,
|
||||
IF_EQZ, IF_NEZ, IF_LTZ, IF_GEZ, IF_GTZ, IF_LEZ,
|
||||
PACKED_SWITCH_PAYLOAD, SPARSE_SWITCH_PAYLOAD
|
||||
)
|
||||
|
||||
val returnOpcodes = EnumSet.of(
|
||||
RETURN_VOID, RETURN, RETURN_WIDE, RETURN_OBJECT, RETURN_VOID_NO_BARRIER,
|
||||
THROW
|
||||
)
|
||||
|
||||
// Highest 4-bit register available, exclusive. Ideally return a free register less than this.
|
||||
val maxRegister4Bits = 16
|
||||
var bestFreeRegisterFound: Int? = null
|
||||
val usedRegisters = registersToExclude.toMutableSet()
|
||||
|
||||
for (i in startIndex until instructions.count()) {
|
||||
val instruction = getInstruction(i)
|
||||
val instructionRegisters = instruction.getRegistersUsed()
|
||||
|
||||
if (instruction.opcode in returnOpcodes) {
|
||||
// Method returns.
|
||||
usedRegisters.addAll(instructionRegisters)
|
||||
|
||||
// Use lowest register that hasn't been encountered.
|
||||
val freeRegister = (0 until implementation!!.registerCount).find {
|
||||
it !in usedRegisters
|
||||
}
|
||||
if (freeRegister != null) {
|
||||
return freeRegister
|
||||
}
|
||||
if (bestFreeRegisterFound != null) {
|
||||
return bestFreeRegisterFound
|
||||
}
|
||||
|
||||
// Somehow every method register was read from before any register was wrote to.
|
||||
// In practice this never occurs.
|
||||
throw IllegalArgumentException("Could not find a free register from startIndex: " +
|
||||
"$startIndex excluding: $registersToExclude")
|
||||
}
|
||||
|
||||
if (instruction.opcode in branchOpcodes) {
|
||||
if (bestFreeRegisterFound != null) {
|
||||
return bestFreeRegisterFound
|
||||
}
|
||||
// This method is simple and does not follow branching.
|
||||
throw IllegalArgumentException("Encountered a branch statement before a free register could be found")
|
||||
}
|
||||
|
||||
if (instruction.opcode in writeOpcodes) {
|
||||
val writeRegister = instruction.getWriteRegister()
|
||||
|
||||
if (writeRegister !in usedRegisters) {
|
||||
// Verify the register is only used for write and not also as a parameter.
|
||||
// If the instruction uses the write register once then it's not also a read register.
|
||||
if (instructionRegisters.count { register -> register == writeRegister } == 1) {
|
||||
if (writeRegister < maxRegister4Bits) {
|
||||
// Found an ideal register.
|
||||
return writeRegister
|
||||
}
|
||||
|
||||
// Continue searching for a 4-bit register if available.
|
||||
if (bestFreeRegisterFound == null || writeRegister < bestFreeRegisterFound) {
|
||||
bestFreeRegisterFound = writeRegister
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
usedRegisters.addAll(instructionRegisters)
|
||||
}
|
||||
|
||||
// Some methods can have array payloads at the end of the method after a return statement.
|
||||
// But in normal usage this cannot be reached since a branch or return statement
|
||||
// will be encountered before the end of the method.
|
||||
throw IllegalArgumentException("Start index is outside the range of normal control flow: $startIndex")
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Find the [MutableMethod] from a given [Method] in a [MutableClass].
|
||||
@@ -395,7 +567,7 @@ fun Method.findInstructionIndicesReversedOrThrow(opcode: Opcode): List<Int> {
|
||||
|
||||
internal fun MutableMethod.insertFeatureFlagBooleanOverride(literal: Long, extensionsMethod: String) {
|
||||
val literalIndex = indexOfFirstLiteralInstructionOrThrow(literal)
|
||||
val index = indexOfFirstInstructionOrThrow(literalIndex, Opcode.MOVE_RESULT)
|
||||
val index = indexOfFirstInstructionOrThrow(literalIndex, MOVE_RESULT)
|
||||
val register = getInstruction<OneRegisterInstruction>(index).registerA
|
||||
|
||||
val operation = if (register < 16) {
|
||||
@@ -423,7 +595,7 @@ fun BytecodePatchContext.forEachLiteralValueInstruction(
|
||||
classes.forEach { classDef ->
|
||||
classDef.methods.forEach { method ->
|
||||
method.implementation?.instructions?.forEachIndexed { index, instruction ->
|
||||
if (instruction.opcode == Opcode.CONST &&
|
||||
if (instruction.opcode == CONST &&
|
||||
(instruction as WideLiteralInstruction).wideLiteral == literal
|
||||
) {
|
||||
val mutableMethod = proxy(classDef).mutableClass.findMutableMethodOf(method)
|
||||
|
||||
@@ -22,7 +22,7 @@ Second \"item\" text"</string>
|
||||
<resources>
|
||||
<app id="shared">
|
||||
<patch id="misc.checks.checkEnvironmentPatch">
|
||||
<string name="revanced_check_environment_failed_title">فشلت عمليات التحقق</string>
|
||||
<string name="revanced_check_environment_failed_title">فشلت الفحوصات</string>
|
||||
<string name="revanced_check_environment_dialog_open_official_source_button">فتح الموقع الرسمي</string>
|
||||
<string name="revanced_check_environment_dialog_ignore_button">تجاهل</string>
|
||||
<string name="revanced_check_environment_failed_message"><h5>لا يبدو أن هذا التطبيق قد تم تعديله من قبلك.</h5><br>قد لا يعمل هذا التطبيق بشكل صحيح، <b>قد يكون ضارًا أو حتى خطيرًا للاستخدام</b>.<br><br>تشير هذه الفحوصات إلى أن هذا التطبيق تم تعديله مسبقًا أو تم الحصول عليه من شخص آخر:<br><br><small>%1$s</small><br>يوصى بشدة بـ <b>إلغاء تثبيت هذا التطبيق وتعديله بنفسك</b> للتأكد من أنك تستخدم تطبيقًا معتمدًا وآمنًا.<p><br>في حالة تجاهل هذا التحذير، سيتم عرضه مرتين فقط.</string>
|
||||
@@ -30,19 +30,22 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_check_environment_manager_not_expected_installer">لم يتم تثبيته بواسطة ReVanced Manager</string>
|
||||
<string name="revanced_check_environment_not_near_patch_time">تم تعديله قبل أكثر من 10 دقائق</string>
|
||||
<string name="revanced_check_environment_not_near_patch_time_days">تم التعديل منذ %s يوم</string>
|
||||
<string name="revanced_check_environment_not_near_patch_time_invalid">تاريخ إنشاء APK تالف</string>
|
||||
<string name="revanced_check_environment_not_near_patch_time_invalid">تاريخ بناء APK تالف</string>
|
||||
</patch>
|
||||
<patch id="misc.settings.settingsResourcePatch">
|
||||
<string name="revanced_settings_submenu_title">الإعدادات</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">هل ترغب في المتابعة؟</string>
|
||||
<string name="revanced_settings_reset">إعادة التعيين</string>
|
||||
<string name="revanced_settings_restart_title">تحديث وإعادة تشغيل</string>
|
||||
<string name="revanced_settings_restart_title">تحديث وإعادة التشغيل</string>
|
||||
<string name="revanced_settings_restart">إعادة التشغيل</string>
|
||||
<string name="revanced_settings_import">استيراد</string>
|
||||
<string name="revanced_settings_import_copy">نسخ</string>
|
||||
<string name="revanced_settings_import_reset">إعادة تعيين إعدادات ReVanced إلى الوضع الافتراضي</string>
|
||||
<string name="revanced_settings_import_success">تم استيراد %d إعدادات</string>
|
||||
<string name="revanced_settings_import_failure_parse">فشل الاستيراد: %s</string>
|
||||
<string name="revanced_show_menu_icons_title">عرض أيقونات إعدادات ReVanced</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">يتم عرض أيقونات الإعدادات</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">لا يتم عرض أيقونات الإعدادات</string>
|
||||
<string name="revanced_language_title">لغة ReVanced</string>
|
||||
<string name="revanced_language_user_dialog_message">"قد تكون الترجمات لبعض اللغات مفقودة أو غير مكتملة.
|
||||
|
||||
@@ -106,9 +109,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_debug_protobuffer_title">سجل بروتوكول التخزين المؤقت</string>
|
||||
<string name="revanced_debug_protobuffer_summary_on">تتضمن سجلات التصحيح التخزين المؤقت</string>
|
||||
<string name="revanced_debug_protobuffer_summary_off">لا تتضمن سجلات التصحيح التخزين المؤقت</string>
|
||||
<string name="revanced_debug_stacktrace_title">سجل عمليات التطبيق</string>
|
||||
<string name="revanced_debug_stacktrace_summary_on">تتضمن سجلات التصحيح سِجِل عمليات التطبيق</string>
|
||||
<string name="revanced_debug_stacktrace_summary_off">لا تتضمن سجلات التصحيح سِجِل عمليات التطبيق</string>
|
||||
<string name="revanced_debug_stacktrace_title">سجل تتبع المكدس</string>
|
||||
<string name="revanced_debug_stacktrace_summary_on">تتضمن سجلات التصحيح سجل تتبع المكدس</string>
|
||||
<string name="revanced_debug_stacktrace_summary_off">لا تتضمن سجلات التصحيح سجل تتبع المكدس</string>
|
||||
<string name="revanced_debug_toast_on_error_title">عرض ملاحظة عند وجود خطأ في ReVanced</string>
|
||||
<string name="revanced_debug_toast_on_error_summary_on">يتم عرض ملاحظة في حالة حدوث خطأ</string>
|
||||
<string name="revanced_debug_toast_on_error_summary_off">لا يتم عرض ملاحظة في حالة حدوث خطأ</string>
|
||||
@@ -214,9 +217,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_related_videos_title">إخفاء الفيديوهات ذات الصلة في الإجراءات السريعة</string>
|
||||
<string name="revanced_hide_related_videos_summary_on">تم إخفاء الفيديوهات ذات الصلة</string>
|
||||
<string name="revanced_hide_related_videos_summary_off">يتم عرض الفيديوهات ذات الصلة</string>
|
||||
<string name="revanced_hide_image_shelf_title">إخفاء رفوف الصور في نتائج البحث</string>
|
||||
<string name="revanced_hide_image_shelf_summary_on">تم إخفاء رفوف الصورة</string>
|
||||
<string name="revanced_hide_image_shelf_summary_off">يتم عرض رفوف الصورة</string>
|
||||
<string name="revanced_hide_image_shelf_title">إخفاء رف الصورة في نتائج البحث</string>
|
||||
<string name="revanced_hide_image_shelf_summary_on">تم إخفاء رف الصورة</string>
|
||||
<string name="revanced_hide_image_shelf_summary_off">يتم عرض رف الصورة</string>
|
||||
<string name="revanced_hide_latest_posts_ads_title">إخفاء آخر المشاركات</string>
|
||||
<string name="revanced_hide_latest_posts_ads_summary_on">تم إخفاء أحدث المشاركات</string>
|
||||
<string name="revanced_hide_latest_posts_ads_summary_off">يتم عرض أحدث المشاركات</string>
|
||||
@@ -226,7 +229,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_artist_cards_title">إخفاء بطاقات الفنان</string>
|
||||
<string name="revanced_hide_artist_cards_summary_on">تم إخفاء بطاقات الفنان</string>
|
||||
<string name="revanced_hide_artist_cards_summary_off">يتم عرض بطاقات الفنان</string>
|
||||
<string name="revanced_hide_ai_generated_video_summary_section_title">إخفاء \"ملخص الفيديو الذي تم إنشاؤه بواسطة الذكاء الاصطناعي\"</string>
|
||||
<string name="revanced_hide_ai_generated_video_summary_section_title">إخفاء \'ملخص الفيديو الذي تم إنشاؤه بواسطة الذكاء الاصطناعي\'</string>
|
||||
<string name="revanced_hide_ai_generated_video_summary_section_summary_on">تم إخفاء قسم ملخص الفيديو</string>
|
||||
<string name="revanced_hide_ai_generated_video_summary_section_summary_off">يتم عرض قسم ملخص الفيديو</string>
|
||||
<string name="revanced_hide_attributes_section_title">إخفاء الصفات</string>
|
||||
@@ -253,31 +256,31 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_description_components_screen_title">وصف الفيديو</string>
|
||||
<string name="revanced_hide_description_components_screen_summary">إخفاء أو عرض مكونات وصف الفيديو</string>
|
||||
<string name="revanced_hide_filter_bar_screen_title">شريط التصفية</string>
|
||||
<string name="revanced_hide_filter_bar_screen_summary">إخفاء أو إظهار شريط الفلتر في الخلاصة ونتائج البحث ومقاطع الفيديو ذات الصلة</string>
|
||||
<string name="revanced_hide_filter_bar_screen_summary">إخفاء أو عرض شريط الفلتر في الموجز ونتائج البحث والفيديوهات ذات الصلة</string>
|
||||
<string name="revanced_hide_filter_bar_feed_in_feed_title">إخفاء في الموجز</string>
|
||||
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">مخفي في الموجز</string>
|
||||
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">يعرض في الموجز</string>
|
||||
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">يُعرض في الموجز</string>
|
||||
<string name="revanced_hide_filter_bar_feed_in_search_title">إخفاء في نتائج البحث</string>
|
||||
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">مخفي في نتائج البحث</string>
|
||||
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">يظهر في نتائج البحث</string>
|
||||
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">يُعرض في نتائج البحث</string>
|
||||
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">إخفاء في الفيديوهات ذات الصلة</string>
|
||||
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">مخفي في الفيديوهات ذات الصلة</string>
|
||||
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">يعرض في الفيديوهات ذات الصلة</string>
|
||||
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">يُعرض في الفيديوهات ذات الصلة</string>
|
||||
<string name="revanced_comments_screen_title">التعليقات</string>
|
||||
<string name="revanced_comments_screen_summary">إخفاء أو عرض مكونات قسم التعليقات</string>
|
||||
<string name="revanced_hide_comments_ai_chat_summary_title">إخفاء ملخص دردشة الذكاء الاصطناعي</string>
|
||||
<string name="revanced_hide_comments_ai_chat_summary_title">إخفاء ملخص محادثات الذكاء الاصطناعي</string>
|
||||
<string name="revanced_hide_comments_ai_chat_summary_summary_on">تم إخفاء ملخص المحادثات</string>
|
||||
<string name="revanced_hide_comments_ai_chat_summary_summary_off">يتم عرض ملخص المحادثات</string>
|
||||
<string name="revanced_hide_comments_ai_summary_title">إخفاء ملخص تعليقات الذكاء الاصطناعي</string>
|
||||
<string name="revanced_hide_comments_ai_summary_summary_on">ملخص التعليقات مخفي</string>
|
||||
<string name="revanced_hide_comments_ai_summary_summary_off">ملخص التعليقات معروض</string>
|
||||
<string name="revanced_hide_comments_ai_summary_summary_on">تم إخفاء ملخص التعليقات</string>
|
||||
<string name="revanced_hide_comments_ai_summary_summary_off">يتم عرض ملخص التعليقات</string>
|
||||
<string name="revanced_hide_comments_by_members_header_title">إخفاء رأس \'تعليقات الأعضاء\'</string>
|
||||
<string name="revanced_hide_comments_by_members_header_summary_on">تم إخفاء علامة تعليقات من الأعضاء</string>
|
||||
<string name="revanced_hide_comments_by_members_header_summary_off">يتم عرض علامة تعليقات من الأعضاء</string>
|
||||
<string name="revanced_hide_comments_section_title">إخفاء قسم التعليقات</string>
|
||||
<string name="revanced_hide_comments_section_summary_on">تم إخفاء قسم التعليقات</string>
|
||||
<string name="revanced_hide_comments_section_summary_off">يتم عرض قسم التعليقات</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">إخفاء زر \'إنشاء مقطع Short\'</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>
|
||||
@@ -305,7 +308,7 @@ Second \"item\" text"</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">قائمة سلاسل منشئ مسار المكونات المراد تصفيتها مفصولة بسطر جديد</string>
|
||||
<string name="revanced_custom_filter_toast_invalid_syntax">فلتر مخصص غير صالح: %s</string>
|
||||
<string name="revanced_hide_keyword_content_screen_title">إخفاء محتوى الكلمات الرئيسية</string>
|
||||
<string name="revanced_hide_keyword_content_screen_title">إخفاء محتوى الكلمات المفتاحية</string>
|
||||
<string name="revanced_hide_keyword_content_screen_summary">إخفاء فيديوهات البحث والموجز باستخدام فلاتر الكلمات المفتاحية</string>
|
||||
<string name="revanced_hide_keyword_content_home_title">إخفاء فيديوهات الصفحة الرئيسية بواسطة الكلمات المفتاحية</string>
|
||||
<string name="revanced_hide_keyword_content_home_summary_on">تتم تصفية الفيديوهات في علامة التبويب \"الصفحة الرئيسية\" حسب الكلمات المفتاحية</string>
|
||||
@@ -335,11 +338,11 @@ Second \"item\" text"</string>
|
||||
<!-- Translations _must_ use a localized example. For languages that do not use spaces between words (Chinese, Japanese, etc.) the English AI example should be used since no localized examples exist. Or if using machine translations, or if nobody wants to think of a localized example, then the English 'ai' example should be left as-is. -->
|
||||
<string name="revanced_hide_keyword_content_about_whole_words_summary">سيؤدي وضع علامة اقتباس مزدوجة حول كلمة رئيسية/عبارة إلى منع التطابقات الجزئية لعناوين الفيديو وأسماء القنوات.<br><br>على سبيل المثال،<br><b>\"ai\"</b> سيخفي الفيديو: <b>How does AI work?</b><br>ولكن لن يخفي: <b>What does fair use mean?</b></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_hide_keyword_toast_invalid_common">لا يمكن استخدام الكلمة الرئيسية: %s</string>
|
||||
<string name="revanced_hide_keyword_toast_invalid_common_whole_word_required">إضافة اقتباسات لاستخدام الكلمة الرئيسية: %s</string>
|
||||
<string name="revanced_hide_keyword_toast_invalid_conflicting">الكلمة الرئيسية لها بيانات متضاربة: %s</string>
|
||||
<string name="revanced_hide_keyword_toast_invalid_length">الكلمة الرئيسية قصيرة جدًا وتتطلب اقتباسات: %s</string>
|
||||
<string name="revanced_hide_keyword_toast_invalid_broad">الكلمة الرئيسية سوف تخفي جميع الفيديوهات: %s</string>
|
||||
<string name="revanced_hide_keyword_toast_invalid_common">لا يمكن استخدام الكلمة المفتاحية: %s</string>
|
||||
<string name="revanced_hide_keyword_toast_invalid_common_whole_word_required">إضافة اقتباسات لاستخدام الكلمة المفتاحية: %s</string>
|
||||
<string name="revanced_hide_keyword_toast_invalid_conflicting">الكلمة المفتاحية لها بيانات متضاربة: %s</string>
|
||||
<string name="revanced_hide_keyword_toast_invalid_length">الكلمة المفتاحية قصيرة جدًا وتتطلب اقتباسات: %s</string>
|
||||
<string name="revanced_hide_keyword_toast_invalid_broad">الكلمة المفتاحية سوف تخفي جميع الفيديوهات: %s</string>
|
||||
</patch>
|
||||
<patch id="ad.general.hideAdsResourcePatch">
|
||||
<string name="revanced_hide_general_ads_title">إخفاء الإعلانات العامة</string>
|
||||
@@ -359,20 +362,20 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_self_sponsor_ads_title">إخفاء بطاقات الرعاية الذاتية</string>
|
||||
<string name="revanced_hide_self_sponsor_ads_summary_on">تم إخفاء بطاقات الرعاية الذاتية</string>
|
||||
<string name="revanced_hide_self_sponsor_ads_summary_off">يتم عرض بطاقات الرعاية الذاتية</string>
|
||||
<string name="revanced_hide_products_banner_title">إخفاء لافتة \"عرض المنتجات\"</string>
|
||||
<string name="revanced_hide_products_banner_title">إخفاء لافتة \'عرض المنتجات\'</string>
|
||||
<string name="revanced_hide_products_banner_summary_on">تم إخفاء البانر</string>
|
||||
<string name="revanced_hide_products_banner_summary_off">يتم عرض البانر</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_title">إخفاء لافتة شاشة المتجر النهائية</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_summary_on">تم إخفاء لافتة المتجر</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_summary_off">يتم عرض لافتة المتجر</string>
|
||||
<string name="revanced_hide_player_store_shelf_title">إخفاء رف مشغل التسوق</string>
|
||||
<string name="revanced_hide_player_store_shelf_summary_on">تم إخفاء رفوف التسوق</string>
|
||||
<string name="revanced_hide_player_store_shelf_summary_off">يتم عرض رفوف التسوق</string>
|
||||
<string name="revanced_hide_player_store_shelf_summary_on">تم إخفاء رف التسوق</string>
|
||||
<string name="revanced_hide_player_store_shelf_summary_off">يتم عرض رف التسوق</string>
|
||||
<string name="revanced_hide_shopping_links_title">إخفاء روابط التسوق في وصف الفيديو</string>
|
||||
<string name="revanced_hide_shopping_links_summary_on">تم إخفاء روابط التسوق في وصف الفيديو</string>
|
||||
<string name="revanced_hide_shopping_links_summary_off">يتم عرض روابط التسوق في وصف الفيديو</string>
|
||||
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
|
||||
<string name="revanced_hide_visit_store_button_title">إخفاء زر \"زيارة المتجر\" على صفحات القناة</string>
|
||||
<string name="revanced_hide_visit_store_button_title">إخفاء زر \'زيارة المتجر\' على صفحات القناة</string>
|
||||
<string name="revanced_hide_visit_store_button_summary_on">تم إخفاء الزر في صفحة القناة</string>
|
||||
<string name="revanced_hide_visit_store_button_summary_off">يتم عرض الزر في صفحة القناة</string>
|
||||
<string name="revanced_hide_web_search_results_title">إخفاء نتائج بحث الويب</string>
|
||||
@@ -387,7 +390,7 @@ Second \"item\" text"</string>
|
||||
<patch id="ad.getpremium.hideGetPremiumPatch">
|
||||
<string name="revanced_hide_get_premium_title">إخفاء ترقية YouTube Premium</string>
|
||||
<string name="revanced_hide_get_premium_summary_on">تم إخفاء عروض YouTube Premium الترويجية تحت مشغل الفيديو</string>
|
||||
<string name="revanced_hide_get_premium_summary_off">يتم عرض عروض YouTube Premium الترويجية تحت مشغل الفيديو</string>
|
||||
<string name="revanced_hide_get_premium_summary_off">يتم إظهار عروض YouTube Premium الترويجية تحت مشغل الفيديو</string>
|
||||
</patch>
|
||||
<patch id="ad.video.videoAdsPatch">
|
||||
<string name="revanced_hide_video_ads_title">إخفاء إعلانات الفيديو</string>
|
||||
@@ -430,9 +433,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_disable_precise_seeking_gesture_summary_off">تم تمكين الإيماءة</string>
|
||||
</patch>
|
||||
<patch id="interaction.seekbar.enableSeekbarTappingPatch">
|
||||
<string name="revanced_seekbar_tapping_title">تمكين النقر للبحث</string>
|
||||
<string name="revanced_seekbar_tapping_summary_on">تم تمكين النقر للتنقل</string>
|
||||
<string name="revanced_seekbar_tapping_summary_off">تم تعطيل النقر للبحث</string>
|
||||
<string name="revanced_seekbar_tapping_title">تمكين النقر للتمرير</string>
|
||||
<string name="revanced_seekbar_tapping_summary_on">تم تمكين النقر للتمرير</string>
|
||||
<string name="revanced_seekbar_tapping_summary_off">تم تعطيل النقر للتمرير</string>
|
||||
</patch>
|
||||
<patch id="interaction.swipecontrols.swipeControlsResourcePatch">
|
||||
<string name="revanced_swipe_brightness_title">التحكم بالسطوع عن طريق ايماءة التمرير</string>
|
||||
@@ -667,17 +670,17 @@ Second \"item\" text"</string>
|
||||
<!-- 'home' should be translated using the same localized wording YouTube displays for the home tab. -->
|
||||
<string name="revanced_hide_shorts_home_title">إخفاء Shorts في موجز الصفحة الرئيسية</string>
|
||||
<string name="revanced_hide_shorts_home_summary_on">مخفية في الصفحة الرئيسية والفيديوهات ذات الصلة</string>
|
||||
<string name="revanced_hide_shorts_home_summary_off">تعرض في الصفحة الرئيسية والفيديوهات ذات الصلة</string>
|
||||
<string name="revanced_hide_shorts_home_summary_off">تُعرض في الصفحة الرئيسية والفيديوهات ذات الصلة</string>
|
||||
<!-- 'subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
|
||||
<string name="revanced_hide_shorts_subscriptions_title">إخفاء Shorts في موجز الاشتراكات</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_on">مخفية في موجز الاشتراكات</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_off">تعرض في موجز الاشتراكات</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_off">تُعرض في موجز الاشتراكات</string>
|
||||
<string name="revanced_hide_shorts_search_title">إخفاء Shorts في نتائج البحث</string>
|
||||
<string name="revanced_hide_shorts_search_summary_on">مخفية في نتائج البحث</string>
|
||||
<string name="revanced_hide_shorts_search_summary_off">تعرض في نتائج البحث</string>
|
||||
<string name="revanced_hide_shorts_search_summary_off">تُعرض في نتائج البحث</string>
|
||||
<string name="revanced_hide_shorts_history_title">إخفاء Shorts في سجل المشاهدة</string>
|
||||
<string name="revanced_hide_shorts_history_summary_on">مخفية في سجل المشاهدة</string>
|
||||
<string name="revanced_hide_shorts_history_summary_off">تعرض في سجل المشاهدة</string>
|
||||
<string name="revanced_hide_shorts_history_summary_off">تُعرض في سجل المشاهدة</string>
|
||||
<!-- 'join' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
<string name="revanced_hide_shorts_join_button_title">إخفاء زر الانضمام</string>
|
||||
<string name="revanced_hide_shorts_join_button_summary_on">تم إخفاء زر الانضمام</string>
|
||||
@@ -766,7 +769,7 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
|
||||
<string name="revanced_end_screen_suggested_video_title">إخفاء الفيديو المقترح في شاشة النهاية</string>
|
||||
<string name="revanced_end_screen_suggested_video_summary_on">"يتم إخفاء الفيديو المقترح في شاشة النهاية عند إيقاف التشغيل التلقائي
|
||||
<string name="revanced_end_screen_suggested_video_summary_on">"تم إخفاء الفيديو المقترح في شاشة النهاية عند إيقاف التشغيل التلقائي
|
||||
|
||||
يمكن تغيير التشغيل التلقائي في إعدادات YouTube:
|
||||
الإعدادات ← التشغيل ← تشغيل الفيديو التالي تلقائيًا"</string>
|
||||
@@ -864,7 +867,7 @@ Second \"item\" text"</string>
|
||||
|
||||
مصغرات شريط التقدم سوف تستخدم نفس جودة الفيديو الحالي.
|
||||
|
||||
تعمل هذه الميزة بشكل أفضل مع جودة فيديو 720p أو أقل وعند استخدام اتصال إنترنت سريع جداً."</string>
|
||||
تعمل هذه الميزة بشكل أفضل مع جودة فيديو 720p أو أقل وعند استخدام اتصال إنترنت سريع جدًا."</string>
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_title">استعادة مصغرات شريط التقدم القديمة</string>
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">مصغرات شريط التقدم ستظهر فوق شريط تقدم الفيديو</string>
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">مصغرات شريط التقدم ستظهر في ملء الشاشة</string>
|
||||
@@ -937,15 +940,15 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_sb_settings_revanced_export_user_id_warning_dismiss">لا تعرض مرة أخرى</string>
|
||||
<string name="revanced_sb_diff_segments">تغيير سلوك المقطع</string>
|
||||
<string name="revanced_sb_segments_sponsor">الراعي</string>
|
||||
<string name="revanced_sb_segments_sponsor_sum">الترويج المدفوع الأجر، والإحالات المدفوعة الأجر والإعلانات المباشرة. ليس للترويج الذاتي أو لصراعات مجانية للقضايا/المبدعين/المواقع الإلكترونية/المنتجات التي يحبون الحصول عليها</string>
|
||||
<string name="revanced_sb_segments_sponsor_sum">الترويج المدفوع، والإحالات المدفوعة، والإعلانات المباشرة. ليس للترويج الذاتي أو الترويج المجاني للقضايا/المبدعين/المواقع الإلكترونية/المنتجات التي يفضلونها</string>
|
||||
<string name="revanced_sb_segments_selfpromo">ترويج شخصي/غير مدفوع الأجر</string>
|
||||
<string name="revanced_sb_segments_selfpromo_sum">مشابهة لـ \"الراعي\" باستثناء ما يتعلق بالإعلانات غير المدفوعة الأجر أو الذاتية. ويشمل ذلك أقسام عن السلع أو التبرعات أو المعلومات المتعلقة بمن تعاونوا مع ناشر المحتوى</string>
|
||||
<string name="revanced_sb_segments_selfpromo_sum">مشابهة لـ \'الراعي\' باستثناء ما يتعلق بالإعلانات غير المدفوعة الأجر أو الذاتية. ويشمل ذلك أقسام عن السلع أو التبرعات أو المعلومات المتعلقة بمن تعاونوا مع ناشر المحتوى</string>
|
||||
<string name="revanced_sb_segments_interaction">تذكير بالتفاعل (اشتراك)</string>
|
||||
<string name="revanced_sb_segments_interaction_sum">تذكير قصير للإعجاب أو الاشتراك أو المتابعة في منتصف المحتوى. إذا كانت طويلة أو تتعلق بشيء محدد، فيجب أن تكون خاضعة للترويج الشخصي بدلاً من ذلك</string>
|
||||
<string name="revanced_sb_segments_highlight">الأبرز</string>
|
||||
<string name="revanced_sb_segments_highlight_sum">الجزء من الفيديو الذي يبحث عنه معظم الناس</string>
|
||||
<string name="revanced_sb_segments_intro">المقدمة/فاصل</string>
|
||||
<string name="revanced_sb_segments_intro_sum">فاصل زمني بدون محتوى فعلي. يمكن أن يكون وقفاً مؤقتاً، أو إطارًا ثابتاً، أو تكرارًا. لا يتضمن التحولات التي تحتوي على معلومات</string>
|
||||
<string name="revanced_sb_segments_intro_sum">فاصل زمني بدون محتوى فعلي. قد يكون توقفًا مؤقتًا، أو إطارًا ثابتًا، أو رسومًا متحركة متكررة. لا يتضمن انتقالات تحتوي على معلومات</string>
|
||||
<string name="revanced_sb_segments_outro">الخاتمة/تترات النهاية</string>
|
||||
<string name="revanced_sb_segments_outro_sum">تتر النهاية أو عندما تظهر بطاقات نهاية YouTube، نهايات غير منطوقة. ليس للاستنتاجات مع المعلومات</string>
|
||||
<string name="revanced_sb_segments_preview">معاينة/موجز/ربط</string>
|
||||
@@ -1079,9 +1082,9 @@ Second \"item\" text"</string>
|
||||
تصميم الجهاز اللوحي
|
||||
• مشاركات المجتمع مخفية
|
||||
|
||||
تصميم السيارة
|
||||
تصميم Automotive
|
||||
• يتم فتح Shorts في المشغل العادي
|
||||
• يتم تنظيم الخلاصة حسب المواضيع والقنوات"</string>
|
||||
• يتم تنظيم الموجز حسب المواضيع والقنوات"</string>
|
||||
</patch>
|
||||
<patch id="layout.spoofappversion.spoofAppVersionPatch">
|
||||
<string name="revanced_spoof_app_version_title">خِداع إصدار التطبيق</string>
|
||||
@@ -1155,6 +1158,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_miniplayer_type_entry_4">حديث 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">حديث 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">حديث 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">حديث 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">تمكين الزوايا المستديرة</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">الزوايا مستديرة</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">الزوايا مربعة</string>
|
||||
@@ -1174,14 +1178,14 @@ Second \"item\" text"</string>
|
||||
|
||||
يمكن سحب المشغل المصغر خارج الشاشة إلى اليسار أو اليمين"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">تم تعطيل إيماءة السحب الأفقية</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">إخفاء زر الإغلاق</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">تم إخفاء زر الإغلاق</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">يتم عرض زر الإغلاق</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">إخفاء أزرار التوسيع والإغلاق</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">إخفاء أزرار الواجهة</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">تم إخفاء أزرار الواجهة</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">يتم عرض أزرار الواجهة</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">إخفاء زري التوسيع والإغلاق</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"تم إخفاء الأزرار
|
||||
|
||||
مرر للتوسيع أو الإغلاق"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">يتم عرض أزرار التوسيع والإغلاق</string>
|
||||
اسحب للتوسيع أو الإغلاق"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">يتم عرض زري التوسيع والإغلاق</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">إخفاء النصوص الفرعية</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">تم إخفاء النصوص الفرعية</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_off">يتم عرض النصوص الفرعية</string>
|
||||
@@ -1217,7 +1221,7 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="layout.thumbnails.alternativeThumbnailsPatch">
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
|
||||
<string name="revanced_alt_thumbnail_home_title">علامة تبويب الصفحة الرئيسية</string>
|
||||
<string name="revanced_alt_thumbnail_home_title">علامة التبويب الصفحة الرئيسية</string>
|
||||
<!-- 'Subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
|
||||
<string name="revanced_alt_thumbnail_subscription_title">علامة التبويب الاشتراكات</string>
|
||||
<!-- 'You' should be translated using the same localized wording YouTube displays for the You (library) tab. -->
|
||||
@@ -1228,11 +1232,11 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_2">DeArrow & المصّغرات الأصلية</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_3">DeArrow & اللقطات الثابتة</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_4">اللقطات الثابتة</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_about_summary">"يوفر DeArrow مصغرات فيديو من مصادر جماعية لفيديوهات YouTube. هذه المصغرات غالبا ما تكون أكثر صلة من تلك المقدمة من YouTube
|
||||
<string name="revanced_alt_thumbnail_dearrow_about_summary">"يوفر DeArrow مصغرات فيديو من مصادر جماعية لفيديوهات YouTube. هذه المصغرات غالبًا ما تكون أكثر صلة من تلك المقدمة من YouTube
|
||||
|
||||
إذا تم تفعيلها، سيتم إرسال روابط الفيديو إلى خادم API ولن يتم إرسال أي بيانات أخرى. إذا كان الفيديو لا يحتوي على مصغرات DArrow، سيتم عرض المقاطع الأصلية أو اللقطات الثابتة
|
||||
إذا تم تفعيلها، سيتم إرسال روابط الفيديو إلى خادم API ولن يتم إرسال أي بيانات أخرى. إذا كان الفيديو لا يحتوي على مصغرات DeArrow، سيتم عرض المقاطع الأصلية أو اللقطات الثابتة
|
||||
|
||||
اضغط هنا لمعرفة المزيد عن DArrow"</string>
|
||||
اضغط هنا لمعرفة المزيد عن DeArrow"</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_connection_toast_title">عرض ملاحظة إذا كان API غير متاح</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_on">يتم عرض ملاحظة إذا كان DeArrow غير متوفر</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_off">لا يتم عرض ملاحظة إذا كان DeArrow غير متوفر</string>
|
||||
@@ -1308,7 +1312,7 @@ Second \"item\" text"</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>
|
||||
<string name="revanced_force_original_audio_not_available">لاستخدام هذه الميزة، غيّر \'Spoof Video Streams\' إلى iOS TV</string>
|
||||
</patch>
|
||||
<patch id="video.quality.rememberVideoQualityPatch">
|
||||
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
|
||||
@@ -1322,7 +1326,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_remember_shorts_quality_last_selected_summary_on">تنطبق تغييرات الجودة على جميع فيديوهات Shorts</string>
|
||||
<string name="revanced_remember_shorts_quality_last_selected_summary_off">تنطبق تغييرات الجودة فقط على فيديو Short الحالي</string>
|
||||
<string name="revanced_shorts_quality_default_wifi_title">جودة Shorts الافتراضية على شبكة Wi-Fi</string>
|
||||
<string name="revanced_shorts_quality_default_mobile_title">جودة Shorts الافتراضية على شبكة الجوال</string>
|
||||
<string name="revanced_shorts_quality_default_mobile_title">جودة Shorts الافتراضية على شبكة الجوّال</string>
|
||||
<string name="revanced_remember_video_quality_mobile">الجوّال</string>
|
||||
<string name="revanced_remember_video_quality_wifi">Wi-Fi</string>
|
||||
<string name="revanced_remember_video_quality_toast">تم تغيير جودة %1$s الافتراضية إلى: %2$s</string>
|
||||
@@ -1358,7 +1362,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_disable_hdr_video_summary_off">تم تمكين فيديو HDR</string>
|
||||
</patch>
|
||||
<patch id="video.quality.advancedVideoQualityMenuPatch">
|
||||
<string name="revanced_advanced_video_quality_menu_title">إظهار قائمة جودة الفيديو المتقدمة</string>
|
||||
<string name="revanced_advanced_video_quality_menu_title">عرض قائمة جودة الفيديو المتقدمة</string>
|
||||
<string name="revanced_advanced_video_quality_menu_summary_on">يتم عرض قائمة جودة الفيديو المتقدمة</string>
|
||||
<string name="revanced_advanced_video_quality_menu_summary_off">لا يتم عرض قائمة جودة الفيديو المتقدمة</string>
|
||||
</patch>
|
||||
@@ -1392,7 +1396,7 @@ AVC لديه حد أقصى للدقة 1080p، لا يتوفر ترميز الص
|
||||
• مستوى الصوت الثابت غير متاح
|
||||
• فرض الصوت الأصلي غير متوفر"</string>
|
||||
<string name="revanced_spoof_video_streams_about_no_av1">• لا يوجد ترميز الفيديو AV1</string>
|
||||
<string name="revanced_spoof_video_streams_about_kids_videos">• الفيديوات العربية لا يمكن تشغيل أو في وضع التشغيل أو في حالة الخفية</string>
|
||||
<string name="revanced_spoof_video_streams_about_kids_videos">• قد لا يتم تشغيل الفيديوهات المخصصة للأطفال عند تسجيل الخروج أو عند استخدام وضع التصفح المتخفي</string>
|
||||
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">عرض في إحصاءات تقنية</string>
|
||||
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_on">يتم عرض نوع العميل في إحصاءات تقنية</string>
|
||||
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_off">تم إخفاء نوع العميل في إحصاءات تقنية</string>
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">ReVanced tənzimləmələr standarta təyin edildi</string>
|
||||
<string name="revanced_settings_import_success">%d tənzimləmə idxal edildi</string>
|
||||
<string name="revanced_settings_import_failure_parse">Uğursuz idxal prosesi: %s</string>
|
||||
<string name="revanced_show_menu_icons_title">ReVanced tənzimləmə nişanların göstər</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">Tənzimləmə nişanları göstərilir</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">Tənzimləmə nişanları göstərilmir</string>
|
||||
<string name="revanced_language_title">ReVanced dili</string>
|
||||
<string name="revanced_language_user_dialog_message">"Bəzi dillər üçün tərcümələr əskik və ya səhv ola bilər.
|
||||
|
||||
@@ -226,6 +229,9 @@ Gözlənilməz hallardan xəbərdar olmayacaqsınız."</string>
|
||||
<string name="revanced_hide_artist_cards_title">Sənətçi kartlarını gizlət</string>
|
||||
<string name="revanced_hide_artist_cards_summary_on">Sənətçi kartları gizlidir</string>
|
||||
<string name="revanced_hide_artist_cards_summary_off">Sənətçi kartları göstərilir</string>
|
||||
<string name="revanced_hide_ai_generated_video_summary_section_title">\"AI ilə yaradılan video xülasəsini\" gizlət</string>
|
||||
<string name="revanced_hide_ai_generated_video_summary_section_summary_on">Video xülasə bölməsi gizlədilib</string>
|
||||
<string name="revanced_hide_ai_generated_video_summary_section_summary_off">Video xülasə bölməsi göstərilir</string>
|
||||
<string name="revanced_hide_attributes_section_title">Atributları Gizlət</string>
|
||||
<string name="revanced_hide_attributes_section_summary_on">Seçilən yerlər, Oyunlar, Musiqi və qeyd edilən insanlar bölmələri gizlədilir</string>
|
||||
<string name="revanced_hide_attributes_section_summary_off">Seçilən yerlər, Oyunlar, Musiqi və qeyd edilən insanlar bölmələri görünür</string>
|
||||
@@ -262,8 +268,12 @@ Gözlənilməz hallardan xəbərdar olmayacaqsınız."</string>
|
||||
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Əlaqəli videolarda görünür</string>
|
||||
<string name="revanced_comments_screen_title">Şərhlər</string>
|
||||
<string name="revanced_comments_screen_summary">Şərhlər bölməsi elementlərin gizlət və ya göstər</string>
|
||||
<string name="revanced_hide_comments_ai_chat_summary_title">AI Söhbət Xülasəsini Gizlət</string>
|
||||
<string name="revanced_hide_comments_ai_chat_summary_summary_on">Söhbət yekunu gizlidir </string>
|
||||
<string name="revanced_hide_comments_ai_chat_summary_summary_off">Söhbət yekunu görünür</string>
|
||||
<string name="revanced_hide_comments_ai_summary_title">AI Ṣərhlər Xülasəsini Gizlət</string>
|
||||
<string name="revanced_hide_comments_ai_summary_summary_on">Ṣərh yekunu gizlidir </string>
|
||||
<string name="revanced_hide_comments_ai_summary_summary_off">Şərh yekunu görünür</string>
|
||||
<string name="revanced_hide_comments_by_members_header_title">\'Üzvlərin şərhləri\' başlığını gizlət</string>
|
||||
<string name="revanced_hide_comments_by_members_header_summary_on">Üzvlərin şərhləri başlığı gizlidir</string>
|
||||
<string name="revanced_hide_comments_by_members_header_summary_off">Üzvlərin şərhləri başlığı görünür</string>
|
||||
@@ -423,6 +433,9 @@ Bu xüsusiyyət yalnız köhnə cihazlar üçün mövcuddur"</string>
|
||||
<string name="revanced_disable_precise_seeking_gesture_summary_off">Jest aktivləşdirilib</string>
|
||||
</patch>
|
||||
<patch id="interaction.seekbar.enableSeekbarTappingPatch">
|
||||
<string name="revanced_seekbar_tapping_title">Axtarmaq üçün toxun\'u aktivləşdir</string>
|
||||
<string name="revanced_seekbar_tapping_summary_on">Axtarmaq üçün toxun, aktivdir</string>
|
||||
<string name="revanced_seekbar_tapping_summary_off">Axtarmaq üçün toxun qapalıdır</string>
|
||||
</patch>
|
||||
<patch id="interaction.swipecontrols.swipeControlsResourcePatch">
|
||||
<string name="revanced_swipe_brightness_title">Parlaqlıq jestini aktivləşdir</string>
|
||||
@@ -435,6 +448,9 @@ Ekranın sol tərəfində dikinə sürüşdürərək parlaqlığı tənzimləyin
|
||||
|
||||
Ekranın sağ tərəfində düzünə sürüşdürərək səs səviyyəsini tənzimlə"</string>
|
||||
<string name="revanced_swipe_volume_summary_off">Tam ekran səs sürüşdürməsi qapalıdır</string>
|
||||
<string name="revanced_swipe_press_to_engage_title">Sürüşdürmə jesti üçün sıxmanı aktiv et</string>
|
||||
<string name="revanced_swipe_press_to_engage_summary_on">Sürüşdürmə üçün sıxma aktivdir</string>
|
||||
<string name="revanced_swipe_press_to_engage_summary_off">Sürüşdürmə üçün sıxma qapalıdır</string>
|
||||
<string name="revanced_swipe_haptic_feedback_title">Əks-əlaqə reaksiyasını aktivləşdir</string>
|
||||
<string name="revanced_swipe_haptic_feedback_summary_on">Əks-əlaqə reaksiyası aktivləşdirilib</string>
|
||||
<string name="revanced_swipe_haptic_feedback_summary_off">Əks-əlaqə reaksiyası qeyri-aktivdir</string>
|
||||
@@ -542,6 +558,7 @@ Bu seçimi dəyişdirmə işə düşmürsə, Gizli rejimə keçməyə çalışı
|
||||
<string name="revanced_disable_translucent_status_bar_title">Yarımşəffaf mövqe cizgisin qapat</string>
|
||||
<string name="revanced_disable_translucent_status_bar_summary_on">Mövqe cizgisi qeyri-şəffafdır</string>
|
||||
<string name="revanced_disable_translucent_status_bar_summary_off">Mövqe cizgisi qeyri-şəffaf və ya şəffafdır</string>
|
||||
<string name="revanced_disable_translucent_status_bar_user_dialog_message">Bəzi cihazlarda bu xüsusiyyət aktivləşməsi sistem fəaliyyət cərgəsini şəffaf-a dəyişə bilər.</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_title">Açıq temada şəffaf cizgini qapat</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_on">İşıqlı rejim fəaliyyət cərgəsi qeyri-şəffafdır</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_off">İşıqlı rejim fəaliyyət cərgəsi qeyri-şəffaf və ya şəffafdır</string>
|
||||
@@ -1140,6 +1157,7 @@ Sonradan qapadılarsa, UI səhvlərin önləmək üçün tətbiq məlumatların
|
||||
<string name="revanced_miniplayer_type_entry_4">Müasir 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Müasir 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Müasir 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">Müasir 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">Dairəvi küncləri aktivləşdir</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Künclər dairəvidir</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Künclər kvadratdır</string>
|
||||
@@ -1159,9 +1177,9 @@ Kiçik oynadıcı ekranın istənilən küncünə sürüklənə bilər"</string>
|
||||
|
||||
Kiçik oynadıcı ekrandan sola və ya sağa sürüklənə bilər"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Üfüqi sürükləmə jesti qapatıldı</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">\"Bağla\" düyməsini gizlət</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">\"Bağla\" düyməsi gizlidir</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">\"Bağla\" düyməsi göstərilir</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Örtük düymələrini gizlət</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Örtük düymələri gizlidir</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Örtük düymələri görünür</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Genişləndir və bağla düymələrini gizlət</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Düymələr gizlidir
|
||||
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">Налады ReVanced скінуты да стандартных</string>
|
||||
<string name="revanced_settings_import_success">Імпартавана %d налад</string>
|
||||
<string name="revanced_settings_import_failure_parse">Памылка імпарту: %s</string>
|
||||
<string name="revanced_show_menu_icons_title">Паказваць значкі налад ReVanced</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">Значкі налад паказваюцца</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">Значкі налад не паказваюцца</string>
|
||||
<string name="revanced_language_title">Мова ReVanced</string>
|
||||
<string name="revanced_language_user_dialog_message">"Пераклады для некаторых моў могуць быць адсутнымі або няпоўнымі.
|
||||
|
||||
@@ -1156,6 +1159,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_miniplayer_type_entry_4">Сучасны 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Сучасны 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Сучасны 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">Сучасны 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">Включить закругленные углы</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Углы закруглены</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Углы квадратные</string>
|
||||
@@ -1175,14 +1179,14 @@ Second \"item\" text"</string>
|
||||
|
||||
Міні-прайгравальнік можна перацягнуць за межы экрана ўлева ці ўправа"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Горизонтальный жест перетаскивания отключен</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Скрыть кнопку закрытия</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Кнопка закрытия скрыта</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Кнопка закрытия отображается</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Схаваць кнопкі накладання</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Кнопкі накладання схаваныя</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Кнопкі накладання паказаны</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Схаваць кнопкі разгортвання і закрыцця</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Кнопкі схаваны
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Кнопкі схаваныя
|
||||
|
||||
Працягвайце пальцам, каб разгарнуць або закрыць"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Паказваюцца кнопкі разгарнуць і закрыць</string>
|
||||
Правядзіце пальцам, каб разгарнуць ці закрыць"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Кнопкі разгортвання і закрыцця паказаны</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">Схаваць падтэксты</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">Падтэксты схаваныя</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_off">Паказваюцца падтэксты</string>
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">Настройките на ReVanced бяха нулирани</string>
|
||||
<string name="revanced_settings_import_success">Следните настройки бяха импортирани успешно: %d</string>
|
||||
<string name="revanced_settings_import_failure_parse">Импортирането беше неуспешно: %s</string>
|
||||
<string name="revanced_show_menu_icons_title">Показване на иконите на настройките на ReVanced</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">Иконите на настройките се показват</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">Иконите на настройките не се показват</string>
|
||||
<string name="revanced_language_title">Език на ReVanced</string>
|
||||
<string name="revanced_language_user_dialog_message">"Преводите на някои езици може да липсват или да са непълни.
|
||||
|
||||
@@ -1155,6 +1158,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_miniplayer_type_entry_4">Модерен 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Модерен 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Модерен 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">Модерен 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">Активирайте заоблени ъгли</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Ъглите са заоблени</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Ъглите са нормални</string>
|
||||
@@ -1174,14 +1178,14 @@ Second \"item\" text"</string>
|
||||
|
||||
Мини плейърът може да бъде плъзган извън екрана наляво или надясно"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Жестът за хоризонтално плъзгане е деактивиран</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Скриване на бутона за затваряне</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Бутонът за затваряне е скрит</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Показан е бутон за затваряне</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Бутони за разширяване и свиване на екрана</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Скриване на бутоните за наслагване</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Бутоните за наслагване са скрити</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Бутоните за наслагване са показани</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Скриване на бутоните за разгъване и затваряне</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Бутоните са скрити
|
||||
|
||||
Плъзнете, за да разгънете или затворите"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Бутони за разширяване и свиване на екрана са видими</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Бутоните за разгъване и затваряне са показани</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">Екранни текстове, етикети</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">Скрити</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_off">Показват се</string>
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">ReVanced সেটিং ডিফল্ট সেট করা হয়েছে</string>
|
||||
<string name="revanced_settings_import_success">%d সেটিং আমদানি হয়েছে</string>
|
||||
<string name="revanced_settings_import_failure_parse">আমদানি করা যায়নি: %s</string>
|
||||
<string name="revanced_show_menu_icons_title">ReVanced সেটিং আইকন দেখান</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">সেটিং আইকন দেখানো হয়েছে</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">সেটিং আইকন দেখানো হচ্ছে না</string>
|
||||
<string name="revanced_language_title">ReVanced ভাষা</string>
|
||||
<string name="revanced_language_user_dialog_message">"কিছু ভাষার জন্য অনুবাদ অনুপস্থিত বা অসম্পূর্ণ হতে পারে।
|
||||
|
||||
@@ -1155,6 +1158,7 @@ YouTube সেটিংসে অটো প্লে পরিবর্তন
|
||||
<string name="revanced_miniplayer_type_entry_4">মর্ডান ১</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">মর্ডান ২</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">মর্ডান ৩</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">আধুনিক ৪</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">গোলাকার কোণ সক্ষম করুন</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">কোণগুলি গোলাকার</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">কোণগুলি বর্গাকার</string>
|
||||
@@ -1174,14 +1178,14 @@ Miniplayer স্ক্রিনের যেকোনো কোণে টান
|
||||
|
||||
Miniplayer স্ক্রিন থেকে বামে বা ডানে টানা যাবে"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">অনুভূমিক ড্র্যাগ অঙ্গভঙ্গি অক্ষম</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">বন্ধ বোতাম লুকান</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">বন্ধ বোতাম লুকানো আছে</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">বন্ধ বোতাম দেখানো হচ্ছে</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">বিস্তৃত ও বন্ধ করার বোতাম লুকান</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"বোতামগুলি লুকানো হয়
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">ওভারলে বোতাম লুকান</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">ওভারলে বোতাম লুকানো আছে</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">ওভারলে বোতাম দেখানো হয়েছে</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">বিস্তৃত এবং বন্ধ বোতাম লুকান</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"বোতাম লুকানো আছে
|
||||
|
||||
বিস্তৃত করতে বা বন্ধ করতে সোয়াইপ করুন"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">বিস্তৃত এবং বন্ধ বোতাম দেখানো হচ্ছে</string>
|
||||
বিস্তৃত করতে বা বন্ধ করতে সোয়াইপ করুন"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">বিস্তৃত এবং বন্ধ করার বোতাম দেখানো হয়েছে</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">উপপাঠ লুকান</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">উপপাঠ লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_off">উপপাঠ প্রদর্শিত হয়েছে</string>
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">La configuració de ReVanced s\'ha restablert als valors predeterminats</string>
|
||||
<string name="revanced_settings_import_success">S\'han importat %d configuracions</string>
|
||||
<string name="revanced_settings_import_failure_parse">No s\'ha pogut importar: %s</string>
|
||||
<string name="revanced_show_menu_icons_title">Mostra les icones de configuració de ReVanced</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">Es mostren les icones de configuració</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">No es mostren les icones de configuració</string>
|
||||
<string name="revanced_language_title">Llenguatge de ReVanced</string>
|
||||
<string name="revanced_language_user_dialog_message">"Les traduccions per a algunes llengües poden faltar o ser incompletes.
|
||||
|
||||
@@ -1154,6 +1157,7 @@ Si després es desactiva, es recomana esborrar les dades de l'aplicació per evi
|
||||
<string name="revanced_miniplayer_type_entry_4">Modern 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Modern 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Modern 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">Modern 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">Habilita cantonades arrodonides</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Les cantonades són arrodonides</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Les cantonades són quadrades</string>
|
||||
@@ -1173,14 +1177,14 @@ El minireproductor es pot arrossegar a qualsevol racó de la pantalla"</string>
|
||||
|
||||
El minireproductor es pot arrossegar fora de la pantalla cap a l'esquerra o la dreta"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Gest d\'arrossegar horitzontalment deshabilitat</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Amaga el botó de tancament</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">El botó de tancament està amagat</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">El botó de tancament es mostra</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Amaga els botons d\'expansió i tancament</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Els botons estan ocults
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Amaga els botons de superposició</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Els botons de superposició estan amagats</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Es mostren els botons de superposició</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Amaga els botons per expandir i tancar</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"S'han amagat els botons
|
||||
|
||||
Desliza para ampliar o cerrar"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Els botons d\'expansió i tancament es mostren</string>
|
||||
Llisca per expandir o tancar"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Es mostren els botons per expandir i tancar</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">Amaga els subtítols</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">Els subtítols estan amagats</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_off">Els subtítols es mostren</string>
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">Nastavení ReVanced obnoveno do výchozího stavu</string>
|
||||
<string name="revanced_settings_import_success">Importováno %d nastavení</string>
|
||||
<string name="revanced_settings_import_failure_parse">Importováni selhalo: %s</string>
|
||||
<string name="revanced_show_menu_icons_title">Zobrazit ikony nastavení ReVanced</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">Ikony nastavení se zobrazují</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">Ikony nastavení se nezobrazují</string>
|
||||
<string name="revanced_language_title">Jazyk ReVanced</string>
|
||||
<string name="revanced_language_user_dialog_message">"Překlady pro některé jazyky mohou chybět nebo být neúplné.
|
||||
|
||||
@@ -1154,6 +1157,7 @@ Pokud bude později vypnuta, doporučujeme vymazat data aplikace, aby se zabrán
|
||||
<string name="revanced_miniplayer_type_entry_4">Moderní 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Moderní 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Moderní 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">Moderní 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">Povolit zaoblené rohy</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Rohy jsou zaoblené</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Rohy jsou čtvercové</string>
|
||||
@@ -1173,14 +1177,14 @@ Pokud bude později vypnuta, doporučujeme vymazat data aplikace, aby se zabrán
|
||||
|
||||
\"Miniplayer\" lze přetáhnout z obrazovky doleva nebo doprava"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Horizontální posun je zakázán</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Skrýt tlačítko zavření</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Tlačítko zavření je skryto</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Tlačítko zavření je zobrazeno</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Skrýt tlačítka pro rozbalení a zavření</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Tlačítka jsou skryta
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Skrýt tlačítka překrytí</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Tlačítka překrytí jsou skrytá</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Tlačítka překrytí jsou zobrazena</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Skrýt tlačítka rozbalení a zavření</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Tlačítka jsou skrytá
|
||||
|
||||
Přejeďte prstem pro rozbalení nebo zavření"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Tlačítka pro rozbalení a zavření jsou zobrazena</string>
|
||||
Rozbalte nebo zavřete přejetím prstem"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Tlačítka rozbalení a zavření jsou zobrazena</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">Skrýt podtexty</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">Podtexty jsou skryty</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_off">Podtexty jsou zobrazeny</string>
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">ReVanced-indstillinger nulstillet til standard</string>
|
||||
<string name="revanced_settings_import_success">%d indstillinger importeret</string>
|
||||
<string name="revanced_settings_import_failure_parse">Import mislykkedes: %s</string>
|
||||
<string name="revanced_show_menu_icons_title">Vis ReVanced-indstillingsikoner</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">Indstillingsikoner vises</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">Indstillingsikoner vises ikke</string>
|
||||
<string name="revanced_language_title">ReVanced-sprog</string>
|
||||
<string name="revanced_language_user_dialog_message">"Oversættelser for nogle sprog mangler muligvis eller er ufuldstændige.
|
||||
|
||||
@@ -1100,6 +1103,7 @@ Hvis det senere slås fra, anbefales det at rydde app-dataene for at forhindre U
|
||||
<string name="revanced_miniplayer_type_entry_4">Moderne 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Moderne 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Moderne 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">Moderne 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">Aktiver afrundede hjørner</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Hjørner er afrundede</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Hjørner er firkantede</string>
|
||||
@@ -1119,14 +1123,14 @@ Miniafspiller kan trækkes til et hvilket som helst hjørne af skærmen"</string
|
||||
|
||||
Miniafspiller kan trækkes ud over skærmen til venstre eller højre"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Vandret trækbevægelse deaktiveret</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Skjul lukkeknap</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Luk knappen er skjult</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Luk knappen vises</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Skjul udvid og luk knapper</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Skjul overlay-knapper</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Overlay-knapper er skjult</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Overlay-knapper vises</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Skjul udvid- og luk-knapper</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Knapper er skjult
|
||||
|
||||
Stryg for at udvide eller lukke"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Udvid og luk knapper vises</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Udvid- og luk-knapper vises</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">Skjul undertekster</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">Undertekster er skjult</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_off">Undertekster er vist</string>
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">ReVanced-Einstellungen auf Standardwerte zurückgesetzt</string>
|
||||
<string name="revanced_settings_import_success">%d Einstellungen importiert</string>
|
||||
<string name="revanced_settings_import_failure_parse">Import fehlgeschlagen: %s</string>
|
||||
<string name="revanced_show_menu_icons_title">ReVanced-Einstellungssymbole anzeigen</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">Einstellungssymbole werden angezeigt</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">Einstellungssymbole werden nicht angezeigt</string>
|
||||
<string name="revanced_language_title">ReVanced-Sprache</string>
|
||||
<string name="revanced_language_user_dialog_message">"Übersetzungen für einige Sprachen fehlen möglicherweise oder sind unvollständig.
|
||||
|
||||
@@ -1148,6 +1151,7 @@ Wenn Sie die Funktion später deaktivieren, wird empfohlen, die App-Daten zu lö
|
||||
<string name="revanced_miniplayer_type_entry_4">Modern 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Modern 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Modern 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">Modern 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">Abgerundete Ecken aktivieren</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Ecken sind abgerundet</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Ecken sind Quadrat</string>
|
||||
@@ -1167,14 +1171,14 @@ Der Mini-Player kann in jede Ecke des Bildschirms gezogen werden"</string>
|
||||
|
||||
Der Mini-Player kann mit einer Wischgeste vom Bildschirm nach links oder rechts gezogen werden"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Horizontale Drag Geste deaktiviert</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Schließen-Button ausblenden</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Schließen-Button ist ausgeblendet</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Schließen-Schaltfläche wird angezeigt</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Ausklappen und Schließen der Tasten ausblenden</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Overlay-Buttons ausblenden</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Overlay-Buttons sind ausgeblendet</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Overlay-Buttons werden angezeigt</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Schaltflächen zum Erweitern und Schließen ausblenden</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Schaltflächen sind ausgeblendet
|
||||
|
||||
Wischen Sie, um zu erweitern oder zu schließen"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Erweitern und Schließen Tasten werden angezeigt</string>
|
||||
Zum Erweitern oder Schließen wischen"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Schaltflächen zum Erweitern und Schließen werden angezeigt</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">Untertexte ausblenden</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">Subtexte sind ausgeblendet</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_off">Untertexte werden angezeigt</string>
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">Επαναφέρθηκαν οι προεπιλεγμένες ρυθμίσεις ReVanced</string>
|
||||
<string name="revanced_settings_import_success">Έγινε εισαγωγή %d ρυθμίσεων</string>
|
||||
<string name="revanced_settings_import_failure_parse">Η εισαγωγή απέτυχε: %s</string>
|
||||
<string name="revanced_show_menu_icons_title">Εμφάνιση εικονιδίων στις ρυθμίσεις ReVanced</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">Τα εικονίδια ρυθμίσεων εμφανίζονται</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">Τα εικονίδια ρυθμίσεων δεν εμφανίζονται</string>
|
||||
<string name="revanced_language_title">Γλώσσα ρυθμίσεων ReVanced</string>
|
||||
<string name="revanced_language_user_dialog_message">"Οι μεταφράσεις για κάποιες γλώσσες ενδέχεται να λείπουν ή να είναι ελλιπείς.
|
||||
|
||||
@@ -1156,6 +1159,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_miniplayer_type_entry_4">Μοντέρνος 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Μοντέρνος 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Μοντέρνος 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">Μοντέρνος 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">Στρογγυλεμένες γωνίες</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Οι γωνίες είναι στρογγυλεμένες</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Οι γωνίες είναι τετράγωνες</string>
|
||||
@@ -1175,13 +1179,13 @@ Second \"item\" text"</string>
|
||||
|
||||
Η ελαχιστοποιημένη οθόνη μπορεί να συρθεί εκτός οθόνης προς τα αριστερά ή δεξιά"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Η χειρονομία οριζόντιας σύρσης είναι απενεργοποιημένη</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Κουμπί κλεισίματος</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Κρυμμένο</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Εμφανίζεται</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Κουμπιά επικάλυψης οθόνης αναπαραγωγής</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Κρυμμένα</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Εμφανίζονται</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Κουμπιά επέκτασης και κλεισίματος</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Κρυμμένα
|
||||
|
||||
Σύρετε την ελαχιστοποιημένη οθόνη αναπαραγωγής για επέκταση ή κλείσιμο του βίντεο"</string>
|
||||
Σύρετε για να αναπτύξετε ή να κλείσετε"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Εμφανίζονται</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">Κείμενα οθόνης αναπαραγωγής</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">Κρυμμένα</string>
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">Configuración ReVanced restablecida por defecto</string>
|
||||
<string name="revanced_settings_import_success">Configuración importada de %d</string>
|
||||
<string name="revanced_settings_import_failure_parse">Error de importación: %s</string>
|
||||
<string name="revanced_show_menu_icons_title">Mostrar iconos de configuración de ReVanced</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">Se muestran los iconos de configuración</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">No se muestran los iconos de configuración</string>
|
||||
<string name="revanced_language_title">Idioma de ReVanced</string>
|
||||
<string name="revanced_language_user_dialog_message">"Las traducciones para algunos idiomas pueden faltar o estar incompletas.
|
||||
|
||||
@@ -699,7 +702,7 @@ Si cambiar este ajuste no tiene efecto, intenta cambiar al modo incógnito."</st
|
||||
<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_save_sound_button_title">Ocultar el botón Guardar música</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Guardar botón de música está oculto</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">El botón Guardar música está oculto</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Mostrar el botón de guardar música</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_title">Ocultar el botón Usar plantilla</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_summary_on">Botón de plantilla de uso está oculto</string>
|
||||
@@ -1143,6 +1146,7 @@ Si se desactiva posteriormente, se recomienda borrar los datos de la aplicación
|
||||
<string name="revanced_miniplayer_type_entry_4">Moderna 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Moderna 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Moderna 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">Moderno 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">Habilitar esquinas redondeadas</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Las esquinas están redondeadas</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Las esquinas son cuadradas</string>
|
||||
@@ -1162,14 +1166,14 @@ El minireproductor se puede arrastrar a cualquier esquina de la pantalla"</strin
|
||||
|
||||
El minireproductor se puede arrastrar fuera de la pantalla hacia la izquierda o la derecha"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Gesto de arrastre horizontal desactivado</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Ocultar botón de cerrar</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">El botón de cierre está oculto</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Se muestra el botón de cerrar</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Ocultar botones de expansión y cierre</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Ocultar botones de superposición</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Los botones de superposición están ocultos</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Se muestran los botones de superposición</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Ocultar botones de expandir y cerrar</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Los botones están ocultos
|
||||
|
||||
Desliza para expandir o cerrar"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Mostrar los botones de ampliación y cierre</string>
|
||||
Desliza el dedo para expandir o cerrar"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Se muestran los botones de expandir y cerrar</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">Ocultar subtextos</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">Los subtextos están ocultos</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_off">Los subtextos se muestran</string>
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">ReVancedi seaded on lähtestatud</string>
|
||||
<string name="revanced_settings_import_success">Imporditi %d seadet</string>
|
||||
<string name="revanced_settings_import_failure_parse">Importimine ebaõnnestus: %s</string>
|
||||
<string name="revanced_show_menu_icons_title">Näita ReVancedi seadete ikoone</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">Seadete ikoonid on näidatud</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">Seadete ikoonid ei ole nähtavad</string>
|
||||
<string name="revanced_language_title">Revancedi keel</string>
|
||||
<string name="revanced_language_user_dialog_message">"Mõnede keelte tõlked võivad olla puudulikud või ebatäielikud.
|
||||
|
||||
@@ -1155,6 +1158,7 @@ Kui see hiljem välja lülitatakse, on soovitatav rakenduse andmed kustutada, et
|
||||
<string name="revanced_miniplayer_type_entry_4">Kaasaegne 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Kaasaegne 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Kaasaegne 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">Moodne 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">Lülita ümarate nurkade režiim sisse</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Nurgad on ümarad</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Nurgad on ruudukujulised</string>
|
||||
@@ -1174,14 +1178,14 @@ Minimaalset mängijat saab lohistada ekraani mis tahes nurka"</string>
|
||||
|
||||
Minimaalset mängijat saab lohistada ekraanilt vasakule või paremale"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Horisontaalse lohistamise žest on keelatud</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Peida sulgemisnupp</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Sulgemisnupp on peidetud</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Sulgemisnupp on nähtav</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Peida laiendamis- ja sulgemisnupud</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Peida ülekatteliidese nupud</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Ülekatteliidese nupud on peidetud</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Ülekatteliidese nupud on nähtaval</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Peida laiendus- ja sulgemisnupud</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Nupud on peidetud
|
||||
|
||||
Pühkige laiendamiseks või sulgemiseks"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Laiendamis- ja sulgemisnupud on nähtavad</string>
|
||||
Laiendamiseks või sulgemiseks libista"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Laiendus- ja sulgemisnupud on nähtaval</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">Peida alatähed</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">Alatähed on peidetud</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_off">Alatähed on nähtavad</string>
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">Revanced-asetukset nollattiin</string>
|
||||
<string name="revanced_settings_import_success">%d asetusta tuotiin</string>
|
||||
<string name="revanced_settings_import_failure_parse">Tuonti epäonnistui: %s</string>
|
||||
<string name="revanced_show_menu_icons_title">Näytä ReVanced-asetuskuvakkeet</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">Asetuskuvakkeet näytetään</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">Asetuskuvakkeita ei näytetä</string>
|
||||
<string name="revanced_language_title">ReVancedin kieli</string>
|
||||
<string name="revanced_language_user_dialog_message">"Joidenkin kielten käännökset saattavat puuttua tai olla puutteellisia.
|
||||
|
||||
@@ -226,6 +229,9 @@ Et saa ilmoituksia odottamattomista tapahtumista."</string>
|
||||
<string name="revanced_hide_artist_cards_title">Piilota artistikortit</string>
|
||||
<string name="revanced_hide_artist_cards_summary_on">Artistikortit on piilotettu</string>
|
||||
<string name="revanced_hide_artist_cards_summary_off">Artistikortit näytetään</string>
|
||||
<string name="revanced_hide_ai_generated_video_summary_section_title">Piilota \"tekoälyn luoma videoyhteenveto\"</string>
|
||||
<string name="revanced_hide_ai_generated_video_summary_section_summary_on">Videon yhteenveto-osio on piilotettu</string>
|
||||
<string name="revanced_hide_ai_generated_video_summary_section_summary_off">Videon yhteenveto-osio näytetään</string>
|
||||
<string name="revanced_hide_attributes_section_title">Piilota Määritteet</string>
|
||||
<string name="revanced_hide_attributes_section_summary_on">Esitellyt paikat, Pelit, Musiikki ja Mainitut ihmiset -osiot on piilotettu</string>
|
||||
<string name="revanced_hide_attributes_section_summary_off">Esitellyt paikat, Pelit, Musiikki ja Mainitut ihmiset -osiot näytetään</string>
|
||||
@@ -262,8 +268,12 @@ Et saa ilmoituksia odottamattomista tapahtumista."</string>
|
||||
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Näytetään liittyvissä videoissa</string>
|
||||
<string name="revanced_comments_screen_title">Kommentit</string>
|
||||
<string name="revanced_comments_screen_summary">Piilota tai näytä kommenttiosion osia</string>
|
||||
<string name="revanced_hide_comments_ai_chat_summary_title">Piilota tekoälyn luoma chat-yhteenveto</string>
|
||||
<string name="revanced_hide_comments_ai_chat_summary_summary_on">Chat-yhteenveto on piilotettu</string>
|
||||
<string name="revanced_hide_comments_ai_chat_summary_summary_off">Chat-yhteenveto näytetään</string>
|
||||
<string name="revanced_hide_comments_ai_summary_title">Piilota tekoälyn luoma kommenttiyhteenveto</string>
|
||||
<string name="revanced_hide_comments_ai_summary_summary_on">Kommenttien yhteenveto on piilotettu</string>
|
||||
<string name="revanced_hide_comments_ai_summary_summary_off">Kommenttien yhteenveto näytetään</string>
|
||||
<string name="revanced_hide_comments_by_members_header_title">Piilota \"Jäsenten kommentit\" -ylätunniste</string>
|
||||
<string name="revanced_hide_comments_by_members_header_summary_on">Jäsenten kommentit -ylätunniste on piilotettu</string>
|
||||
<string name="revanced_hide_comments_by_members_header_summary_off">Jäsenten kommentit -ylätunniste näytetään</string>
|
||||
@@ -423,6 +433,9 @@ Tämä ominaisuus on käytettävissä vain vanhemmilla laitteilla"</string>
|
||||
<string name="revanced_disable_precise_seeking_gesture_summary_off">Ele on käytössä</string>
|
||||
</patch>
|
||||
<patch id="interaction.seekbar.enableSeekbarTappingPatch">
|
||||
<string name="revanced_seekbar_tapping_title">Ota kelaus napauttamalla käyttöön</string>
|
||||
<string name="revanced_seekbar_tapping_summary_on">Kelaus napauttamalla on käytössä</string>
|
||||
<string name="revanced_seekbar_tapping_summary_off">Kelaus napauttamalla ei ole käytössä</string>
|
||||
</patch>
|
||||
<patch id="interaction.swipecontrols.swipeControlsResourcePatch">
|
||||
<string name="revanced_swipe_brightness_title">Ota kirkkauden ele käyttöön</string>
|
||||
@@ -435,6 +448,9 @@ Säädä kirkkautta pyyhkäisemällä pystysuoraan näytön vasemmalla puolella"
|
||||
|
||||
Säädä äänenvoimakkuutta pyyhkäisemällä pystysuoraan näytön oikealta puolella"</string>
|
||||
<string name="revanced_swipe_volume_summary_off">Koko näytön äänenvoimakkuuden pyyhkäisy ei ole käytössä</string>
|
||||
<string name="revanced_swipe_press_to_engage_title">Ota pyyhkäise painamalla -ele käyttöön</string>
|
||||
<string name="revanced_swipe_press_to_engage_summary_on">Pyyhkäise painamalla -ele on käytössä</string>
|
||||
<string name="revanced_swipe_press_to_engage_summary_off">Pyyhkäise painamalla -ele ei ole käytössä</string>
|
||||
<string name="revanced_swipe_haptic_feedback_title">Ota haptinen palaute käyttöön</string>
|
||||
<string name="revanced_swipe_haptic_feedback_summary_on">Haptinen palaute on käytössä</string>
|
||||
<string name="revanced_swipe_haptic_feedback_summary_off">Haptinen palaute ei ole käytössä</string>
|
||||
@@ -542,6 +558,7 @@ Jos tämän asetuksen muuttaminen ei tule voimaan, kokeile vaihtaa Incognito-til
|
||||
<string name="revanced_disable_translucent_status_bar_title">Poista läpikuultava tilapalkki käytöstä</string>
|
||||
<string name="revanced_disable_translucent_status_bar_summary_on">Tilapalkki on läpinäkymätön</string>
|
||||
<string name="revanced_disable_translucent_status_bar_summary_off">Tilapalkki on läpinäkymätön tai läpikuultava</string>
|
||||
<string name="revanced_disable_translucent_status_bar_user_dialog_message">Joillakin laitteilla tämän ominaisuuden käyttöönotto voi muuttaa järjestelmän navigointipalkin läpinäkyväksi.</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_title">Poista vaalea läpikuultava palkki käytöstä</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_on">Vaalean tilan navigointipalkki on läpinäkymätön</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_off">Vaalean tilan navigointipalkki on läpinäkymätön tai läpikuultava</string>
|
||||
@@ -1141,6 +1158,7 @@ Jos tämä poistetaan myöhemmin käytöstä, on suositeltavaa tyhjentää sovel
|
||||
<string name="revanced_miniplayer_type_entry_4">Moderni 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Moderni 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Moderni 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">Moderni 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">Ota pyöristetyt kulmat käyttöön</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Kulmat on pyöristetty</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Kulmat ovat suorakulmaisia</string>
|
||||
@@ -1160,9 +1178,9 @@ Minisoitin voidaan vetää mihin tahansa näytön kulmaan"</string>
|
||||
|
||||
Minisoitin voidaan vetää pois näytöltä vasemmalle tai oikealle"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Vaakasuuntainen vetoele ei ole käytössä</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Piilota sulje-painike</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Sulje-painike on piilotettu</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Sulje-painike näytetään</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Piilota peittokuvan painikkeet</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Peittokuvan painikkeet on piilotettu</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Peittokuvan painikkeet näytetään</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Piilota laajenna- ja sulje-painikkeet</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Painikkeet piilotetaan
|
||||
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">I-reset ang mga ReVanced na setting sa default</string>
|
||||
<string name="revanced_settings_import_success">Na-import ang %d na mga setting</string>
|
||||
<string name="revanced_settings_import_failure_parse">Nabigo ang pag-import: %s</string>
|
||||
<string name="revanced_show_menu_icons_title">Ipakita ang mga icon ng setting ng ReVanced</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">Ipinapakita ang mga icon ng setting</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">Hindi ipinapakita ang mga icon ng setting</string>
|
||||
<string name="revanced_language_title">Wika ng ReVanced</string>
|
||||
<string name="revanced_language_user_dialog_message">"Ang mga pagsasalin para sa ilang mga wika ay maaaring nawawala o hindi kumpleto.
|
||||
|
||||
@@ -1153,6 +1156,7 @@ Kung mamaya ay patayin, inirerekumenda na i-clear ang data ng app upang maiwasan
|
||||
<string name="revanced_miniplayer_type_entry_4">Moderno 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Moderno 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Moderno 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">Makabagong 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">Paganahin ang mga bilugan na sulok</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Bilugan ang mga sulok</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Parihaba ang mga sulok</string>
|
||||
@@ -1172,14 +1176,14 @@ Ang \"miniplayer\" ay maaaring i-drag sa anumang sulok ng screen"</string>
|
||||
|
||||
Ang \"miniplayer\" ay maaaring i-drag palabas ng screen sa kaliwa o kanan"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Hindi pinagana ang pahalang na drag gesture</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Itago ang pindutan ng pagsara</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Nakatago ang pindutan ng pagsara</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Ipinapakita ang pindutan ng pagsara</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Itago ang mga button na palawakin at isara</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Ang mga pindutan ay nakatago
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Itago ang mga button ng overlay</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Nakatago ang mga button ng overlay</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Ipinapakita ang mga button ng overlay</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Itago ang mga button para palawakin at isara</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Nakatago ang mga button
|
||||
|
||||
Mag-swipe upang palawakin o isara"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Ang mga pindutan ng palawakin at isara ay ipinapakita</string>
|
||||
Mag-swipe para palawakin o isara"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Ipinapakita ang mga button para palawakin at isara</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">Itago ang mga subtext</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">Nakatago ang mga subtext</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_off">Ipinapakita ang mga subtext</string>
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">Paramètres ReVanced réinitialisés aux valeurs par défaut</string>
|
||||
<string name="revanced_settings_import_success">%d paramètres importés</string>
|
||||
<string name="revanced_settings_import_failure_parse">Importation échouée : %s</string>
|
||||
<string name="revanced_show_menu_icons_title">Afficher les icônes des paramètres ReVanced</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">Les icônes des paramètres sont affichées</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">Les icônes des paramètres ne sont pas affichées</string>
|
||||
<string name="revanced_language_title">Langue de ReVanced</string>
|
||||
<string name="revanced_language_user_dialog_message">"Il se peut que les traductions dans certaines langues soient manquantes ou incomplètes.
|
||||
|
||||
@@ -1154,6 +1157,7 @@ Si désactivé ultérieurement, il est recommandé d'effacer les données de l'a
|
||||
<string name="revanced_miniplayer_type_entry_4">Moderne 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Moderne 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Moderne 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">Moderne 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">Activer les coins arrondis</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Les coins sont arrondis</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Les coins sont carrés</string>
|
||||
@@ -1173,13 +1177,13 @@ Le lecteur réduit peut être déplacé vers n'importe quel coin de l'écran"</s
|
||||
|
||||
Le lecteur réduit peut être déplacé hors de l'écran, à gauche comme à droite"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Geste de déplacement horizontal désactivé</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Masquer le bouton de fermeture</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Le bouton de fermeture est masqué</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Le bouton de fermeture est affiché</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Masquer les boutons en superposition</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Les boutons en superposition sont masqués</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Les boutons en superposition sont affichés</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Masquer les boutons Agrandir et Fermer</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Les boutons sont masqués
|
||||
|
||||
Balayez pour développer ou fermer"</string>
|
||||
Balayez pour agrandir ou fermer"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Les boutons Agrandir et Fermer sont affichés</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">Masquer les sous-textes</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">Les sous-textes sont masqués</string>
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">Athshocraigh socruithe ReVanced go réamhshocrú</string>
|
||||
<string name="revanced_settings_import_success">Iompórtáladh %d socruithe</string>
|
||||
<string name="revanced_settings_import_failure_parse">Theip ar allmhairiú: %s</string>
|
||||
<string name="revanced_show_menu_icons_title">Taispeáin deilbhíní socruithe ReVanced</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">Taispeántar deilbhíní socruithe</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">Ní thaispeántar deilbhíní socraithe</string>
|
||||
<string name="revanced_language_title">Teanga ReVanced</string>
|
||||
<string name="revanced_language_user_dialog_message">"D'fhéadfadh aistriúcháin do roinnt teangacha a bheith ar iarraidh nó mí-iomlán.
|
||||
|
||||
@@ -1155,6 +1158,7 @@ Má dhiúltaítear é níos déanaí, moltar sonraí an aip a ghlanadh chun buga
|
||||
<string name="revanced_miniplayer_type_entry_4">Nua-aimseartha 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Nua-Aimseartha 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Nua-aimseartha 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">Nua-aimseartha 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">Cumasaigh coirnéil chothromú</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Déantar coirnéil a shlánú</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Tá coirnéil cearnach</string>
|
||||
@@ -1174,14 +1178,14 @@ Is féidir an mhion-imreoir a tharraingt go haon chúinne den scáileán"</strin
|
||||
|
||||
Is féidir an mhion-imreoir a tharraingt as an scáileán ar chlé nó ar dheis"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Díchumasaíodh an comhartha tarraingthe cothrománach</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Folaigh cnaipe dúnta</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Tá an cnaipe dúnta i bhfolach</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Taispeántar an cnaipe dúnta</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Folaigh cnaipí leathnú agus dún</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Folaigh cnaipí forleathana</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Tá cnaipí forleathana i bhfolach</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Taispeántar cnaipí forleathana</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Folaigh cnaipí leathnaithe agus dún</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Tá cnaipí i bhfolach
|
||||
|
||||
Swipe chun leathnú nó dúnadh"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Taispeántar cnaipí leathnaigh agus dún</string>
|
||||
Svaidhpeáil chun leathnú nó dúnadh"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Taispeántar cnaipí leathnaithe agus dún</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">Folaigh fothéacsanna</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">Tá fothéacsanna i bhfolach</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_off">Taispeántar fothéacsanna</string>
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">A ReVanced beállítások visszaállnak az alapértelmezettre</string>
|
||||
<string name="revanced_settings_import_success">%d beállítás importálva</string>
|
||||
<string name="revanced_settings_import_failure_parse">Sikertelen importálás: %s</string>
|
||||
<string name="revanced_show_menu_icons_title">ReVanced beállításikonok megjelenítése</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">A beállításikonok láthatók</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">A beállítások ikonjai nem jelennek meg</string>
|
||||
<string name="revanced_language_title">ReVanced nyelve</string>
|
||||
<string name="revanced_language_user_dialog_message">"A fordítások hiányozhatnak vagy hiányosak lehetnek néhány nyelven.
|
||||
|
||||
@@ -1154,6 +1157,7 @@ Ha később kikapcsolja, akkor ajánlott az alkalmazás adatait törölni, hogy
|
||||
<string name="revanced_miniplayer_type_entry_4">Modern 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Modern 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Modern 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">Modern 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">Lekerekített sarkok engedélyezése</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">A sarkok lekerekítettek</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">A sarkok négyzet alakúak</string>
|
||||
@@ -1173,10 +1177,10 @@ A miniatűr képernyőt a képernyő bármely sarkába húzhatja"</string>
|
||||
|
||||
A miniatűr képernyőt a képernyő bal vagy jobb szélére húzhatja"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">A vízszintes húzómozdulat letiltva</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Bezárás gomb elrejtése</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">A Bezárás gomb el van rejtve</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">A Bezárás gomb látható</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Kibontás és bezárás gombok elrejtése</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Fedőgomb elrejtése</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">A fedőgombok rejtve vannak</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">A fedőgombok láthatók</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">A kibontás és bezárás gombok elrejtése</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"A gombok el vannak rejtve
|
||||
|
||||
Húzza el a képernyőt a kibontáshoz vagy bezáráshoz"</string>
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">ReVanced կարգավորումները վերադրվել են դեֆոլտային</string>
|
||||
<string name="revanced_settings_import_success">Import %d կարգավորում</string>
|
||||
<string name="revanced_settings_import_failure_parse">Import-ը ձախողվել է։ %s</string>
|
||||
<string name="revanced_show_menu_icons_title">Ցուցադրել ReVanced-ի կարգավորումների պատկերակները</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">Կարգավորումների պատկերակները ցուցադրվում են</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">Կարգավորումների պատկերակները ցուցադրված չեն</string>
|
||||
<string name="revanced_language_title">ReVanced լեզվի</string>
|
||||
<string name="revanced_language_user_dialog_message">"Որոշ լեզուների թարգմանությունները կարող են լինել բացակայուն կամ անավարտ:
|
||||
|
||||
@@ -1155,6 +1158,7 @@ Seekbar thumbnails-ները կօգտագործեն նույն որակը, ինչ
|
||||
<string name="revanced_miniplayer_type_entry_4">Ժամանակակից 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Ժամանակակից 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Ժամանակակից 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">Ժամանակակից 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">Աктиվացնել կլորացված անկյունները</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Անկյունները կլորացված են</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Անկյունները քառակուսի են</string>
|
||||
@@ -1174,14 +1178,14 @@ Mini-player-ը կարող է գրավվել էկրանի ցանկացած անկ
|
||||
|
||||
Mini-player-ը կարող է գրավվել էկրանից դուրս՝ դեպի ձախ կամ աջ։"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Հորիզոնական քարշելու ժեստը անջատված է</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Թաքցնել փակման կոճակը</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Փակման կոճակը թաքցված է</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Փակման կոճակը ցուցադրվում է</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Թաքցնել ընդլայնման և փակման կոճակները</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Կոճակները թաքցվում են
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Թաքցնել վերադիր կոճակները</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Վերադիր կոճակները թաքցված են</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Վերադիր կոճակները ցուցադրվում են</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Թաքցնել ընդարձակման և փակման կոճակները</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Կոճակները թաքցված են
|
||||
|
||||
Գրավել՝ մեծացնելու կամ փակելու համար։"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Ընդլայնման և փակման կոճակները ցուցադրվում են</string>
|
||||
Սահեցրեք՝ ընդարձակելու կամ փակելու համար"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Ընդարձակման և փակման կոճակները ցուցադրվում են</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">Թաքցնել ենթատեքստերը</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">Ենթատեքստերը թաքցված են</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_off">Ենթատեքստերը ցուցադրվում են</string>
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">Pengaturan ReVanced diatur ke setelan awal</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_show_menu_icons_title">Tampilkan ikon pengaturan ReVanced</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">Ikon pengaturan ditampilkan</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">Ikon pengaturan tidak ditampilkan</string>
|
||||
<string name="revanced_language_title">Bahasa ReVanced</string>
|
||||
<string name="revanced_language_user_dialog_message">"Terjemahan untuk beberapa bahasa mungkin hilang atau tidak lengkap.
|
||||
|
||||
@@ -1154,6 +1157,7 @@ Jika kemudian dimatikan, disarankan untuk menghapus data aplikasi untuk mencegah
|
||||
<string name="revanced_miniplayer_type_entry_4">Modern 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Modern 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Modern 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">Modern 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">Aktifkan sudut membulat</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Sudutnya membulat</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Sudutnya persegi</string>
|
||||
@@ -1173,14 +1177,14 @@ Miniplayer dapat diseret ke sudut layar mana pun"</string>
|
||||
|
||||
Miniplayer dapat diseret keluar layar ke kiri atau kanan"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Gerakan seret horizontal dinonaktifkan</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Sembunyikan tombol tutup</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Tombol tutup disembunyikan</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Tombol tutup ditampilkan</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Sembunyikan perbesar dan tutup</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Sembunyikan tombol hamparan</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Tombol hamparan disembunyikan</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Tombol hamparan ditampilkan</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Sembunyikan tombol perluas dan tutup</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Tombol disembunyikan
|
||||
|
||||
Usap untuk memperluas atau menutup"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Tombol bentang dan tutup ditampilkan</string>
|
||||
Geser untuk memperluas atau menutup"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Tombol perluas dan tutup ditampilkan</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">Sembunyikan subteks</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">Subteks disembunyikan</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_off">Subteks ditampilkan</string>
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">Reimposta le impostazioni di ReVanced a quelle predefinite</string>
|
||||
<string name="revanced_settings_import_success">Importate %d impostazioni</string>
|
||||
<string name="revanced_settings_import_failure_parse">Importazione non riuscita: %s</string>
|
||||
<string name="revanced_show_menu_icons_title">Mostra le icone delle impostazioni di ReVanced</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">Le icone delle impostazioni vengono mostrate</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">Le icone delle impostazioni non vengono mostrate</string>
|
||||
<string name="revanced_language_title">Lingua di ReVanced</string>
|
||||
<string name="revanced_language_user_dialog_message">"Le traduzioni per alcune lingue potrebbero essere mancanti o incomplete.
|
||||
|
||||
@@ -1154,6 +1157,7 @@ Se in seguito verrà disattivato, si consiglia di cancellare i dati dell'app per
|
||||
<string name="revanced_miniplayer_type_entry_4">Moderno 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Moderno 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Moderno 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">Moderno 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">Abilita angoli arrotondati</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Gli angoli sono arrotondati</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Gli angoli sono quadrati</string>
|
||||
@@ -1173,13 +1177,13 @@ Il riproduttore minimizzato può essere trascinato in qualsiasi angolo dello sch
|
||||
|
||||
Il riproduttore minimizzato può essere trascinato fuori dallo schermo a sinistra o a destra"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Gesto di trascinamento orizzontale disabilitato</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Nascondi pulsante di chiusura</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Il pulsante di chiusura è nascosto</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Il pulsante Chiudi è visibile</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Nascondi i pulsanti Espandi e Chiudi</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Nascondi i pulsanti di overlay</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">I pulsanti di overlay sono nascosti</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">I pulsanti di overlay sono visualizzati</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Nascondi i pulsanti di espansione e chiusura</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"I pulsanti sono nascosti
|
||||
|
||||
Scorrere per espandere o chiudere"</string>
|
||||
Scorri per espandere o chiudere"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">I pulsanti Espandi e chiudi sono visibili</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">Nascondi sottotitoli</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">I sottotitoli sono nascosti</string>
|
||||
|
||||
@@ -1141,6 +1141,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_miniplayer_type_entry_4">מודרני 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">מודרני 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">מודרני 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">מודרני 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">הפעל פינות מעוגלות</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">הפינות מעוגלות</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">הפינות מרובעות</string>
|
||||
@@ -1160,9 +1161,6 @@ Second \"item\" text"</string>
|
||||
|
||||
מיני-נגן ניתן לגרירה מחוץ למסך לשמאל או לימין"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">מחוות גרירה אופקית מושבתת</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">הסתר לחצן סגירה</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">לחצן סגירה מוסתר</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">לחצן סגירה מוצג</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">הסתר לחצני סגירה והרחבה</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"הלחצנים מוסתרים
|
||||
|
||||
|
||||
@@ -43,7 +43,10 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">ReVanced 設定をデフォルトにリセット</string>
|
||||
<string name="revanced_settings_import_success">%d 個の設定をインポートしました</string>
|
||||
<string name="revanced_settings_import_failure_parse">インポート失敗: %s</string>
|
||||
<string name="revanced_language_title">ReVancedの言語</string>
|
||||
<string name="revanced_show_menu_icons_title">ReVanced 設定にアイコンを表示する</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">ReVanced 設定にアイコンが表示されます</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">ReVanced 設定にアイコンは表示されません</string>
|
||||
<string name="revanced_language_title">ReVanced の言語</string>
|
||||
<string name="revanced_language_user_dialog_message">"一部の言語の翻訳が不足しているか、不完全である可能性があります。
|
||||
|
||||
新しい言語を翻訳するには、 translate.revanced.app にアクセスしてください"</string>
|
||||
@@ -66,7 +69,7 @@ Second \"item\" text"</string>
|
||||
|
||||
下記ウェブサイト「Don't kill my app」の携帯電話メーカー別のガイドに従い、MicroG GmsCore に対するデバイスの設定を変更してください。
|
||||
|
||||
この操作はアプリが動作するために必要です。"</string>
|
||||
この操作はアプリが正常に動作するために必要です。"</string>
|
||||
<string name="gms_core_dialog_open_website_text">ウェブサイトを開く</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">"問題を防ぐために、MicroG GmsCore に対する電池の最適化を必ず無効にしてください。
|
||||
|
||||
@@ -365,8 +368,8 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ
|
||||
<string name="revanced_hide_products_banner_summary_on">動画上に「商品を表示」ボタンや商品ボタンは表示されません</string>
|
||||
<string name="revanced_hide_products_banner_summary_off">動画上に「商品を表示」ボタンや商品ボタンが表示されます</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_title">終了画面のストア バナーを非表示</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_summary_on">終了画面のストア バナーは表示されません</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_summary_off">終了画面のストア バナーは表示されます</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_summary_on">動画の終了画面にストア バナーは表示されません</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_summary_off">動画の終了画面にストア バナーが表示されます</string>
|
||||
<string name="revanced_hide_player_store_shelf_title">ストア広告を非表示</string>
|
||||
<string name="revanced_hide_player_store_shelf_summary_on">ストア広告は表示されません</string>
|
||||
<string name="revanced_hide_player_store_shelf_summary_off">ストア広告は表示されます</string>
|
||||
@@ -438,18 +441,18 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ
|
||||
</patch>
|
||||
<patch id="interaction.swipecontrols.swipeControlsResourcePatch">
|
||||
<string name="revanced_swipe_brightness_title">明るさジェスチャーを有効にする</string>
|
||||
<string name="revanced_swipe_brightness_summary_on">"全画面表示の明るさジェスチャーは有効です
|
||||
<string name="revanced_swipe_brightness_summary_on">"全画面表示中の明るさジェスチャーは有効です
|
||||
|
||||
画面の左側を縦にスワイプして明るさを調節します"</string>
|
||||
<string name="revanced_swipe_brightness_summary_off">全画面表示の明るさジェスチャーは無効です</string>
|
||||
画面左側を縦にスワイプして明るさを調節します"</string>
|
||||
<string name="revanced_swipe_brightness_summary_off">全画面表示中の明るさジェスチャーは無効です</string>
|
||||
<string name="revanced_swipe_volume_title">音量ジェスチャーを有効にする</string>
|
||||
<string name="revanced_swipe_volume_summary_on">"全画面表示の音量ジェスチャーは有効です
|
||||
<string name="revanced_swipe_volume_summary_on">"全画面表示中の音量ジェスチャーは有効です
|
||||
|
||||
画面の右側を縦にスワイプして音量を調節します"</string>
|
||||
<string name="revanced_swipe_volume_summary_off">全画面表示の音量ジェスチャーは無効です</string>
|
||||
画面右側を縦にスワイプして音量を調節します"</string>
|
||||
<string name="revanced_swipe_volume_summary_off">全画面表示中の音量ジェスチャーは無効です</string>
|
||||
<string name="revanced_swipe_press_to_engage_title">長押しスワイプを有効にする</string>
|
||||
<string name="revanced_swipe_press_to_engage_summary_on">画面を縦に長押しスワイプして明るさや音量を調節します</string>
|
||||
<string name="revanced_swipe_press_to_engage_summary_off">画面を縦にスワイプして明るさや音量を調節します</string>
|
||||
<string name="revanced_swipe_press_to_engage_summary_on">全画面表示中、画面を長押ししてから縦にスワイプして明るさや音量を調節します</string>
|
||||
<string name="revanced_swipe_press_to_engage_summary_off">全画面表示中、画面を縦にスワイプして明るさや音量を調節します</string>
|
||||
<string name="revanced_swipe_haptic_feedback_title">触覚フィードバックを有効にする</string>
|
||||
<string name="revanced_swipe_haptic_feedback_summary_on">触覚フィードバックは有効です</string>
|
||||
<string name="revanced_swipe_haptic_feedback_summary_off">触覚フィードバックは無効です</string>
|
||||
@@ -768,7 +771,7 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
|
||||
<string name="revanced_end_screen_suggested_video_title">再生終了時に「関連動画」を表示しない</string>
|
||||
<string name="revanced_end_screen_suggested_video_summary_on">"自動再生を無効にすると、再生終了時に「関連動画」は表示されません
|
||||
<string name="revanced_end_screen_suggested_video_summary_on">"再生終了時に「関連動画」は表示されませんが、自動再生がオンの場合は自動で再生されます
|
||||
|
||||
自動再生の設定は YouTube の設定で変更できます:
|
||||
設定 → 再生 → 次の動画を自動再生"</string>
|
||||
@@ -872,29 +875,29 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">シーク位置のサムネイルがプレーヤー画面全体に表示されます</string>
|
||||
</patch>
|
||||
<patch id="layout.sponsorblock.sponsorBlockResourcePatch">
|
||||
<string name="revanced_sb_enable_sb">SponsorBlock を有効にする</string>
|
||||
<string name="revanced_sb_enable_sb_sum">SponsorBlock は、YouTube 動画の不要な部分をスキップするためのクラウドソーシングシステムです</string>
|
||||
<string name="revanced_sb_enable_sb">SponsorBlock を有効化</string>
|
||||
<string name="revanced_sb_enable_sb_sum">SponsorBlock はユーザーからの情報提供により YouTube 動画のわずらわしい部分をスキップする機能です</string>
|
||||
<string name="revanced_sb_appearance_category">外観</string>
|
||||
<string name="revanced_sb_enable_voting">投票ボタンを表示</string>
|
||||
<string name="revanced_sb_enable_voting_sum_on">セグメント投票ボタンが表示されます</string>
|
||||
<string name="revanced_sb_enable_voting_sum_off">セグメント投票ボタンは表示されません</string>
|
||||
<string name="revanced_sb_square_layout">正方形のレイアウトを使用</string>
|
||||
<string name="revanced_sb_square_layout_sum_on">ボタンとコントロールが正方形になります</string>
|
||||
<string name="revanced_sb_square_layout_sum_off">ボタンとコントロールは丸みを帯びています</string>
|
||||
<string name="revanced_sb_enable_voting_sum_on">プレーヤー オーバーレイにセグメントへの投票ボタンが表示されます</string>
|
||||
<string name="revanced_sb_enable_voting_sum_off">プレーヤー オーバーレイにセグメントへの投票ボタンは表示されません</string>
|
||||
<string name="revanced_sb_square_layout">四角ボタンを使用する</string>
|
||||
<string name="revanced_sb_square_layout_sum_on">ボタンとコントロールの角は直角です</string>
|
||||
<string name="revanced_sb_square_layout_sum_off">ボタンとコントロールの角は丸角です</string>
|
||||
<!-- Translations should use language similar to 'revanced_ryd_compact_layout_title' -->
|
||||
<string name="revanced_sb_enable_compact_skip_button">コンパクトな「スキップ」ボタンを使用</string>
|
||||
<string name="revanced_sb_enable_compact_skip_button_sum_on">スキップボタンはコンパクトに表示されます</string>
|
||||
<string name="revanced_sb_enable_compact_skip_button_sum_off">スキップボタンは最適なサイズで表示されます</string>
|
||||
<string name="revanced_sb_enable_auto_hide_skip_segment_button">「スキップ」ボタンを自動的に非表示</string>
|
||||
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_on">スキップボタンは数秒後に非表示になります</string>
|
||||
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_off">セグメント全体に「スキップ」ボタンが表示されます</string>
|
||||
<string name="revanced_sb_enable_compact_skip_button">コンパクトなスキップボタンを使用する</string>
|
||||
<string name="revanced_sb_enable_compact_skip_button_sum_on">ボタンに「スキップ」とだけ表示されます</string>
|
||||
<string name="revanced_sb_enable_compact_skip_button_sum_off">ボタンにカテゴリー名が表示されます</string>
|
||||
<string name="revanced_sb_enable_auto_hide_skip_segment_button">スキップボタンを自動的に非表示にする</string>
|
||||
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_on">スキップボタンは表示された数秒後に自動的に非表示になります</string>
|
||||
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_off">スキップボタンはセグメントの開始から終了まで表示されます</string>
|
||||
<string name="revanced_sb_general_skiptoast">スキップ時にトーストを表示</string>
|
||||
<string name="revanced_sb_general_skiptoast_sum_on">セグメントが自動的にスキップされたときにトースト ポップアップが表示されます。例を見るにはここをタップしてください</string>
|
||||
<string name="revanced_sb_general_skiptoast_sum_on">セグメントが自動的にスキップされたときにトースト ポップアップが表示されます。ここをタップするとサンプルが表示されます</string>
|
||||
<string name="revanced_sb_general_skiptoast_sum_off">トースト ポップアップは表示されません。例を見るにはここをタップしてください</string>
|
||||
<string name="revanced_sb_general_time_without">セグメントを除いた時間を表示</string>
|
||||
<string name="revanced_sb_general_time_without_sum_on">動画からセグメントを除いた時間が、動画全体の再生時間の横に括弧で表示されます</string>
|
||||
<string name="revanced_sb_general_time_without">セグメントを除いた再生時間を表示</string>
|
||||
<string name="revanced_sb_general_time_without_sum_on">セグメントを除いた再生時間が、動画全体の再生時間の横に括弧付きで表示されます</string>
|
||||
<string name="revanced_sb_general_time_without_sum_off">動画全体の再生時間のみが表示されます</string>
|
||||
<string name="revanced_sb_create_segment_category">新しいセグメントを作成する</string>
|
||||
<string name="revanced_sb_create_segment_category">セグメントの作成</string>
|
||||
<string name="revanced_sb_enable_create_segment">新しいセグメント作成ボタンを表示</string>
|
||||
<string name="revanced_sb_enable_create_segment_sum_on">新しいセグメントを作成するボタンが表示されます</string>
|
||||
<string name="revanced_sb_enable_create_segment_sum_off">新しいセグメントを作成するボタンは表示されません</string>
|
||||
@@ -936,59 +939,59 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ
|
||||
|
||||
ユーザー ID はパスワードのようなものであり、共有しないでください。"</string>
|
||||
<string name="revanced_sb_settings_revanced_export_user_id_warning_dismiss">今後表示しない</string>
|
||||
<string name="revanced_sb_diff_segments">セグメントの動作を変更する</string>
|
||||
<string name="revanced_sb_diff_segments">セグメントのスキップ</string>
|
||||
<string name="revanced_sb_segments_sponsor">スポンサー</string>
|
||||
<string name="revanced_sb_segments_sponsor_sum">有料プロモーション, 有料紹介と直接広告. ない原因/原因/クリエイター/ウェブサイト/製品への自己宣伝または無料シャウトアウト 彼らが好きなもの</string>
|
||||
<string name="revanced_sb_segments_selfpromo">無報酬/セルフプロモーション</string>
|
||||
<string name="revanced_sb_segments_selfpromo_sum">スポンサーと同様に、無給または自己宣伝の場合。商品、寄付、またはコラボレーション相手に関する情報を記載したセクションが含まれます</string>
|
||||
<string name="revanced_sb_segments_interaction">インタラクション リマインダー (チャンネル登録)</string>
|
||||
<string name="revanced_sb_segments_interaction_sum">コンテンツの途中で、購読したりフォローしたりするための短いリマインダーです。 それが長いまたは特定の何かについてである場合、それは代わりに自己宣伝の下にあるべきである。</string>
|
||||
<string name="revanced_sb_segments_highlight">強調表示</string>
|
||||
<string name="revanced_sb_segments_highlight_sum">動画の中で多くの人々が見たい部分</string>
|
||||
<string name="revanced_sb_segments_intro">休憩/イントロ アニメーション</string>
|
||||
<string name="revanced_sb_segments_sponsor_sum">有料の宣伝 、紹介、直接広告。自己宣伝や好みのクリエーター、ウェブサイト、製品、慈善活動などの無報酬の宣伝は含まれません</string>
|
||||
<string name="revanced_sb_segments_selfpromo">無報酬の宣伝 / 自己宣伝</string>
|
||||
<string name="revanced_sb_segments_selfpromo_sum">無報酬または自己宣伝である、という点以外は「スポンサー」と同様です。商品、寄付、コラボ相手に関する宣伝を含みます</string>
|
||||
<string name="revanced_sb_segments_interaction">視聴者への催促 (登録)</string>
|
||||
<string name="revanced_sb_segments_interaction_sum">動画中に差し込まれる視聴者への高評価、チャンネル登録、フォローなどの短時間の催促。時間的に長い、または何か具体的なものに関する催促は「視聴者への催促」ではなく「自己宣伝」に分類すべきです</string>
|
||||
<string name="revanced_sb_segments_highlight">ハイライト</string>
|
||||
<string name="revanced_sb_segments_highlight_sum">動画の中で最も興味を引く場面</string>
|
||||
<string name="revanced_sb_segments_intro">幕間 / オープニング (イントロ)</string>
|
||||
<string name="revanced_sb_segments_intro_sum">実際のコンテンツを含まない間隔。一時停止、固定フレーム、繰り返しアニメーションを使用できます。情報を含むトランジションは含まれません。</string>
|
||||
<string name="revanced_sb_segments_outro">エンドカード/クレジット</string>
|
||||
<string name="revanced_sb_segments_outro">終了画面 / クレジット (アウトロ)</string>
|
||||
<string name="revanced_sb_segments_outro_sum">クレジットまたはYouTubeのエンドカードが表示される場合、情報を持つ結論にはなりません</string>
|
||||
<string name="revanced_sb_segments_preview">プレビュー/再読み込み/フック</string>
|
||||
<string name="revanced_sb_segments_preview">予告編 / 総集編 / フック</string>
|
||||
<string name="revanced_sb_segments_preview_sum">ビデオやシリーズの他のビデオで何が起こったのかを示すクリップのコレクション 全ての情報が他の場所で繰り返されます</string>
|
||||
<string name="revanced_sb_segments_filler">無駄な脱線/冗談</string>
|
||||
<string name="revanced_sb_segments_filler_sum">Tangential シーンは、ビデオの主な内容を理解する必要がないフィラーやユーモアにのみ追加されました。 コンテキストや背景の詳細を提供するセグメントが含まれていません</string>
|
||||
<string name="revanced_sb_segments_nomusic">音楽: 音楽ではない区間</string>
|
||||
<string name="revanced_sb_segments_nomusic_sum">ミュージックビデオでのみ使用できます。音楽がないミュージックビデオのセクションでは、別のカテゴリでカバーされていません。</string>
|
||||
<string name="revanced_sb_segments_filler">尺稼ぎの余談 / 冗談</string>
|
||||
<string name="revanced_sb_segments_filler_sum">動画の本筋を理解するのに必要のない、尺稼ぎやユーモアのみを目的として追加された脱線的な場面。コンテキストや背景情報を提供するセグメントは含まれません</string>
|
||||
<string name="revanced_sb_segments_nomusic">音楽: 楽曲以外の区間</string>
|
||||
<string name="revanced_sb_segments_nomusic_sum">ミュージック ビデオ専用。ミュージック ビデオの中で楽曲が流れていない区間。他のカテゴリーのセグメントと重なる場合があります</string>
|
||||
<string name="revanced_sb_skip_button_compact">スキップ</string>
|
||||
<string name="revanced_sb_skip_button_compact_highlight">強調表示</string>
|
||||
<string name="revanced_sb_skip_button_sponsor">スポンサーをスキップ</string>
|
||||
<string name="revanced_sb_skip_button_selfpromo">プロモーションをスキップ</string>
|
||||
<string name="revanced_sb_skip_button_interaction">対話をスキップ</string>
|
||||
<string name="revanced_sb_skip_button_highlight">スキップ</string>
|
||||
<string name="revanced_sb_skip_button_intro_beginning">イントロをスキップ</string>
|
||||
<string name="revanced_sb_skip_button_intro_middle">間隔をスキップ</string>
|
||||
<string name="revanced_sb_skip_button_intro_end">間隔をスキップ</string>
|
||||
<string name="revanced_sb_skip_button_outro">アウトロをスキップ</string>
|
||||
<string name="revanced_sb_skip_button_preview_beginning">プレビューをスキップ</string>
|
||||
<string name="revanced_sb_skip_button_preview_middle">プレビューをスキップ</string>
|
||||
<string name="revanced_sb_skip_button_preview_end">要約をスキップ</string>
|
||||
<string name="revanced_sb_skip_button_filler">フィラーをスキップ</string>
|
||||
<string name="revanced_sb_skip_button_nomusic">音楽以外をスキップ</string>
|
||||
<string name="revanced_sb_skip_button_compact_highlight">ハイライト</string>
|
||||
<string name="revanced_sb_skip_button_sponsor">「 スポンサー」をスキップ</string>
|
||||
<string name="revanced_sb_skip_button_selfpromo">「自己宣伝」をスキップ</string>
|
||||
<string name="revanced_sb_skip_button_interaction">「催促」をスキップ</string>
|
||||
<string name="revanced_sb_skip_button_highlight">「ハイライト」までスキップ</string>
|
||||
<string name="revanced_sb_skip_button_intro_beginning">「イントロ」をスキップ</string>
|
||||
<string name="revanced_sb_skip_button_intro_middle">「幕間」をスキップ</string>
|
||||
<string name="revanced_sb_skip_button_intro_end">「幕間」をスキップ</string>
|
||||
<string name="revanced_sb_skip_button_outro">「アウトロ」をスキップ</string>
|
||||
<string name="revanced_sb_skip_button_preview_beginning">「予告編」をスキップ</string>
|
||||
<string name="revanced_sb_skip_button_preview_middle">「予告編」をスキップ</string>
|
||||
<string name="revanced_sb_skip_button_preview_end">「総集編」をスキップ</string>
|
||||
<string name="revanced_sb_skip_button_filler">「余談」をスキップ</string>
|
||||
<string name="revanced_sb_skip_button_nomusic">「楽曲以外」をスキップ</string>
|
||||
<string name="revanced_sb_skip_button_unsubmitted">セグメントをスキップ</string>
|
||||
<string name="revanced_sb_skipped_sponsor">スキップしたスポンサー</string>
|
||||
<string name="revanced_sb_skipped_selfpromo">スキップしたセルフプロモーション</string>
|
||||
<string name="revanced_sb_skipped_interaction">スキップした迷惑なリマインダー</string>
|
||||
<string name="revanced_sb_skipped_highlight">ハイライト表示にスキップ</string>
|
||||
<string name="revanced_sb_skipped_intro_beginning">スキップしたイントロ</string>
|
||||
<string name="revanced_sb_skipped_intro_middle">スキップされた休憩時間</string>
|
||||
<string name="revanced_sb_skipped_intro_end">スキップされた休憩時間</string>
|
||||
<string name="revanced_sb_skipped_outro">スキップしたアウトロ</string>
|
||||
<string name="revanced_sb_skipped_preview_beginning">スキップしたプレビュー</string>
|
||||
<string name="revanced_sb_skipped_preview_middle">スキップしたプレビュー</string>
|
||||
<string name="revanced_sb_skipped_preview_end">スキップされた要約</string>
|
||||
<string name="revanced_sb_skipped_filler">つなぎシーンをスキップしました</string>
|
||||
<string name="revanced_sb_skipped_nomusic">スキップした無音</string>
|
||||
<string name="revanced_sb_skipped_sponsor">「スポンサー」をスキップしました</string>
|
||||
<string name="revanced_sb_skipped_selfpromo">「自己宣伝」をスキップしました</string>
|
||||
<string name="revanced_sb_skipped_interaction">「視聴者への催促」をスキップしました</string>
|
||||
<string name="revanced_sb_skipped_highlight">「ハイライト」までスキップしました</string>
|
||||
<string name="revanced_sb_skipped_intro_beginning">「イントロ」をスキップしました</string>
|
||||
<string name="revanced_sb_skipped_intro_middle">「幕間」をスキップしました</string>
|
||||
<string name="revanced_sb_skipped_intro_end">「幕間」をスキップしました</string>
|
||||
<string name="revanced_sb_skipped_outro">「アウトロ」をスキップしました</string>
|
||||
<string name="revanced_sb_skipped_preview_beginning">「予告編」をスキップしました</string>
|
||||
<string name="revanced_sb_skipped_preview_middle">「予告編」をスキップしました</string>
|
||||
<string name="revanced_sb_skipped_preview_end">「総集編」をスキップしました</string>
|
||||
<string name="revanced_sb_skipped_filler">「余談」をスキップしました</string>
|
||||
<string name="revanced_sb_skipped_nomusic">「楽曲以外の区間」をスキップしました</string>
|
||||
<string name="revanced_sb_skipped_unsubmitted">未送信のセグメントをスキップしました</string>
|
||||
<string name="revanced_sb_skipped_multiple_segments">複数のセグメントをスキップ</string>
|
||||
<string name="revanced_sb_skipped_multiple_segments">複数のセグメントをスキップしました</string>
|
||||
<string name="revanced_sb_skip_automatically">自動的にスキップ</string>
|
||||
<string name="revanced_sb_skip_automatically_once">一度自動的にスキップ</string>
|
||||
<string name="revanced_sb_skip_showbutton">「スキップ」ボタンを表示</string>
|
||||
<string name="revanced_sb_skip_automatically_once">1 回だけ自動的にスキップ</string>
|
||||
<string name="revanced_sb_skip_showbutton">スキップ ボタンを表示</string>
|
||||
<string name="revanced_sb_skip_seekbaronly">シークバーに表示</string>
|
||||
<string name="revanced_sb_skip_ignore">無効</string>
|
||||
<string name="revanced_sb_submit_failed_invalid">セグメントを送信できません: %s</string>
|
||||
@@ -1053,9 +1056,9 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ
|
||||
<string name="revanced_sb_stats_saved"><b>%s</b> 個のセグメントから人々を救いました</string>
|
||||
<string name="revanced_sb_stats_saved_sum_zero">ここをタップすると、世界的な統計とトップの貢献者を見ることができます</string>
|
||||
<string name="revanced_sb_stats_saved_sum">それは <b>%s</b> の生活です。<br>ここをタップしてリーダーボードを見る</string>
|
||||
<string name="revanced_sb_stats_self_saved"><b>%s</b> セグメントをスキップしました</string>
|
||||
<string name="revanced_sb_stats_self_saved">合計で <b>%s</b> 個のセグメントをスキップしました</string>
|
||||
<string name="revanced_sb_stats_self_saved_sum"><b>%s</b></string>
|
||||
<string name="revanced_sb_stats_self_saved_reset_title">スキップされたセグメントカウンターをリセットしますか?</string>
|
||||
<string name="revanced_sb_stats_self_saved_reset_title">スキップしたセグメントの合計をリセットしますか?</string>
|
||||
<string name="revanced_sb_stats_saved_hour_format">%1$s時間%2$s分</string>
|
||||
<string name="revanced_sb_stats_saved_minute_format">%1$s 分 %2$s 秒</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s 秒</string>
|
||||
@@ -1100,11 +1103,11 @@ Automotive レイアウト
|
||||
<string name="revanced_spoof_app_version_target_entry_2">19.01.34 - ナビゲーション アイコンが旧バージョン</string>
|
||||
</patch>
|
||||
<patch id="layout.startpage.changeStartPagePatch">
|
||||
<string name="revanced_change_start_page_title">起動画面</string>
|
||||
<string name="revanced_change_start_page_title">スタート画面</string>
|
||||
<string name="revanced_change_start_page_entry_default">デフォルト</string>
|
||||
<string name="revanced_change_start_page_entry_all_subscriptions">すべての登録チャンネル</string>
|
||||
<string name="revanced_change_start_page_entry_browse">チャンネル一覧</string>
|
||||
<string name="revanced_change_start_page_entry_courses">コース / 学び</string>
|
||||
<string name="revanced_change_start_page_entry_courses">学び</string>
|
||||
<string name="revanced_change_start_page_entry_explore">探索</string>
|
||||
<string name="revanced_change_start_page_entry_fashion">ファッションと美容</string>
|
||||
<string name="revanced_change_start_page_entry_gaming">ゲーム</string>
|
||||
@@ -1112,7 +1115,7 @@ Automotive レイアウト
|
||||
<string name="revanced_change_start_page_entry_library">マイページ</string>
|
||||
<string name="revanced_change_start_page_entry_liked_videos">高く評価した動画</string>
|
||||
<string name="revanced_change_start_page_entry_live">ライブ</string>
|
||||
<string name="revanced_change_start_page_entry_movies">映画</string>
|
||||
<string name="revanced_change_start_page_entry_movies">映画とテレビ</string>
|
||||
<string name="revanced_change_start_page_entry_music">音楽</string>
|
||||
<string name="revanced_change_start_page_entry_news">ニュース</string>
|
||||
<string name="revanced_change_start_page_entry_notifications">通知</string>
|
||||
@@ -1156,6 +1159,7 @@ Automotive レイアウト
|
||||
<string name="revanced_miniplayer_type_entry_4">モダン 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">モダン 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">モダン 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">モダン 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">角を丸くする</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">ミニプレーヤーの四角は丸角です</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">ミニプレーヤーの四角は直角です</string>
|
||||
@@ -1175,9 +1179,9 @@ Automotive レイアウト
|
||||
|
||||
ミニプレーヤーを画面の左または右端で最小化できます"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">横方向ドラッグ ジェスチャーは無効です</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">閉じるボタンを非表示</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">閉じるボタンは表示されません</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">閉じるボタンは表示されます</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">オーバーレイ ボタンを非表示</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">オーバーレイ ボタンは表示されません</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">オーバーレイ ボタンは表示されます</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">拡大ボタンと閉じるボタンを非表示</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"ボタンは表示されません
|
||||
|
||||
@@ -1186,7 +1190,7 @@ Automotive レイアウト
|
||||
<string name="revanced_miniplayer_hide_subtext_title">サブテキストを非表示</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">サブテキストは表示されません</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_off">サブテキストは表示されます</string>
|
||||
<string name="revanced_miniplayer_hide_rewind_forward_title">早送り / 巻き戻しボタンを非表示</string>
|
||||
<string name="revanced_miniplayer_hide_rewind_forward_title">早送りボタンと巻き戻しボタンを非表示</string>
|
||||
<string name="revanced_miniplayer_hide_rewind_forward_summary_on">早送りボタンと巻き戻しボタンは表示されません</string>
|
||||
<string name="revanced_miniplayer_hide_rewind_forward_summary_off">早送りボタンと巻き戻しボタンは表示されます</string>
|
||||
<string name="revanced_miniplayer_width_dip_title">デフォルトのサイズ</string>
|
||||
@@ -1280,8 +1284,8 @@ DeArrow の詳細については、ここをタップしてください"</string
|
||||
<string name="revanced_spoof_device_dimensions_user_dialog_message">この機能を有効にすると、動画のカクつき、バッテリー寿命の悪化、および予期せぬ副作用を引き起こす可能性があります。</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
<string name="microg_settings_title">GmsCore設定</string>
|
||||
<string name="microg_settings_summary">GmsCoreの設定</string>
|
||||
<string name="microg_settings_title">GmsCore 設定</string>
|
||||
<string name="microg_settings_summary">GmsCore の設定</string>
|
||||
</patch>
|
||||
<patch id="misc.links.bypassURLRedirectsPatch">
|
||||
<string name="revanced_bypass_url_redirects_title">URL リダイレクトを回避する</string>
|
||||
@@ -1384,8 +1388,8 @@ DeArrow の詳細については、ここをタップしてください"</string
|
||||
|
||||
AVC の最大解像度は 1080p であり、Opus オーディオ コーデックは使用できず、動画の再生時に VP9 や AV1 より多くの通信量を使用します。"</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_tv_title">iOS クライアントの副作用</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_tv_summary">"• 映画や有料動画が再生されない場合があります
|
||||
• 一定音量は使用できません
|
||||
<string name="revanced_spoof_video_streams_about_ios_tv_summary">"• 映画や有料動画が再生されない可能性があります
|
||||
• 一定音量は利用できません
|
||||
• 動画が 1 秒早く終了します"</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_title">Android クライアントの副作用</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_summary">"• 音声トラック メニューが表示されません
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">ReVanced 설정을 기본값으로 초기화합니다</string>
|
||||
<string name="revanced_settings_import_success">%d 설정을 가져왔습니다</string>
|
||||
<string name="revanced_settings_import_failure_parse">설정을 가져올 수 없습니다: %s</string>
|
||||
<string name="revanced_show_menu_icons_title">ReVanced 설정 아이콘 표시하기</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">설정 아이콘을 표시합니다</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">설정 아이콘을 표시하지 않습니다</string>
|
||||
<string name="revanced_language_title">ReVanced 언어</string>
|
||||
<string name="revanced_language_user_dialog_message">"일부 언어의 번역이 누락되었거나 완료되지 않았을 수 있습니다
|
||||
|
||||
@@ -409,8 +412,8 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
|
||||
</patch>
|
||||
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
|
||||
<string name="revanced_remove_viewer_discretion_dialog_title">시청 경고 다이얼로그 제거하기</string>
|
||||
<string name="revanced_remove_viewer_discretion_dialog_summary_on">다음 동영상을 시청하기 전에 표시되는 시청 경고 다이얼로그를 제거합니다:\n• 연령 제한 동영상\n• 혐오감을 주는 동영상\n• 자살 또는 자해와 관련된 동영상, etc.</string>
|
||||
<string name="revanced_remove_viewer_discretion_dialog_summary_off">다음 동영상을 시청하기 전에 표시되는 시청 경고 다이얼로그를 제거하지 않습니다:\n• 연령 제한 동영상\n• 혐오감을 주는 동영상\n• 자살 또는 자해와 관련된 동영상, etc.</string>
|
||||
<string name="revanced_remove_viewer_discretion_dialog_summary_on">다음 동영상을 시청하기 전에 표시되는 시청 경고 다이얼로그를 제거합니다:\n• 연령 제한 동영상\n• 자살 또는 자해와 관련된 동영상, etc.</string>
|
||||
<string name="revanced_remove_viewer_discretion_dialog_summary_off">다음 동영상을 시청하기 전에 표시되는 시청 경고 다이얼로그를 제거하지 않습니다:\n• 연령 제한 동영상\n• 자살 또는 자해와 관련된 동영상, etc.</string>
|
||||
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">이 설정은 다이얼로그를 자동으로 허용하기만 하며 연령 제한(성인인증 절차)을 우회할 수 없습니다</string>
|
||||
</patch>
|
||||
<patch id="interaction.downloads.downloadsResourcePatch">
|
||||
@@ -1155,6 +1158,7 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
|
||||
<string name="revanced_miniplayer_type_entry_4">모던 스타일 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">모던 스타일 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">모던 스타일 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">모던 스타일 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">둥근 모서리 활성화하기</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">모서리를 둥글게 활성화합니다</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">모서리를 각지게 활성화합니다</string>
|
||||
@@ -1174,9 +1178,9 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
|
||||
|
||||
• 미니 플레이어 절반 정도를 왼쪽 밖 또는 오른쪽 밖으로 드래그하여 숨길 수 있습니다"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">수평 드래그 제스처를 비활성화합니다</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">\'닫기\' 버튼 숨기기</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">\'닫기\' 버튼이 숨겨집니다\n\n• YouTube v19.24.xx까지 모던 스타일 1, 3에서 \'펼치기 & 닫기 버튼 숨기기\' 기능이 작동됩니다\n• YouTube v19.34.xx부터 모던 스타일 3에서만 \'닫기 버튼 숨기기\' 기능이 작동됩니다</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">\'닫기\' 버튼이 표시됩니다\n\n• YouTube v19.24.xx까지 모던 스타일 1, 3에서 \'펼치기 & 닫기 버튼 숨기기\' 기능이 작동됩니다\n• YouTube v19.34.xx부터 모던 스타일 3에서만 \'닫기 버튼 숨기기\' 기능이 작동됩니다</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">오버레이 버튼 숨기기</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">오버레이 버튼이 숨겨집니다.</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">오버레이 버튼이 표시됩니다.</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">\'펼치기\' & \'닫기\' 버튼 숨기기</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"'펼치기' & '닫기' 버튼이 숨겨집니다
|
||||
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">ReVanced nustatymai atstatyti į numatytuosius</string>
|
||||
<string name="revanced_settings_import_success">Importuota %d nustatymų</string>
|
||||
<string name="revanced_settings_import_failure_parse">Importavimas nepavyko: %s</string>
|
||||
<string name="revanced_show_menu_icons_title">Rodyti „ReVanced“ nustatymų piktogramas</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">Nustatymų piktogramos yra rodomos</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">Nenurodomos nustatymų piktogramos</string>
|
||||
<string name="revanced_language_title">ReVanced kalba</string>
|
||||
<string name="revanced_language_user_dialog_message">"Kai kurių kalbų vertimai gali būti neišsamūs ar trūkti.
|
||||
|
||||
@@ -1156,6 +1159,7 @@ Jei vėliau išjungta, rekomenduojama išvalyti programos duomenis, kad būtų i
|
||||
<string name="revanced_miniplayer_type_entry_4">Modernus 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Modernus 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Modernus 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">Modernus 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">Įgalinti suapvalintus kampus</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Kampai yra suapvalinti</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Kampai yra kvadratiniai</string>
|
||||
@@ -1175,9 +1179,9 @@ Jei vėliau išjungta, rekomenduojama išvalyti programos duomenis, kad būtų i
|
||||
|
||||
\"Miniplayer\" galima vilkti nuo ekrano į kairę arba dešinę"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Horizontalaus vilkimo gestas išjungtas</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Slėpti uždarymo mygtuką</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Uždarymo mygtukas yra paslėptas</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Uždarymo mygtukas yra rodomas</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Slėpti perdangos mygtukus</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Perdangos mygtukai paslėpti</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Perdangos mygtukai rodomi</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Slėpti išplėtimo ir uždarymo mygtukus</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Mygtukai paslėpti
|
||||
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">ReVanced iestatījumi atiestatīti uz noklusējuma vērtībām</string>
|
||||
<string name="revanced_settings_import_success">Importēti %d iestatījumi</string>
|
||||
<string name="revanced_settings_import_failure_parse">Importēšana neizdevās: %s</string>
|
||||
<string name="revanced_show_menu_icons_title">Rādīt ReVanced iestatījumu ikonas</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">Iestatījumu ikonas tiek rādītas</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">Ikonas iestatījumos netiek rādītas</string>
|
||||
<string name="revanced_language_title">ReVanced valoda</string>
|
||||
<string name="revanced_language_user_dialog_message">"Tulkojuma dažām valodām var būt nepilnīgs vai nebūt vispār.
|
||||
|
||||
@@ -1154,6 +1157,7 @@ Ja vēlāk tiks izslēgts, ieteicams notīrīt lietotnes datus, lai novērstu li
|
||||
<string name="revanced_miniplayer_type_entry_4">Moderns 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Moderns 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Moderns 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">Moderns 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">Iespējot noapaļotus stūrus</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Stūri ir noapaļoti</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Stūri ir kvadrātveida</string>
|
||||
@@ -1173,13 +1177,13 @@ Miniatskaņotāju var pārvilkt uz jebkuru ekrāna stūri"</string>
|
||||
|
||||
Miniatskaņotāju var pārvilkt no ekrāna uz kreiso vai labo pusi"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Horizontāls velci ir atspējots</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Slēpt aizvēršanas pogu</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Aizvēršanas poga ir paslēpta</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Aizvēršanas poga ir redzama</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Slēpt izvēršanas un aizvēršanas pogas</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Paslēpt pārklājuma pogas</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Pārklājuma pogas ir paslēptas</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Pārklājuma pogas ir redzamas</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Paslēpt izvēršanas un aizvēršanas pogas</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Pogas ir paslēptas
|
||||
|
||||
Pārvelciet, lai paplašinātu vai aizvērtu"</string>
|
||||
Velciet, lai izvērstu vai aizvērtu"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Izvēršanas un aizvēršanas pogas ir redzamas</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">Slēpt apakštekstu</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">Apakšteksts ir paslēpts</string>
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">ReVanced-instellingen zijn teruggezet naar de standaardinstellingen</string>
|
||||
<string name="revanced_settings_import_success">%d instellingen geïmporteerd</string>
|
||||
<string name="revanced_settings_import_failure_parse">Importeren mislukt: %s</string>
|
||||
<string name="revanced_show_menu_icons_title">Pictogrammen voor ReVanced-instellingen weergeven</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">Instellingspictogrammen worden weergegeven</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">Pictogrammen voor instellingen worden niet weergegeven</string>
|
||||
<string name="revanced_language_title">ReVanced-taal</string>
|
||||
<string name="revanced_language_user_dialog_message">"Vertalingen voor sommige talen kunnen ontbreken of onvolledig zijn.
|
||||
|
||||
@@ -1096,6 +1099,7 @@ Als het later wordt uitgeschakeld, wordt aanbevolen om de app-gegevens te wissen
|
||||
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">Doel voor vervalsen app-versie</string>
|
||||
<string name="revanced_spoof_app_version_target_entry_1">19.35.36 - Herstel oude pictogrammen voor Shorts-speler</string>
|
||||
<string name="revanced_spoof_app_version_target_entry_2">19.01.34 - Herstel oude navigatie-iconen</string>
|
||||
</patch>
|
||||
<patch id="layout.startpage.changeStartPagePatch">
|
||||
<string name="revanced_change_start_page_title">Startpagina instellen</string>
|
||||
@@ -1154,6 +1158,7 @@ Als het later wordt uitgeschakeld, wordt aanbevolen om de app-gegevens te wissen
|
||||
<string name="revanced_miniplayer_type_entry_4">Modern 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Modern 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Modern 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">Modern 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">Schakel afgeronde hoeken in</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Hoeken zijn afgerond</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Hoeken zijn vierkant</string>
|
||||
@@ -1173,14 +1178,14 @@ De miniplayer kan naar elke hoek van het scherm worden gesleept"</string>
|
||||
|
||||
De miniplayer kan naar links of rechts van het scherm worden gesleept"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Horizontaal sleepgebaar uitgeschakeld</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Verberg de sluitknop</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">De sluitknop is verborgen</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">De sluitknop is zichtbaar</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Verberg uitvouwen en sluiten knoppen</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Overlayknoppen verbergen</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Overlayknoppen zijn verborgen</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Overlayknoppen worden weergegeven</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Knoppen voor uitvouwen en sluiten verbergen</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Knoppen zijn verborgen
|
||||
|
||||
Veeg om uit te vouwen of te sluiten"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Uitvouwen en sluiten knoppen zijn zichtbaar</string>
|
||||
Swipe om uit te vouwen of te sluiten"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Knoppen voor uitvouwen en sluiten worden weergegeven</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">Verberg subteksten</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">Subteksten zijn verborgen</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_off">Subteksten zijn zichtbaar</string>
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">Przywrócono domyślne ustawienia ReVanced</string>
|
||||
<string name="revanced_settings_import_success">Zaimportowano %d ustawień</string>
|
||||
<string name="revanced_settings_import_failure_parse">Importowanie nie powiodło się: %s</string>
|
||||
<string name="revanced_show_menu_icons_title">Pokaż ikony ustawień ReVanced</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">Ikony ustawień są widoczne</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">Ikony ustawień nie są wyświetlane</string>
|
||||
<string name="revanced_language_title">Język ReVanced</string>
|
||||
<string name="revanced_language_user_dialog_message">"Tłumaczenia dla niektórych języków mogą być niepełne lub nieaktualne.
|
||||
|
||||
@@ -1155,6 +1158,7 @@ Jeśli później zostanie wyłączony, zaleca się wyczyszczenie danych aplikacj
|
||||
<string name="revanced_miniplayer_type_entry_4">Nowoczesny 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Nowoczesny 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Nowoczesny 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">Nowoczesny 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">Zaokrąglone narożniki</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Narożniki są zaokrąglone</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Narożniki są kwadratowe</string>
|
||||
@@ -1174,14 +1178,14 @@ Odtwarzacz można przeciągnąć do dowolnego rogu ekranu"</string>
|
||||
|
||||
Odtwarzacz można przeciągnąć poza ekran w lewo lub w prawo"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Gest przeciągania w poziomie jest wyłączony</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Przycisk zamykania</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Przycisk zamykania jest ukryty</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Przycisk zamykania jest widoczny</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Przyciski rozszerzania i zamykania</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Ukryj przyciski nakładki</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Przyciski nakładki są ukryte</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Przyciski nakładki są widoczne</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Ukryj przyciski rozwijania i zamykania</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Przyciski są ukryte
|
||||
|
||||
Przesuń, aby rozwinąć lub zamknąć"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Przyciski są widoczne</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Przyciski rozwijania i zamykania są widoczne</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">Podteksty</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">Podteksty są ukryte</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_off">Podteksty są widoczne</string>
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">Configurações do ReVanced redefinidas para o padrão</string>
|
||||
<string name="revanced_settings_import_success">Configurações %d importadas</string>
|
||||
<string name="revanced_settings_import_failure_parse">Importação falhou: %s</string>
|
||||
<string name="revanced_show_menu_icons_title">Mostrar ícones de configuração do ReVanced</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">Ícones de configuração são mostrados</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">Os ícones de configuração não são mostrados</string>
|
||||
<string name="revanced_language_title">Idioma do ReVanced</string>
|
||||
<string name="revanced_language_user_dialog_message">"As traduções para alguns idiomas podem estar ausentes ou incompletas.\n\nPara traduzir novos idiomas, acesse translate.revanced.app"</string>
|
||||
<string name="revanced_language_DEFAULT">Idioma do aplicativo</string>
|
||||
@@ -1093,6 +1096,7 @@ Se posteriormente desativado, é recomendável limpar os dados do aplicativo par
|
||||
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">Versão de spoofing alvo</string>
|
||||
<string name="revanced_spoof_app_version_target_entry_1">19.35.36 - Restaurar ícones antigos do player dos Shorts</string>
|
||||
<string name="revanced_spoof_app_version_target_entry_2">19.01.34 - Restaurar ícones de navegação antigos</string>
|
||||
</patch>
|
||||
<patch id="layout.startpage.changeStartPagePatch">
|
||||
<string name="revanced_change_start_page_title">Definir página inicial</string>
|
||||
@@ -1151,6 +1155,7 @@ Se posteriormente desativado, é recomendável limpar os dados do aplicativo par
|
||||
<string name="revanced_miniplayer_type_entry_4">Moderno 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Moderno 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Moderno 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">Moderno 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">Ativar cantos arredondados</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Os cantos são arredondados</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Os cantos são quadrados</string>
|
||||
@@ -1170,14 +1175,14 @@ O miniplayer pode ser arrastado para qualquer canto da tela"</string>
|
||||
|
||||
O miniplayer pode ser arrastado para fora da tela para a esquerda ou direita"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Gesto de arrastar horizontal desativado</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Ocultar botão fechar</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">O botão fechar está oculto</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Botão fechar é mostrado</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Ocultar botões de expansão e fechar</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Os botões estão ocultos
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Ocultar botões de sobreposição</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Botões de sobreposição estão ocultos</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Botões de sobreposição são mostrados</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Ocultar botões de expandir e fechar</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Botões estão ocultos
|
||||
|
||||
Deslize para expandir ou fechar"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Os botões de expansão e fechar são mostrados</string>
|
||||
Passe o dedo para expandir ou fechar"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Botões de expandir e fechar são mostrados</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">Ocultar subtextos</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">Subtextos estão ocultos</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_off">Subtextos são exibidos</string>
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">As definições do ReVanced foram redefinidas para a predefinição</string>
|
||||
<string name="revanced_settings_import_success">Configurações importadas: %d</string>
|
||||
<string name="revanced_settings_import_failure_parse">A importação falhou: %s</string>
|
||||
<string name="revanced_show_menu_icons_title">Mostrar ícones de configuração do ReVanced</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">Os ícones de configuração são mostrados</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">Os ícones de configuração não são mostrados</string>
|
||||
<string name="revanced_language_title">Idioma do ReVanced</string>
|
||||
<string name="revanced_language_user_dialog_message">"As traduções para algumas línguas podem estar em falta ou incompletas.
|
||||
|
||||
@@ -1155,6 +1158,7 @@ Nếu sau này tắt, bạn nên xóa dữ liệu ứng dụng để tránh lỗ
|
||||
<string name="revanced_miniplayer_type_entry_4">Moderno 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Moderno 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Moderno 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">Moderno 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">Ativar cantos arredondados</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Bordas são arredondadas</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Os cantos estão quadrados</string>
|
||||
@@ -1174,14 +1178,14 @@ Miniplayer có thể được kéo đến bất kỳ góc nào của màn hình"
|
||||
|
||||
Miniplayer có thể được kéo ra khỏi màn hình sang trái hoặc phải"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Gestos de arrastar horizontais desativados</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Ocultar botão fechar</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">O botão fechar está oculto</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Botão fechar é mostrado</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Ocultar botões de expansão e fechamento</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Nút bị ẩn
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Ocultar botões de sobreposição</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Os botões de sobreposição estão ocultos</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Os botões de sobreposição são mostrados</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Ocultar botões de expansão e fechar</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Os botões estão ocultos
|
||||
|
||||
Vuốt để mở rộng hoặc đóng"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Botões de expansão e fechamento são mostrados</string>
|
||||
Deslize para expandir ou fechar"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Os botões de expansão e fechar são mostrados</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">Ocultar subtextos</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">Subtextos estão ocultos</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_off">Subtextos são exibidos</string>
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">Setările ReVanced au fost resetate la valorile implicite</string>
|
||||
<string name="revanced_settings_import_success">Au fost importate %d setări</string>
|
||||
<string name="revanced_settings_import_failure_parse">Importare eșuată: %s</string>
|
||||
<string name="revanced_show_menu_icons_title">Afișați pictogramele de setări ReVanced</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">Pictogramele de setări sunt afișate</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">Pictogramele setărilor nu sunt afișate</string>
|
||||
<string name="revanced_language_title">Limba ReVanced</string>
|
||||
<string name="revanced_language_user_dialog_message">"Traducerile pentru unele limbi pot lipsi sau pot fi incomplete.
|
||||
|
||||
@@ -1154,6 +1157,7 @@ Dacă este dezactivat ulterior, se recomandă să ștergeți datele aplicației
|
||||
<string name="revanced_miniplayer_type_entry_4">Modern 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Modern 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Modern 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">Modern 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">Activează colțurile rotunjite</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Colţurile sunt rotunjite</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Colţurile sunt pătrate</string>
|
||||
@@ -1173,14 +1177,14 @@ Miniplayerul poate fi tras în orice colț al ecranului"</string>
|
||||
|
||||
Miniplayerul poate fi tras pe ecran spre stânga sau spre dreapta"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Gest de tragere orizontal dezactivat</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Ascunde butonul de închidere</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Butonul de închidere este ascuns</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Butonul de închidere este afișat</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Ascunde butoanele suprapuse</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Butoanele suprapuse sunt ascunse</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Butoanele suprapuse sunt afișate</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Ascunde extinderea și închiderea butoanelor</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Butoanele sunt ascunse
|
||||
|
||||
Trageți pentru a extinde sau a închide"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Afișarea și închiderea butoanelor sunt afișate</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Butoanele de extindere și închidere sunt afișate</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">Ascunde subtexte</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">Subtexte sunt ascunse</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_off">Subtexte sunt afișate</string>
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">Настройки ReVanced восстановлены до значений по умолчанию</string>
|
||||
<string name="revanced_settings_import_success">Импортировано %d настроек</string>
|
||||
<string name="revanced_settings_import_failure_parse">Ошибка импорта: %s</string>
|
||||
<string name="revanced_show_menu_icons_title">Показать иконки в настройках ReVanced</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">Иконки в настройках ReVanced показаны</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">Иконки в настройках ReVanced скрыты</string>
|
||||
<string name="revanced_language_title">Язык настроек ReVanced</string>
|
||||
<string name="revanced_language_user_dialog_message">"Переводы для некоторых языков могут отсутствовать или быть неполными.
|
||||
|
||||
@@ -226,9 +229,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_artist_cards_title">Скрыть карточки исполнителей</string>
|
||||
<string name="revanced_hide_artist_cards_summary_on">Карточки исполнителей под плеером скрыты</string>
|
||||
<string name="revanced_hide_artist_cards_summary_off">Карточки исполнителей под плеером показаны</string>
|
||||
<string name="revanced_hide_ai_generated_video_summary_section_title">Скрыть «Краткое содержание видео, созданное ИИ»</string>
|
||||
<string name="revanced_hide_ai_generated_video_summary_section_summary_on">Раздел с кратким содержанием видео скрыт</string>
|
||||
<string name="revanced_hide_ai_generated_video_summary_section_summary_off">Раздел с кратким содержанием видео показан</string>
|
||||
<string name="revanced_hide_ai_generated_video_summary_section_title">Скрыть секцию AI-резюме видео</string>
|
||||
<string name="revanced_hide_ai_generated_video_summary_section_summary_on">Секция AI-резюме видео в описании видео скрыта</string>
|
||||
<string name="revanced_hide_ai_generated_video_summary_section_summary_off">Секция AI-резюме видео в описании видео показана</string>
|
||||
<string name="revanced_hide_attributes_section_title">Скрыть раздел атрибутов</string>
|
||||
<string name="revanced_hide_attributes_section_summary_on">Разделы \"Упомянутые или показанные места\", \"Игры\", \"Музыка\" и \"Люди, которых упоминали\" скрыты</string>
|
||||
<string name="revanced_hide_attributes_section_summary_off">Разделы \"Упомянутые или показанные места\", \"Игры\", \"Музыка\" и \"Люди, которых упоминали\" показаны</string>
|
||||
@@ -265,12 +268,12 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Панель фильтров в похожих видео показана</string>
|
||||
<string name="revanced_comments_screen_title">Комментарии</string>
|
||||
<string name="revanced_comments_screen_summary">Скрыть или показать компоненты раздела комментариев</string>
|
||||
<string name="revanced_hide_comments_ai_chat_summary_title">Скрыть сводку чата на базе ИИ</string>
|
||||
<string name="revanced_hide_comments_ai_chat_summary_summary_on">Баннер \"Обзор чата\" в чатах прямых трансляций скрыт</string>
|
||||
<string name="revanced_hide_comments_ai_chat_summary_summary_off">Баннер \"Обзор чата\" в чатах прямых трансляций показан</string>
|
||||
<string name="revanced_hide_comments_ai_summary_title">Скрыть сводку комментариев на базе ИИ</string>
|
||||
<string name="revanced_hide_comments_ai_summary_summary_on">Сводка комментариев скрыта</string>
|
||||
<string name="revanced_hide_comments_ai_summary_summary_off">Сводка комментариев показана</string>
|
||||
<string name="revanced_hide_comments_ai_chat_summary_title">Скрыть секцию AI-обзора чата</string>
|
||||
<string name="revanced_hide_comments_ai_chat_summary_summary_on">Секция AI-обзора чата в чатах прямых трансляций скрыта</string>
|
||||
<string name="revanced_hide_comments_ai_chat_summary_summary_off">Секция AI-обзора чата в чатах прямых трансляций показана</string>
|
||||
<string name="revanced_hide_comments_ai_summary_title">Скрыть вкладку AI-сводки по темам комментариев </string>
|
||||
<string name="revanced_hide_comments_ai_summary_summary_on">Вкладка AI-сводки по темам комментариев скрыта </string>
|
||||
<string name="revanced_hide_comments_ai_summary_summary_off">Вкладка AI-сводки по темам комментариев показана</string>
|
||||
<string name="revanced_hide_comments_by_members_header_title">Скрыть заголовок \"Комментарии спонсоров\"</string>
|
||||
<string name="revanced_hide_comments_by_members_header_summary_on">Заголовок \"Комментарии спонсоров\" в комментариях скрыт</string>
|
||||
<string name="revanced_hide_comments_by_members_header_summary_off">Заголовок \"Комментарии спонсоров\" в комментариях показан</string>
|
||||
@@ -430,9 +433,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_disable_precise_seeking_gesture_summary_off">Жест покадровой перемотки включен</string>
|
||||
</patch>
|
||||
<patch id="interaction.seekbar.enableSeekbarTappingPatch">
|
||||
<string name="revanced_seekbar_tapping_title">Включить нажатие для поиска</string>
|
||||
<string name="revanced_seekbar_tapping_summary_on">Нажатие для поиска включено</string>
|
||||
<string name="revanced_seekbar_tapping_summary_off">Нажатие для поиска отключено</string>
|
||||
<string name="revanced_seekbar_tapping_title">Включить перемотку нажатием</string>
|
||||
<string name="revanced_seekbar_tapping_summary_on">Перемотка нажатием на полосу прогресса включена</string>
|
||||
<string name="revanced_seekbar_tapping_summary_off">Перемотка нажатием на полосу прогресса отключена</string>
|
||||
</patch>
|
||||
<patch id="interaction.swipecontrols.swipeControlsResourcePatch">
|
||||
<string name="revanced_swipe_brightness_title">Включить регулировку яркости жестом</string>
|
||||
@@ -555,7 +558,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_disable_translucent_status_bar_title">Отключить полупрозрачность строки состояния</string>
|
||||
<string name="revanced_disable_translucent_status_bar_summary_on">Строка состояния непрозрачная</string>
|
||||
<string name="revanced_disable_translucent_status_bar_summary_off">Строка состояния непрозрачная или полупрозрачная</string>
|
||||
<string name="revanced_disable_translucent_status_bar_user_dialog_message">На некоторых устройствах включение этой функции может сделать панель навигации системы прозрачной.</string>
|
||||
<string name="revanced_disable_translucent_status_bar_user_dialog_message">На некоторых устройствах включение данной опции может сделать системную панель навигации прозрачной.</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_title">Отключить полупрозрачность светлой панели навигации</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_on">Панель навигации при светлой теме непрозрачная</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_off">Панель навигации при светлой теме непрозрачная или полупрозрачная</string>
|
||||
@@ -1155,6 +1158,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_miniplayer_type_entry_4">Современный 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Современный 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Современный 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">Современный 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">Включить закругление углов</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Углы миниплеера закруглены</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Углы миниплеера квадратны</string>
|
||||
@@ -1174,9 +1178,9 @@ Second \"item\" text"</string>
|
||||
|
||||
Миниплеер можно перетаскивать за пределы экрана влево или вправо"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Жест горизонтального перетаскивания отключен</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Скрыть кнопку закрытия</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Кнопка закрытия миниплеера скрыта</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Кнопка закрытия миниплеера показана</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Скрыть кнопки миниплеера</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Кнопки миниплеера скрыты</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Кнопки миниплеера показаны</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Скрыть кнопки разворачивания и закрытия</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Кнопки разворачивания и закрытия скрыты
|
||||
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">Nastavenia ReVanced sa obnovia na predvolené</string>
|
||||
<string name="revanced_settings_import_success">Počet importovaných nastavení: %d</string>
|
||||
<string name="revanced_settings_import_failure_parse">Import zlyhal: %s</string>
|
||||
<string name="revanced_show_menu_icons_title">Zobraziť ikony nastavení ReVanced</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">Ikony nastavení sa zobrazujú</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">Ikony nastavení sa nezobrazujú</string>
|
||||
<string name="revanced_language_title">Jazyk reVanced</string>
|
||||
<string name="revanced_language_user_dialog_message">"Pre niektoré jazyky môžu chýbať preklady alebo môžu byť neúplné.
|
||||
|
||||
@@ -1145,6 +1148,7 @@ Ak sa neskôr vypne, odporúča sa vymazať údaje aplikácie, aby sa zabránilo
|
||||
<string name="revanced_miniplayer_type_entry_4">Moderné 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Moderné 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Moderné 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">Moderné 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">Povoliť zaoblené rohy</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Rohy sú zaoblené</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Rohy sú štvorcové</string>
|
||||
@@ -1162,14 +1166,14 @@ Ak sa neskôr vypne, odporúča sa vymazať údaje aplikácie, aby sa zabránilo
|
||||
|
||||
Miniprehrávač sa dá potiahnuť mimo obrazovky doľava alebo doprava"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Zakázané je horizontálne posunutie</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Skryť tlačidlo pre zatvorenie</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Tlačidlo pre zatvorenie je skryté</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Tlačidlo pre zatvorenie je zobrazené</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Skryť tlačidlá rozbalenia a zatvorenia</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Skryť tlačidlá prekrytia</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Tlačidlá prekrytia sú skryté</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Zobrazujú sa tlačidlá prekrytia</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Skryť tlačidlá na rozbalenie a zatvorenie</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Tlačidlá sú skryté
|
||||
|
||||
Potiahnite prstom na rozbalenie alebo zatvorenie"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Zobrazia sa tlačidlá rozbalenia a zatvorenia</string>
|
||||
Potiahnutím rozbalíte alebo zatvoríte"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Zobrazujú sa tlačidlá na rozbalenie a zatvorenie</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">Skryť podtexty</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">Podtexty sú skryté</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_off">Zobrazia sa podtexty</string>
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">ReVanced nastavitve ponastavljene na privzeto</string>
|
||||
<string name="revanced_settings_import_success">Uvoženih %d nastavitev</string>
|
||||
<string name="revanced_settings_import_failure_parse">Uvoz ni uspel: %s</string>
|
||||
<string name="revanced_show_menu_icons_title">Pokaži ikone nastavitev ReVanced</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">Ikone nastavitev so prikazane</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">Ikone nastavitev niso prikazane</string>
|
||||
<string name="revanced_language_title">ReVanced jezik</string>
|
||||
<string name="revanced_language_user_dialog_message">"Prevodi za nekatere jezike morda manjkajo ali so nepopolni.
|
||||
|
||||
@@ -1154,6 +1157,7 @@ To bo spremenilo videz in funkcije aplikacije, vendar se lahko pojavijo neznani
|
||||
<string name="revanced_miniplayer_type_entry_4">Sodobno 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Sodobno 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Sodobno 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">Sodobno 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">Omogoči zaobljene robove</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Robovi so zaobljeni</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Robovi so kvadratni</string>
|
||||
@@ -1173,9 +1177,9 @@ Minipredvajalnik lahko povlečete v kateri koli kot zaslona"</string>
|
||||
|
||||
Minipredvajalnik lahko povlečete z zaslona na levo ali desno"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Vodoravna kretnja vlečenja je onemogočena</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Skrij gumb za zapiranje</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Gumb za zapiranje je skrit</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Gumb za zapiranje je prikazan</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Skrij prekrivne gumbe</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Prekrivni gumbi so skriti</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Prekrivni gumbi so prikazani</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Skrij gumbe za razširitev in zapiranje</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Gumbi so skriti
|
||||
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">Cilësimet e ReVanced u rivendosën në cilësimet e parazgjedhura</string>
|
||||
<string name="revanced_settings_import_success">Importuan %d cilësime</string>
|
||||
<string name="revanced_settings_import_failure_parse">Importimi dështoi: %s</string>
|
||||
<string name="revanced_show_menu_icons_title">Shfaq ikonat e cilësimeve të ReVanced</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">Ikonat e cilësimeve shfaqen</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">Ikonat e cilësimeve nuk shfaqen</string>
|
||||
<string name="revanced_language_title">Gjuha e ReVanced</string>
|
||||
<string name="revanced_language_user_dialog_message">"Përkthimet për disa gjuhë mund të jenë të humbura ose të paplota.
|
||||
|
||||
@@ -1153,6 +1156,7 @@ Nëse më vonë është çaktivizuar, është e rekomanduar të fshiheni të dh
|
||||
<string name="revanced_miniplayer_type_entry_4">Modern 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Modern 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Modern 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">Modern 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">Aktivizo qoshet e rrumbullakosura</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Qoshet janë të rrumbullakosura</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Qoshet janë katrore</string>
|
||||
@@ -1172,13 +1176,13 @@ Miniplayer mund të tërhiqet në çdo qoshe të ekranit"</string>
|
||||
|
||||
Miniplayer mund të tërhiqet jashtë ekranit në të majtë ose në të djathtë"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Gjestet e tërheqjes horizontale janë të çaktivizuara</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Fsheh butonin e mbylljes</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Butoni i mbylljes është i fshehur</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Butoni i mbylljes është i dukshëm</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Fsheh butonat e zgjerimit dhe mbylljes</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Butonat janë të fshehura
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Fshih butonat e mbivendosjes</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Butonat e mbivendosjes janë të fshehur</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Butonat e mbivendosjes janë të dukshëm</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Fshih butonat e zgjerimit dhe mbylljes</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Butonat janë të fshehur
|
||||
|
||||
Lëviz gishtin për të zgjeruar ose mbyllur"</string>
|
||||
Rrëshqit për të zgjeruar ose mbyllur"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Butonat e zgjerimit dhe mbylljes janë të dukshëm</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">Fsheh nëntekstet</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">Nëntekstet janë të fshehura</string>
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">Podešavanja ReVanceda su vraćena na podrazumevane vrednosti</string>
|
||||
<string name="revanced_settings_import_success">Uvezeno %d podešavanja</string>
|
||||
<string name="revanced_settings_import_failure_parse">Neuspešan uvoz: %s</string>
|
||||
<string name="revanced_show_menu_icons_title">Prikaži ikonice podešavanja ReVanceda</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">Ikonice podešavanja su prikazane</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">Ikonice podešavanja nisu prikazane</string>
|
||||
<string name="revanced_language_title">Jezik ReVanceda</string>
|
||||
<string name="revanced_language_user_dialog_message">"Prevodi za neke jezike mogu nedostajati ili biti nepotpuni.
|
||||
|
||||
@@ -1154,6 +1157,7 @@ Ako se kasnije isključi, preporučuje se da izbrišete podatke aplikacije da bi
|
||||
<string name="revanced_miniplayer_type_entry_4">Moderan 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Moderan 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Moderan 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">Moderan 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">Omogući zaobljene uglove</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Uglovi su zaobljeni</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Uglovi su kvadratni</string>
|
||||
@@ -1173,14 +1177,14 @@ Mini-plejer se može prevući u bilo koji ugao ekrana"</string>
|
||||
|
||||
Mini-plejer se može prevući sa ekrana ulevo ili udesno"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Pokret horizontalnog prevlačenja je onemogućen</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Sakrij dugme za zatvaranje</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Dugme za zatvaranje je skriveno</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Dugme za zatvaranje je prikazano</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Sakrij dugmad za proširenje i zatvaranje</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Sakrij dugmad preklopa</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Dugmad preklopa su skrivena</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Dugmad preklopa su prikazana</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Sakrij dugmad za proširivanje i zatvaranje</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Dugmad su skrivena
|
||||
|
||||
Prevucite za proširenje ili zatvaranje"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Dugmad za proširenje i zatvaranje su prikazana</string>
|
||||
Prevucite da biste proširili ili zatvorili"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Dugmad za proširivanje i zatvaranje su prikazana</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">Sakrij podtekstove</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">Podtekstovi su skriveni</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_off">Podtekstovi su prikazani</string>
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">Подешавања ReVanced-а су враћена на подразумеване вредности</string>
|
||||
<string name="revanced_settings_import_success">Увезено %d подешавања</string>
|
||||
<string name="revanced_settings_import_failure_parse">Неуспешан увоз: %s</string>
|
||||
<string name="revanced_show_menu_icons_title">Прикажи иконице подешавања ReVanced-а</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">Иконице подешавања су приказане</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">Иконице подешавања нису приказане</string>
|
||||
<string name="revanced_language_title">Језик ReVanced-a</string>
|
||||
<string name="revanced_language_user_dialog_message">"Преводи за неке језике могу недостајати или бити непотпуни.
|
||||
|
||||
@@ -1154,6 +1157,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_miniplayer_type_entry_4">Модеран 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Модеран 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Модеран 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">Модеран 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">Омогући заобљене углове</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Углови су заобљени</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Углови су квадратни</string>
|
||||
@@ -1173,14 +1177,14 @@ Second \"item\" text"</string>
|
||||
|
||||
Мини-плејер се може превући са екрана улево или удесно"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Покрет хоризонталног превлачења је онемогућен</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Сакриј дугме за затварање</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Дугме за затварање је скривено</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Дугме за затварање је приказано</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Сакриј дугмад за проширење и затварање</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Сакриј дугмад преклопа</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Дугмад преклопа су скривена</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Дугмад преклопа су приказана</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Сакриј дугмад за проширивање и затварање</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Дугмад су скривена
|
||||
|
||||
Превуците за проширење или затварање"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Дугмад за проширење и затварање су приказана</string>
|
||||
Превуците да бисте проширили или затворили"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Дугмад за проширивање и затварање су приказана</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">Сакриј подтекстове</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">Подтекстови су скривени</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_off">Подтекстови су приказани</string>
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">ReVanced-inställningarna återställda till standard</string>
|
||||
<string name="revanced_settings_import_success">Importerade %d inställningar</string>
|
||||
<string name="revanced_settings_import_failure_parse">Importen misslyckades: %s</string>
|
||||
<string name="revanced_show_menu_icons_title">Visa ikoner för ReVanced-inställningar</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">Inställningsikoner visas</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">Ikoner för inställningar visas inte</string>
|
||||
<string name="revanced_language_title">Språket för ReVanced</string>
|
||||
<string name="revanced_language_user_dialog_message">"Översättningar till vissa språk kan vara ofullständiga eller saknas.
|
||||
|
||||
@@ -1095,6 +1098,7 @@ Om det senare stängs av rekommenderas det att rensa appens data för att förhi
|
||||
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-versionsmål</string>
|
||||
<string name="revanced_spoof_app_version_target_entry_1">19.35.36 - Återställ gamla Shorts-spelarikoner</string>
|
||||
<string name="revanced_spoof_app_version_target_entry_2">19.01.34 - Återställ gamla navigeringsikoner</string>
|
||||
</patch>
|
||||
<patch id="layout.startpage.changeStartPagePatch">
|
||||
<string name="revanced_change_start_page_title">Ställ in startsida</string>
|
||||
@@ -1153,6 +1157,7 @@ Om det senare stängs av rekommenderas det att rensa appens data för att förhi
|
||||
<string name="revanced_miniplayer_type_entry_4">Modern 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Modern 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Modern 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">Modern 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">Aktivera rundade hörn</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Hörnen är rundade</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Hörnen är kvadratiska</string>
|
||||
@@ -1172,14 +1177,14 @@ Minispelaren kan dras till valfritt hörn av skärmen"</string>
|
||||
|
||||
Minispelare kan dras av skärmen till vänster eller höger"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Horisontell drag gest inaktiverad</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Dölj stängningsknappen</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Stäng knappen är dold</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Stäng knappen visas</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Dölj expandera och stäng knappar</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Knappar är dolda
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Dölj överlagringsknappar</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Överlagringsknappar är dolda</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Överlagringsknappar visas</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">Dölj expanderings- och stängningsknappar</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"Knapparna är dolda
|
||||
|
||||
Svep för att expandera eller stänga"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Expandera och stäng knappar visas</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">Expanderings- och stängningsknappar visas</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">Dölj undertexter</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">Undertexter är dolda</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_off">Undertexter visas</string>
|
||||
|
||||
@@ -43,6 +43,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">การตั้งค่า ReVanced ถูกตั้งค่าเป็นค่าเริ่มต้น</string>
|
||||
<string name="revanced_settings_import_success">นำเข้าการตั้งค่า %d</string>
|
||||
<string name="revanced_settings_import_failure_parse">การนำเข้าล้มเหลว: %s</string>
|
||||
<string name="revanced_show_menu_icons_title">แสดงไอคอนการตั้งค่า ReVanced</string>
|
||||
<string name="revanced_show_menu_icons_summary_on">ไอคอนการตั้งค่าจะปรากฏขึ้น</string>
|
||||
<string name="revanced_show_menu_icons_summary_off">ไม่แสดงไอคอนการตั้งค่า</string>
|
||||
<string name="revanced_language_title">ภาษา ReVanced</string>
|
||||
<string name="revanced_language_user_dialog_message">"การแปลบางภาษาอาจหายไปหรือไม่สมบูรณ์
|
||||
|
||||
@@ -1153,6 +1156,7 @@ User id ของคุณเหมือนกับรหัสผ่าน
|
||||
<string name="revanced_miniplayer_type_entry_4">ทันสมัย 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">ทันสมัย 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">ทันสมัย 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">ทันสมัย 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">เปิดใช้งานมุมโค้งมน</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">มุมโค้งมน</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">มุมเป็นสี่เหลี่ยม</string>
|
||||
@@ -1172,14 +1176,14 @@ User id ของคุณเหมือนกับรหัสผ่าน
|
||||
|
||||
สามารถลาก miniplayer ออกจากหน้าจอไปทางซ้ายหรือขวา"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">ท่าทางการลากแบบแนวนอนปิดใช้งานแล้ว</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">ซ่อนปุ่มปิด</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">ปุ่มปิดถูกซ่อน</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">ปุ่มปิดแสดงอยู่</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">ซ่อนปุ่มโอเวอร์เลย์</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">ปุ่มโอเวอร์เลย์ถูกซ่อน</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">ปุ่มโอเวอร์เลย์ถูกแสดง</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_title">ซ่อนปุ่มขยายและปิด</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_on">"ปุ่มถูกซ่อน
|
||||
|
||||
ปัดเพื่อขยายหรือปิด"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">ปุ่มขยายและปิดแสดงอยู่</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_legacy_summary_off">ปุ่มขยายและปิดถูกแสดง</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">ซ่อนข้อความย่อย</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">ข้อความย่อยถูกซ่อน</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_off">ข้อความย่อยแสดงอยู่</string>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user