Compare commits

...

25 Commits

Author SHA1 Message Date
semantic-release-bot
a89556a017 chore: Release v5.41.0-dev.14 [skip ci]
# [5.41.0-dev.14](https://github.com/ReVanced/revanced-patches/compare/v5.41.0-dev.13...v5.41.0-dev.14) (2025-09-24)

### Features

* **YouTube - Hide layout components:** Add "Hide Emoji and Timestamp buttons" setting ([#5992](https://github.com/ReVanced/revanced-patches/issues/5992)) ([2b555f6](2b555f67f0))
2025-09-24 20:21:22 +00:00
ILoveOpenSourceApplications
2b555f67f0 feat(YouTube - Hide layout components): Add "Hide Emoji and Timestamp buttons" setting (#5992) 2025-09-25 00:17:08 +04:00
semantic-release-bot
fb87199514 chore: Release v5.41.0-dev.13 [skip ci]
# [5.41.0-dev.13](https://github.com/ReVanced/revanced-patches/compare/v5.41.0-dev.12...v5.41.0-dev.13) (2025-09-24)

### Bug Fixes

* **YouTube - Hide Shorts components:** Fix "Hide preview comment" ([#5990](https://github.com/ReVanced/revanced-patches/issues/5990)) ([dd4e2cd](dd4e2cd085))
2025-09-24 19:44:03 +00:00
ILoveOpenSourceApplications
dd4e2cd085 fix(YouTube - Hide Shorts components): Fix "Hide preview comment" (#5990) 2025-09-24 23:41:15 +04:00
semantic-release-bot
fadc66816d chore: Release v5.41.0-dev.12 [skip ci]
# [5.41.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v5.41.0-dev.11...v5.41.0-dev.12) (2025-09-24)

### Bug Fixes

* **YouTube - SponsorBlock:** Show category color in create new segment menu ([#5987](https://github.com/ReVanced/revanced-patches/issues/5987)) ([ffd933c](ffd933c673))
2025-09-24 13:53:25 +00:00
MarcaD
ffd933c673 fix(YouTube - SponsorBlock): Show category color in create new segment menu (#5987) 2025-09-24 17:50:46 +04:00
github-actions[bot]
69883530b7 chore: Sync translations (#5989) 2025-09-24 17:49:49 +04:00
LisoUseInAIKyrios
39971291f3 chore: Fix typo 2025-09-24 15:56:29 +04:00
LisoUseInAIKyrios
51facf9321 chore(YouTube): Adjust UI dialog message 2025-09-24 09:46:37 +04:00
semantic-release-bot
b83d41ca88 chore: Release v5.41.0-dev.11 [skip ci]
# [5.41.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v5.41.0-dev.10...v5.41.0-dev.11) (2025-09-23)

### Features

* **YouTube:** Add `Disable video codecs` patch ([#5981](https://github.com/ReVanced/revanced-patches/issues/5981)) ([bfbffbd](bfbffbd1f5))
2025-09-23 18:10:52 +00:00
LisoUseInAIKyrios
bfbffbd1f5 feat(YouTube): Add Disable video codecs patch (#5981) 2025-09-23 22:06:02 +04:00
semantic-release-bot
ee4755646b chore: Release v5.41.0-dev.10 [skip ci]
# [5.41.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v5.41.0-dev.9...v5.41.0-dev.10) (2025-09-23)

### Bug Fixes

* **TikTok:** Show correct dialog restart text, use correct font color for non-dark mode ([d1a1293](d1a12930c3))
2025-09-23 17:46:05 +00:00
LisoUseInAIKyrios
d1a12930c3 fix(TikTok): Show correct dialog restart text, use correct font color for non-dark mode 2025-09-23 21:43:04 +04:00
semantic-release-bot
dfac836a8c chore: Release v5.41.0-dev.9 [skip ci]
# [5.41.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.41.0-dev.8...v5.41.0-dev.9) (2025-09-23)

### Bug Fixes

* **Instagram - Hide navigation buttons:** Remove button based on name ([#5971](https://github.com/ReVanced/revanced-patches/issues/5971)) ([6fa4043](6fa404331b))
2025-09-23 10:28:29 +00:00
brosssh
6fa404331b fix(Instagram - Hide navigation buttons): Remove button based on name (#5971) 2025-09-23 12:25:36 +02:00
semantic-release-bot
8bcb95adcd chore: Release v5.41.0-dev.8 [skip ci]
# [5.41.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v5.41.0-dev.7...v5.41.0-dev.8) (2025-09-23)

### Features

* **YouTube Music:** Add `Check watch history domain name resolution` ([#5979](https://github.com/ReVanced/revanced-patches/issues/5979)) ([8af70fe](8af70fe2d1))
2025-09-23 09:38:14 +00:00
LisoUseInAIKyrios
8af70fe2d1 feat(YouTube Music): Add Check watch history domain name resolution (#5979) 2025-09-23 13:34:00 +04:00
semantic-release-bot
191b9169ff chore: Release v5.41.0-dev.7 [skip ci]
# [5.41.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.41.0-dev.6...v5.41.0-dev.7) (2025-09-23)

### Features

* **Tumblr:** Add `Disable Tumblr TV` patch ([#5959](https://github.com/ReVanced/revanced-patches/issues/5959)) ([212418b](212418b8db))
2025-09-23 06:24:06 +00:00
Temm
212418b8db feat(Tumblr): Add Disable Tumblr TV patch (#5959) 2025-09-23 10:19:58 +04:00
github-actions[bot]
7dbc744be0 chore: Sync translations (#5978) 2025-09-23 10:18:20 +04:00
LisoUseInAIKyrios
150a3e7c60 chore(YouTube Music - GmsCore support): Add missing supported versions 2025-09-23 10:17:25 +04:00
semantic-release-bot
5027943470 chore: Release v5.41.0-dev.6 [skip ci]
# [5.41.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.41.0-dev.5...v5.41.0-dev.6) (2025-09-22)

### Features

* **YouTube - Spoof app version:** Add spoof target `20.05.46` that fixes transcript functionality ([5823f0e](5823f0e982))
2025-09-22 18:04:18 +00:00
github-actions[bot]
fa9e590b3a chore: Sync translations (#5972) 2025-09-22 22:01:33 +04:00
LisoUseInAIKyrios
5823f0e982 feat(YouTube - Spoof app version): Add spoof target 20.05.46 that fixes transcript functionality 2025-09-22 22:01:14 +04:00
LisoUseInAIKyrios
f506a67e4a chore(YouTube): Drop 19.43.41
Playback speed has a patch error. Don't want to fix. Most users want the latest or the oldest app target, and don't care about anything in-between.
2025-09-22 21:57:42 +04:00
167 changed files with 2061 additions and 1241 deletions

View File

@@ -1,3 +1,66 @@
# [5.41.0-dev.14](https://github.com/ReVanced/revanced-patches/compare/v5.41.0-dev.13...v5.41.0-dev.14) (2025-09-24)
### Features
* **YouTube - Hide layout components:** Add "Hide Emoji and Timestamp buttons" setting ([#5992](https://github.com/ReVanced/revanced-patches/issues/5992)) ([2b555f6](https://github.com/ReVanced/revanced-patches/commit/2b555f67f07e0de5703c630888ce2fbba3145192))
# [5.41.0-dev.13](https://github.com/ReVanced/revanced-patches/compare/v5.41.0-dev.12...v5.41.0-dev.13) (2025-09-24)
### Bug Fixes
* **YouTube - Hide Shorts components:** Fix "Hide preview comment" ([#5990](https://github.com/ReVanced/revanced-patches/issues/5990)) ([dd4e2cd](https://github.com/ReVanced/revanced-patches/commit/dd4e2cd0855ccc51b94593004fdd8150ac3b41cc))
# [5.41.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v5.41.0-dev.11...v5.41.0-dev.12) (2025-09-24)
### Bug Fixes
* **YouTube - SponsorBlock:** Show category color in create new segment menu ([#5987](https://github.com/ReVanced/revanced-patches/issues/5987)) ([ffd933c](https://github.com/ReVanced/revanced-patches/commit/ffd933c6734274cdde5aaec0159b67f173f9228c))
# [5.41.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v5.41.0-dev.10...v5.41.0-dev.11) (2025-09-23)
### Features
* **YouTube:** Add `Disable video codecs` patch ([#5981](https://github.com/ReVanced/revanced-patches/issues/5981)) ([bfbffbd](https://github.com/ReVanced/revanced-patches/commit/bfbffbd1f5aa867027053e25b343a51a606216a3))
# [5.41.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v5.41.0-dev.9...v5.41.0-dev.10) (2025-09-23)
### Bug Fixes
* **TikTok:** Show correct dialog restart text, use correct font color for non-dark mode ([d1a1293](https://github.com/ReVanced/revanced-patches/commit/d1a12930c35f630793a0f240d4203c2ff9060158))
# [5.41.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.41.0-dev.8...v5.41.0-dev.9) (2025-09-23)
### Bug Fixes
* **Instagram - Hide navigation buttons:** Remove button based on name ([#5971](https://github.com/ReVanced/revanced-patches/issues/5971)) ([6fa4043](https://github.com/ReVanced/revanced-patches/commit/6fa404331b5162682d83fba5f38ed570c31495fc))
# [5.41.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v5.41.0-dev.7...v5.41.0-dev.8) (2025-09-23)
### Features
* **YouTube Music:** Add `Check watch history domain name resolution` ([#5979](https://github.com/ReVanced/revanced-patches/issues/5979)) ([8af70fe](https://github.com/ReVanced/revanced-patches/commit/8af70fe2d10c0f4da2d7e53bd00f5b3979775d5d))
# [5.41.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.41.0-dev.6...v5.41.0-dev.7) (2025-09-23)
### Features
* **Tumblr:** Add `Disable Tumblr TV` patch ([#5959](https://github.com/ReVanced/revanced-patches/issues/5959)) ([212418b](https://github.com/ReVanced/revanced-patches/commit/212418b8db9a730ae9efa89ad2bef24952afbadd))
# [5.41.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.41.0-dev.5...v5.41.0-dev.6) (2025-09-22)
### Features
* **YouTube - Spoof app version:** Add spoof target `20.05.46` that fixes transcript functionality ([5823f0e](https://github.com/ReVanced/revanced-patches/commit/5823f0e982e87b4a35d30feeca8a7e16edfebc5f))
# [5.41.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.41.0-dev.4...v5.41.0-dev.5) (2025-09-22) # [5.41.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.41.0-dev.4...v5.41.0-dev.5) (2025-09-22)

View File

@@ -0,0 +1,33 @@
package app.revanced.extension.instagram.hide.navigation;
import java.lang.reflect.Field;
import java.util.List;
@SuppressWarnings("unused")
public class HideNavigationButtonsPatch {
/**
* Injection point.
* @param navigationButtonsList the list of navigation buttons, as an (obfuscated) Enum type
* @param buttonNameToRemove the name of the button we want to remove
* @param enumNameField the field in the nav button enum class which contains the name of the button
* @return the patched list of navigation buttons
*/
public static List<Object> removeNavigationButtonByName(
List<Object> navigationButtonsList,
String buttonNameToRemove,
String enumNameField
)
throws IllegalAccessException, NoSuchFieldException {
for (Object button : navigationButtonsList) {
Field f = button.getClass().getDeclaredField(enumNameField);
String currentButtonEnumName = (String) f.get(button);
if (buttonNameToRemove.equals(currentButtonEnumName)) {
navigationButtonsList.remove(button);
break;
}
}
return navigationButtonsList;
}
}

View File

@@ -1,4 +1,4 @@
package app.revanced.extension.youtube.patches; package app.revanced.extension.shared.patches;
import static app.revanced.extension.shared.StringRef.str; import static app.revanced.extension.shared.StringRef.str;
@@ -13,8 +13,8 @@ import java.net.UnknownHostException;
import app.revanced.extension.shared.Logger; import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils; import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.settings.BaseSettings;
import app.revanced.extension.shared.ui.CustomDialog; import app.revanced.extension.shared.ui.CustomDialog;
import app.revanced.extension.youtube.settings.Settings;
@SuppressWarnings("unused") @SuppressWarnings("unused")
public class CheckWatchHistoryDomainNameResolutionPatch { public class CheckWatchHistoryDomainNameResolutionPatch {
@@ -49,7 +49,7 @@ public class CheckWatchHistoryDomainNameResolutionPatch {
* Checks if s.youtube.com is blacklisted and playback history will fail to work. * Checks if s.youtube.com is blacklisted and playback history will fail to work.
*/ */
public static void checkDnsResolver(Activity context) { public static void checkDnsResolver(Activity context) {
if (!Utils.isNetworkConnected() || !Settings.CHECK_WATCH_HISTORY_DOMAIN_NAME.get()) return; if (!Utils.isNetworkConnected() || !BaseSettings.CHECK_WATCH_HISTORY_DOMAIN_NAME.get()) return;
Utils.runOnBackgroundThread(() -> { Utils.runOnBackgroundThread(() -> {
try { try {
@@ -61,8 +61,8 @@ public class CheckWatchHistoryDomainNameResolutionPatch {
// Prevent this false positive by verify youtube.com resolves. // Prevent this false positive by verify youtube.com resolves.
// If youtube.com does not resolve, then it's not a watch history domain resolving error // If youtube.com does not resolve, then it's not a watch history domain resolving error
// because the entire app will not work since no domains are resolving. // because the entire app will not work since no domains are resolving.
if (domainResolvesToValidIP(HISTORY_TRACKING_ENDPOINT) if (!domainResolvesToValidIP("youtube.com")
|| !domainResolvesToValidIP("youtube.com")) { || domainResolvesToValidIP(HISTORY_TRACKING_ENDPOINT)) {
return; return;
} }
@@ -78,7 +78,7 @@ public class CheckWatchHistoryDomainNameResolutionPatch {
() -> {}, // OK button action (just dismiss). () -> {}, // OK button action (just dismiss).
() -> {}, // Cancel button action (just dismiss). () -> {}, // Cancel button action (just dismiss).
str("revanced_check_watch_history_domain_name_dialog_ignore"), // Neutral button text. str("revanced_check_watch_history_domain_name_dialog_ignore"), // Neutral button text.
() -> Settings.CHECK_WATCH_HISTORY_DOMAIN_NAME.save(false), // Neutral button action (Ignore). () -> BaseSettings.CHECK_WATCH_HISTORY_DOMAIN_NAME.save(false), // Neutral button action (Ignore).
true // Dismiss dialog on Neutral button click. true // Dismiss dialog on Neutral button click.
); );

View File

@@ -28,10 +28,16 @@ public class BaseSettings {
public static final BooleanSetting SETTINGS_SEARCH_HISTORY = new BooleanSetting("revanced_settings_search_history", TRUE, true); public static final BooleanSetting SETTINGS_SEARCH_HISTORY = new BooleanSetting("revanced_settings_search_history", TRUE, true);
public static final StringSetting SETTINGS_SEARCH_ENTRIES = new StringSetting("revanced_settings_search_entries", ""); public static final StringSetting SETTINGS_SEARCH_ENTRIES = new StringSetting("revanced_settings_search_entries", "");
//
// Settings shared by YouTube and YouTube Music.
//
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 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 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)); public static final BooleanSetting SPOOF_STREAMING_DATA_STATS_FOR_NERDS = new BooleanSetting("revanced_spoof_streaming_data_stats_for_nerds", TRUE, parent(SPOOF_VIDEO_STREAMS));
public static final BooleanSetting SANITIZE_SHARED_LINKS = new BooleanSetting("revanced_sanitize_sharing_links", TRUE); public static final BooleanSetting SANITIZE_SHARED_LINKS = new BooleanSetting("revanced_sanitize_sharing_links", TRUE);
public static final BooleanSetting REPLACE_MUSIC_LINKS_WITH_YOUTUBE = new BooleanSetting("revanced_replace_music_with_youtube", FALSE); public static final BooleanSetting REPLACE_MUSIC_LINKS_WITH_YOUTUBE = new BooleanSetting("revanced_replace_music_with_youtube", FALSE);
public static final BooleanSetting CHECK_WATCH_HISTORY_DOMAIN_NAME = new BooleanSetting("revanced_check_watch_history_domain_name", TRUE, false, false);
} }

View File

@@ -53,7 +53,7 @@ public abstract class AbstractPreferenceFragment extends PreferenceFragment {
* Set by subclasses if Strings cannot be added as a resource. * Set by subclasses if Strings cannot be added as a resource.
*/ */
@Nullable @Nullable
protected static String restartDialogButtonText, restartDialogTitle, confirmDialogTitle, restartDialogMessage; protected static CharSequence restartDialogTitle, restartDialogMessage, restartDialogButtonText, confirmDialogTitle;
private final SharedPreferences.OnSharedPreferenceChangeListener listener = (sharedPreferences, str) -> { private final SharedPreferences.OnSharedPreferenceChangeListener listener = (sharedPreferences, str) -> {
try { try {
@@ -125,10 +125,13 @@ public abstract class AbstractPreferenceFragment extends PreferenceFragment {
showingUserDialogMessage = true; showingUserDialogMessage = true;
CharSequence message = BulletPointPreference.formatIntoBulletPoints(
Objects.requireNonNull(setting.userDialogMessage).toString());
Pair<Dialog, LinearLayout> dialogPair = CustomDialog.create( Pair<Dialog, LinearLayout> dialogPair = CustomDialog.create(
context, context,
confirmDialogTitle, // Title. confirmDialogTitle, // Title.
Objects.requireNonNull(setting.userDialogMessage).toString(), // No message. message,
null, // No EditText. null, // No EditText.
null, // OK button text. null, // OK button text.
() -> { () -> {
@@ -152,6 +155,7 @@ public abstract class AbstractPreferenceFragment extends PreferenceFragment {
); );
dialogPair.first.setOnDismissListener(d -> showingUserDialogMessage = false); dialogPair.first.setOnDismissListener(d -> showingUserDialogMessage = false);
dialogPair.first.setCancelable(false);
// Show the dialog. // Show the dialog.
dialogPair.first.show(); dialogPair.first.show();

View File

@@ -15,7 +15,15 @@ import android.util.AttributeSet;
@SuppressWarnings({"unused", "deprecation"}) @SuppressWarnings({"unused", "deprecation"})
public class BulletPointPreference extends Preference { public class BulletPointPreference extends Preference {
public static SpannedString formatIntoBulletPoints(CharSequence source) { /**
* Replaces bullet points with styled spans.
*/
public static CharSequence formatIntoBulletPoints(CharSequence source) {
final char bulletPoint = '•';
if (TextUtils.indexOf(source, bulletPoint) < 0) {
return source; // Nothing to do.
}
SpannableStringBuilder builder = new SpannableStringBuilder(source); SpannableStringBuilder builder = new SpannableStringBuilder(source);
int lineStart = 0; int lineStart = 0;
@@ -26,7 +34,7 @@ public class BulletPointPreference extends Preference {
if (lineEnd < 0) lineEnd = length; if (lineEnd < 0) lineEnd = length;
// Apply BulletSpan only if the line starts with the '•' character. // Apply BulletSpan only if the line starts with the '•' character.
if (lineEnd > lineStart && builder.charAt(lineStart) == '•') { if (lineEnd > lineStart && builder.charAt(lineStart) == bulletPoint) {
int deleteEnd = lineStart + 1; // remove the bullet itself int deleteEnd = lineStart + 1; // remove the bullet itself
// If there's a single space right after the bullet, remove that too. // If there's a single space right after the bullet, remove that too.

View File

@@ -42,11 +42,8 @@ final class PlayerRoutes {
JSONObject context = new JSONObject(); JSONObject context = new JSONObject();
AppLanguage language = SpoofVideoStreamsPatch.getLanguageOverride(); AppLanguage language = SpoofVideoStreamsPatch.getLanguageOverride();
if (language == null || clientType == ANDROID_VR_1_43_32) { if (language == null) {
// Force original audio has not overrode the language. // Force original audio has not overrode the language.
// Or if YT has fallen over to the last unauthenticated client (VR 1.43), then
// always use the app language because forcing an audio stream of specific languages
// can sometimes fail so it's better to try and load something rather than nothing.
language = BaseSettings.SPOOF_VIDEO_STREAMS_LANGUAGE.get(); language = BaseSettings.SPOOF_VIDEO_STREAMS_LANGUAGE.get();
} }
//noinspection ExtractMethodRecommender //noinspection ExtractMethodRecommender

View File

@@ -58,10 +58,10 @@ public class CustomDialog {
* @param dismissDialogOnNeutralClick If the dialog should be dismissed when the Neutral button is clicked. * @param dismissDialogOnNeutralClick If the dialog should be dismissed when the Neutral button is clicked.
* @return The Dialog and its main LinearLayout container. * @return The Dialog and its main LinearLayout container.
*/ */
public static Pair<Dialog, LinearLayout> create(Context context, String title, CharSequence message, public static Pair<Dialog, LinearLayout> create(Context context, CharSequence title, CharSequence message,
@Nullable EditText editText, String okButtonText, @Nullable EditText editText, CharSequence okButtonText,
Runnable onOkClick, Runnable onCancelClick, Runnable onOkClick, Runnable onCancelClick,
@Nullable String neutralButtonText, @Nullable CharSequence neutralButtonText,
@Nullable Runnable onNeutralClick, @Nullable Runnable onNeutralClick,
boolean dismissDialogOnNeutralClick) { boolean dismissDialogOnNeutralClick) {
Logger.printDebug(() -> "Creating custom dialog with title: " + title); Logger.printDebug(() -> "Creating custom dialog with title: " + title);
@@ -85,9 +85,9 @@ public class CustomDialog {
* @param onNeutralClick Action to perform when the Neutral button is clicked, or null if no Neutral button is needed. * @param onNeutralClick Action to perform when the Neutral button is clicked, or null if no Neutral button is needed.
* @param dismissDialogOnNeutralClick If the dialog should be dismissed when the Neutral button is clicked. * @param dismissDialogOnNeutralClick If the dialog should be dismissed when the Neutral button is clicked.
*/ */
private CustomDialog(Context context, String title, CharSequence message, @Nullable EditText editText, private CustomDialog(Context context, CharSequence title, CharSequence message, @Nullable EditText editText,
String okButtonText, Runnable onOkClick, Runnable onCancelClick, CharSequence okButtonText, Runnable onOkClick, Runnable onCancelClick,
@Nullable String neutralButtonText, @Nullable Runnable onNeutralClick, @Nullable CharSequence neutralButtonText, @Nullable Runnable onNeutralClick,
boolean dismissDialogOnNeutralClick) { boolean dismissDialogOnNeutralClick) {
this.context = context; this.context = context;
this.dialog = new Dialog(context); this.dialog = new Dialog(context);
@@ -139,7 +139,7 @@ public class CustomDialog {
* *
* @param title The title text to display. * @param title The title text to display.
*/ */
private void addTitle(String title) { private void addTitle(CharSequence title) {
if (TextUtils.isEmpty(title)) return; if (TextUtils.isEmpty(title)) return;
TextView titleView = new TextView(context); TextView titleView = new TextView(context);
@@ -232,8 +232,8 @@ public class CustomDialog {
* @param onNeutralClick Action for the Neutral button click, or null if no Neutral button. * @param onNeutralClick Action for the Neutral button click, or null if no Neutral button.
* @param dismissDialogOnNeutralClick If the dialog should dismiss on Neutral button click. * @param dismissDialogOnNeutralClick If the dialog should dismiss on Neutral button click.
*/ */
private void addButtons(String okButtonText, Runnable onOkClick, Runnable onCancelClick, private void addButtons(CharSequence okButtonText, Runnable onOkClick, Runnable onCancelClick,
@Nullable String neutralButtonText, @Nullable Runnable onNeutralClick, @Nullable CharSequence neutralButtonText, @Nullable Runnable onNeutralClick,
boolean dismissDialogOnNeutralClick) { boolean dismissDialogOnNeutralClick) {
// Button container. // Button container.
LinearLayout buttonContainer = new LinearLayout(context); LinearLayout buttonContainer = new LinearLayout(context);
@@ -280,7 +280,7 @@ public class CustomDialog {
* @param dismissDialog If the dialog should dismiss when the button is clicked. * @param dismissDialog If the dialog should dismiss when the button is clicked.
* @return The created Button. * @return The created Button.
*/ */
private Button createButton(String text, Runnable onClick, boolean isOkButton, boolean dismissDialog) { private Button createButton(CharSequence text, Runnable onClick, boolean isOkButton, boolean dismissDialog) {
Button button = new Button(context, null, 0); Button button = new Button(context, null, 0);
button.setText(text); button.setText(text);
button.setTextSize(14); button.setTextSize(14);

View File

@@ -2,12 +2,15 @@ package app.revanced.extension.tiktok.settings.preference;
import android.preference.Preference; import android.preference.Preference;
import android.preference.PreferenceScreen; import android.preference.PreferenceScreen;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.settings.Setting; import app.revanced.extension.shared.settings.Setting;
import app.revanced.extension.shared.settings.preference.AbstractPreferenceFragment; import app.revanced.extension.shared.settings.preference.AbstractPreferenceFragment;
import app.revanced.extension.tiktok.settings.preference.categories.DownloadsPreferenceCategory; import app.revanced.extension.tiktok.settings.preference.categories.DownloadsPreferenceCategory;
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.ExtensionPreferenceCategory;
import app.revanced.extension.tiktok.settings.preference.categories.FeedFilterPreferenceCategory;
import app.revanced.extension.tiktok.settings.preference.categories.SimSpoofPreferenceCategory; import app.revanced.extension.tiktok.settings.preference.categories.SimSpoofPreferenceCategory;
/** /**
@@ -37,10 +40,14 @@ public class TikTokPreferenceFragment extends AbstractPreferenceFragment {
// Currently no resources can be compiled for TikTok (fails with aapt error). // Currently no resources can be compiled for TikTok (fails with aapt error).
// So all TikTok Strings are hard coded in the extension. // So all TikTok Strings are hard coded in the extension.
restartDialogTitle = "Refresh and restart"; restartDialogTitle = "Restart required";
restartDialogMessage = "Restart the app for this change to take effect.";
restartDialogButtonText = "Restart"; restartDialogButtonText = "Restart";
confirmDialogTitle = "Do you wish to proceed?"; confirmDialogTitle = "Do you wish to proceed?";
// App does not use dark mode.
Utils.setIsDarkModeEnabled(false);
PreferenceScreen preferenceScreen = getPreferenceManager().createPreferenceScreen(context); PreferenceScreen preferenceScreen = getPreferenceManager().createPreferenceScreen(context);
setPreferenceScreen(preferenceScreen); setPreferenceScreen(preferenceScreen);

View File

@@ -5,7 +5,7 @@ import android.view.Display;
import app.revanced.extension.youtube.settings.Settings; import app.revanced.extension.youtube.settings.Settings;
@SuppressWarnings("unused") @SuppressWarnings("unused")
public class DisableHdrPatch { public class DisableVideoCodecsPatch {
/** /**
* Injection point. * Injection point.
@@ -15,5 +15,12 @@ public class DisableHdrPatch {
? new int[0] ? new int[0]
: capabilities.getSupportedHdrTypes(); : capabilities.getSupportedHdrTypes();
} }
/**
* Injection point.
*/
public static boolean allowVP9() {
return !Settings.FORCE_AVC_CODEC.get();
}
} }

View File

@@ -15,7 +15,8 @@ public class ForceOriginalAudioPatch {
*/ */
public static void setPreferredLanguage() { public static void setPreferredLanguage() {
if (Settings.FORCE_ORIGINAL_AUDIO.get() if (Settings.FORCE_ORIGINAL_AUDIO.get()
&& SpoofVideoStreamsPatch.spoofingToClientWithNoMultiAudioStreams()) { && SpoofVideoStreamsPatch.spoofingToClientWithNoMultiAudioStreams()
&& !Settings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get().useAuth) {
// If client spoofing does not use authentication and lacks multi-audio streams, // If client spoofing does not use authentication and lacks multi-audio streams,
// then can use any language code for the request and if that requested language is // then can use any language code for the request and if that requested language is
// not available YT uses the original audio language. Authenticated requests ignore // not available YT uses the original audio language. Authenticated requests ignore

View File

@@ -6,8 +6,11 @@ import app.revanced.extension.youtube.shared.PlayerType;
@SuppressWarnings("unused") @SuppressWarnings("unused")
final class CommentsFilter extends Filter { final class CommentsFilter extends Filter {
private static final String COMMENT_COMPOSER_PATH = "comment_composer.eml";
private final StringFilterGroup chipBar; private final StringFilterGroup chipBar;
private final ByteArrayFilterGroup aiCommentsSummary; private final ByteArrayFilterGroup aiCommentsSummary;
private final StringFilterGroup emojiAndTimestampButtons;
public CommentsFilter() { public CommentsFilter() {
var chatSummary = new StringFilterGroup( var chatSummary = new StringFilterGroup(
@@ -52,6 +55,11 @@ final class CommentsFilter extends Filter {
"composer_short_creation_button.eml" "composer_short_creation_button.eml"
); );
emojiAndTimestampButtons = new StringFilterGroup(
Settings.HIDE_COMMENTS_EMOJI_AND_TIMESTAMP_BUTTONS,
"|CellType|ContainerType|ContainerType|ContainerType|ContainerType|ContainerType|"
);
var previewComment = new StringFilterGroup( var previewComment = new StringFilterGroup(
Settings.HIDE_COMMENTS_PREVIEW_COMMENT, Settings.HIDE_COMMENTS_PREVIEW_COMMENT,
"|carousel_item", "|carousel_item",
@@ -64,11 +72,6 @@ final class CommentsFilter extends Filter {
"super_thanks_button.eml" "super_thanks_button.eml"
); );
StringFilterGroup timestampButton = new StringFilterGroup(
Settings.HIDE_COMMENTS_TIMESTAMP_BUTTON,
"composer_timestamp_button.eml"
);
addPathCallbacks( addPathCallbacks(
channelGuidelines, channelGuidelines,
chatSummary, chatSummary,
@@ -77,9 +80,9 @@ final class CommentsFilter extends Filter {
comments, comments,
communityGuidelines, communityGuidelines,
createAShort, createAShort,
emojiAndTimestampButtons,
previewComment, previewComment,
thanksButton, thanksButton
timestampButton
); );
} }
@@ -93,6 +96,10 @@ final class CommentsFilter extends Filter {
&& aiCommentsSummary.check(buffer).isFiltered(); && aiCommentsSummary.check(buffer).isFiltered();
} }
if (matchedGroup == emojiAndTimestampButtons) {
return path.startsWith(COMMENT_COMPOSER_PATH);
}
return true; return true;
} }
} }

View File

@@ -154,6 +154,13 @@ public final class ShortsFilter extends Filter {
"reel_dislike_button.eml" "reel_dislike_button.eml"
); );
StringFilterGroup previewComment = new StringFilterGroup(
Settings.HIDE_SHORTS_PREVIEW_COMMENT,
// Preview comment that can popup while a Short is playing.
// Uses no bundled icons, and instead the users profile photo is shown.
"participation_bar.eml"
);
joinButton = new StringFilterGroup( joinButton = new StringFilterGroup(
Settings.HIDE_SHORTS_JOIN_BUTTON, Settings.HIDE_SHORTS_JOIN_BUTTON,
"sponsor_button" "sponsor_button"
@@ -213,7 +220,7 @@ public final class ShortsFilter extends Filter {
addPathCallbacks( addPathCallbacks(
shortsCompactFeedVideo, joinButton, subscribeButton, paidPromotionButton, shortsCompactFeedVideo, joinButton, subscribeButton, paidPromotionButton,
shortsActionBar, suggestedAction, pausedOverlayButtons, channelBar, shortsActionBar, suggestedAction, pausedOverlayButtons, channelBar, previewComment,
fullVideoLinkLabel, videoTitle, useSoundButton, reelSoundMetadata, soundButton, infoPanel, fullVideoLinkLabel, videoTitle, useSoundButton, reelSoundMetadata, soundButton, infoPanel,
stickers, likeFountain, likeButton, dislikeButton stickers, likeFountain, likeButton, dislikeButton
); );
@@ -243,12 +250,6 @@ public final class ShortsFilter extends Filter {
// Suggested actions. // Suggested actions.
// //
suggestedActionsBuffer.addAll( suggestedActionsBuffer.addAll(
new ByteArrayFilterGroup(
Settings.HIDE_SHORTS_PREVIEW_COMMENT,
// Preview comment that can popup while a Short is playing.
// Uses no bundled icons, and instead the users profile photo is shown.
"shorts-comments-panel"
),
new ByteArrayFilterGroup( new ByteArrayFilterGroup(
Settings.HIDE_SHORTS_SHOP_BUTTON, Settings.HIDE_SHORTS_SHOP_BUTTON,
"yt_outline_bag_" "yt_outline_bag_"

View File

@@ -18,7 +18,22 @@ public class SpoofVideoStreamsPatch {
* Injection point. * Injection point.
*/ */
public static void setClientOrderToUse() { public static void setClientOrderToUse() {
List<ClientType> availableClients = List.of( final boolean forceAVC = Settings.FORCE_AVC_CODEC.get();
// VR 1.61 uses VP9/AV1, and cannot force AVC.
ClientType client = Settings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get();
if (forceAVC && client == ANDROID_VR_1_61_48) {
client = ANDROID_VR_1_43_32; // Use VR 1.43 instead.
}
List<ClientType> availableClients = forceAVC
? List.of(
ANDROID_VR_1_43_32,
VISIONOS,
ANDROID_CREATOR,
ANDROID_VR_1_61_48,
IPADOS)
: List.of(
ANDROID_VR_1_61_48, ANDROID_VR_1_61_48,
VISIONOS, VISIONOS,
ANDROID_CREATOR, ANDROID_CREATOR,
@@ -27,6 +42,6 @@ public class SpoofVideoStreamsPatch {
); );
app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch.setClientsToUse( app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch.setClientsToUse(
availableClients, Settings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get()); availableClients, client);
} }
} }

View File

@@ -48,6 +48,9 @@ import app.revanced.extension.youtube.swipecontrols.SwipeControlsConfigurationPr
public class Settings extends BaseSettings { public class Settings extends BaseSettings {
// Video // Video
public static final BooleanSetting ADVANCED_VIDEO_QUALITY_MENU = new BooleanSetting("revanced_advanced_video_quality_menu", TRUE);
public static final BooleanSetting DISABLE_HDR_VIDEO = new BooleanSetting("revanced_disable_hdr_video", FALSE);
public static final BooleanSetting FORCE_AVC_CODEC = new BooleanSetting("revanced_force_avc_codec", FALSE, true, "revanced_force_avc_codec_user_dialog_message");
public static final IntegerSetting VIDEO_QUALITY_DEFAULT_WIFI = new IntegerSetting("revanced_video_quality_default_wifi", -2); public static final IntegerSetting VIDEO_QUALITY_DEFAULT_WIFI = new IntegerSetting("revanced_video_quality_default_wifi", -2);
public static final IntegerSetting VIDEO_QUALITY_DEFAULT_MOBILE = new IntegerSetting("revanced_video_quality_default_mobile", -2); public static final IntegerSetting VIDEO_QUALITY_DEFAULT_MOBILE = new IntegerSetting("revanced_video_quality_default_mobile", -2);
public static final BooleanSetting REMEMBER_VIDEO_QUALITY_LAST_SELECTED = new BooleanSetting("revanced_remember_video_quality_last_selected", FALSE); public static final BooleanSetting REMEMBER_VIDEO_QUALITY_LAST_SELECTED = new BooleanSetting("revanced_remember_video_quality_last_selected", FALSE);
@@ -56,8 +59,6 @@ public class Settings extends BaseSettings {
public static final BooleanSetting REMEMBER_SHORTS_QUALITY_LAST_SELECTED = new BooleanSetting("revanced_remember_shorts_quality_last_selected", FALSE); public static final BooleanSetting REMEMBER_SHORTS_QUALITY_LAST_SELECTED = new BooleanSetting("revanced_remember_shorts_quality_last_selected", FALSE);
public static final BooleanSetting REMEMBER_VIDEO_QUALITY_LAST_SELECTED_TOAST = new BooleanSetting("revanced_remember_video_quality_last_selected_toast", TRUE, false, public static final BooleanSetting REMEMBER_VIDEO_QUALITY_LAST_SELECTED_TOAST = new BooleanSetting("revanced_remember_video_quality_last_selected_toast", TRUE, false,
parentsAny(REMEMBER_VIDEO_QUALITY_LAST_SELECTED, REMEMBER_SHORTS_QUALITY_LAST_SELECTED)); parentsAny(REMEMBER_VIDEO_QUALITY_LAST_SELECTED, REMEMBER_SHORTS_QUALITY_LAST_SELECTED));
public static final BooleanSetting ADVANCED_VIDEO_QUALITY_MENU = new BooleanSetting("revanced_advanced_video_quality_menu", TRUE);
public static final BooleanSetting DISABLE_HDR_VIDEO = new BooleanSetting("revanced_disable_hdr_video", FALSE);
// Speed // Speed
public static final FloatSetting SPEED_TAP_AND_HOLD = new FloatSetting("revanced_speed_tap_and_hold", 2.0f, true); public static final FloatSetting SPEED_TAP_AND_HOLD = new FloatSetting("revanced_speed_tap_and_hold", 2.0f, true);
@@ -198,9 +199,9 @@ public class Settings extends BaseSettings {
public static final BooleanSetting HIDE_COMMENTS_COMMUNITY_GUIDELINES = new BooleanSetting("revanced_hide_comments_community_guidelines", TRUE); public static final BooleanSetting HIDE_COMMENTS_COMMUNITY_GUIDELINES = new BooleanSetting("revanced_hide_comments_community_guidelines", TRUE);
public static final BooleanSetting HIDE_COMMENTS_CREATE_A_SHORT_BUTTON = new BooleanSetting("revanced_hide_comments_create_a_short_button", TRUE); public static final BooleanSetting HIDE_COMMENTS_CREATE_A_SHORT_BUTTON = new BooleanSetting("revanced_hide_comments_create_a_short_button", TRUE);
public static final BooleanSetting HIDE_COMMENTS_PREVIEW_COMMENT = new BooleanSetting("revanced_hide_comments_preview_comment", FALSE); public static final BooleanSetting HIDE_COMMENTS_PREVIEW_COMMENT = new BooleanSetting("revanced_hide_comments_preview_comment", FALSE);
public static final BooleanSetting HIDE_COMMENTS_EMOJI_AND_TIMESTAMP_BUTTONS = new BooleanSetting("revanced_hide_comments_emoji_and_timestamp_buttons", FALSE);
public static final BooleanSetting HIDE_COMMENTS_SECTION = new BooleanSetting("revanced_hide_comments_section", FALSE); public static final BooleanSetting HIDE_COMMENTS_SECTION = new BooleanSetting("revanced_hide_comments_section", FALSE);
public static final BooleanSetting HIDE_COMMENTS_THANKS_BUTTON = new BooleanSetting("revanced_hide_comments_thanks_button", TRUE); public static final BooleanSetting HIDE_COMMENTS_THANKS_BUTTON = new BooleanSetting("revanced_hide_comments_thanks_button", TRUE);
public static final BooleanSetting HIDE_COMMENTS_TIMESTAMP_BUTTON = new BooleanSetting("revanced_hide_comments_timestamp_button", FALSE);
// Description // Description
public static final BooleanSetting HIDE_AI_GENERATED_VIDEO_SUMMARY_SECTION = new BooleanSetting("revanced_hide_ai_generated_video_summary_section", FALSE); public static final BooleanSetting HIDE_AI_GENERATED_VIDEO_SUMMARY_SECTION = new BooleanSetting("revanced_hide_ai_generated_video_summary_section", FALSE);
@@ -344,7 +345,6 @@ public class Settings extends BaseSettings {
public static final BooleanSetting LOOP_VIDEO = new BooleanSetting("revanced_loop_video", FALSE); public static final BooleanSetting LOOP_VIDEO = new BooleanSetting("revanced_loop_video", FALSE);
public static final BooleanSetting LOOP_VIDEO_BUTTON = new BooleanSetting("revanced_loop_video_button", FALSE); public static final BooleanSetting LOOP_VIDEO_BUTTON = new BooleanSetting("revanced_loop_video_button", FALSE);
public static final BooleanSetting BYPASS_URL_REDIRECTS = new BooleanSetting("revanced_bypass_url_redirects", TRUE); public static final BooleanSetting BYPASS_URL_REDIRECTS = new BooleanSetting("revanced_bypass_url_redirects", TRUE);
public static final BooleanSetting CHECK_WATCH_HISTORY_DOMAIN_NAME = new BooleanSetting("revanced_check_watch_history_domain_name", TRUE, false, false);
public static final BooleanSetting DISABLE_HAPTIC_FEEDBACK_CHAPTERS = new BooleanSetting("revanced_disable_haptic_feedback_chapters", FALSE); public static final BooleanSetting DISABLE_HAPTIC_FEEDBACK_CHAPTERS = new BooleanSetting("revanced_disable_haptic_feedback_chapters", FALSE);
public static final BooleanSetting DISABLE_HAPTIC_FEEDBACK_PRECISE_SEEKING = new BooleanSetting("revanced_disable_haptic_feedback_precise_seeking", FALSE); public static final BooleanSetting DISABLE_HAPTIC_FEEDBACK_PRECISE_SEEKING = new BooleanSetting("revanced_disable_haptic_feedback_precise_seeking", FALSE);
public static final BooleanSetting DISABLE_HAPTIC_FEEDBACK_SEEK_UNDO = new BooleanSetting("revanced_disable_haptic_feedback_seek_undo", FALSE); public static final BooleanSetting DISABLE_HAPTIC_FEEDBACK_SEEK_UNDO = new BooleanSetting("revanced_disable_haptic_feedback_seek_undo", FALSE);

View File

@@ -96,7 +96,7 @@ public class SponsorBlockUtils {
SegmentCategory[] categories = SegmentCategory.categoriesWithoutHighlights(); SegmentCategory[] categories = SegmentCategory.categoriesWithoutHighlights();
CharSequence[] titles = new CharSequence[categories.length]; CharSequence[] titles = new CharSequence[categories.length];
for (int i = 0, length = categories.length; i < length; i++) { for (int i = 0, length = categories.length; i < length; i++) {
titles[i] = categories[i].getTitle().toString(); titles[i] = categories[i].getTitleWithColorDot();
} }
newUserCreatedSegmentCategory = null; newUserCreatedSegmentCategory = null;
@@ -336,8 +336,8 @@ public class SponsorBlockUtils {
Utils.verifyOnMainThread(); Utils.verifyOnMainThread();
final SegmentCategory[] values = SegmentCategory.categoriesWithoutHighlights(); final SegmentCategory[] values = SegmentCategory.categoriesWithoutHighlights();
CharSequence[] titles = new CharSequence[values.length]; CharSequence[] titles = new CharSequence[values.length];
for (int i = 0, length = values.length; i < length; i++) { for (int i = 0; i < values.length; i++) {
titles[i] = values[i].getTitle().toString(); titles[i] = values[i].getTitleWithColorDot();
} }
new AlertDialog.Builder(context) new AlertDialog.Builder(context)

View File

@@ -5,8 +5,12 @@ import static app.revanced.extension.youtube.settings.Settings.*;
import android.graphics.Color; import android.graphics.Color;
import android.graphics.Paint; import android.graphics.Paint;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.TextUtils; import android.text.TextUtils;
import android.text.style.ForegroundColorSpan;
import android.text.style.RelativeSizeSpan;
import androidx.annotation.ColorInt; import androidx.annotation.ColorInt;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
@@ -83,6 +87,8 @@ public enum SegmentCategory {
MUSIC_OFFTOPIC, MUSIC_OFFTOPIC,
}; };
public static final String COLOR_DOT_STRING = "";
public static final float CATEGORY_DEFAULT_OPACITY = 0.7f; public static final float CATEGORY_DEFAULT_OPACITY = 0.7f;
private static final Map<String, SegmentCategory> mValuesMap = new HashMap<>(2 * categoriesWithoutUnsubmitted.length); private static final Map<String, SegmentCategory> mValuesMap = new HashMap<>(2 * categoriesWithoutUnsubmitted.length);
@@ -324,6 +330,32 @@ public enum SegmentCategory {
return title; return title;
} }
/**
* Creates a {@link SpannableString} that starts with a colored dot followed by the provided text.
*/
private static SpannableString getCategoryColorDotSpan(String text, @ColorInt int color) {
SpannableString dotSpan = new SpannableString(COLOR_DOT_STRING + text);
dotSpan.setSpan(new ForegroundColorSpan(color), 0, 1,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
dotSpan.setSpan(new RelativeSizeSpan(1.5f), 0, 1,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
return dotSpan;
}
/**
* Returns the category title with a colored dot.
*/
public SpannableString getTitleWithColorDot(@ColorInt int categoryColor) {
return getCategoryColorDotSpan(" " + title, categoryColor);
}
/**
* Returns the category title with a colored dot.
*/
public SpannableString getTitleWithColorDot() {
return getTitleWithColorDot(color);
}
/** /**
* Gets the skip button text based on segment position. * Gets the skip button text based on segment position.
* *

View File

@@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M
org.gradle.parallel = true org.gradle.parallel = true
android.useAndroidX = true android.useAndroidX = true
kotlin.code.style = official kotlin.code.style = official
version = 5.41.0-dev.5 version = 5.41.0-dev.14

View File

@@ -405,6 +405,10 @@ public final class app/revanced/patches/music/misc/debugging/EnableDebuggingPatc
public static final fun getEnableDebuggingPatch ()Lapp/revanced/patcher/patch/BytecodePatch; public static final fun getEnableDebuggingPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
} }
public final class app/revanced/patches/music/misc/dns/CheckWatchHistoryDomainNameResolutionPatchKt {
public static final fun getCheckWatchHistoryDomainNameResolutionPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/music/misc/extension/SharedExtensionPatchKt { public final class app/revanced/patches/music/misc/extension/SharedExtensionPatchKt {
public static final fun getSharedExtensionPatch ()Lapp/revanced/patcher/patch/BytecodePatch; public static final fun getSharedExtensionPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
} }
@@ -1169,6 +1173,10 @@ public final class app/revanced/patches/tumblr/annoyances/popups/DisableGiftMess
public static final fun getDisableGiftMessagePopupPatch ()Lapp/revanced/patcher/patch/BytecodePatch; public static final fun getDisableGiftMessagePopupPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
} }
public final class app/revanced/patches/tumblr/annoyances/tv/DisableTumblrTvPatchKt {
public static final fun getDisableTumblrTvPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/tumblr/featureflags/OverrideFeatureFlagsPatchKt { public final class app/revanced/patches/tumblr/featureflags/OverrideFeatureFlagsPatchKt {
public static final fun getOverrideFeatureFlagsPatch ()Lapp/revanced/patcher/patch/BytecodePatch; public static final fun getOverrideFeatureFlagsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
} }
@@ -1719,6 +1727,10 @@ public final class app/revanced/patches/youtube/video/audio/ForceOriginalAudioPa
public static final fun getForceOriginalAudioPatch ()Lapp/revanced/patcher/patch/BytecodePatch; public static final fun getForceOriginalAudioPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
} }
public final class app/revanced/patches/youtube/video/codecs/DisableVideoCodecsPatchKt {
public static final fun getDisableVideoCodecsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/youtube/video/hdr/DisableHdrPatchKt { public final class app/revanced/patches/youtube/video/hdr/DisableHdrPatchKt {
public static final fun getDisableHdrPatch ()Lapp/revanced/patcher/patch/BytecodePatch; public static final fun getDisableHdrPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
} }

View File

@@ -2,28 +2,22 @@
package app.revanced.patches.instagram.hide.navigation package app.revanced.patches.instagram.hide.navigation
import app.revanced.patcher.fingerprint import app.revanced.patcher.fingerprint
import com.android.tools.smali.dexlib2.Opcode import app.revanced.patcher.patch.BytecodePatchContext
internal val tabCreateButtonsLoopStartFingerprint = fingerprint { internal val initializeNavigationButtonsListFingerprint = fingerprint {
returns("V") strings("Nav3")
strings("InstagramMainActivity.createTabButtons") parameters("Lcom/instagram/common/session/UserSession;", "Z")
opcodes( returns("Ljava/util/List;")
//Loop Start
Opcode.IF_GE, // Check if index is finished (index, size)
//Injection
Opcode.INVOKE_INTERFACE,
Opcode.MOVE_RESULT_OBJECT
)
} }
internal val tabCreateButtonsLoopEndFingerprint = fingerprint { private val navigationButtonsEnumClassDef = fingerprint {
returns("V") strings("FEED", "fragment_feed", "SEARCH", "fragment_search")
strings("InstagramMainActivity.createTabButtons") }
opcodes(
Opcode.IPUT_OBJECT, context(BytecodePatchContext)
// Injection Jump internal val navigationButtonsEnumInitFingerprint get() = fingerprint {
Opcode.ADD_INT_LIT8, //Increase Index custom { method, classDef ->
Opcode.GOTO // Jump to loopStart method.name == "<init>"
// LoopEnd && classDef == navigationButtonsEnumClassDef.classDef
) }
} }

View File

@@ -1,21 +1,28 @@
package app.revanced.patches.instagram.hide.navigation package app.revanced.patches.instagram.hide.navigation
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.patch.booleanOption import app.revanced.patcher.patch.booleanOption
import app.revanced.patcher.patch.bytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patcher.util.smali.ExternalLabel import app.revanced.util.addInstructionsAtControlFlowLabel
import app.revanced.util.findFreeRegister import app.revanced.util.findFreeRegister
import app.revanced.util.getReference
import app.revanced.util.indexOfFirstInstructionOrThrow
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
import java.util.logging.Logger import java.util.logging.Logger
private const val EXTENSION_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/instagram/hide/navigation/HideNavigationButtonsPatch;"
@Suppress("unused") @Suppress("unused")
val hideNavigationButtonsPatch = bytecodePatch( val hideNavigationButtonsPatch = bytecodePatch(
name = "Hide navigation buttons", name = "Hide navigation buttons",
description = "Hides navigation bar buttons, such as the Reels and Create button.", description = "Hides navigation bar buttons, such as the Reels and Create button.",
use = false use = false
) { ) {
compatibleWith("com.instagram.android"("397.1.0.52.81")) compatibleWith("com.instagram.android")
val hideReels by booleanOption( val hideReels by booleanOption(
key = "hideReels", key = "hideReels",
@@ -38,43 +45,44 @@ val hideNavigationButtonsPatch = bytecodePatch(
) )
} }
tabCreateButtonsLoopStartFingerprint.method.apply { val enumNameField: String
// Check the current loop index, and skip over adding the
// navigation button view if the index matches a given button.
val startIndex = tabCreateButtonsLoopStartFingerprint.patternMatch!!.startIndex // Get the field name which contains the name of the enum for the navigation button ("fragment_clips", "fragment_share", ...)
val endIndex = tabCreateButtonsLoopEndFingerprint.patternMatch!!.endIndex with(navigationButtonsEnumInitFingerprint.method) {
val insertIndex = startIndex + 1 enumNameField = indexOfFirstInstructionOrThrow {
val loopIndexRegister = getInstruction<TwoRegisterInstruction>(startIndex).registerA opcode == Opcode.IPUT_OBJECT &&
val freeRegister = findFreeRegister(insertIndex, loopIndexRegister) (this as TwoRegisterInstruction).registerA == 2 // The p2 register
val instruction = getInstruction(endIndex - 1) }.let {
getInstruction(it).getReference<FieldReference>()!!.name
val instructions = buildString {
if (hideCreate!!) {
appendLine(
"""
const v$freeRegister, 0x2
if-eq v$freeRegister, v$loopIndexRegister, :skipAddView
"""
)
}
if (hideReels!!) {
appendLine(
"""
const v$freeRegister, 0x3
if-eq v$freeRegister, v$loopIndexRegister, :skipAddView
"""
)
}
}
addInstructionsWithLabels(
insertIndex,
instructions,
ExternalLabel("skipAddView", instruction)
)
} }
} }
}
initializeNavigationButtonsListFingerprint.method.apply {
val returnIndex = indexOfFirstInstructionOrThrow(Opcode.RETURN_OBJECT)
val buttonsListRegister = getInstruction<OneRegisterInstruction>(returnIndex).registerA
val freeRegister = findFreeRegister(returnIndex)
val freeRegister2 = findFreeRegister(returnIndex, freeRegister)
fun instructionsRemoveButtonByName(buttonEnumName: String): String {
return """
const-string v$freeRegister, "$buttonEnumName"
const-string v$freeRegister2, "$enumNameField"
invoke-static { v$buttonsListRegister, v$freeRegister, v$freeRegister2 }, $EXTENSION_CLASS_DESCRIPTOR->removeNavigationButtonByName(Ljava/util/List;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;
move-result-object v$buttonsListRegister
"""
}
if (hideReels!!)
addInstructionsAtControlFlowLabel(
returnIndex,
instructionsRemoveButtonByName("fragment_clips")
)
if (hideCreate!!)
addInstructionsAtControlFlowLabel(
returnIndex,
instructionsRemoveButtonByName("fragment_share")
)
}
}
}

View File

@@ -0,0 +1,22 @@
package app.revanced.patches.music.misc.dns
import app.revanced.patches.music.misc.extension.sharedExtensionPatch
import app.revanced.patches.music.shared.mainActivityOnCreateFingerprint
import app.revanced.patches.shared.misc.dns.checkWatchHistoryDomainNameResolutionPatch
val checkWatchHistoryDomainNameResolutionPatch = checkWatchHistoryDomainNameResolutionPatch(
block = {
dependsOn(
sharedExtensionPatch
)
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.29.52",
"8.10.52"
)
)
},
mainActivityFingerprint = mainActivityOnCreateFingerprint
)

View File

@@ -1,9 +1,10 @@
package app.revanced.patches.music.misc.extension package app.revanced.patches.music.misc.extension
import app.revanced.patches.music.misc.extension.hooks.applicationInitHook import app.revanced.patches.music.misc.extension.hooks.applicationInitHook
import app.revanced.patches.music.misc.extension.hooks.applicationInitOnCreateHook
import app.revanced.patches.shared.misc.extension.sharedExtensionPatch import app.revanced.patches.shared.misc.extension.sharedExtensionPatch
val sharedExtensionPatch = sharedExtensionPatch( val sharedExtensionPatch = sharedExtensionPatch(
"music", "music",
applicationInitHook, applicationInitHook, applicationInitOnCreateHook
) )

View File

@@ -1,5 +1,6 @@
package app.revanced.patches.music.misc.extension.hooks package app.revanced.patches.music.misc.extension.hooks
import app.revanced.patches.music.shared.YOUTUBE_MUSIC_MAIN_ACTIVITY_CLASS_TYPE
import app.revanced.patches.shared.misc.extension.extensionHook import app.revanced.patches.shared.misc.extension.extensionHook
internal val applicationInitHook = extensionHook { internal val applicationInitHook = extensionHook {
@@ -8,3 +9,11 @@ internal val applicationInitHook = extensionHook {
strings("activity") strings("activity")
custom { method, _ -> method.name == "onCreate" } custom { method, _ -> method.name == "onCreate" }
} }
internal val applicationInitOnCreateHook = extensionHook {
returns("V")
parameters("Landroid/os/Bundle;")
custom { method, classDef ->
method.name == "onCreate" && classDef.type == YOUTUBE_MUSIC_MAIN_ACTIVITY_CLASS_TYPE
}
}

View File

@@ -28,7 +28,12 @@ val gmsCoreSupportPatch = gmsCoreSupportPatch(
) { ) {
dependsOn(spoofVideoStreamsPatch) dependsOn(spoofVideoStreamsPatch)
compatibleWith(MUSIC_PACKAGE_NAME) compatibleWith(
MUSIC_PACKAGE_NAME(
"7.29.52",
"8.10.52"
)
)
} }
private fun gmsCoreSupportResourcePatch( private fun gmsCoreSupportResourcePatch(

View File

@@ -0,0 +1,13 @@
package app.revanced.patches.music.shared
import app.revanced.patcher.fingerprint
internal const val YOUTUBE_MUSIC_MAIN_ACTIVITY_CLASS_TYPE = "Lcom/google/android/apps/youtube/music/activities/MusicActivity;"
internal val mainActivityOnCreateFingerprint = fingerprint {
returns("V")
parameters("Landroid/os/Bundle;")
custom { method, classDef ->
method.name == "onCreate" && classDef.type == YOUTUBE_MUSIC_MAIN_ACTIVITY_CLASS_TYPE
}
}

View File

@@ -0,0 +1,36 @@
package app.revanced.patches.shared.misc.dns
import app.revanced.patcher.Fingerprint
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.patch.BytecodePatchBuilder
import app.revanced.patcher.patch.BytecodePatchContext
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.all.misc.resources.addResources
private const val EXTENSION_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/shared/patches/CheckWatchHistoryDomainNameResolutionPatch;"
/**
* Patch shared with YouTube and YT Music.
*/
internal fun checkWatchHistoryDomainNameResolutionPatch(
block: BytecodePatchBuilder.() -> Unit = {},
executeBlock: BytecodePatchContext.() -> Unit = {},
mainActivityFingerprint: Fingerprint
) = bytecodePatch(
name = "Check watch history domain name resolution",
description = "Checks if the device DNS server is preventing user watch history from being saved.",
) {
block()
execute {
executeBlock()
addResources("shared", "misc.dns.checkWatchHistoryDomainNameResolutionPatch")
mainActivityFingerprint.method.addInstruction(
0,
"invoke-static/range { p0 .. p0 }, $EXTENSION_CLASS_DESCRIPTOR->checkDnsResolver(Landroid/app/Activity;)V",
)
}
}

View File

@@ -0,0 +1,19 @@
package app.revanced.patches.tumblr.annoyances.tv
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.tumblr.featureflags.addFeatureFlagOverride
import app.revanced.patches.tumblr.featureflags.overrideFeatureFlagsPatch
@Suppress("unused")
val disableTumblrTvPatch = bytecodePatch(
name = "Disable Tumblr TV",
description = "Removes the Tumblr TV navigation button from the bottom navigation bar.",
) {
dependsOn(overrideFeatureFlagsPatch)
compatibleWith("com.tumblr")
execute {
addFeatureFlagOverride("tumblrTvMobileNav", "false")
}
}

View File

@@ -77,7 +77,6 @@ val hideAdsPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -26,7 +26,6 @@ val hideGetPremiumPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -24,7 +24,6 @@ val videoAdsPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -54,7 +54,6 @@ val copyVideoUrlPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -25,7 +25,6 @@ val removeViewerDiscretionDialogPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -75,7 +75,6 @@ val downloadsPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -21,7 +21,6 @@ val seekbarPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -89,7 +89,6 @@ val swipeControlsPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -25,7 +25,6 @@ val autoCaptionsPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -44,7 +44,6 @@ val customBrandingPatch = resourcePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -94,7 +94,6 @@ val changeHeaderPatch = resourcePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -23,7 +23,6 @@ val hideButtonsPatch = resourcePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -41,7 +41,6 @@ val navigationButtonsPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -59,7 +59,6 @@ val hidePlayerOverlayButtonsPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -34,7 +34,6 @@ val changeFormFactorPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -60,7 +60,6 @@ val hideEndscreenCardsPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -32,7 +32,6 @@ val hideEndScreenSuggestedVideoPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -30,7 +30,6 @@ val disableFullscreenAmbientModePatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -127,7 +127,6 @@ val hideLayoutComponentsPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",
@@ -162,9 +161,9 @@ val hideLayoutComponentsPatch = bytecodePatch(
SwitchPreference("revanced_hide_comments_section"), SwitchPreference("revanced_hide_comments_section"),
SwitchPreference("revanced_hide_comments_community_guidelines"), SwitchPreference("revanced_hide_comments_community_guidelines"),
SwitchPreference("revanced_hide_comments_create_a_short_button"), SwitchPreference("revanced_hide_comments_create_a_short_button"),
SwitchPreference("revanced_hide_comments_emoji_and_timestamp_buttons"),
SwitchPreference("revanced_hide_comments_preview_comment"), SwitchPreference("revanced_hide_comments_preview_comment"),
SwitchPreference("revanced_hide_comments_thanks_button"), SwitchPreference("revanced_hide_comments_thanks_button"),
SwitchPreference("revanced_hide_comments_timestamp_button"),
), ),
sorting = PreferenceScreenPreference.Sorting.UNSORTED, sorting = PreferenceScreenPreference.Sorting.UNSORTED,
), ),

View File

@@ -58,7 +58,6 @@ val hideInfoCardsPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -25,7 +25,6 @@ val hidePlayerFlyoutMenuPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -49,7 +49,6 @@ val hideRelatedVideoOverlayPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -30,7 +30,6 @@ val disableRollingNumberAnimationPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -173,7 +173,6 @@ val hideShortsComponentsPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -32,7 +32,6 @@ val disableSignInToTvPopupPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -22,7 +22,6 @@ val hideTimestampPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -154,7 +154,6 @@ val miniplayerPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -22,7 +22,6 @@ val playerPopupPanelsPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -22,7 +22,6 @@ internal val exitFullscreenPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -53,7 +53,6 @@ val customPlayerOverlayOpacityPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -62,7 +62,6 @@ val returnYouTubeDislikePatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -67,7 +67,6 @@ val wideSearchbarPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -45,7 +45,6 @@ val shortsAutoplayPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -65,7 +65,6 @@ val openShortsInRegularPlayerPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -127,7 +127,6 @@ val sponsorBlockPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -60,7 +60,6 @@ val spoofAppVersionPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -33,7 +33,6 @@ val changeStartPagePatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -35,7 +35,6 @@ val disableResumingShortsOnStartupPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -205,7 +205,6 @@ val themePatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -34,7 +34,6 @@ val alternativeThumbnailsPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -28,7 +28,6 @@ val bypassImageRegionRestrictionsPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -24,7 +24,6 @@ val announcementsPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -52,7 +52,6 @@ val backgroundPlaybackPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -18,7 +18,6 @@ val enableDebuggingPatch = enableDebuggingPatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -25,7 +25,6 @@ val spoofDeviceDimensionsPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -1,40 +1,23 @@
package app.revanced.patches.youtube.misc.dns package app.revanced.patches.youtube.misc.dns
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction import app.revanced.patches.shared.misc.dns.checkWatchHistoryDomainNameResolutionPatch
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.youtube.misc.extension.sharedExtensionPatch import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
import app.revanced.patches.youtube.shared.mainActivityOnCreateFingerprint import app.revanced.patches.youtube.shared.mainActivityOnCreateFingerprint
private const val EXTENSION_CLASS_DESCRIPTOR = val checkWatchHistoryDomainNameResolutionPatch = checkWatchHistoryDomainNameResolutionPatch(
"Lapp/revanced/extension/youtube/patches/CheckWatchHistoryDomainNameResolutionPatch;" block = {
dependsOn(
val checkWatchHistoryDomainNameResolutionPatch = bytecodePatch( sharedExtensionPatch
name = "Check watch history domain name resolution",
description = "Checks if the device DNS server is preventing user watch history from being saved.",
) {
dependsOn(
sharedExtensionPatch,
addResourcesPatch
)
compatibleWith(
"com.google.android.youtube"(
"19.34.42",
"19.43.41",
"20.07.39",
"20.13.41",
"20.14.43",
) )
)
execute { compatibleWith(
addResources("youtube", "misc.dns.checkWatchHistoryDomainNameResolutionPatch") "com.google.android.youtube"(
"19.34.42",
mainActivityOnCreateFingerprint.method.addInstruction( "20.07.39",
0, "20.13.41",
"invoke-static/range { p0 .. p0 }, $EXTENSION_CLASS_DESCRIPTOR->checkDnsResolver(Landroid/app/Activity;)V", "20.14.43",
)
) )
} },
} mainActivityFingerprint = mainActivityOnCreateFingerprint
)

View File

@@ -36,7 +36,6 @@ val gmsCoreSupportPatch = gmsCoreSupportPatch(
compatibleWith( compatibleWith(
YOUTUBE_PACKAGE_NAME( YOUTUBE_PACKAGE_NAME(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -27,7 +27,6 @@ val disableHapticFeedbackPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -33,7 +33,6 @@ val bypassURLRedirectsPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -42,7 +42,6 @@ val openLinksExternallyPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -28,7 +28,6 @@ val loopVideoPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -15,7 +15,6 @@ val sanitizeSharingLinksPatch = sanitizeSharingLinksPatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -23,7 +23,6 @@ val spoofVideoStreamsPatch = spoofVideoStreamsPatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -45,7 +45,6 @@ val forceOriginalAudioPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -0,0 +1,87 @@
package app.revanced.patches.youtube.video.codecs
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
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.all.misc.transformation.transformInstructionsPatch
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
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.util.getReference
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
private const val EXTENSION_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/youtube/patches/DisableVideoCodecsPatch;"
@Suppress("unused")
val disableVideoCodecsPatch = bytecodePatch(
name = "Disable video codecs",
description = "Adds options to disable HDR and VP9 codecs.",
) {
dependsOn(
sharedExtensionPatch,
settingsPatch,
addResourcesPatch,
/**
* Override all calls of `getSupportedHdrTypes`.
*/
transformInstructionsPatch(
filterMap = filterMap@{ classDef, _, instruction, instructionIndex ->
if (classDef.type.startsWith("Lapp/revanced/")) {
return@filterMap null
}
val reference = instruction.getReference<MethodReference>()
if (reference?.definingClass =="Landroid/view/Display\$HdrCapabilities;"
&& reference.name == "getSupportedHdrTypes") {
return@filterMap instruction to instructionIndex
}
return@filterMap null
},
transform = { method, entry ->
val (instruction, index) = entry
val register = (instruction as FiveRegisterInstruction).registerC
method.replaceInstruction(
index,
"invoke-static/range { v$register .. v$register }, $EXTENSION_CLASS_DESCRIPTOR->" +
"disableHdrVideo(Landroid/view/Display\$HdrCapabilities;)[I",
)
}
)
)
compatibleWith(
"com.google.android.youtube"(
"19.34.42",
"20.07.39",
"20.13.41",
"20.14.43",
)
)
execute {
addResources("youtube", "video.codecs.disableVideoCodecsPatch")
PreferenceScreen.VIDEO.addPreferences(
SwitchPreference("revanced_disable_hdr_video"),
SwitchPreference("revanced_force_avc_codec")
)
vp9CapabilityFingerprint.method.addInstructionsWithLabels(
0,
"""
invoke-static {}, $EXTENSION_CLASS_DESCRIPTOR->allowVP9()Z
move-result v0
if-nez v0, :default
return v0
:default
nop
"""
)
}
}

View File

@@ -0,0 +1,13 @@
package app.revanced.patches.youtube.video.codecs
import app.revanced.patcher.fingerprint
import com.android.tools.smali.dexlib2.AccessFlags
internal val vp9CapabilityFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returns("Z")
strings(
"vp9_supported",
"video/x-vnd.on2.vp9"
)
}

View File

@@ -1,72 +1,10 @@
package app.revanced.patches.youtube.video.hdr package app.revanced.patches.youtube.video.hdr
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
import app.revanced.patcher.patch.bytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.all.misc.resources.addResources import app.revanced.patches.youtube.video.codecs.disableVideoCodecsPatch
import app.revanced.patches.all.misc.resources.addResourcesPatch
import app.revanced.patches.all.misc.transformation.transformInstructionsPatch
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
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.util.getReference
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
private const val EXTENSION_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/youtube/patches/DisableHdrPatch;"
@Deprecated("Patch was renamed", ReplaceWith("disableVideoCodecsPatch"))
@Suppress("unused") @Suppress("unused")
val disableHdrPatch = bytecodePatch( val disableHdrPatch = bytecodePatch{
name = "Disable HDR video", dependsOn(disableVideoCodecsPatch)
description = "Adds an option to disable video HDR.",
) {
dependsOn(
sharedExtensionPatch,
settingsPatch,
addResourcesPatch,
// Override all calls of `getSupportedHdrTypes`.
transformInstructionsPatch(
filterMap = filterMap@{ classDef, _, instruction, instructionIndex ->
if (classDef.type.startsWith("Lapp/revanced/")) {
return@filterMap null
}
val reference = instruction.getReference<MethodReference>()
if (reference?.definingClass =="Landroid/view/Display\$HdrCapabilities;"
&& reference.name == "getSupportedHdrTypes") {
return@filterMap instruction to instructionIndex
}
return@filterMap null
},
transform = { method, entry ->
val (instruction, index) = entry
val register = (instruction as FiveRegisterInstruction).registerC
method.replaceInstruction(
index,
"invoke-static/range { v$register .. v$register }, $EXTENSION_CLASS_DESCRIPTOR->" +
"disableHdrVideo(Landroid/view/Display\$HdrCapabilities;)[I",
)
}
)
)
compatibleWith(
"com.google.android.youtube"(
"19.34.42",
"19.43.41",
"20.07.39",
"20.13.41",
"20.14.43",
)
)
execute {
addResources("youtube", "video.hdr.disableHdrPatch")
PreferenceScreen.VIDEO.addPreferences(
SwitchPreference("revanced_disable_hdr_video")
)
}
} }

View File

@@ -26,7 +26,6 @@ internal val videoQualityItemOnClickFingerprint = fingerprint {
} }
} }
internal val videoQualityMenuOptionsFingerprint = fingerprint { internal val videoQualityMenuOptionsFingerprint = fingerprint {
accessFlags(AccessFlags.STATIC) accessFlags(AccessFlags.STATIC)
returns("[L") returns("[L")

View File

@@ -14,18 +14,18 @@ internal val settingsMenuVideoQualityGroup = mutableSetOf<BasePreference>()
@Suppress("unused") @Suppress("unused")
val videoQualityPatch = bytecodePatch( val videoQualityPatch = bytecodePatch(
name = "Video quality", name = "Video quality",
description = "Adds options to use the advanced video quality menu and set default video qualities." description = "Adds options to use the advanced video quality menu, set default video qualities, " +
"and disable video codecs such as VP9/HDR."
) { ) {
dependsOn( dependsOn(
rememberVideoQualityPatch, rememberVideoQualityPatch,
advancedVideoQualityMenuPatch, advancedVideoQualityMenuPatch,
videoQualityDialogButtonPatch, videoQualityDialogButtonPatch
) )
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -29,7 +29,6 @@ val playbackSpeedPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41",
"20.07.39", "20.07.39",
"20.13.41", "20.13.41",
"20.14.43", "20.14.43",

View File

@@ -22,6 +22,8 @@ Second \"item\" text"</string>
<app id="shared"> <app id="shared">
<patch id="misc.checks.checkEnvironmentPatch"> <patch id="misc.checks.checkEnvironmentPatch">
</patch> </patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
</patch>
<patch id="misc.settings.settingsResourcePatch"> <patch id="misc.settings.settingsResourcePatch">
<!-- Settings about dialog. --> <!-- Settings about dialog. -->
<!-- NOTE: the about strings above are duplicated in the TikTok about screen code, <!-- NOTE: the about strings above are duplicated in the TikTok about screen code,
@@ -209,8 +211,6 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="misc.announcements.announcementsPatch"> <patch id="misc.announcements.announcementsPatch">
</patch> </patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
</patch>
<patch id="misc.loopvideo.loopVideoPatch"> <patch id="misc.loopvideo.loopVideoPatch">
</patch> </patch>
<patch id="misc.loopvideo.button.loopVideoButtonPatch"> <patch id="misc.loopvideo.button.loopVideoButtonPatch">
@@ -239,7 +239,7 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="video.speed.remember.rememberPlaybackSpeedPatch"> <patch id="video.speed.remember.rememberPlaybackSpeedPatch">
</patch> </patch>
<patch id="video.hdr.disableHdrPatch"> <patch id="video.codecs.disableVideoCodecsPatch">
</patch> </patch>
<patch id="video.quality.advancedVideoQualityMenuPatch"> <patch id="video.quality.advancedVideoQualityMenuPatch">
</patch> </patch>

View File

@@ -22,6 +22,8 @@ Second \"item\" text"</string>
<app id="shared"> <app id="shared">
<patch id="misc.checks.checkEnvironmentPatch"> <patch id="misc.checks.checkEnvironmentPatch">
</patch> </patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
</patch>
<patch id="misc.settings.settingsResourcePatch"> <patch id="misc.settings.settingsResourcePatch">
<!-- Settings about dialog. --> <!-- Settings about dialog. -->
<!-- NOTE: the about strings above are duplicated in the TikTok about screen code, <!-- NOTE: the about strings above are duplicated in the TikTok about screen code,
@@ -209,8 +211,6 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="misc.announcements.announcementsPatch"> <patch id="misc.announcements.announcementsPatch">
</patch> </patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
</patch>
<patch id="misc.loopvideo.loopVideoPatch"> <patch id="misc.loopvideo.loopVideoPatch">
</patch> </patch>
<patch id="misc.loopvideo.button.loopVideoButtonPatch"> <patch id="misc.loopvideo.button.loopVideoButtonPatch">
@@ -239,7 +239,7 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="video.speed.remember.rememberPlaybackSpeedPatch"> <patch id="video.speed.remember.rememberPlaybackSpeedPatch">
</patch> </patch>
<patch id="video.hdr.disableHdrPatch"> <patch id="video.codecs.disableVideoCodecsPatch">
</patch> </patch>
<patch id="video.quality.advancedVideoQualityMenuPatch"> <patch id="video.quality.advancedVideoQualityMenuPatch">
</patch> </patch>

View File

@@ -31,6 +31,11 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_days">تم التعديل منذ %s يوم</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>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">تحذير</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">لم يتم حفظ سجل المشاهدة الخاص بك.&lt;br&gt;&lt;br&gt;من المرجح أن يكون السبب في ذلك هو مانع إعلانات DNS أو وكيل الشبكة.&lt;br&gt;&lt;br&gt;لإصلاح هذه المشكلة، قم بإضافة &lt;b&gt;s.youtube.com&lt;/b&gt; إلى القائمة البيضاء أو قم بإيقاف تشغيل جميع أدوات حظر DNS ووكلاء البروكسي.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">لا تعرض مرة أخرى</string>
</patch>
<patch id="misc.settings.settingsResourcePatch"> <patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">الإعدادات</string> <string name="revanced_settings_submenu_title">الإعدادات</string>
<string name="revanced_settings_confirm_user_dialog_title">هل أنت متأكد أنك تريد المتابعة؟</string> <string name="revanced_settings_confirm_user_dialog_title">هل أنت متأكد أنك تريد المتابعة؟</string>
@@ -1266,8 +1271,9 @@ Second \"item\" text"</string>
إذا تم إيقاف تشغيله لاحقًا، من المستحسن مسح بيانات التطبيق لمنع حدوث أخطاء في واجهة المستخدم."</string> إذا تم إيقاف تشغيله لاحقًا، من المستحسن مسح بيانات التطبيق لمنع حدوث أخطاء في واجهة المستخدم."</string>
<string name="revanced_spoof_app_version_target_title">الهدف من تغيير إصدار التطبيق</string> <string name="revanced_spoof_app_version_target_title">الهدف من تغيير إصدار التطبيق</string>
<string name="revanced_spoof_app_version_target_entry_1">20.13.41 - استعادة شريط إجراءات الفيديو غير المطوي</string> <string name="revanced_spoof_app_version_target_entry_1">20.13.41 - استعادة شريط إجراءات الفيديو غير المطوي</string>
<string name="revanced_spoof_app_version_target_entry_2">19.35.36 - استعادة أيقونات مشغل Shorts القديمة</string> <string name="revanced_spoof_app_version_target_entry_2">20.05.46 - استعادة وظيفة النسخ</string>
<string name="revanced_spoof_app_version_target_entry_3">19.01.34 - استعادة أيقونات التنقل القديمة</string> <string name="revanced_spoof_app_version_target_entry_3">19.35.36 - استعادة أيقونات مشغل Shorts القديمة</string>
<string name="revanced_spoof_app_version_target_entry_4">19.01.34 - استعادة أيقونات التنقل القديمة</string>
</patch> </patch>
<patch id="layout.startpage.changeStartPagePatch"> <patch id="layout.startpage.changeStartPagePatch">
<string name="revanced_change_start_page_title">تغيير صفحة البداية</string> <string name="revanced_change_start_page_title">تغيير صفحة البداية</string>
@@ -1442,11 +1448,6 @@ Second \"item\" text"</string>
<string name="revanced_announcements_connection_failed">فشل الاتصال بموفر الإعلانات</string> <string name="revanced_announcements_connection_failed">فشل الاتصال بموفر الإعلانات</string>
<string name="revanced_announcements_dialog_dismiss">تجاهل</string> <string name="revanced_announcements_dialog_dismiss">تجاهل</string>
</patch> </patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">تحذير</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">لم يتم حفظ سجل المشاهدة الخاص بك.&lt;br&gt;&lt;br&gt;من المرجح أن يكون السبب في ذلك هو مانع إعلانات DNS أو وكيل الشبكة.&lt;br&gt;&lt;br&gt;لإصلاح هذه المشكلة، قم بإضافة &lt;b&gt;s.youtube.com&lt;/b&gt; إلى القائمة البيضاء أو قم بإيقاف تشغيل جميع أدوات حظر DNS ووكلاء البروكسي.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">لا تعرض مرة أخرى</string>
</patch>
<patch id="misc.loopvideo.loopVideoPatch"> <patch id="misc.loopvideo.loopVideoPatch">
<string name="revanced_loop_video_title">تفعيل تكرار الفيديو</string> <string name="revanced_loop_video_title">تفعيل تكرار الفيديو</string>
<string name="revanced_loop_video_summary_on">سيتم تكرار الفيديو</string> <string name="revanced_loop_video_summary_on">سيتم تكرار الفيديو</string>
@@ -1561,10 +1562,22 @@ Second \"item\" text"</string>
<string name="revanced_playback_speed_default_title">سرعة التشغيل الافتراضية</string> <string name="revanced_playback_speed_default_title">سرعة التشغيل الافتراضية</string>
<string name="revanced_remember_playback_speed_toast">تغيير السرعة الافتراضية إلى: %s</string> <string name="revanced_remember_playback_speed_toast">تغيير السرعة الافتراضية إلى: %s</string>
</patch> </patch>
<patch id="video.hdr.disableHdrPatch"> <patch id="video.codecs.disableVideoCodecsPatch">
<string name="revanced_disable_hdr_video_title">تعطيل فيديو HDR</string> <string name="revanced_disable_hdr_video_title">تعطيل فيديو HDR</string>
<string name="revanced_disable_hdr_video_summary_on">تم تعطيل فيديو HDR</string> <string name="revanced_disable_hdr_video_summary_on">تم تعطيل فيديو HDR</string>
<string name="revanced_disable_hdr_video_summary_off">تم تمكين فيديو HDR</string> <string name="revanced_disable_hdr_video_summary_off">تم تمكين فيديو HDR</string>
<string name="revanced_force_avc_codec_title">فرض AVC (H.264)</string>
<string name="revanced_force_avc_codec_summary_on">تم فرض برنامج ترميز الفيديو على AVC (H.264)</string>
<string name="revanced_force_avc_codec_summary_off">يتم تحديد برنامج ترميز الفيديو تلقائيًا</string>
<string name="revanced_force_avc_codec_user_dialog_message">"الفوائد:
• يمكن أن يحسن عمر البطارية
• يمكن أن يستعيد دقة الفيديو المفقودة على الأجهزة القديمة
القيود:
• أقصى دقة هي 1080p
• تشغيل الفيديو سيستهلك المزيد من بيانات الإنترنت مقارنةً بـ VP9 أو AV1
• لن تستخدم فيديوهات HDR ترميز AVC
• لا يمكن لبعض الأجهزة فرض AVC"</string>
</patch> </patch>
<patch id="video.quality.advancedVideoQualityMenuPatch"> <patch id="video.quality.advancedVideoQualityMenuPatch">
<string name="revanced_advanced_video_quality_menu_title">عرض قائمة جودة الفيديو المتقدمة</string> <string name="revanced_advanced_video_quality_menu_title">عرض قائمة جودة الفيديو المتقدمة</string>

View File

@@ -22,6 +22,9 @@ Second \"item\" text"</string>
<app id="shared"> <app id="shared">
<patch id="misc.checks.checkEnvironmentPatch"> <patch id="misc.checks.checkEnvironmentPatch">
</patch> </patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">সকীয়নি</string>
</patch>
<patch id="misc.settings.settingsResourcePatch"> <patch id="misc.settings.settingsResourcePatch">
<!-- Settings about dialog. --> <!-- Settings about dialog. -->
<!-- NOTE: the about strings above are duplicated in the TikTok about screen code, <!-- NOTE: the about strings above are duplicated in the TikTok about screen code,
@@ -210,9 +213,6 @@ Second \"item\" text"</string>
<patch id="misc.announcements.announcementsPatch"> <patch id="misc.announcements.announcementsPatch">
<string name="revanced_announcements_dialog_dismiss">খাৰিজ কৰক</string> <string name="revanced_announcements_dialog_dismiss">খাৰিজ কৰক</string>
</patch> </patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">সকীয়নি</string>
</patch>
<patch id="misc.loopvideo.loopVideoPatch"> <patch id="misc.loopvideo.loopVideoPatch">
</patch> </patch>
<patch id="misc.loopvideo.button.loopVideoButtonPatch"> <patch id="misc.loopvideo.button.loopVideoButtonPatch">
@@ -241,7 +241,7 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="video.speed.remember.rememberPlaybackSpeedPatch"> <patch id="video.speed.remember.rememberPlaybackSpeedPatch">
</patch> </patch>
<patch id="video.hdr.disableHdrPatch"> <patch id="video.codecs.disableVideoCodecsPatch">
</patch> </patch>
<patch id="video.quality.advancedVideoQualityMenuPatch"> <patch id="video.quality.advancedVideoQualityMenuPatch">
</patch> </patch>

View File

@@ -31,6 +31,11 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_days">%s gün əvvəl yamaqlanıb</string> <string name="revanced_check_environment_not_near_patch_time_days">%s gün əvvəl yamaqlanıb</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">APK qurulma vaxtı pozulub</string> <string name="revanced_check_environment_not_near_patch_time_invalid">APK qurulma vaxtı pozulub</string>
</patch> </patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Xәbәrdarlıq</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Baxış tarixçəniz saxlanmır.&lt;br&gt;&lt;br&gt;Bu çox güman ki, DNS reklam bloklayıcı və ya şəbəkə proksisinə görədir.&lt;br&gt;&lt;br&gt;.Bunu düzəltmək üçün s.youtube.com-u&lt;/b&gt; &lt;b&gt;ağ siyahıya salın və ya bütün DNS bloklayıcıları və proksiləri bağlayın.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Təkrar göstərmə</string>
</patch>
<patch id="misc.settings.settingsResourcePatch"> <patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Tənzimləmələr</string> <string name="revanced_settings_submenu_title">Tənzimləmələr</string>
<string name="revanced_settings_confirm_user_dialog_title">Davam etmək istədiyinizə əminsiniz?</string> <string name="revanced_settings_confirm_user_dialog_title">Davam etmək istədiyinizə əminsiniz?</string>
@@ -1265,8 +1270,9 @@ Bu tətbiqin görünüşün və xüsusiyyətlərin dəyişdirəcək, lakin bilin
Sonradan qapadılarsa, UI səhvlərin önləmək üçün tətbiq məlumatların silmək tövsiyə olunur."</string> Sonradan qapadılarsa, UI səhvlərin önləmək üçün tətbiq məlumatların silmək tövsiyə olunur."</string>
<string name="revanced_spoof_app_version_target_title">Saxta tətbiq versiyası hədəfi</string> <string name="revanced_spoof_app_version_target_title">Saxta tətbiq versiyası hədəfi</string>
<string name="revanced_spoof_app_version_target_entry_1">20.13.41 - Yığılmayan video fəaliyyət cizgisin bərpa et</string> <string name="revanced_spoof_app_version_target_entry_1">20.13.41 - Yığılmayan video fəaliyyət cizgisin bərpa et</string>
<string name="revanced_spoof_app_version_target_entry_2">19.35.36 - Köhnə Shorts oynadıcı işarələrin bərpa et</string> <string name="revanced_spoof_app_version_target_entry_2">20.05.46 - Transkript xüsusiyyətin bərpa et</string>
<string name="revanced_spoof_app_version_target_entry_3">19.01.34 - Köhnə fəaliyyət simvolların bərpa et</string> <string name="revanced_spoof_app_version_target_entry_3">19.35.36 - Köhnə Shorts oynadıcı işarələrin bərpa et</string>
<string name="revanced_spoof_app_version_target_entry_4">19.01.34 - Köhnə fəaliyyət simvolların bərpa et</string>
</patch> </patch>
<patch id="layout.startpage.changeStartPagePatch"> <patch id="layout.startpage.changeStartPagePatch">
<string name="revanced_change_start_page_title">Başlatma səhifəsini dəyişdir</string> <string name="revanced_change_start_page_title">Başlatma səhifəsini dəyişdir</string>
@@ -1441,22 +1447,17 @@ DeArrow haqqında ətraflı öyrənmək üçün bura toxun"</string>
<string name="revanced_announcements_connection_failed">Elan provayderinə bağlanmaq olmadı</string> <string name="revanced_announcements_connection_failed">Elan provayderinə bağlanmaq olmadı</string>
<string name="revanced_announcements_dialog_dismiss">Ləğv et</string> <string name="revanced_announcements_dialog_dismiss">Ləğv et</string>
</patch> </patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Xәbәrdarlıq</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Baxış tarixçəniz saxlanmır.&lt;br&gt;&lt;br&gt;Bu çox güman ki, DNS reklam bloklayıcı və ya şəbəkə proksisinə görədir.&lt;br&gt;&lt;br&gt;.Bunu düzəltmək üçün s.youtube.com-u&lt;/b&gt; &lt;b&gt;ağ siyahıya salın və ya bütün DNS bloklayıcıları və proksiləri bağlayın.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Təkrar göstərmə</string>
</patch>
<patch id="misc.loopvideo.loopVideoPatch"> <patch id="misc.loopvideo.loopVideoPatch">
<string name="revanced_loop_video_title">Döngü videosunu aktivləşdir</string> <string name="revanced_loop_video_title">Video təkrarlamanı aktivləşdir</string>
<string name="revanced_loop_video_summary_on">Video döngüyə alınacaq</string> <string name="revanced_loop_video_summary_on">Video təkrarlanacaq</string>
<string name="revanced_loop_video_summary_off">Video döngüyə alınmayacaq</string> <string name="revanced_loop_video_summary_off">Video təkrarlanmayacaq</string>
</patch> </patch>
<patch id="misc.loopvideo.button.loopVideoButtonPatch"> <patch id="misc.loopvideo.button.loopVideoButtonPatch">
<string name="revanced_loop_video_button_title">Döngü videosu düyməsini göstər</string> <string name="revanced_loop_video_button_title">Video təkrarlama düyməsini göstər</string>
<string name="revanced_loop_video_button_summary_on">Düymə görünür</string> <string name="revanced_loop_video_button_summary_on">Düymə görünür</string>
<string name="revanced_loop_video_button_summary_off">Düymə görünmür</string> <string name="revanced_loop_video_button_summary_off">Düymə görünmür</string>
<string name="revanced_loop_video_button_toast_on">Video döngüsü aktivdir</string> <string name="revanced_loop_video_button_toast_on">Video təkrarlama açıqdır</string>
<string name="revanced_loop_video_button_toast_off">Video döngüsü passivdir</string> <string name="revanced_loop_video_button_toast_off">Video təkrarlama qapalıdır</string>
</patch> </patch>
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch"> <patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
<string name="revanced_spoof_device_dimensions_title">Cihaz ölçülərini saxtalaşdır</string> <string name="revanced_spoof_device_dimensions_title">Cihaz ölçülərini saxtalaşdır</string>
@@ -1560,10 +1561,22 @@ Bunu aktivləşdirmə daha yüksək video keyfiyyətləri əngəlin silə bilər
<string name="revanced_playback_speed_default_title">İlkin oynatma sürəti</string> <string name="revanced_playback_speed_default_title">İlkin oynatma sürəti</string>
<string name="revanced_remember_playback_speed_toast">İlkin sürət %s kimi dəyişdirildi</string> <string name="revanced_remember_playback_speed_toast">İlkin sürət %s kimi dəyişdirildi</string>
</patch> </patch>
<patch id="video.hdr.disableHdrPatch"> <patch id="video.codecs.disableVideoCodecsPatch">
<string name="revanced_disable_hdr_video_title">HDR Videonu Qapat</string> <string name="revanced_disable_hdr_video_title">HDR Videonu Qapat</string>
<string name="revanced_disable_hdr_video_summary_on">HDR video qapalıdır</string> <string name="revanced_disable_hdr_video_summary_on">HDR video qapalıdır</string>
<string name="revanced_disable_hdr_video_summary_off">HDR video aktivdir</string> <string name="revanced_disable_hdr_video_summary_off">HDR video aktivdir</string>
<string name="revanced_force_avc_codec_title">AVC (H.264) -i Məcbur et</string>
<string name="revanced_force_avc_codec_summary_on">Video kodlayıcı AVC (H.264) - ə məcbur edilir</string>
<string name="revanced_force_avc_codec_summary_off">Video kodlayıcı birbaşa müəyyən edilir</string>
<string name="revanced_force_avc_codec_user_dialog_message">"Faydalar:
• Batareya ömrünü uzada bilər
• Köhnə cihazlarda çatışmayan video ayırdetmələrin bərpa edə bilər
Məhdudiyyətlər:
• Maksimum ayırdetmə 1080p-dir
• Video oynatma VP9 və ya AV1-dən daha çox internet məlumatı işlədəcək
• HDR videoları AVC istifadə etməyəcək
• Bəzi cihazlar AVC-ni zorlaya bilməz"</string>
</patch> </patch>
<patch id="video.quality.advancedVideoQualityMenuPatch"> <patch id="video.quality.advancedVideoQualityMenuPatch">
<string name="revanced_advanced_video_quality_menu_title">Qabaqcıl video keyfiyyət siyahısın göstər</string> <string name="revanced_advanced_video_quality_menu_title">Qabaqcıl video keyfiyyət siyahısın göstər</string>

View File

@@ -31,6 +31,11 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_days">Адкарэктавана %s дзён таму</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>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Увага</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Ваша гісторыя прагляду не захоўваецца.&lt;br&gt;&lt;br&gt;Гэта, хутчэй за ўсё, выклікана DNS-блакіроўшчыкам рэкламы або сеткавым праксі.&lt;br&gt;&lt;br&gt;Каб выправіць гэта, дадайце &lt;b&gt;s.youtube.com&lt;/b&gt; у белы спіс або адключыце ўсе DNS-блакіроўшчыкі і праксі.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Больш не паказваць</string>
</patch>
<patch id="misc.settings.settingsResourcePatch"> <patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Налады</string> <string name="revanced_settings_submenu_title">Налады</string>
<string name="revanced_settings_confirm_user_dialog_title">Вы ўпэўнены, што хочаце працягнуць?</string> <string name="revanced_settings_confirm_user_dialog_title">Вы ўпэўнены, што хочаце працягнуць?</string>
@@ -1267,8 +1272,9 @@ Second \"item\" text"</string>
Калі пазней будзе адключана, рэкамендуецца ачысціць даныя прыкладання, каб пазбегнуць памылак у інтэрфейсе."</string> Калі пазней будзе адключана, рэкамендуецца ачысціць даныя прыкладання, каб пазбегнуць памылак у інтэрфейсе."</string>
<string name="revanced_spoof_app_version_target_title">Падробка мэтавай версіі праграмы</string> <string name="revanced_spoof_app_version_target_title">Падробка мэтавай версіі праграмы</string>
<string name="revanced_spoof_app_version_target_entry_1">20.13.41 - Аднавіць не згорнуты радок дзеянняў відэа</string> <string name="revanced_spoof_app_version_target_entry_1">20.13.41 - Аднавіць не згорнуты радок дзеянняў відэа</string>
<string name="revanced_spoof_app_version_target_entry_2">19.35.36 — Восстановить старые значки плеера Shorts</string> <string name="revanced_spoof_app_version_target_entry_2">20.05.46 - Аднавіць функцыянальнасць стэнаграмы</string>
<string name="revanced_spoof_app_version_target_entry_3">19.01.34 - Аднаўленне старых значкоў навігацыі</string> <string name="revanced_spoof_app_version_target_entry_3">19.35.36 — Восстановить старые значки плеера Shorts</string>
<string name="revanced_spoof_app_version_target_entry_4">19.01.34 - Аднаўленне старых значкоў навігацыі</string>
</patch> </patch>
<patch id="layout.startpage.changeStartPagePatch"> <patch id="layout.startpage.changeStartPagePatch">
<string name="revanced_change_start_page_title">Змяніць стартавую старонку</string> <string name="revanced_change_start_page_title">Змяніць стартавую старонку</string>
@@ -1443,11 +1449,6 @@ Second \"item\" text"</string>
<string name="revanced_announcements_connection_failed">Не ўдалося падключыцца да пастаўшчыка аб\"яў</string> <string name="revanced_announcements_connection_failed">Не ўдалося падключыцца да пастаўшчыка аб\"яў</string>
<string name="revanced_announcements_dialog_dismiss">расслабіцца</string> <string name="revanced_announcements_dialog_dismiss">расслабіцца</string>
</patch> </patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Увага</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Ваша гісторыя прагляду не захоўваецца.&lt;br&gt;&lt;br&gt;Гэта, хутчэй за ўсё, выклікана DNS-блакіроўшчыкам рэкламы або сеткавым праксі.&lt;br&gt;&lt;br&gt;Каб выправіць гэта, дадайце &lt;b&gt;s.youtube.com&lt;/b&gt; у белы спіс або адключыце ўсе DNS-блакіроўшчыкі і праксі.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Больш не паказваць</string>
</patch>
<patch id="misc.loopvideo.loopVideoPatch"> <patch id="misc.loopvideo.loopVideoPatch">
<string name="revanced_loop_video_title">Уключыць зацыкленае відэа</string> <string name="revanced_loop_video_title">Уключыць зацыкленае відэа</string>
<string name="revanced_loop_video_summary_on">Відэа будзе зацыклена</string> <string name="revanced_loop_video_summary_on">Відэа будзе зацыклена</string>
@@ -1562,10 +1563,22 @@ Second \"item\" text"</string>
<string name="revanced_playback_speed_default_title">Стандартная хуткасць прайгравання</string> <string name="revanced_playback_speed_default_title">Стандартная хуткасць прайгравання</string>
<string name="revanced_remember_playback_speed_toast">Хуткасць па змаўчанні зменена на: %s</string> <string name="revanced_remember_playback_speed_toast">Хуткасць па змаўчанні зменена на: %s</string>
</patch> </patch>
<patch id="video.hdr.disableHdrPatch"> <patch id="video.codecs.disableVideoCodecsPatch">
<string name="revanced_disable_hdr_video_title">Адключыць відэа ў фармаце HDR</string> <string name="revanced_disable_hdr_video_title">Адключыць відэа ў фармаце HDR</string>
<string name="revanced_disable_hdr_video_summary_on">Відэа ў фармаце HDR адключана</string> <string name="revanced_disable_hdr_video_summary_on">Відэа ў фармаце HDR адключана</string>
<string name="revanced_disable_hdr_video_summary_off">Відэа ў фармаце HDR уключана</string> <string name="revanced_disable_hdr_video_summary_off">Відэа ў фармаце HDR уключана</string>
<string name="revanced_force_avc_codec_title">Прымусіць AVC (H.264)</string>
<string name="revanced_force_avc_codec_summary_on">Відэакодэк прымусова ўсталяваны на AVC (H.264)</string>
<string name="revanced_force_avc_codec_summary_off">Відэакодэк вызначаецца аўтаматычна</string>
<string name="revanced_force_avc_codec_user_dialog_message">"Перавагі:
• Можа палепшыць час працы батарэі
• Можа аднавіць адсутныя разрозненні відэа на старой прыладзе
Абмежаванні:
• Максімальнае разрозненне - 1080p
• Прайграванне відэа будзе выкарыстоўваць больш інтэрнэт-дадзеных, чым VP9 або AV1
• HDR-відэа не будуць выкарыстоўваць AVC
• Некаторыя прылады не могуць прымусова выкарыстоўваць AVC"</string>
</patch> </patch>
<patch id="video.quality.advancedVideoQualityMenuPatch"> <patch id="video.quality.advancedVideoQualityMenuPatch">
<string name="revanced_advanced_video_quality_menu_title">Паказаць пашыранае меню якасці відэа</string> <string name="revanced_advanced_video_quality_menu_title">Паказаць пашыранае меню якасці відэа</string>

View File

@@ -31,6 +31,11 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_days">Коригирано преди %s дни</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>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Предупреждение</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Историята ви на гледане не се запазва.&lt;br&gt;&lt;br&gt;Това най-вероятно е причинено от DNS блокиращ реклами или мрежов прокси.&lt;br&gt;&lt;br&gt;За да коригирате това, поставете &lt;b&gt;s.youtube в белия списък.com&lt;/b&gt; или изключете всички DNS блокери и проксита.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Не показвай отново</string>
</patch>
<patch id="misc.settings.settingsResourcePatch"> <patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Настройки</string> <string name="revanced_settings_submenu_title">Настройки</string>
<string name="revanced_settings_confirm_user_dialog_title">Сигурни ли сте, че искате да продължите?</string> <string name="revanced_settings_confirm_user_dialog_title">Сигурни ли сте, че искате да продължите?</string>
@@ -1266,8 +1271,9 @@ Second \"item\" text"</string>
Ако по-късно бъде изключено, препоръчително е да изчистите данните на приложението, за да предотвратите грешки в потребителския интерфейс."</string> Ако по-късно бъде изключено, препоръчително е да изчистите данните на приложението, за да предотвратите грешки в потребителския интерфейс."</string>
<string name="revanced_spoof_app_version_target_title">Подлъгване за версията на</string> <string name="revanced_spoof_app_version_target_title">Подлъгване за версията на</string>
<string name="revanced_spoof_app_version_target_entry_1">20.13.41 - Възстановяване на несгъваема лента с действия за видео</string> <string name="revanced_spoof_app_version_target_entry_1">20.13.41 - Възстановяване на несгъваема лента с действия за видео</string>
<string name="revanced_spoof_app_version_target_entry_2">19.35.36 - Възстановете старите икони на Shorts в плейъра</string> <string name="revanced_spoof_app_version_target_entry_2">20.05.46 - Възстановяване на функционалността на преписа</string>
<string name="revanced_spoof_app_version_target_entry_3">19.01.34 - Възстановяване на стари икони за навигация</string> <string name="revanced_spoof_app_version_target_entry_3">19.35.36 - Възстановете старите икони на Shorts в плейъра</string>
<string name="revanced_spoof_app_version_target_entry_4">19.01.34 - Възстановяване на стари икони за навигация</string>
</patch> </patch>
<patch id="layout.startpage.changeStartPagePatch"> <patch id="layout.startpage.changeStartPagePatch">
<string name="revanced_change_start_page_title">Промяна на началната страница</string> <string name="revanced_change_start_page_title">Промяна на началната страница</string>
@@ -1442,11 +1448,6 @@ Second \"item\" text"</string>
<string name="revanced_announcements_connection_failed">Неуспешно свързване с доставчик на съобщения</string> <string name="revanced_announcements_connection_failed">Неуспешно свързване с доставчик на съобщения</string>
<string name="revanced_announcements_dialog_dismiss">Отхвърли</string> <string name="revanced_announcements_dialog_dismiss">Отхвърли</string>
</patch> </patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Предупреждение</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Историята ви на гледане не се запазва.&lt;br&gt;&lt;br&gt;Това най-вероятно е причинено от DNS блокиращ реклами или мрежов прокси.&lt;br&gt;&lt;br&gt;За да коригирате това, поставете &lt;b&gt;s.youtube в белия списък.com&lt;/b&gt; или изключете всички DNS блокери и проксита.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Не показвай отново</string>
</patch>
<patch id="misc.loopvideo.loopVideoPatch"> <patch id="misc.loopvideo.loopVideoPatch">
<string name="revanced_loop_video_title">Активиране на повторение на видеото</string> <string name="revanced_loop_video_title">Активиране на повторение на видеото</string>
<string name="revanced_loop_video_summary_on">Видеоклипът ще се повтаря</string> <string name="revanced_loop_video_summary_on">Видеоклипът ще се повтаря</string>
@@ -1561,10 +1562,22 @@ Second \"item\" text"</string>
<string name="revanced_playback_speed_default_title">Скорост на възпроизвеждане по подразбиране</string> <string name="revanced_playback_speed_default_title">Скорост на възпроизвеждане по подразбиране</string>
<string name="revanced_remember_playback_speed_toast">Скоростта по подразбиране е променена на: %s</string> <string name="revanced_remember_playback_speed_toast">Скоростта по подразбиране е променена на: %s</string>
</patch> </patch>
<patch id="video.hdr.disableHdrPatch"> <patch id="video.codecs.disableVideoCodecsPatch">
<string name="revanced_disable_hdr_video_title">Деактивиране на HDR видео</string> <string name="revanced_disable_hdr_video_title">Деактивиране на HDR видео</string>
<string name="revanced_disable_hdr_video_summary_on">HDR видеото е деактивирано</string> <string name="revanced_disable_hdr_video_summary_on">HDR видеото е деактивирано</string>
<string name="revanced_disable_hdr_video_summary_off">HDR видеото е активирано</string> <string name="revanced_disable_hdr_video_summary_off">HDR видеото е активирано</string>
<string name="revanced_force_avc_codec_title">Принуди AVC (H.264)</string>
<string name="revanced_force_avc_codec_summary_on">Видео кодекът е принуден да бъде AVC (H.264)</string>
<string name="revanced_force_avc_codec_summary_off">Видео кодекът се определя автоматично</string>
<string name="revanced_force_avc_codec_user_dialog_message">"Предимства:
• Може да подобри живота на батерията
• Може да възстанови липсващи видео резолюции на по-стари устройства
Ограничения:
• Максималната резолюция е 1080p
• Възпроизвеждането на видео ще използва повече интернет данни от VP9 или AV1
• HDR видеоклиповете няма да използват AVC
• Някои устройства не могат да принудят AVC"</string>
</patch> </patch>
<patch id="video.quality.advancedVideoQualityMenuPatch"> <patch id="video.quality.advancedVideoQualityMenuPatch">
<string name="revanced_advanced_video_quality_menu_title">Показване на менюто за разширено качество на видеото</string> <string name="revanced_advanced_video_quality_menu_title">Показване на менюто за разширено качество на видеото</string>

View File

@@ -31,6 +31,11 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_days">%s দিন আগে প্যাচ করা হয়েছে</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>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">সতর্কীকরণ</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">আপনার দেখার ইতিহাস সংরক্ষিত হচ্ছে না।&lt;br&gt;&lt;br&gt;এটি সম্ভবত DNS অ্যাড ব্লকার অথবা নেটওয়ার্ক প্রক্সির কারণে।&lt;br&gt;&lt;br&gt;এটি ঠিক করার জন্য, &lt;b&gt;s.youtube.com&lt;/b&gt; সাদা তালিকাভুক্ত করুন অথবা সকল DNS ব্লকার এবং প্রক্সি বন্ধ করুন।</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">আবার দেখাবেন না</string>
</patch>
<patch id="misc.settings.settingsResourcePatch"> <patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">সেটিংস</string> <string name="revanced_settings_submenu_title">সেটিংস</string>
<string name="revanced_settings_confirm_user_dialog_title">আপনি কি এগিয়ে যেতে চান?</string> <string name="revanced_settings_confirm_user_dialog_title">আপনি কি এগিয়ে যেতে চান?</string>
@@ -1262,8 +1267,9 @@ YouTube সেটিংসে অটো প্লে পরিবর্তন
পরে যদি বন্ধ করা হয়, UI বাগ এড়াতে অ্যাপ্লিকেশন ডেটা পরিষ্কার করার পরামর্শ দেওয়া হয়।"</string> পরে যদি বন্ধ করা হয়, UI বাগ এড়াতে অ্যাপ্লিকেশন ডেটা পরিষ্কার করার পরামর্শ দেওয়া হয়।"</string>
<string name="revanced_spoof_app_version_target_title">স্পুফ অ্যাপ সংস্করণ লক্ষ্য</string> <string name="revanced_spoof_app_version_target_title">স্পুফ অ্যাপ সংস্করণ লক্ষ্য</string>
<string name="revanced_spoof_app_version_target_entry_1">20.13.41 - প্রসারিত নয় এমন ভিডিও অ্যাকশন বার পুনরুদ্ধার করুন</string> <string name="revanced_spoof_app_version_target_entry_1">20.13.41 - প্রসারিত নয় এমন ভিডিও অ্যাকশন বার পুনরুদ্ধার করুন</string>
<string name="revanced_spoof_app_version_target_entry_2">19.35.36 - পুরনো Shorts প্লেয়ার আইকন পুনরুদ্ধার করুন</string> <string name="revanced_spoof_app_version_target_entry_2">20.05.46 - প্রতিলিপি কার্যকারিতা পুনরুদ্ধার করুন</string>
<string name="revanced_spoof_app_version_target_entry_3">19.01.34 - পুরনো নেভিগেশন আইকন পুনরুদ্ধার করুন</string> <string name="revanced_spoof_app_version_target_entry_3">19.35.36 - পুরনো Shorts প্লেয়ার আইকন পুনরুদ্ধার করুন</string>
<string name="revanced_spoof_app_version_target_entry_4">19.01.34 - পুরনো নেভিগেশন আইকন পুনরুদ্ধার করুন</string>
</patch> </patch>
<patch id="layout.startpage.changeStartPagePatch"> <patch id="layout.startpage.changeStartPagePatch">
<string name="revanced_change_start_page_title">শুরুর পৃষ্ঠা পরিবর্তন করুন</string> <string name="revanced_change_start_page_title">শুরুর পৃষ্ঠা পরিবর্তন করুন</string>
@@ -1438,11 +1444,6 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট
<string name="revanced_announcements_connection_failed">ঘোষনাদাতার সাথে সম্পর্ক স্থাপন ব্যর্থ হয়েছে</string> <string name="revanced_announcements_connection_failed">ঘোষনাদাতার সাথে সম্পর্ক স্থাপন ব্যর্থ হয়েছে</string>
<string name="revanced_announcements_dialog_dismiss">বাতিল করুন</string> <string name="revanced_announcements_dialog_dismiss">বাতিল করুন</string>
</patch> </patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">সতর্কীকরণ</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">আপনার দেখার ইতিহাস সংরক্ষিত হচ্ছে না।&lt;br&gt;&lt;br&gt;এটি সম্ভবত DNS অ্যাড ব্লকার অথবা নেটওয়ার্ক প্রক্সির কারণে।&lt;br&gt;&lt;br&gt;এটি ঠিক করার জন্য, &lt;b&gt;s.youtube.com&lt;/b&gt; সাদা তালিকাভুক্ত করুন অথবা সকল DNS ব্লকার এবং প্রক্সি বন্ধ করুন।</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">আবার দেখাবেন না</string>
</patch>
<patch id="misc.loopvideo.loopVideoPatch"> <patch id="misc.loopvideo.loopVideoPatch">
<string name="revanced_loop_video_title">লুপ ভিডিও সক্ষম করুন</string> <string name="revanced_loop_video_title">লুপ ভিডিও সক্ষম করুন</string>
<string name="revanced_loop_video_summary_on">ভিডিও লুপ হবে</string> <string name="revanced_loop_video_summary_on">ভিডিও লুপ হবে</string>
@@ -1557,10 +1558,22 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট
<string name="revanced_playback_speed_default_title">প্লেব্যাকের মূল স্পিড</string> <string name="revanced_playback_speed_default_title">প্লেব্যাকের মূল স্পিড</string>
<string name="revanced_remember_playback_speed_toast">মূল স্পিড পরিবর্তন হচ্ছে: %s</string> <string name="revanced_remember_playback_speed_toast">মূল স্পিড পরিবর্তন হচ্ছে: %s</string>
</patch> </patch>
<patch id="video.hdr.disableHdrPatch"> <patch id="video.codecs.disableVideoCodecsPatch">
<string name="revanced_disable_hdr_video_title">HDR ভিডিও নিষ্ক্রিয় করুন</string> <string name="revanced_disable_hdr_video_title">HDR ভিডিও নিষ্ক্রিয় করুন</string>
<string name="revanced_disable_hdr_video_summary_on">HDR ভিডিও নিষ্ক্রিয় করা হয়েছে</string> <string name="revanced_disable_hdr_video_summary_on">HDR ভিডিও নিষ্ক্রিয় করা হয়েছে</string>
<string name="revanced_disable_hdr_video_summary_off">HDR ভিডিও সক্রিয় হয়েছে</string> <string name="revanced_disable_hdr_video_summary_off">HDR ভিডিও সক্রিয় হয়েছে</string>
<string name="revanced_force_avc_codec_title">AVC (H.264) প্রয়োগ করুন</string>
<string name="revanced_force_avc_codec_summary_on">ভিডিও কোডেক AVC (H.264) তে প্রয়োগ করা হয়েছে</string>
<string name="revanced_force_avc_codec_summary_off">ভিডিও কোডেক স্বয়ংক্রিয়ভাবে নির্ধারিত হয়</string>
<string name="revanced_force_avc_codec_user_dialog_message">"সুবিধা:
• ব্যাটারির আয়ু উন্নত করতে পারে
• পুরনো ডিভাইসে অনুপস্থিত ভিডিও রেজোলিউশন পুনরুদ্ধার করতে পারে
সীমাবদ্ধতা:
• সর্বোচ্চ রেজোলিউশন 1080p
• VP9 বা AV1 এর চেয়ে ভিডিও প্লেব্যাকে বেশি ইন্টারনেট ডেটা ব্যবহার হবে
• HDR ভিডিও AVC ব্যবহার করবে না
• কিছু ডিভাইস AVC জোর করে ব্যবহার করতে পারে না"</string>
</patch> </patch>
<patch id="video.quality.advancedVideoQualityMenuPatch"> <patch id="video.quality.advancedVideoQualityMenuPatch">
<string name="revanced_advanced_video_quality_menu_title">উন্নত ভিডিও গুণমান মেনু দেখান</string> <string name="revanced_advanced_video_quality_menu_title">উন্নত ভিডিও গুণমান মেনু দেখান</string>

View File

@@ -22,6 +22,8 @@ Second \"item\" text"</string>
<app id="shared"> <app id="shared">
<patch id="misc.checks.checkEnvironmentPatch"> <patch id="misc.checks.checkEnvironmentPatch">
</patch> </patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
</patch>
<patch id="misc.settings.settingsResourcePatch"> <patch id="misc.settings.settingsResourcePatch">
<!-- Settings about dialog. --> <!-- Settings about dialog. -->
<!-- NOTE: the about strings above are duplicated in the TikTok about screen code, <!-- NOTE: the about strings above are duplicated in the TikTok about screen code,
@@ -209,8 +211,6 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="misc.announcements.announcementsPatch"> <patch id="misc.announcements.announcementsPatch">
</patch> </patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
</patch>
<patch id="misc.loopvideo.loopVideoPatch"> <patch id="misc.loopvideo.loopVideoPatch">
</patch> </patch>
<patch id="misc.loopvideo.button.loopVideoButtonPatch"> <patch id="misc.loopvideo.button.loopVideoButtonPatch">
@@ -239,7 +239,7 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="video.speed.remember.rememberPlaybackSpeedPatch"> <patch id="video.speed.remember.rememberPlaybackSpeedPatch">
</patch> </patch>
<patch id="video.hdr.disableHdrPatch"> <patch id="video.codecs.disableVideoCodecsPatch">
</patch> </patch>
<patch id="video.quality.advancedVideoQualityMenuPatch"> <patch id="video.quality.advancedVideoQualityMenuPatch">
</patch> </patch>

View File

@@ -22,6 +22,8 @@ Second \"item\" text"</string>
<app id="shared"> <app id="shared">
<patch id="misc.checks.checkEnvironmentPatch"> <patch id="misc.checks.checkEnvironmentPatch">
</patch> </patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
</patch>
<patch id="misc.settings.settingsResourcePatch"> <patch id="misc.settings.settingsResourcePatch">
<!-- Settings about dialog. --> <!-- Settings about dialog. -->
<!-- NOTE: the about strings above are duplicated in the TikTok about screen code, <!-- NOTE: the about strings above are duplicated in the TikTok about screen code,
@@ -209,8 +211,6 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="misc.announcements.announcementsPatch"> <patch id="misc.announcements.announcementsPatch">
</patch> </patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
</patch>
<patch id="misc.loopvideo.loopVideoPatch"> <patch id="misc.loopvideo.loopVideoPatch">
</patch> </patch>
<patch id="misc.loopvideo.button.loopVideoButtonPatch"> <patch id="misc.loopvideo.button.loopVideoButtonPatch">
@@ -239,7 +239,7 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="video.speed.remember.rememberPlaybackSpeedPatch"> <patch id="video.speed.remember.rememberPlaybackSpeedPatch">
</patch> </patch>
<patch id="video.hdr.disableHdrPatch"> <patch id="video.codecs.disableVideoCodecsPatch">
</patch> </patch>
<patch id="video.quality.advancedVideoQualityMenuPatch"> <patch id="video.quality.advancedVideoQualityMenuPatch">
</patch> </patch>

View File

@@ -31,6 +31,11 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_days">Vygenerována před %s dny</string> <string name="revanced_check_environment_not_near_patch_time_days">Vygenerována před %s dny</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">Datum sestavení souboru APK je poškozeno</string> <string name="revanced_check_environment_not_near_patch_time_invalid">Datum sestavení souboru APK je poškozeno</string>
</patch> </patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Varování</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Vaše historie sledování není ukládána.&lt;br&gt;&lt;br&gt;Příčinou je s největší pravděpodobností DNS blokátor reklam nebo síťový proxy server.&lt;br&gt;&lt;br&gt;Chcete-li to opravit, přidejte&lt;b&gt;s.youtube.com&lt;/b&gt; na whitelist nebo vypněte všechny DNS blokátory a proxy servery.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Už nezobrazovat</string>
</patch>
<patch id="misc.settings.settingsResourcePatch"> <patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Nastavení</string> <string name="revanced_settings_submenu_title">Nastavení</string>
<string name="revanced_settings_confirm_user_dialog_title">Opravdu chcete pokračovat?</string> <string name="revanced_settings_confirm_user_dialog_title">Opravdu chcete pokračovat?</string>
@@ -1266,8 +1271,9 @@ To změní vzhled a funkce aplikace, ale mohou se objevit neznámé vedlejší e
Pokud bude později vypnuta, doporučujeme vymazat data aplikace, aby se zabránilo chybám uživatelského rozhraní."</string> Pokud bude později vypnuta, doporučujeme vymazat data aplikace, aby se zabránilo chybám uživatelského rozhraní."</string>
<string name="revanced_spoof_app_version_target_title">Cíl napodobení verze aplikace</string> <string name="revanced_spoof_app_version_target_title">Cíl napodobení verze aplikace</string>
<string name="revanced_spoof_app_version_target_entry_1">20.13.41 - Obnovit nerozbalený panel akcí videa</string> <string name="revanced_spoof_app_version_target_entry_1">20.13.41 - Obnovit nerozbalený panel akcí videa</string>
<string name="revanced_spoof_app_version_target_entry_2">19.35.36 - Obnovuje staré ikony Shorts přehrávače</string> <string name="revanced_spoof_app_version_target_entry_2">20.05.46 - Obnovit funkci přepisu</string>
<string name="revanced_spoof_app_version_target_entry_3">19.01.34 Obnovit staré ikony navigace</string> <string name="revanced_spoof_app_version_target_entry_3">19.35.36 - Obnovuje staré ikony Shorts přehrávače</string>
<string name="revanced_spoof_app_version_target_entry_4">19.01.34 Obnovit staré ikony navigace</string>
</patch> </patch>
<patch id="layout.startpage.changeStartPagePatch"> <patch id="layout.startpage.changeStartPagePatch">
<string name="revanced_change_start_page_title">Změnit úvodní stránku</string> <string name="revanced_change_start_page_title">Změnit úvodní stránku</string>
@@ -1442,11 +1448,6 @@ Klepnutím sem se dozvíte více o DeArrow"</string>
<string name="revanced_announcements_connection_failed">Nepodařilo se připojit k poskytovateli oznámení</string> <string name="revanced_announcements_connection_failed">Nepodařilo se připojit k poskytovateli oznámení</string>
<string name="revanced_announcements_dialog_dismiss">Zrušit</string> <string name="revanced_announcements_dialog_dismiss">Zrušit</string>
</patch> </patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Varování</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Vaše historie sledování není ukládána.&lt;br&gt;&lt;br&gt;Příčinou je s největší pravděpodobností DNS blokátor reklam nebo síťový proxy server.&lt;br&gt;&lt;br&gt;Chcete-li to opravit, přidejte&lt;b&gt;s.youtube.com&lt;/b&gt; na whitelist nebo vypněte všechny DNS blokátory a proxy servery.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Už nezobrazovat</string>
</patch>
<patch id="misc.loopvideo.loopVideoPatch"> <patch id="misc.loopvideo.loopVideoPatch">
<string name="revanced_loop_video_title">Povolit smyčku videa</string> <string name="revanced_loop_video_title">Povolit smyčku videa</string>
<string name="revanced_loop_video_summary_on">Video se bude přehrávat ve smyčce</string> <string name="revanced_loop_video_summary_on">Video se bude přehrávat ve smyčce</string>
@@ -1561,10 +1562,22 @@ Povolením této funkce lze odemknout vyšší kvality videa"</string>
<string name="revanced_playback_speed_default_title">Výchozí rychlost přehrávání</string> <string name="revanced_playback_speed_default_title">Výchozí rychlost přehrávání</string>
<string name="revanced_remember_playback_speed_toast">Výchozí rychlost změněna na: %s</string> <string name="revanced_remember_playback_speed_toast">Výchozí rychlost změněna na: %s</string>
</patch> </patch>
<patch id="video.hdr.disableHdrPatch"> <patch id="video.codecs.disableVideoCodecsPatch">
<string name="revanced_disable_hdr_video_title">Vypnout HDR video</string> <string name="revanced_disable_hdr_video_title">Vypnout HDR video</string>
<string name="revanced_disable_hdr_video_summary_on">HDR video je vypnuté.</string> <string name="revanced_disable_hdr_video_summary_on">HDR video je vypnuté.</string>
<string name="revanced_disable_hdr_video_summary_off">HDR video je zapnuté.</string> <string name="revanced_disable_hdr_video_summary_off">HDR video je zapnuté.</string>
<string name="revanced_force_avc_codec_title">Vynutit AVC (H.264)</string>
<string name="revanced_force_avc_codec_summary_on">Video kodek je vynucen na AVC (H.264)</string>
<string name="revanced_force_avc_codec_summary_off">Video kodek je určen automaticky</string>
<string name="revanced_force_avc_codec_user_dialog_message">"Výhody:
• Může zlepšit životnost baterie
• Může obnovit chybějící rozlišení videa na starším zařízení
Omezení:
• Maximální rozlišení je 1080p
• Přehrávání videa spotřebuje více internetových dat než VP9 nebo AV1
• HDR videa nebudou používat AVC
• Některá zařízení nemohou vynutit AVC"</string>
</patch> </patch>
<patch id="video.quality.advancedVideoQualityMenuPatch"> <patch id="video.quality.advancedVideoQualityMenuPatch">
<string name="revanced_advanced_video_quality_menu_title">Zobrazit rozšířené menu kvality videa</string> <string name="revanced_advanced_video_quality_menu_title">Zobrazit rozšířené menu kvality videa</string>

View File

@@ -19,8 +19,8 @@ Second \"item\" text"</string>
--> -->
<resources> <resources>
<!-- <app id="shared"> --> <app id="shared">
<!-- <patch id="misc.checks.checkEnvironmentPatch"> --> <patch id="misc.checks.checkEnvironmentPatch">
<string name="revanced_check_environment_failed_title">Kontrol mislykkedes</string> <string name="revanced_check_environment_failed_title">Kontrol mislykkedes</string>
<string name="revanced_check_environment_dialog_open_official_source_button">Åbn officiel hjemmeside</string> <string name="revanced_check_environment_dialog_open_official_source_button">Åbn officiel hjemmeside</string>
<string name="revanced_check_environment_dialog_ignore_button">Ignorer</string> <string name="revanced_check_environment_dialog_ignore_button">Ignorer</string>
@@ -30,8 +30,13 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time">Patched mere end 10 minutter siden</string> <string name="revanced_check_environment_not_near_patch_time">Patched mere end 10 minutter siden</string>
<string name="revanced_check_environment_not_near_patch_time_days">Patched for %s dage siden</string> <string name="revanced_check_environment_not_near_patch_time_days">Patched for %s dage siden</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">APK byggedato er ødelagt</string> <string name="revanced_check_environment_not_near_patch_time_invalid">APK byggedato er ødelagt</string>
<!-- </patch> --> </patch>
<!-- <patch id="misc.settings.settingsResourcePatch"> --> <patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Advarsel</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Din urhistorik gemmes ikke.&lt;br&gt;&lt;br&gt;Dette skyldes sandsynligvis en DNS-annonceblokker eller netværksproxy.&lt;br&gt;&lt;br&gt;For at løse dette, whitelist &lt;b&gt;s.youtube.com&lt;/b&gt; eller slå alle DNS-blokkere og fuldmagter fra.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Vis ikke igen</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Indstillinger</string> <string name="revanced_settings_submenu_title">Indstillinger</string>
<string name="revanced_settings_confirm_user_dialog_title">Er du sikker på, at du vil fortsætte?</string> <string name="revanced_settings_confirm_user_dialog_title">Er du sikker på, at du vil fortsætte?</string>
<string name="revanced_settings_reset">Nulstil</string> <string name="revanced_settings_reset">Nulstil</string>
@@ -80,8 +85,8 @@ For at oversætte nye sprog eller forbedre de eksisterende oversættelser, besø
<string name="revanced_settings_about_links_header">Officielle links</string> <string name="revanced_settings_about_links_header">Officielle links</string>
<!-- NOTE: the about strings above are duplicated in the TikTok about screen code, <!-- NOTE: the about strings above are duplicated in the TikTok about screen code,
and changes made here must also be made there. --> and changes made here must also be made there. -->
<!-- </patch> --> </patch>
<!-- <patch id="misc.gms.gmsCoreSupportResourcePatch"> --> <patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">GmsCore Indstillinger</string> <string name="microg_settings_title">GmsCore Indstillinger</string>
<string name="microg_settings_summary">Indstillinger for GmsCore</string> <string name="microg_settings_summary">Indstillinger for GmsCore</string>
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. --> <!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
@@ -99,8 +104,8 @@ Deaktivering af batterioptimeringer for MicroG vil ikke påvirke batteriforbruge
Tap på knappen Fortsæt, og tillad optimeringsændringer."</string> Tap på knappen Fortsæt, og tillad optimeringsændringer."</string>
<string name="gms_core_dialog_continue_text">Fortsæt</string> <string name="gms_core_dialog_continue_text">Fortsæt</string>
<!-- </patch> --> </patch>
<!-- <patch id="misc.fix.playback.spoofVideoStreamsPatch"> --> <patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Spoof videostreams</string> <string name="revanced_spoof_video_streams_screen_title">Spoof videostreams</string>
<string name="revanced_spoof_video_streams_screen_summary">Spoof klienten video streams for at forhindre afspilning problemer</string> <string name="revanced_spoof_video_streams_screen_summary">Spoof klienten video streams for at forhindre afspilning problemer</string>
<string name="revanced_spoof_video_streams_screen_title">Simuler videostreams</string> <string name="revanced_spoof_video_streams_screen_title">Simuler videostreams</string>
@@ -114,8 +119,8 @@ Hvis du er en YouTube Premium-bruger, er denne indstilling muligvis ikke påkræ
Afspilning fungerer muligvis ikke"</string> Afspilning fungerer muligvis ikke"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Deaktivering af denne indstilling kan forårsage afspilningsproblemer.</string> <string name="revanced_spoof_video_streams_user_dialog_message">Deaktivering af denne indstilling kan forårsage afspilningsproblemer.</string>
<string name="revanced_spoof_video_streams_client_type_title">Standard klient</string> <string name="revanced_spoof_video_streams_client_type_title">Standard klient</string>
<!-- </patch> --> </patch>
<!-- <patch id="misc.debugging.enableDebuggingPatch"> --> <patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Fejlfinding</string> <string name="revanced_debug_screen_title">Fejlfinding</string>
<string name="revanced_debug_screen_summary">Aktivér eller deaktiver fejlfindingsindstillinger</string> <string name="revanced_debug_screen_summary">Aktivér eller deaktiver fejlfindingsindstillinger</string>
<string name="revanced_debug_title">Fejlfindingslogning</string> <string name="revanced_debug_title">Fejlfindingslogning</string>
@@ -139,18 +144,18 @@ Du modtager ikke notifikationer om uventede hændelser."</string>
<string name="revanced_debug_logs_clear_buffer_title">Ryd fejlsøgningslogfiler</string> <string name="revanced_debug_logs_clear_buffer_title">Ryd fejlsøgningslogfiler</string>
<string name="revanced_debug_logs_clear_buffer_summary">Rydder alle gemte ReVanced-fejlsøgningslogfiler</string> <string name="revanced_debug_logs_clear_buffer_summary">Rydder alle gemte ReVanced-fejlsøgningslogfiler</string>
<string name="revanced_debug_logs_clear_toast">Logfiler ryddet</string> <string name="revanced_debug_logs_clear_toast">Logfiler ryddet</string>
<!-- </patch> --> </patch>
<!-- <patch id="misc.privacy.sanitizeSharingLinksPatch"> --> <patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Fjern sporingsforespørgselsparameter</string> <string name="revanced_sanitize_sharing_links_title">Fjern sporingsforespørgselsparameter</string>
<string name="revanced_sanitize_sharing_links_summary_on">Sporingsparameteren er fjernet fra links</string> <string name="revanced_sanitize_sharing_links_summary_on">Sporingsparameteren er fjernet fra links</string>
<string name="revanced_sanitize_sharing_links_summary_off">Sporingsforespørgselsparameteren er ikke fjernet fra links</string> <string name="revanced_sanitize_sharing_links_summary_off">Sporingsforespørgselsparameteren er ikke fjernet fra links</string>
<string name="revanced_replace_music_with_youtube_title">Skift delingslinks til youtube.com</string> <string name="revanced_replace_music_with_youtube_title">Skift delingslinks til youtube.com</string>
<string name="revanced_replace_music_with_youtube_summary_on">Delte links bruger youtube.com</string> <string name="revanced_replace_music_with_youtube_summary_on">Delte links bruger youtube.com</string>
<string name="revanced_replace_music_with_youtube_summary_off">Delte links bruger music.youtube.com</string> <string name="revanced_replace_music_with_youtube_summary_off">Delte links bruger music.youtube.com</string>
<!-- </patch> --> </patch>
<!-- </app> --> </app>
<!-- <app id="youtube"> --> <app id="youtube">
<!-- <patch id="misc.settings.settingsPatch"> --> <patch id="misc.settings.settingsPatch">
<string name="revanced_settings_screen_00_about_title">Om</string> <string name="revanced_settings_screen_00_about_title">Om</string>
<string name="revanced_settings_screen_01_ads_title">Annoncer</string> <string name="revanced_settings_screen_01_ads_title">Annoncer</string>
<string name="revanced_settings_screen_02_alt_thumbnails_title">Alternative miniaturebilleder</string> <string name="revanced_settings_screen_02_alt_thumbnails_title">Alternative miniaturebilleder</string>
@@ -164,13 +169,13 @@ Du modtager ikke notifikationer om uventede hændelser."</string>
<string name="revanced_restore_old_settings_menus_title">Gendan gamle indstillingsmenuer</string> <string name="revanced_restore_old_settings_menus_title">Gendan gamle indstillingsmenuer</string>
<string name="revanced_restore_old_settings_menus_summary_on">Gamle indstillingsmenuer er vist</string> <string name="revanced_restore_old_settings_menus_summary_on">Gamle indstillingsmenuer er vist</string>
<string name="revanced_restore_old_settings_menus_summary_off">Gamle indstillingsmenuer er ikke vist</string> <string name="revanced_restore_old_settings_menus_summary_off">Gamle indstillingsmenuer er ikke vist</string>
<!-- </patch> --> </patch>
<!-- <patch id="misc.backgroundplayback.backgroundPlaybackPatch"> --> <patch id="misc.backgroundplayback.backgroundPlaybackPatch">
<string name="revanced_shorts_disable_background_playback_title">Deaktiver baggrundsafspilning af Shorts</string> <string name="revanced_shorts_disable_background_playback_title">Deaktiver baggrundsafspilning af Shorts</string>
<string name="revanced_shorts_disable_background_playback_summary_on">Baggrundsafspilning af Shorts er deaktiveret</string> <string name="revanced_shorts_disable_background_playback_summary_on">Baggrundsafspilning af Shorts er deaktiveret</string>
<string name="revanced_shorts_disable_background_playback_summary_off">Baggrundsafspilning af Shorts er aktiveret</string> <string name="revanced_shorts_disable_background_playback_summary_off">Baggrundsafspilning af Shorts er aktiveret</string>
<!-- </patch> --> </patch>
<!-- <patch id="misc.debugging.enableDebuggingPatch"> --> <patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_protobuffer_title">Logprotokolbuffer</string> <string name="revanced_debug_protobuffer_title">Logprotokolbuffer</string>
<string name="revanced_debug_protobuffer_summary_on">Fejlfindingslogge inkluderer protobuffer</string> <string name="revanced_debug_protobuffer_summary_on">Fejlfindingslogge inkluderer protobuffer</string>
<string name="revanced_debug_protobuffer_summary_off">Fejlfindingslogge inkluderer ikke protobuffer</string> <string name="revanced_debug_protobuffer_summary_off">Fejlfindingslogge inkluderer ikke protobuffer</string>
@@ -179,8 +184,8 @@ Du modtager ikke notifikationer om uventede hændelser."</string>
Dette kan hjælpe med at identificere komponenter, når der oprettes brugerdefinerede filtre. Dette kan hjælpe med at identificere komponenter, når der oprettes brugerdefinerede filtre.
Aktivering af dette vil dog også logge nogle brugerdata, såsom din IP-adresse."</string> Aktivering af dette vil dog også logge nogle brugerdata, såsom din IP-adresse."</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.hide.general.hideLayoutComponentsPatch"> --> <patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_hide_album_cards_title">Skjul albumkort</string> <string name="revanced_hide_album_cards_title">Skjul albumkort</string>
<string name="revanced_hide_album_cards_summary_on">Albumkort er skjult</string> <string name="revanced_hide_album_cards_summary_on">Albumkort er skjult</string>
<string name="revanced_hide_album_cards_summary_off">Albumkort vises</string> <string name="revanced_hide_album_cards_summary_off">Albumkort vises</string>
@@ -427,8 +432,8 @@ Begrænsninger
<string name="revanced_hide_keyword_toast_invalid_conflicting">Nøgleord har modstridende erklæringer: %s</string> <string name="revanced_hide_keyword_toast_invalid_conflicting">Nøgleord har modstridende erklæringer: %s</string>
<string name="revanced_hide_keyword_toast_invalid_length">Søgeordet er for kort og kræver anførselstegn: %s</string> <string name="revanced_hide_keyword_toast_invalid_length">Søgeordet er for kort og kræver anførselstegn: %s</string>
<string name="revanced_hide_keyword_toast_invalid_broad">Nøgleord vil skjule alle videoer: %s</string> <string name="revanced_hide_keyword_toast_invalid_broad">Nøgleord vil skjule alle videoer: %s</string>
<!-- </patch> --> </patch>
<!-- <patch id="ad.general.hideAdsResourcePatch"> --> <patch id="ad.general.hideAdsResourcePatch">
<string name="revanced_hide_creator_store_shelf_title">Skjul butikshylde for skabere</string> <string name="revanced_hide_creator_store_shelf_title">Skjul butikshylde for skabere</string>
<string name="revanced_hide_creator_store_shelf_summary_on">Opretterbutikshylde under videoafspiller er skjult</string> <string name="revanced_hide_creator_store_shelf_summary_on">Opretterbutikshylde under videoafspiller er skjult</string>
<string name="revanced_hide_creator_store_shelf_summary_off">Butikshylde for skaber under videoafspiller vises</string> <string name="revanced_hide_creator_store_shelf_summary_off">Butikshylde for skaber under videoafspiller vises</string>
@@ -463,18 +468,18 @@ Denne funktion er kun tilgængelig for ældre enheder"</string>
<string name="revanced_hide_web_search_results_title">Skjul søgeresultater</string> <string name="revanced_hide_web_search_results_title">Skjul søgeresultater</string>
<string name="revanced_hide_web_search_results_summary_on">Websøgeresultater er skjult</string> <string name="revanced_hide_web_search_results_summary_on">Websøgeresultater er skjult</string>
<string name="revanced_hide_web_search_results_summary_off">Websøgeresultater vises</string> <string name="revanced_hide_web_search_results_summary_off">Websøgeresultater vises</string>
<!-- </patch> --> </patch>
<!-- <patch id="ad.getpremium.hideGetPremiumPatch"> --> <patch id="ad.getpremium.hideGetPremiumPatch">
<string name="revanced_hide_get_premium_title">Skjul YouTube Premium kampagner</string> <string name="revanced_hide_get_premium_title">Skjul YouTube Premium kampagner</string>
<string name="revanced_hide_get_premium_summary_on">YouTube Premium kampagner under videoafspiller er skjult</string> <string name="revanced_hide_get_premium_summary_on">YouTube Premium kampagner under videoafspiller er skjult</string>
<string name="revanced_hide_get_premium_summary_off">YouTube Premium kampagner under videoafspiller vises</string> <string name="revanced_hide_get_premium_summary_off">YouTube Premium kampagner under videoafspiller vises</string>
<!-- </patch> --> </patch>
<!-- <patch id="ad.video.videoAdsPatch"> --> <patch id="ad.video.videoAdsPatch">
<string name="revanced_hide_video_ads_title">Skjul videoannoncer</string> <string name="revanced_hide_video_ads_title">Skjul videoannoncer</string>
<string name="revanced_hide_video_ads_summary_on">Videoannoncer er skjult</string> <string name="revanced_hide_video_ads_summary_on">Videoannoncer er skjult</string>
<string name="revanced_hide_video_ads_summary_off">Videoannoncer vises</string> <string name="revanced_hide_video_ads_summary_off">Videoannoncer vises</string>
<!-- </patch> --> </patch>
<!-- <patch id="interaction.copyvideourl.copyVideoUrlResourcePatch"> --> <patch id="interaction.copyvideourl.copyVideoUrlResourcePatch">
<string name="revanced_share_copy_url_success">URL kopieret til udklipsholder</string> <string name="revanced_share_copy_url_success">URL kopieret til udklipsholder</string>
<string name="revanced_share_copy_url_timestamp_success">URL med tidsstempel kopieret</string> <string name="revanced_share_copy_url_timestamp_success">URL med tidsstempel kopieret</string>
<string name="revanced_copy_video_url_title">Vis kopiér video URL knap</string> <string name="revanced_copy_video_url_title">Vis kopiér video URL knap</string>
@@ -483,24 +488,24 @@ Denne funktion er kun tilgængelig for ældre enheder"</string>
<string name="revanced_copy_video_url_timestamp_title">Vis kopi tidsstempel URL knap</string> <string name="revanced_copy_video_url_timestamp_title">Vis kopi tidsstempel URL knap</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Knappen vises. Tryk for at kopiere videoens URL med tidsstempel. Tryk og hold for at kopiere uden tidsstempel</string> <string name="revanced_copy_video_url_timestamp_summary_on">Knappen vises. Tryk for at kopiere videoens URL med tidsstempel. Tryk og hold for at kopiere uden tidsstempel</string>
<string name="revanced_copy_video_url_timestamp_summary_off">Knap vises ikke</string> <string name="revanced_copy_video_url_timestamp_summary_off">Knap vises ikke</string>
<!-- </patch> --> </patch>
<!-- <patch id="interaction.dialog.removeViewerDiscretionDialogPatch"> --> <patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
<string name="revanced_remove_viewer_discretion_dialog_title">Fjern visningsdialog</string> <string name="revanced_remove_viewer_discretion_dialog_title">Fjern visningsdialog</string>
<string name="revanced_remove_viewer_discretion_dialog_summary_on">Dialog vil blive fjernet</string> <string name="revanced_remove_viewer_discretion_dialog_summary_on">Dialog vil blive fjernet</string>
<string name="revanced_remove_viewer_discretion_dialog_summary_off">Dialog vil blive vist</string> <string name="revanced_remove_viewer_discretion_dialog_summary_off">Dialog vil blive vist</string>
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Dette går ikke uden om aldersbegrænsningen. Det accepterer bare det automatisk.</string> <string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Dette går ikke uden om aldersbegrænsningen. Det accepterer bare det automatisk.</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.hide.signintotv.disableSignInToTvPopupPatch"> --> <patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
<string name="revanced_disable_signin_to_tv_popup_title">Deaktiver log ind på TV-pop op</string> <string name="revanced_disable_signin_to_tv_popup_title">Deaktiver log ind på TV-pop op</string>
<string name="revanced_disable_signin_to_tv_popup_summary_on">Log ind på TV-pop op er deaktiveret</string> <string name="revanced_disable_signin_to_tv_popup_summary_on">Log ind på TV-pop op er deaktiveret</string>
<string name="revanced_disable_signin_to_tv_popup_summary_off">Log ind på TV-pop op er aktiveret</string> <string name="revanced_disable_signin_to_tv_popup_summary_off">Log ind på TV-pop op er aktiveret</string>
<!-- </patch> --> </patch>
<!-- <patch id="interaction.doubletap.disableDoubleTapActionsPatch"> --> <patch id="interaction.doubletap.disableDoubleTapActionsPatch">
<string name="revanced_disable_chapter_skip_double_tap_title">Deaktiver dobbeltklik kapitelspring</string> <string name="revanced_disable_chapter_skip_double_tap_title">Deaktiver dobbeltklik kapitelspring</string>
<string name="revanced_disable_chapter_skip_double_tap_summary_on">Dobbeltklik kan aldrig udløse et spring til næste/forrige kapitel</string> <string name="revanced_disable_chapter_skip_double_tap_summary_on">Dobbeltklik kan aldrig udløse et spring til næste/forrige kapitel</string>
<string name="revanced_disable_chapter_skip_double_tap_summary_off">Dobbeltklik kan lejlighedsvis udløse et spring til næste/forrige kapitel</string> <string name="revanced_disable_chapter_skip_double_tap_summary_off">Dobbeltklik kan lejlighedsvis udløse et spring til næste/forrige kapitel</string>
<!-- </patch> --> </patch>
<!-- <patch id="interaction.downloads.downloadsResourcePatch"> --> <patch id="interaction.downloads.downloadsResourcePatch">
<string name="revanced_external_downloader_screen_title">Eksterne downloads</string> <string name="revanced_external_downloader_screen_title">Eksterne downloads</string>
<string name="revanced_external_downloader_screen_summary">Indstillinger for brug af en ekstern downloader</string> <string name="revanced_external_downloader_screen_summary">Indstillinger for brug af en ekstern downloader</string>
<string name="revanced_external_downloader_title">Vis ekstern download-knap</string> <string name="revanced_external_downloader_title">Vis ekstern download-knap</string>
@@ -520,18 +525,18 @@ Denne funktion er kun tilgængelig for ældre enheder"</string>
Kontrollér, at pakkenavnet er korrekt, og at appen er installeret"</string> Kontrollér, at pakkenavnet er korrekt, og at appen er installeret"</string>
<string name="revanced_external_downloader_empty_warning">Pakkenavnet må ikke være tomt</string> <string name="revanced_external_downloader_empty_warning">Pakkenavnet må ikke være tomt</string>
<!-- </patch> --> </patch>
<!-- <patch id="interaction.seekbar.disablePreciseSeekingGesturePatch"> --> <patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Deaktivér præcis søgemåde</string> <string name="revanced_disable_precise_seeking_gesture_title">Deaktivér præcis søgemåde</string>
<string name="revanced_disable_precise_seeking_gesture_summary_on">Bevægelse er deaktiveret</string> <string name="revanced_disable_precise_seeking_gesture_summary_on">Bevægelse er deaktiveret</string>
<string name="revanced_disable_precise_seeking_gesture_summary_off">Bevægelse er aktiveret</string> <string name="revanced_disable_precise_seeking_gesture_summary_off">Bevægelse er aktiveret</string>
<!-- </patch> --> </patch>
<!-- <patch id="interaction.seekbar.enableSeekbarTappingPatch"> --> <patch id="interaction.seekbar.enableSeekbarTappingPatch">
<string name="revanced_seekbar_tapping_title">Aktivér tryk for at søge</string> <string name="revanced_seekbar_tapping_title">Aktivér tryk for at søge</string>
<string name="revanced_seekbar_tapping_summary_on">Tryk for at søge er aktiveret</string> <string name="revanced_seekbar_tapping_summary_on">Tryk for at søge er aktiveret</string>
<string name="revanced_seekbar_tapping_summary_off">Tryk for at søge er deaktiveret</string> <string name="revanced_seekbar_tapping_summary_off">Tryk for at søge er deaktiveret</string>
<!-- </patch> --> </patch>
<!-- <patch id="interaction.swipecontrols.swipeControlsResourcePatch"> --> <patch id="interaction.swipecontrols.swipeControlsResourcePatch">
<string name="revanced_swipe_brightness_title">Aktivér lysstyrke-bevægelse</string> <string name="revanced_swipe_brightness_title">Aktivér lysstyrke-bevægelse</string>
<string name="revanced_swipe_brightness_summary_on">"Fuldskaermens lysstyrke-swipe er aktiveret <string name="revanced_swipe_brightness_summary_on">"Fuldskaermens lysstyrke-swipe er aktiveret
@@ -582,13 +587,13 @@ Juster lydstyrken ved at swipe lodret i højre side af skærmen"</string>
<string name="revanced_swipe_change_video_title">Aktivér swipe for at skifte videoer</string> <string name="revanced_swipe_change_video_title">Aktivér swipe for at skifte videoer</string>
<string name="revanced_swipe_change_video_summary_on">Strygning i fuldskærmstilstand vil ændre til den næste/forrige video</string> <string name="revanced_swipe_change_video_summary_on">Strygning i fuldskærmstilstand vil ændre til den næste/forrige video</string>
<string name="revanced_swipe_change_video_summary_off">Strygning i fuldskærmstilstand vil ikke ændre til den næste/forrige video</string> <string name="revanced_swipe_change_video_summary_off">Strygning i fuldskærmstilstand vil ikke ændre til den næste/forrige video</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.autocaptions.autoCaptionsPatch"> --> <patch id="layout.autocaptions.autoCaptionsPatch">
<string name="revanced_disable_auto_captions_title">Deaktivér auto-billedtekster</string> <string name="revanced_disable_auto_captions_title">Deaktivér auto-billedtekster</string>
<string name="revanced_disable_auto_captions_summary_on">Automatiske billedtekster er deaktiveret</string> <string name="revanced_disable_auto_captions_summary_on">Automatiske billedtekster er deaktiveret</string>
<string name="revanced_disable_auto_captions_summary_off">Automatiske billedtekster er aktiveret</string> <string name="revanced_disable_auto_captions_summary_off">Automatiske billedtekster er aktiveret</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.buttons.action.hideButtonsPatch"> --> <patch id="layout.buttons.action.hideButtonsPatch">
<string name="revanced_hide_buttons_screen_title">Handlingsknapper</string> <string name="revanced_hide_buttons_screen_title">Handlingsknapper</string>
<string name="revanced_hide_buttons_screen_summary">Skjul eller vis knapper under videoer</string> <string name="revanced_hide_buttons_screen_summary">Skjul eller vis knapper under videoer</string>
<string name="revanced_disable_like_subscribe_glow_title">Deaktiver Like og Abonner-knappen glød</string> <string name="revanced_disable_like_subscribe_glow_title">Deaktiver Like og Abonner-knappen glød</string>
@@ -652,8 +657,8 @@ Juster lydstyrken ved at swipe lodret i højre side af skærmen"</string>
<string name="revanced_hide_save_button_title">Skjul Gem</string> <string name="revanced_hide_save_button_title">Skjul Gem</string>
<string name="revanced_hide_save_button_summary_on">Knappen \"Gem\" er skjult</string> <string name="revanced_hide_save_button_summary_on">Knappen \"Gem\" er skjult</string>
<string name="revanced_hide_save_button_summary_off">Knappen \"Gem\" vises</string> <string name="revanced_hide_save_button_summary_off">Knappen \"Gem\" vises</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.buttons.navigation.navigationButtonsPatch"> --> <patch id="layout.buttons.navigation.navigationButtonsPatch">
<string name="revanced_navigation_buttons_screen_title">Navigationsknapper</string> <string name="revanced_navigation_buttons_screen_title">Navigationsknapper</string>
<string name="revanced_navigation_buttons_screen_summary">Skjul eller skift knapper i navigationsbjælken</string> <string name="revanced_navigation_buttons_screen_summary">Skjul eller skift knapper i navigationsbjælken</string>
<!-- 'Home' should be translated using the same localized wording YouTube displays for the tab. --> <!-- 'Home' should be translated using the same localized wording YouTube displays for the tab. -->
@@ -697,8 +702,8 @@ Hvis ændring af denne indstilling ikke træder i kraft, kan du prøve at skifte
<string name="revanced_disable_translucent_navigation_bar_dark_title">Deaktiver mørk gennemsigtig linje</string> <string name="revanced_disable_translucent_navigation_bar_dark_title">Deaktiver mørk gennemsigtig linje</string>
<string name="revanced_disable_translucent_navigation_bar_dark_summary_on">Navigationslinjen i mørk tilstand er ikke gennemsigtig</string> <string name="revanced_disable_translucent_navigation_bar_dark_summary_on">Navigationslinjen i mørk tilstand er ikke gennemsigtig</string>
<string name="revanced_disable_translucent_navigation_bar_dark_summary_off">Mørk tilstand navigationslinjen er opak eller gennemsigtig</string> <string name="revanced_disable_translucent_navigation_bar_dark_summary_off">Mørk tilstand navigationslinjen er opak eller gennemsigtig</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.hide.player.flyoutmenupanel.hidePlayerFlyoutMenuPatch"> --> <patch id="layout.hide.player.flyoutmenupanel.hidePlayerFlyoutMenuPatch">
<string name="revanced_hide_player_flyout_title">Udfyldningsmenu</string> <string name="revanced_hide_player_flyout_title">Udfyldningsmenu</string>
<string name="revanced_hide_player_flyout_summary">Skjul eller vis spiller flyout menupunkter</string> <string name="revanced_hide_player_flyout_summary">Skjul eller vis spiller flyout menupunkter</string>
<!-- 'Captions' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Captions' should be translated using the same localized wording YouTube displays for the menu item. -->
@@ -759,8 +764,8 @@ For at vise lydsporsmenuen, skift 'Spoof videostreams' til iPadOS"</string>
<string name="revanced_hide_player_flyout_video_quality_footer_title">Skjul sidefod til videokvalitet</string> <string name="revanced_hide_player_flyout_video_quality_footer_title">Skjul sidefod til videokvalitet</string>
<string name="revanced_hide_player_flyout_video_quality_footer_summary_on">Videokvalitetsmenuens sidefod er skjult</string> <string name="revanced_hide_player_flyout_video_quality_footer_summary_on">Videokvalitetsmenuens sidefod er skjult</string>
<string name="revanced_hide_player_flyout_video_quality_footer_summary_off">Videokvalitet menu footer er vist</string> <string name="revanced_hide_player_flyout_video_quality_footer_summary_off">Videokvalitet menu footer er vist</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch"> --> <patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
<string name="revanced_hide_autoplay_button_title">Skjul knappen Automatisk afspilning</string> <string name="revanced_hide_autoplay_button_title">Skjul knappen Automatisk afspilning</string>
<string name="revanced_hide_autoplay_button_summary_on">Automatisk spil-knap er skjult</string> <string name="revanced_hide_autoplay_button_summary_on">Automatisk spil-knap er skjult</string>
<string name="revanced_hide_autoplay_button_summary_off">Automatisk afspilningsknap vises</string> <string name="revanced_hide_autoplay_button_summary_off">Automatisk afspilningsknap vises</string>
@@ -777,28 +782,28 @@ For at vise lydsporsmenuen, skift 'Spoof videostreams' til iPadOS"</string>
<string name="revanced_hide_player_previous_next_buttons_title">Skjul Forrige &amp; Næste knapper</string> <string name="revanced_hide_player_previous_next_buttons_title">Skjul Forrige &amp; Næste knapper</string>
<string name="revanced_hide_player_previous_next_buttons_summary_on">Knapper er skjult</string> <string name="revanced_hide_player_previous_next_buttons_summary_on">Knapper er skjult</string>
<string name="revanced_hide_player_previous_next_buttons_summary_off">Knapper vises</string> <string name="revanced_hide_player_previous_next_buttons_summary_off">Knapper vises</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch"> --> <patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
<string name="revanced_hide_endscreen_cards_title">Skjul slutskærmkort</string> <string name="revanced_hide_endscreen_cards_title">Skjul slutskærmkort</string>
<string name="revanced_hide_endscreen_cards_summary_on">Slutskærmskortene er skjult</string> <string name="revanced_hide_endscreen_cards_summary_on">Slutskærmskortene er skjult</string>
<string name="revanced_hide_endscreen_cards_summary_off">Kort til slutskærm vises</string> <string name="revanced_hide_endscreen_cards_summary_off">Kort til slutskærm vises</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.hide.fullscreenambientmode.disableFullscreenAmbientModePatch"> --> <patch id="layout.hide.fullscreenambientmode.disableFullscreenAmbientModePatch">
<string name="revanced_disable_fullscreen_ambient_mode_title">Deaktiver Ambient-tilstand i fuldskærm</string> <string name="revanced_disable_fullscreen_ambient_mode_title">Deaktiver Ambient-tilstand i fuldskærm</string>
<string name="revanced_disable_fullscreen_ambient_mode_summary_on">Omgivelsestilstand deaktiveret</string> <string name="revanced_disable_fullscreen_ambient_mode_summary_on">Omgivelsestilstand deaktiveret</string>
<string name="revanced_disable_fullscreen_ambient_mode_summary_off">Omgivelsestilstand aktiveret</string> <string name="revanced_disable_fullscreen_ambient_mode_summary_off">Omgivelsestilstand aktiveret</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.hide.infocards.hideInfocardsResourcePatch"> --> <patch id="layout.hide.infocards.hideInfocardsResourcePatch">
<string name="revanced_hide_info_cards_title">Skjul informationskort</string> <string name="revanced_hide_info_cards_title">Skjul informationskort</string>
<string name="revanced_hide_info_cards_summary_on">Info kort er skjult</string> <string name="revanced_hide_info_cards_summary_on">Info kort er skjult</string>
<string name="revanced_hide_info_cards_summary_off">Info kort er vist</string> <string name="revanced_hide_info_cards_summary_off">Info kort er vist</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.hide.rollingnumber.disableRollingNumberAnimationPatch"> --> <patch id="layout.hide.rollingnumber.disableRollingNumberAnimationPatch">
<string name="revanced_disable_rolling_number_animations_title">Deaktivér animationer med rullenummer</string> <string name="revanced_disable_rolling_number_animations_title">Deaktivér animationer med rullenummer</string>
<string name="revanced_disable_rolling_number_animations_summary_on">Rullende numre er ikke animeret</string> <string name="revanced_disable_rolling_number_animations_summary_on">Rullende numre er ikke animeret</string>
<string name="revanced_disable_rolling_number_animations_summary_off">Rullende numre er animeret</string> <string name="revanced_disable_rolling_number_animations_summary_off">Rullende numre er animeret</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.hide.seekbar.hideSeekbarPatch"> --> <patch id="layout.hide.seekbar.hideSeekbarPatch">
<string name="revanced_hide_seekbar_title">Skjul videoafspillerens søgelinje</string> <string name="revanced_hide_seekbar_title">Skjul videoafspillerens søgelinje</string>
<string name="revanced_hide_seekbar_summary_on">Videoafspillerens søgelinje er skjult</string> <string name="revanced_hide_seekbar_summary_on">Videoafspillerens søgelinje er skjult</string>
<string name="revanced_hide_seekbar_summary_off">Videoafspillerens søgelinje vises</string> <string name="revanced_hide_seekbar_summary_off">Videoafspillerens søgelinje vises</string>
@@ -806,8 +811,8 @@ For at vise lydsporsmenuen, skift 'Spoof videostreams' til iPadOS"</string>
<string name="revanced_hide_seekbar_thumbnail_title">Skjul video-miniaturebilledernes søgelinje</string> <string name="revanced_hide_seekbar_thumbnail_title">Skjul video-miniaturebilledernes søgelinje</string>
<string name="revanced_hide_seekbar_thumbnail_summary_on">Video-miniaturebilledernes søgelinje er skjult</string> <string name="revanced_hide_seekbar_thumbnail_summary_on">Video-miniaturebilledernes søgelinje er skjult</string>
<string name="revanced_hide_seekbar_thumbnail_summary_off">Video-miniaturebilledernes søgelinje vises</string> <string name="revanced_hide_seekbar_thumbnail_summary_off">Video-miniaturebilledernes søgelinje vises</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.hide.shorts.hideShortsComponentsResourcePatch"> --> <patch id="layout.hide.shorts.hideShortsComponentsResourcePatch">
<string name="revanced_shorts_player_screen_title">Shorts-afspiller</string> <string name="revanced_shorts_player_screen_title">Shorts-afspiller</string>
<string name="revanced_shorts_player_screen_summary">Skjul eller vis Shorts-afspillerkomponenter</string> <string name="revanced_shorts_player_screen_summary">Skjul eller vis Shorts-afspillerkomponenter</string>
<!-- 'Home' should be translated using the same localized wording YouTube displays for the Home tab. --> <!-- 'Home' should be translated using the same localized wording YouTube displays for the Home tab. -->
@@ -920,48 +925,48 @@ For at vise lydsporsmenuen, skift 'Spoof videostreams' til iPadOS"</string>
<string name="revanced_hide_shorts_navigation_bar_title">Skjul navigationslinje</string> <string name="revanced_hide_shorts_navigation_bar_title">Skjul navigationslinje</string>
<string name="revanced_hide_shorts_navigation_bar_summary_on">Navigationsbjælken er skjult</string> <string name="revanced_hide_shorts_navigation_bar_summary_on">Navigationsbjælken er skjult</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">Navigationsbjælken vises</string> <string name="revanced_hide_shorts_navigation_bar_summary_off">Navigationsbjælken vises</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch"> --> <patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
<string name="revanced_end_screen_suggested_video_title">Skjul foreslået video på slutskærmen</string> <string name="revanced_end_screen_suggested_video_title">Skjul foreslået video på slutskærmen</string>
<string name="revanced_end_screen_suggested_video_summary_on">"Foreslået video på slutskærmen er skjult, når automatisk afspilning er slået fra <string name="revanced_end_screen_suggested_video_summary_on">"Foreslået video på slutskærmen er skjult, når automatisk afspilning er slået fra
Automatisk afspilning kan ændres i YouTube-indstillinger: Automatisk afspilning kan ændres i YouTube-indstillinger:
Indstillinger → Afspilning → Afspil næste video automatisk"</string> Indstillinger → Afspilning → Afspil næste video automatisk"</string>
<string name="revanced_end_screen_suggested_video_summary_off">Foreslået video på slutskærmen vises</string> <string name="revanced_end_screen_suggested_video_summary_off">Foreslået video på slutskærmen vises</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.hide.relatedvideooverlay.hideRelatedVideoOverlayPatch"> --> <patch id="layout.hide.relatedvideooverlay.hideRelatedVideoOverlayPatch">
<string name="revanced_hide_related_videos_overlay_title">Skjul overlay for relaterede videoer</string> <string name="revanced_hide_related_videos_overlay_title">Skjul overlay for relaterede videoer</string>
<string name="revanced_hide_related_videos_overlay_summary_on">Overlay for relaterede videoer i fuldskærm er skjult</string> <string name="revanced_hide_related_videos_overlay_summary_on">Overlay for relaterede videoer i fuldskærm er skjult</string>
<string name="revanced_hide_related_videos_overlay_summary_off">Overlay for relaterede videoer i fuldskærm vises</string> <string name="revanced_hide_related_videos_overlay_summary_off">Overlay for relaterede videoer i fuldskærm vises</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.hide.time.hideTimestampPatch"> --> <patch id="layout.hide.time.hideTimestampPatch">
<string name="revanced_hide_timestamp_title">Skjul tidsstempel på video</string> <string name="revanced_hide_timestamp_title">Skjul tidsstempel på video</string>
<string name="revanced_hide_timestamp_summary_on">Tidsstempel er skjult</string> <string name="revanced_hide_timestamp_summary_on">Tidsstempel er skjult</string>
<string name="revanced_hide_timestamp_summary_off">Tidsstempel er vist</string> <string name="revanced_hide_timestamp_summary_off">Tidsstempel er vist</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.panels.popup.playerPopupPanelsPatch"> --> <patch id="layout.panels.popup.playerPopupPanelsPatch">
<string name="revanced_hide_player_popup_panels_title">Skjul pop op- paneler</string> <string name="revanced_hide_player_popup_panels_title">Skjul pop op- paneler</string>
<string name="revanced_hide_player_popup_panels_summary_on">Spiller popup paneler er skjult</string> <string name="revanced_hide_player_popup_panels_summary_on">Spiller popup paneler er skjult</string>
<string name="revanced_hide_player_popup_panels_summary_off">Spiller popup paneler vises</string> <string name="revanced_hide_player_popup_panels_summary_off">Spiller popup paneler vises</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.player.fullscreen.exitFullscreenPatch"> --> <patch id="layout.player.fullscreen.exitFullscreenPatch">
<string name="revanced_exit_fullscreen_title">Afslut fuldskærmstilstand ved videoens afslutning</string> <string name="revanced_exit_fullscreen_title">Afslut fuldskærmstilstand ved videoens afslutning</string>
<string name="revanced_exit_fullscreen_entry_1">Deaktiveret</string> <string name="revanced_exit_fullscreen_entry_1">Deaktiveret</string>
<string name="revanced_exit_fullscreen_entry_2">Portræt</string> <string name="revanced_exit_fullscreen_entry_2">Portræt</string>
<string name="revanced_exit_fullscreen_entry_3">Landskab</string> <string name="revanced_exit_fullscreen_entry_3">Landskab</string>
<string name="revanced_exit_fullscreen_entry_4">Portræt og landskab</string> <string name="revanced_exit_fullscreen_entry_4">Portræt og landskab</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.player.fullscreen.openVideosFullscreen"> --> <patch id="layout.player.fullscreen.openVideosFullscreen">
<string name="revanced_open_videos_fullscreen_portrait_title">Åbn videoer i fuldskærm portræt</string> <string name="revanced_open_videos_fullscreen_portrait_title">Åbn videoer i fuldskærm portræt</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_on">Videoer åbne fuld skærm</string> <string name="revanced_open_videos_fullscreen_portrait_summary_on">Videoer åbne fuld skærm</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_off">Videoer åbner ikke fuld skærm</string> <string name="revanced_open_videos_fullscreen_portrait_summary_off">Videoer åbner ikke fuld skærm</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch"> --> <patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
<string name="revanced_player_overlay_opacity_title">Spiller overlay gennemsigtighed</string> <string name="revanced_player_overlay_opacity_title">Spiller overlay gennemsigtighed</string>
<string name="revanced_player_overlay_opacity_summary">Gennemsigtighedsværdi mellem 0-100, hvor 0 er gennemsigtig</string> <string name="revanced_player_overlay_opacity_summary">Gennemsigtighedsværdi mellem 0-100, hvor 0 er gennemsigtig</string>
<string name="revanced_player_overlay_opacity_invalid_toast">Spiller overlay gennemsigtighed skal være mellem 0-100</string> <string name="revanced_player_overlay_opacity_invalid_toast">Spiller overlay gennemsigtighed skal være mellem 0-100</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.returnyoutubedislike.returnYouTubeDislikePatch"> --> <patch id="layout.returnyoutubedislike.returnYouTubeDislikePatch">
<!-- Toast shown if network connection times out. Translations of this should not be longer than the original English or the text can be clipped and not entirely shown. --> <!-- Toast shown if network connection times out. Translations of this should not be longer than the original English or the text can be clipped and not entirely shown. -->
<string name="revanced_ryd_failure_connection_timeout">Dislikerer midlertidigt ikke tilgængelig (API-timeout ud)</string> <string name="revanced_ryd_failure_connection_timeout">Dislikerer midlertidigt ikke tilgængelig (API-timeout ud)</string>
<string name="revanced_ryd_failure_connection_status_code">Dislikationer er ikke tilgængelige (status %d)</string> <string name="revanced_ryd_failure_connection_status_code">Dislikationer er ikke tilgængelige (status %d)</string>
@@ -1009,13 +1014,13 @@ Begrænsning: Synes ikke godt om vises muligvis ikke i inkognitotilstand"</strin
<string name="revanced_ryd_statistics_getNumberOfRateLimitRequestsEncountered_zero_summary">Ingen klientrategrænser stødt på</string> <string name="revanced_ryd_statistics_getNumberOfRateLimitRequestsEncountered_zero_summary">Ingen klientrategrænser stødt på</string>
<string name="revanced_ryd_statistics_getNumberOfRateLimitRequestsEncountered_non_zero_summary">Klient sats grænse stødt %d gange</string> <string name="revanced_ryd_statistics_getNumberOfRateLimitRequestsEncountered_non_zero_summary">Klient sats grænse stødt %d gange</string>
<string name="revanced_ryd_statistics_millisecond_text">%d millisekunder</string> <string name="revanced_ryd_statistics_millisecond_text">%d millisekunder</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.searchbar.wideSearchbarPatch"> --> <patch id="layout.searchbar.wideSearchbarPatch">
<string name="revanced_wide_searchbar_title">Aktiver bred søgelinje</string> <string name="revanced_wide_searchbar_title">Aktiver bred søgelinje</string>
<string name="revanced_wide_searchbar_summary_on">Bred søgelinje er aktiveret</string> <string name="revanced_wide_searchbar_summary_on">Bred søgelinje er aktiveret</string>
<string name="revanced_wide_searchbar_summary_off">Bred søgelinje er deaktiveret</string> <string name="revanced_wide_searchbar_summary_off">Bred søgelinje er deaktiveret</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.seekbar.seekbarThumbnailsPatch"> --> <patch id="layout.seekbar.seekbarThumbnailsPatch">
<string name="revanced_seekbar_thumbnails_high_quality_title">Aktiver miniaturer af høj kvalitet</string> <string name="revanced_seekbar_thumbnails_high_quality_title">Aktiver miniaturer af høj kvalitet</string>
<string name="revanced_seekbar_thumbnails_high_quality_summary_on">Seekbar miniaturer er af høj kvalitet</string> <string name="revanced_seekbar_thumbnails_high_quality_summary_on">Seekbar miniaturer er af høj kvalitet</string>
<string name="revanced_seekbar_thumbnails_high_quality_summary_off">Seekbar miniaturer er af middel kvalitet</string> <string name="revanced_seekbar_thumbnails_high_quality_summary_off">Seekbar miniaturer er af middel kvalitet</string>
@@ -1029,8 +1034,8 @@ Denne funktion fungerer bedst med en videokvalitet på 720p eller lavere og ved
<string name="revanced_restore_old_seekbar_thumbnails_title">Gendan gamle miniaturer på søgelinjen</string> <string name="revanced_restore_old_seekbar_thumbnails_title">Gendan gamle miniaturer på søgelinjen</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">Seekbar miniaturer vises over søgelinjen</string> <string name="revanced_restore_old_seekbar_thumbnails_summary_on">Seekbar miniaturer vises over søgelinjen</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">Seekbar miniaturer vises i fuld skærm</string> <string name="revanced_restore_old_seekbar_thumbnails_summary_off">Seekbar miniaturer vises i fuld skærm</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.sponsorblock.sponsorBlockResourcePatch"> --> <patch id="layout.sponsorblock.sponsorBlockResourcePatch">
<string name="revanced_sb_enable_sb">Aktiver SponsorBloker</string> <string name="revanced_sb_enable_sb">Aktiver SponsorBloker</string>
<string name="revanced_sb_enable_sb_sum">SponsorBlock er et crowdsourcet system, der springer irriterende dele af YouTube-videoer over</string> <string name="revanced_sb_enable_sb_sum">SponsorBlock er et crowdsourcet system, der springer irriterende dele af YouTube-videoer over</string>
<string name="revanced_sb_appearance_category">Udseende</string> <string name="revanced_sb_appearance_category">Udseende</string>
@@ -1241,8 +1246,8 @@ Er du klar til at indsende?"</string>
<string name="revanced_sb_color_dot_label">Farve:</string> <string name="revanced_sb_color_dot_label">Farve:</string>
<string name="revanced_sb_about_title">Om</string> <string name="revanced_sb_about_title">Om</string>
<string name="revanced_sb_about_api_summary">Data leveres af SponsorBlock API. Tryk her for at få flere oplysninger og se downloads til andre platforme</string> <string name="revanced_sb_about_api_summary">Data leveres af SponsorBlock API. Tryk her for at få flere oplysninger og se downloads til andre platforme</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.formfactor.changeFormFactorPatch"> --> <patch id="layout.formfactor.changeFormFactorPatch">
<string name="revanced_change_form_factor_title">Layout-formfaktor</string> <string name="revanced_change_form_factor_title">Layout-formfaktor</string>
<string name="revanced_change_form_factor_entry_1">Standard</string> <string name="revanced_change_form_factor_entry_1">Standard</string>
<string name="revanced_change_form_factor_entry_2">Telefon</string> <string name="revanced_change_form_factor_entry_2">Telefon</string>
@@ -1256,8 +1261,8 @@ Tabletlayout
Automotive-layout Automotive-layout
• Shorts åbnes i den almindelige afspiller • Shorts åbnes i den almindelige afspiller
• Feed er organiseret efter emner og kanaler"</string> • Feed er organiseret efter emner og kanaler"</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.spoofappversion.spoofAppVersionPatch"> --> <patch id="layout.spoofappversion.spoofAppVersionPatch">
<string name="revanced_spoof_app_version_title">Spoof app-version</string> <string name="revanced_spoof_app_version_title">Spoof app-version</string>
<string name="revanced_spoof_app_version_summary_on">Version-manipulering</string> <string name="revanced_spoof_app_version_summary_on">Version-manipulering</string>
<string name="revanced_spoof_app_version_summary_off">Version ikke spoofed</string> <string name="revanced_spoof_app_version_summary_off">Version ikke spoofed</string>
@@ -1268,10 +1273,11 @@ Dette ændrer appens udseende og funktioner, men ukendte bivirkninger kan foreko
Hvis det senere slås fra, anbefales det at rydde app-dataene for at forhindre UI-fejl."</string> Hvis det senere slås fra, anbefales det at rydde app-dataene for at forhindre UI-fejl."</string>
<string name="revanced_spoof_app_version_target_title">Spoof app version mål</string> <string name="revanced_spoof_app_version_target_title">Spoof app version mål</string>
<string name="revanced_spoof_app_version_target_entry_1">20.13.41 - Gendan ikke-kollapset videohandlingslinje</string> <string name="revanced_spoof_app_version_target_entry_1">20.13.41 - Gendan ikke-kollapset videohandlingslinje</string>
<string name="revanced_spoof_app_version_target_entry_2">19.35.36 - Gendan gamle Shorts player ikoner</string> <string name="revanced_spoof_app_version_target_entry_2">20.05.46 - Gendan transkriptionsfunktionalitet</string>
<string name="revanced_spoof_app_version_target_entry_3">19.01.34 - Gendan gamle navigationsikoner</string> <string name="revanced_spoof_app_version_target_entry_3">19.35.36 - Gendan gamle Shorts player ikoner</string>
<!-- </patch> --> <string name="revanced_spoof_app_version_target_entry_4">19.01.34 - Gendan gamle navigationsikoner</string>
<!-- <patch id="layout.startpage.changeStartPagePatch"> --> </patch>
<patch id="layout.startpage.changeStartPagePatch">
<string name="revanced_change_start_page_title">Skift startside</string> <string name="revanced_change_start_page_title">Skift startside</string>
<string name="revanced_change_start_page_entry_default">Standard</string> <string name="revanced_change_start_page_entry_default">Standard</string>
<string name="revanced_change_start_page_entry_all_subscriptions">Alle abonnementer</string> <string name="revanced_change_start_page_entry_all_subscriptions">Alle abonnementer</string>
@@ -1302,27 +1308,27 @@ Hvis det senere slås fra, anbefales det at rydde app-dataene for at forhindre U
Begrænsning: Brug af tilbage-knappen på værktøjslinjen fungerer muligvis ikke"</string> Begrænsning: Brug af tilbage-knappen på værktøjslinjen fungerer muligvis ikke"</string>
<string name="revanced_change_start_page_always_summary_off">Startsiden ændres kun ved appstart</string> <string name="revanced_change_start_page_always_summary_off">Startsiden ændres kun ved appstart</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.startupshortsreset.disableResumingShortsOnStartupPatch"> --> <patch id="layout.startupshortsreset.disableResumingShortsOnStartupPatch">
<string name="revanced_disable_resuming_shorts_player_title">Deaktivér genoptagelse af Shorts spiller</string> <string name="revanced_disable_resuming_shorts_player_title">Deaktivér genoptagelse af Shorts spiller</string>
<string name="revanced_disable_resuming_shorts_player_summary_on">Shorts-afspilleren genoptages ikke ved app-start</string> <string name="revanced_disable_resuming_shorts_player_summary_on">Shorts-afspilleren genoptages ikke ved app-start</string>
<string name="revanced_disable_resuming_shorts_player_summary_off">Kortspilleren vil genoptage ved app-opstart</string> <string name="revanced_disable_resuming_shorts_player_summary_off">Kortspilleren vil genoptage ved app-opstart</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.shortsplayer.shortsPlayerTypePatch"> --> <patch id="layout.shortsplayer.shortsPlayerTypePatch">
<string name="revanced_shorts_player_type_title">Åbne Shorts med</string> <string name="revanced_shorts_player_type_title">Åbne Shorts med</string>
<string name="revanced_shorts_player_type_shorts">Shorts-afspiller</string> <string name="revanced_shorts_player_type_shorts">Shorts-afspiller</string>
<string name="revanced_shorts_player_type_regular_player">Standardafspiller</string> <string name="revanced_shorts_player_type_regular_player">Standardafspiller</string>
<string name="revanced_shorts_player_type_regular_player_fullscreen">Standardafspiller i fuld skærm</string> <string name="revanced_shorts_player_type_regular_player_fullscreen">Standardafspiller i fuld skærm</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.shortsautoplay.shortsAutoplayPatch"> --> <patch id="layout.shortsautoplay.shortsAutoplayPatch">
<string name="revanced_shorts_autoplay_title">Automatisk afspilning af Shorts</string> <string name="revanced_shorts_autoplay_title">Automatisk afspilning af Shorts</string>
<string name="revanced_shorts_autoplay_summary_on">Shorts afspilles automatisk</string> <string name="revanced_shorts_autoplay_summary_on">Shorts afspilles automatisk</string>
<string name="revanced_shorts_autoplay_summary_off">Shorts gentages</string> <string name="revanced_shorts_autoplay_summary_off">Shorts gentages</string>
<string name="revanced_shorts_autoplay_background_title">Automatisk afspilning af Shorts i baggrunden</string> <string name="revanced_shorts_autoplay_background_title">Automatisk afspilning af Shorts i baggrunden</string>
<string name="revanced_shorts_autoplay_background_summary_on">Shorts i baggrunden afspilles automatisk</string> <string name="revanced_shorts_autoplay_background_summary_on">Shorts i baggrunden afspilles automatisk</string>
<string name="revanced_shorts_autoplay_background_summary_off">Shorts i baggrunden gentages</string> <string name="revanced_shorts_autoplay_background_summary_off">Shorts i baggrunden gentages</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.miniplayer.miniplayerPatch"> --> <patch id="layout.miniplayer.miniplayerPatch">
<string name="revanced_miniplayer_screen_title">Mini-afspiller</string> <string name="revanced_miniplayer_screen_title">Mini-afspiller</string>
<string name="revanced_miniplayer_screen_summary">Skift stilen på den minimerede afspiller i appen</string> <string name="revanced_miniplayer_screen_summary">Skift stilen på den minimerede afspiller i appen</string>
<string name="revanced_miniplayer_type_title">Type af miniplayer</string> <string name="revanced_miniplayer_type_title">Type af miniplayer</string>
@@ -1368,8 +1374,8 @@ Miniafspiller kan trækkes ud over skærmen til venstre eller højre"</string>
<string name="revanced_miniplayer_opacity_title">Overlay uigennemsigtighed</string> <string name="revanced_miniplayer_opacity_title">Overlay uigennemsigtighed</string>
<string name="revanced_miniplayer_opacity_summary">Gennemsigtighedsværdi mellem 0-100, hvor 0 er gennemsigtig</string> <string name="revanced_miniplayer_opacity_summary">Gennemsigtighedsværdi mellem 0-100, hvor 0 er gennemsigtig</string>
<string name="revanced_miniplayer_opacity_invalid_toast">Miniplayer overlay gennemsigtighed skal være mellem 0-100</string> <string name="revanced_miniplayer_opacity_invalid_toast">Miniplayer overlay gennemsigtighed skal være mellem 0-100</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.theme.themePatch"> --> <patch id="layout.theme.themePatch">
<string name="revanced_gradient_loading_screen_title">Aktiver gradient indlæsning af skærmen</string> <string name="revanced_gradient_loading_screen_title">Aktiver gradient indlæsning af skærmen</string>
<string name="revanced_gradient_loading_screen_summary_on">Indlæser skærmen vil have en gradient baggrund</string> <string name="revanced_gradient_loading_screen_summary_on">Indlæser skærmen vil have en gradient baggrund</string>
<string name="revanced_gradient_loading_screen_summary_off">Indlæser skærmen vil have en solid baggrund</string> <string name="revanced_gradient_loading_screen_summary_off">Indlæser skærmen vil have en solid baggrund</string>
@@ -1384,23 +1390,23 @@ Miniafspiller kan trækkes ud over skærmen til venstre eller højre"</string>
<string name="revanced_seekbar_custom_color_accent_title">Brugerdefineret accentfarve på søgelinje</string> <string name="revanced_seekbar_custom_color_accent_title">Brugerdefineret accentfarve på søgelinje</string>
<string name="revanced_seekbar_custom_color_accent_summary">Søgelinjens accentfarve</string> <string name="revanced_seekbar_custom_color_accent_summary">Søgelinjens accentfarve</string>
<string name="revanced_seekbar_custom_color_invalid">Ugyldig søgelinje farveværdi</string> <string name="revanced_seekbar_custom_color_invalid">Ugyldig søgelinje farveværdi</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.branding.changeHeaderPatch"> --> <patch id="layout.branding.changeHeaderPatch">
<string name="revanced_header_logo_title">Sidehovedlogo</string> <string name="revanced_header_logo_title">Sidehovedlogo</string>
<string name="revanced_header_logo_entry_1">Standard</string> <string name="revanced_header_logo_entry_1">Standard</string>
<string name="revanced_header_logo_entry_2">Normal</string> <string name="revanced_header_logo_entry_2">Normal</string>
<!-- For this situation "Minimal" means minimalistic. It does not mean small or tiny. --> <!-- For this situation "Minimal" means minimalistic. It does not mean small or tiny. -->
<string name="revanced_header_logo_entry_5">ReVanced minimal</string> <string name="revanced_header_logo_entry_5">ReVanced minimal</string>
<string name="revanced_header_logo_entry_6">Brugerdefineret</string> <string name="revanced_header_logo_entry_6">Brugerdefineret</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch"> --> <patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
<string name="revanced_bypass_image_region_restrictions_title">Bypass billede region restriktioner</string> <string name="revanced_bypass_image_region_restrictions_title">Bypass billede region restriktioner</string>
<string name="revanced_bypass_image_region_restrictions_summary_on">Bruger billedvært yt4.ggpht.com</string> <string name="revanced_bypass_image_region_restrictions_summary_on">Bruger billedvært yt4.ggpht.com</string>
<string name="revanced_bypass_image_region_restrictions_summary_off">"Bruger original billedevært <string name="revanced_bypass_image_region_restrictions_summary_off">"Bruger original billedevært
Aktivering af dette kan løse manglende billeder, der er blokeret i nogle regioner"</string> Aktivering af dette kan løse manglende billeder, der er blokeret i nogle regioner"</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.thumbnails.alternativeThumbnailsPatch"> --> <patch id="layout.thumbnails.alternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the Home tab. --> <!-- 'Home' should be translated using the same localized wording YouTube displays for the Home tab. -->
<string name="revanced_alt_thumbnail_home_title">Hjem fane</string> <string name="revanced_alt_thumbnail_home_title">Hjem fane</string>
<!-- 'Subscriptions' should be translated using the same localized wording YouTube displays for the Subscriptions tab. --> <!-- 'Subscriptions' should be translated using the same localized wording YouTube displays for the Subscriptions tab. -->
@@ -1435,33 +1441,28 @@ Tryk her for at lære mere om DeArrow"</string>
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. --> <!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<string name="revanced_alt_thumbnail_dearrow_error">DeArrow er midlertidigt ikke tilgængelig (statuskode: %s)</string> <string name="revanced_alt_thumbnail_dearrow_error">DeArrow er midlertidigt ikke tilgængelig (statuskode: %s)</string>
<string name="revanced_alt_thumbnail_dearrow_error_generic">DeArrow er midlertidigt ikke tilgængelig</string> <string name="revanced_alt_thumbnail_dearrow_error_generic">DeArrow er midlertidigt ikke tilgængelig</string>
<!-- </patch> --> </patch>
<!-- <patch id="misc.announcements.announcementsPatch"> --> <patch id="misc.announcements.announcementsPatch">
<string name="revanced_announcements_title">Vis ReVanced meddelelser</string> <string name="revanced_announcements_title">Vis ReVanced meddelelser</string>
<string name="revanced_announcements_summary_on">Meddelelser ved opstart vises</string> <string name="revanced_announcements_summary_on">Meddelelser ved opstart vises</string>
<string name="revanced_announcements_summary_off">Meddelelser ved opstart vises ikke</string> <string name="revanced_announcements_summary_off">Meddelelser ved opstart vises ikke</string>
<string name="revanced_announcements_enabled_summary">Vis meddelelser ved opstart</string> <string name="revanced_announcements_enabled_summary">Vis meddelelser ved opstart</string>
<string name="revanced_announcements_connection_failed">Kunne ikke forbinde til udbyder af annonceringer</string> <string name="revanced_announcements_connection_failed">Kunne ikke forbinde til udbyder af annonceringer</string>
<string name="revanced_announcements_dialog_dismiss">Luk</string> <string name="revanced_announcements_dialog_dismiss">Luk</string>
<!-- </patch> --> </patch>
<!-- <patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch"> --> <patch id="misc.loopvideo.loopVideoPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Advarsel</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Din urhistorik gemmes ikke.&lt;br&gt;&lt;br&gt;Dette skyldes sandsynligvis en DNS-annonceblokker eller netværksproxy.&lt;br&gt;&lt;br&gt;For at løse dette, whitelist &lt;b&gt;s.youtube.com&lt;/b&gt; eller slå alle DNS-blokkere og fuldmagter fra.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Vis ikke igen</string>
<!-- </patch> -->
<!-- <patch id="misc.loopvideo.loopVideoPatch"> -->
<string name="revanced_loop_video_title">Aktiver loop-video</string> <string name="revanced_loop_video_title">Aktiver loop-video</string>
<string name="revanced_loop_video_summary_on">Videoen vil loope</string> <string name="revanced_loop_video_summary_on">Videoen vil loope</string>
<string name="revanced_loop_video_summary_off">Videoen vil ikke loope</string> <string name="revanced_loop_video_summary_off">Videoen vil ikke loope</string>
<!-- </patch> --> </patch>
<!-- <patch id="misc.loopvideo.button.loopVideoButtonPatch"> --> <patch id="misc.loopvideo.button.loopVideoButtonPatch">
<string name="revanced_loop_video_button_title">Vis knap for loop-video</string> <string name="revanced_loop_video_button_title">Vis knap for loop-video</string>
<string name="revanced_loop_video_button_summary_on">Knappen vises</string> <string name="revanced_loop_video_button_summary_on">Knappen vises</string>
<string name="revanced_loop_video_button_summary_off">Knappen vises ikke</string> <string name="revanced_loop_video_button_summary_off">Knappen vises ikke</string>
<string name="revanced_loop_video_button_toast_on">Loop-video er slået til</string> <string name="revanced_loop_video_button_toast_on">Loop-video er slået til</string>
<string name="revanced_loop_video_button_toast_off">Loop-video er slået fra</string> <string name="revanced_loop_video_button_toast_off">Loop-video er slået fra</string>
<!-- </patch> --> </patch>
<!-- <patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch"> --> <patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
<string name="revanced_spoof_device_dimensions_title">Spoof enhedens dimensioner</string> <string name="revanced_spoof_device_dimensions_title">Spoof enhedens dimensioner</string>
<string name="revanced_spoof_device_dimensions_summary_on">"Enhedens dimensioner er forfalsket <string name="revanced_spoof_device_dimensions_summary_on">"Enhedens dimensioner er forfalsket
@@ -1470,8 +1471,8 @@ Højere videokvalitet kan låses op, men du kan opleve videoafspilningshakkethed
Aktivering af dette kan låse op for højere videokvalitet"</string> Aktivering af dette kan låse op for højere videokvalitet"</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">Aktivering af dette kan forårsage videoafspilning stuttering, værre batterilevetid og ukendte bivirkninger.</string> <string name="revanced_spoof_device_dimensions_user_dialog_message">Aktivering af dette kan forårsage videoafspilning stuttering, værre batterilevetid og ukendte bivirkninger.</string>
<!-- </patch> --> </patch>
<!-- <patch id="misc.hapticfeedback.disableHapticFeedbackPatch"> --> <patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
<string name="revanced_disable_haptic_feedback_title">Haptisk feedback</string> <string name="revanced_disable_haptic_feedback_title">Haptisk feedback</string>
<string name="revanced_disable_haptic_feedback_summary">Skift haptisk feedback</string> <string name="revanced_disable_haptic_feedback_summary">Skift haptisk feedback</string>
<string name="revanced_disable_haptic_feedback_chapters_title">Deaktivér haptics for kapitler</string> <string name="revanced_disable_haptic_feedback_chapters_title">Deaktivér haptics for kapitler</string>
@@ -1486,28 +1487,28 @@ Aktivering af dette kan låse op for højere videokvalitet"</string>
<string name="revanced_disable_haptic_feedback_zoom_title">Deaktivér zoom haptics</string> <string name="revanced_disable_haptic_feedback_zoom_title">Deaktivér zoom haptics</string>
<string name="revanced_disable_haptic_feedback_zoom_summary_on">Zoom haptics er deaktiveret</string> <string name="revanced_disable_haptic_feedback_zoom_summary_on">Zoom haptics er deaktiveret</string>
<string name="revanced_disable_haptic_feedback_zoom_summary_off">Zoom haptics er aktiveret</string> <string name="revanced_disable_haptic_feedback_zoom_summary_off">Zoom haptics er aktiveret</string>
<!-- </patch> --> </patch>
<!-- <patch id="misc.gms.accountCredentialsInvalidTextPatch"> --> <patch id="misc.gms.accountCredentialsInvalidTextPatch">
<string name="microg_offline_account_login_error">Hvis du for nylig har ændret dine kontooplysninger, skal du afinstallere og geninstallere MicroG.</string> <string name="microg_offline_account_login_error">Hvis du for nylig har ændret dine kontooplysninger, skal du afinstallere og geninstallere MicroG.</string>
<!-- </patch> --> </patch>
<!-- <patch id="misc.links.bypassURLRedirectsPatch"> --> <patch id="misc.links.bypassURLRedirectsPatch">
<string name="revanced_bypass_url_redirects_title">Bypass URL omdirigeringer</string> <string name="revanced_bypass_url_redirects_title">Bypass URL omdirigeringer</string>
<string name="revanced_bypass_url_redirects_summary_on">URL omdirigeringer er omgået</string> <string name="revanced_bypass_url_redirects_summary_on">URL omdirigeringer er omgået</string>
<string name="revanced_bypass_url_redirects_summary_off">URL omdirigeringer er ikke omgået</string> <string name="revanced_bypass_url_redirects_summary_off">URL omdirigeringer er ikke omgået</string>
<!-- </patch> --> </patch>
<!-- <patch id="misc.links.openLinksExternallyPatch"> --> <patch id="misc.links.openLinksExternallyPatch">
<string name="revanced_external_browser_title">Åbn links i browser</string> <string name="revanced_external_browser_title">Åbn links i browser</string>
<string name="revanced_external_browser_summary_on">Åbner links i ekstern browser</string> <string name="revanced_external_browser_summary_on">Åbner links i ekstern browser</string>
<string name="revanced_external_browser_summary_off">Åbner links i browser i appen</string> <string name="revanced_external_browser_summary_off">Åbner links i browser i appen</string>
<!-- </patch> --> </patch>
<!-- <patch id="video.audio.forceOriginalAudioPatch"> --> <patch id="video.audio.forceOriginalAudioPatch">
<string name="revanced_force_original_audio_title">Tving originalt lydsprog</string> <string name="revanced_force_original_audio_title">Tving originalt lydsprog</string>
<string name="revanced_force_original_audio_summary_on">Bruger originalt lydsprog</string> <string name="revanced_force_original_audio_summary_on">Bruger originalt lydsprog</string>
<string name="revanced_force_original_audio_summary_off">Brug standard lyd</string> <string name="revanced_force_original_audio_summary_off">Brug standard lyd</string>
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. --> <!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<string name="revanced_force_original_audio_not_available">For at bruge denne funktion skal du ændre \"Forfalsk videostreams\" til en hvilken som helst klient undtagen Android Studio</string> <string name="revanced_force_original_audio_not_available">For at bruge denne funktion skal du ændre \"Forfalsk videostreams\" til en hvilken som helst klient undtagen Android Studio</string>
<!-- </patch> --> </patch>
<!-- <patch id="video.quality.rememberVideoQualityPatch"> --> <patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as 'revanced_custom_playback_speeds_auto'. --> <!-- Translations should use the same text as 'revanced_custom_playback_speeds_auto'. -->
<string name="revanced_video_quality_default_entry_1">Automatisk</string> <string name="revanced_video_quality_default_entry_1">Automatisk</string>
<string name="revanced_remember_video_quality_last_selected_title">Husk ændringer i videokvalitet</string> <string name="revanced_remember_video_quality_last_selected_title">Husk ændringer i videokvalitet</string>
@@ -1527,18 +1528,18 @@ Aktivering af dette kan låse op for højere videokvalitet"</string>
<string name="revanced_remember_video_quality_wifi">Wi-Fi</string> <string name="revanced_remember_video_quality_wifi">Wi-Fi</string>
<string name="revanced_remember_video_quality_toast">Ændrede standard %1$s kvalitet til: %2$s</string> <string name="revanced_remember_video_quality_toast">Ændrede standard %1$s kvalitet til: %2$s</string>
<string name="revanced_remember_video_quality_toast_shorts">Ændrede Shorts %1$s kvalitet til: %2$s</string> <string name="revanced_remember_video_quality_toast_shorts">Ændrede Shorts %1$s kvalitet til: %2$s</string>
<!-- </patch> --> </patch>
<!-- <patch id="video.speed.button.playbackSpeedButtonPatch"> --> <patch id="video.speed.button.playbackSpeedButtonPatch">
<string name="revanced_playback_speed_dialog_button_title">Vis hastigheds dialogknap</string> <string name="revanced_playback_speed_dialog_button_title">Vis hastigheds dialogknap</string>
<string name="revanced_playback_speed_dialog_button_summary_on">Knappen vises. Tryk og hold for at nulstille afspilningshastigheden til standard.</string> <string name="revanced_playback_speed_dialog_button_summary_on">Knappen vises. Tryk og hold for at nulstille afspilningshastigheden til standard.</string>
<string name="revanced_playback_speed_dialog_button_summary_off">Knap vises ikke</string> <string name="revanced_playback_speed_dialog_button_summary_off">Knap vises ikke</string>
<!-- </patch> --> </patch>
<!-- <patch id="video.quality.button.videoQualityDialogButtonPatch"> --> <patch id="video.quality.button.videoQualityDialogButtonPatch">
<string name="revanced_video_quality_dialog_button_title">Vis videokvalitetsknap</string> <string name="revanced_video_quality_dialog_button_title">Vis videokvalitetsknap</string>
<string name="revanced_video_quality_dialog_button_summary_on">Knap vises. Tryk og hold nede for at nulstille kvaliteten til standard</string> <string name="revanced_video_quality_dialog_button_summary_on">Knap vises. Tryk og hold nede for at nulstille kvaliteten til standard</string>
<string name="revanced_video_quality_dialog_button_summary_off">Knappen vises ikke</string> <string name="revanced_video_quality_dialog_button_summary_off">Knappen vises ikke</string>
<!-- </patch> --> </patch>
<!-- <patch id="video.speed.custom.customPlaybackSpeedPatch"> --> <patch id="video.speed.custom.customPlaybackSpeedPatch">
<string name="revanced_custom_speed_menu_title">Tilpasset afspilningshastighed menu</string> <string name="revanced_custom_speed_menu_title">Tilpasset afspilningshastighed menu</string>
<string name="revanced_custom_speed_menu_summary_on">Tilpasset hastighed menu er vist</string> <string name="revanced_custom_speed_menu_summary_on">Tilpasset hastighed menu er vist</string>
<string name="revanced_custom_speed_menu_summary_off">Brugerdefineret hastighedsmenu vises ikke</string> <string name="revanced_custom_speed_menu_summary_off">Brugerdefineret hastighedsmenu vises ikke</string>
@@ -1552,8 +1553,8 @@ Aktivering af dette kan låse op for højere videokvalitet"</string>
<string name="revanced_custom_playback_speeds_auto">Automatisk</string> <string name="revanced_custom_playback_speeds_auto">Automatisk</string>
<string name="revanced_speed_tap_and_hold_title">Brugerdefineret hastighed, når du holder den nede</string> <string name="revanced_speed_tap_and_hold_title">Brugerdefineret hastighed, når du holder den nede</string>
<string name="revanced_speed_tap_and_hold_summary">Afspilningshastighed mellem 0-8</string> <string name="revanced_speed_tap_and_hold_summary">Afspilningshastighed mellem 0-8</string>
<!-- </patch> --> </patch>
<!-- <patch id="video.speed.remember.rememberPlaybackSpeedPatch"> --> <patch id="video.speed.remember.rememberPlaybackSpeedPatch">
<string name="revanced_remember_playback_speed_last_selected_title">Husk ændringer i afspilningshastighed</string> <string name="revanced_remember_playback_speed_last_selected_title">Husk ændringer i afspilningshastighed</string>
<string name="revanced_remember_playback_speed_last_selected_summary_on">Ændring af afspilningshastighed gælder for alle videoer</string> <string name="revanced_remember_playback_speed_last_selected_summary_on">Ændring af afspilningshastighed gælder for alle videoer</string>
<string name="revanced_remember_playback_speed_last_selected_summary_off">Ændringerne i afspilningshastighed gælder kun for den aktuelle video</string> <string name="revanced_remember_playback_speed_last_selected_summary_off">Ændringerne i afspilningshastighed gælder kun for den aktuelle video</string>
@@ -1562,23 +1563,35 @@ Aktivering af dette kan låse op for højere videokvalitet"</string>
<string name="revanced_remember_playback_speed_last_selected_toast_summary_off">Meddelelse vises ikke, når standardafspilningshastigheden ændres</string> <string name="revanced_remember_playback_speed_last_selected_toast_summary_off">Meddelelse vises ikke, når standardafspilningshastigheden ændres</string>
<string name="revanced_playback_speed_default_title">Standard afspilningshastighed</string> <string name="revanced_playback_speed_default_title">Standard afspilningshastighed</string>
<string name="revanced_remember_playback_speed_toast">Ændrede standardhastighed til: %s</string> <string name="revanced_remember_playback_speed_toast">Ændrede standardhastighed til: %s</string>
<!-- </patch> --> </patch>
<!-- <patch id="video.hdr.disableHdrPatch"> --> <patch id="video.codecs.disableVideoCodecsPatch">
<string name="revanced_disable_hdr_video_title">Deaktiver HDR-video</string> <string name="revanced_disable_hdr_video_title">Deaktiver HDR-video</string>
<string name="revanced_disable_hdr_video_summary_on">HDR-video er deaktiveret</string> <string name="revanced_disable_hdr_video_summary_on">HDR-video er deaktiveret</string>
<string name="revanced_disable_hdr_video_summary_off">HDR-video er aktiveret</string> <string name="revanced_disable_hdr_video_summary_off">HDR-video er aktiveret</string>
<!-- </patch> --> <string name="revanced_force_avc_codec_title">Gennemtving AVC (H.264)</string>
<!-- <patch id="video.quality.advancedVideoQualityMenuPatch"> --> <string name="revanced_force_avc_codec_summary_on">Video-codec er tvunget til AVC (H.264)</string>
<string name="revanced_force_avc_codec_summary_off">Video-codec bestemmes automatisk</string>
<string name="revanced_force_avc_codec_user_dialog_message">"Fordele:
• Kan forbedre batterilevetiden
• Kan gendanne manglende videoopløsninger på ældre enheder
Begrænsninger:
• Maksimal opløsning er 1080p
• Videoafspilning vil bruge mere internetdata end VP9 eller AV1
• HDR-videoer vil ikke bruge AVC
• Nogle enheder kan ikke tvinge AVC"</string>
</patch>
<patch id="video.quality.advancedVideoQualityMenuPatch">
<string name="revanced_advanced_video_quality_menu_title">Vis avanceret menu for videokvalitet</string> <string name="revanced_advanced_video_quality_menu_title">Vis avanceret menu for videokvalitet</string>
<string name="revanced_advanced_video_quality_menu_summary_on">Avanceret menu for videokvalitet vises</string> <string name="revanced_advanced_video_quality_menu_summary_on">Avanceret menu for videokvalitet vises</string>
<string name="revanced_advanced_video_quality_menu_summary_off">Avanceret menu for videokvalitet vises ikke</string> <string name="revanced_advanced_video_quality_menu_summary_off">Avanceret menu for videokvalitet vises ikke</string>
<!-- </patch> --> </patch>
<!-- <patch id="interaction.seekbar.enableSlideToSeekPatch"> --> <patch id="interaction.seekbar.enableSlideToSeekPatch">
<string name="revanced_slide_to_seek_title">Aktivér dias for at søge</string> <string name="revanced_slide_to_seek_title">Aktivér dias for at søge</string>
<string name="revanced_slide_to_seek_summary_on">Dias for at søge er aktiveret</string> <string name="revanced_slide_to_seek_summary_on">Dias for at søge er aktiveret</string>
<string name="revanced_slide_to_seek_summary_off">Dias til søgning er ikke aktiveret</string> <string name="revanced_slide_to_seek_summary_off">Dias til søgning er ikke aktiveret</string>
<!-- </patch> --> </patch>
<!-- <patch id="misc.fix.playback.spoofVideoStreamsPatch"> --> <patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_about_title">Bivirkninger ved spoofing</string> <string name="revanced_spoof_video_streams_about_title">Bivirkninger ved spoofing</string>
<string name="revanced_spoof_video_streams_about_experimental">• Eksperimentel klient og kan stoppe med at fungere når som helst</string> <string name="revanced_spoof_video_streams_about_experimental">• Eksperimentel klient og kan stoppe med at fungere når som helst</string>
<string name="revanced_spoof_video_streams_about_playback_failure">• Videoen kan stoppe ved 1:00, eller er muligvis ikke tilgængelig i visse regioner</string> <string name="revanced_spoof_video_streams_about_playback_failure">• Videoen kan stoppe ved 1:00, eller er muligvis ikke tilgængelig i visse regioner</string>
@@ -1595,37 +1608,37 @@ Aktivering af dette kan låse op for højere videokvalitet"</string>
<!-- 'Force original audio language' should use the same text as revanced_force_original_audio_title --> <!-- 'Force original audio language' should use the same text as revanced_force_original_audio_title -->
<string name="revanced_spoof_video_streams_language_not_available">For at vælge et specifikt lydsprog, slå \'Gennemtving originalt lydsprog\' fra</string> <string name="revanced_spoof_video_streams_language_not_available">For at vælge et specifikt lydsprog, slå \'Gennemtving originalt lydsprog\' fra</string>
<string name="revanced_spoof_video_streams_language_android_studio">Valg af streaming-sprog er ikke tilgængeligt med Android Studio</string> <string name="revanced_spoof_video_streams_language_android_studio">Valg af streaming-sprog er ikke tilgængeligt med Android Studio</string>
<!-- </patch> --> </patch>
<!-- </app> --> </app>
<!-- <app id="music"> --> <app id="music">
<!-- <patch id="misc.settings.settingsPatch"> --> <patch id="misc.settings.settingsPatch">
<string name="revanced_settings_music_screen_0_about_title">Om</string> <string name="revanced_settings_music_screen_0_about_title">Om</string>
<string name="revanced_settings_music_screen_1_ads_title">Annoncer</string> <string name="revanced_settings_music_screen_1_ads_title">Annoncer</string>
<string name="revanced_settings_music_screen_2_general_title">Generelt</string> <string name="revanced_settings_music_screen_2_general_title">Generelt</string>
<string name="revanced_settings_music_screen_3_player_title">Afspiller</string> <string name="revanced_settings_music_screen_3_player_title">Afspiller</string>
<string name="revanced_settings_music_screen_4_misc_title">Diverse</string> <string name="revanced_settings_music_screen_4_misc_title">Diverse</string>
<!-- </patch> --> </patch>
<!-- <patch id="ad.video.hideVideoAdsPatch"> --> <patch id="ad.video.hideVideoAdsPatch">
<string name="revanced_music_hide_video_ads_title">Skjul videoannoncer</string> <string name="revanced_music_hide_video_ads_title">Skjul videoannoncer</string>
<string name="revanced_music_hide_video_ads_summary_on">Videoannoncer er skjult</string> <string name="revanced_music_hide_video_ads_summary_on">Videoannoncer er skjult</string>
<string name="revanced_music_hide_video_ads_summary_off">Videoannoncer vises</string> <string name="revanced_music_hide_video_ads_summary_off">Videoannoncer vises</string>
<!-- </patch> --> </patch>
<!-- <patch id="interaction.permanentrepeat.permanentRepeatPatch"> --> <patch id="interaction.permanentrepeat.permanentRepeatPatch">
<string name="revanced_music_play_permanent_repeat_title">Aktiver permanent gentagelse</string> <string name="revanced_music_play_permanent_repeat_title">Aktiver permanent gentagelse</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Permanent gentagelse er aktiveret</string> <string name="revanced_music_play_permanent_repeat_summary_on">Permanent gentagelse er aktiveret</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Permanent gentagelse er deaktiveret</string> <string name="revanced_music_play_permanent_repeat_summary_off">Permanent gentagelse er deaktiveret</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.castbutton.hideCastButton"> --> <patch id="layout.castbutton.hideCastButton">
<string name="revanced_music_hide_cast_button_title">Skjul cast-knap</string> <string name="revanced_music_hide_cast_button_title">Skjul cast-knap</string>
<string name="revanced_music_hide_cast_button_summary_on">Cast-knappen er skjult</string> <string name="revanced_music_hide_cast_button_summary_on">Cast-knappen er skjult</string>
<string name="revanced_music_hide_cast_button_summary_off">Cast-knappen vises</string> <string name="revanced_music_hide_cast_button_summary_off">Cast-knappen vises</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.compactheader.hideCategoryBar"> --> <patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Skjul kategorilinje</string> <string name="revanced_music_hide_category_bar_title">Skjul kategorilinje</string>
<string name="revanced_music_hide_category_bar_summary_on">Kategorilinjen er skjult</string> <string name="revanced_music_hide_category_bar_summary_on">Kategorilinjen er skjult</string>
<string name="revanced_music_hide_category_bar_summary_off">Kategorilinjen vises</string> <string name="revanced_music_hide_category_bar_summary_off">Kategorilinjen vises</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.navigationbar.navigationBarPatch"> --> <patch id="layout.navigationbar.navigationBarPatch">
<string name="revanced_music_navigation_bar_screen_title">Navigationslinje</string> <string name="revanced_music_navigation_bar_screen_title">Navigationslinje</string>
<string name="revanced_music_navigation_bar_screen_summary">Skjul eller skift navigationslinjeknapper</string> <string name="revanced_music_navigation_bar_screen_summary">Skjul eller skift navigationslinjeknapper</string>
<!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. --> <!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. -->
@@ -1654,56 +1667,56 @@ Aktivering af dette kan låse op for højere videokvalitet"</string>
<string name="revanced_music_hide_navigation_bar_labels_title">Skjul etiketter for navigationsknapper</string> <string name="revanced_music_hide_navigation_bar_labels_title">Skjul etiketter for navigationsknapper</string>
<string name="revanced_music_hide_navigation_bar_labels_summary_on">Etiketter er skjult</string> <string name="revanced_music_hide_navigation_bar_labels_summary_on">Etiketter er skjult</string>
<string name="revanced_music_hide_navigation_bar_labels_summary_off">Etiketter vises</string> <string name="revanced_music_hide_navigation_bar_labels_summary_off">Etiketter vises</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.premium.hideGetPremiumPatch"> --> <patch id="layout.premium.hideGetPremiumPatch">
<string name="revanced_music_hide_get_premium_label_title">Skjul \'Få Music Premium\'-etiket</string> <string name="revanced_music_hide_get_premium_label_title">Skjul \'Få Music Premium\'-etiket</string>
<string name="revanced_music_hide_get_premium_label_summary_on">Etiketten er skjult</string> <string name="revanced_music_hide_get_premium_label_summary_on">Etiketten er skjult</string>
<string name="revanced_music_hide_get_premium_label_summary_off">Etiketten vises</string> <string name="revanced_music_hide_get_premium_label_summary_off">Etiketten vises</string>
<!-- </patch> --> </patch>
<!-- <patch id="layout.upgradebutton.hideUpgradeButtonPatch"> --> <patch id="layout.upgradebutton.hideUpgradeButtonPatch">
<string name="revanced_music_hide_upgrade_button_title">Skjul opgraderingsknap</string> <string name="revanced_music_hide_upgrade_button_title">Skjul opgraderingsknap</string>
<string name="revanced_music_hide_upgrade_button_summary_on">Knappen er skjult</string> <string name="revanced_music_hide_upgrade_button_summary_on">Knappen er skjult</string>
<string name="revanced_music_hide_upgrade_button_summary_off">Knappen vises</string> <string name="revanced_music_hide_upgrade_button_summary_off">Knappen vises</string>
<!-- </patch> --> </patch>
<!-- </app> --> </app>
<!-- <app id="twitch"> --> <app id="twitch">
<!-- <patch id="ad.audio.audioAdsPatch"> --> <patch id="ad.audio.audioAdsPatch">
<string name="revanced_block_audio_ads_title">Blokér lydannoncer</string> <string name="revanced_block_audio_ads_title">Blokér lydannoncer</string>
<string name="revanced_block_audio_ads_summary_on">Lydannoncer er blokeret</string> <string name="revanced_block_audio_ads_summary_on">Lydannoncer er blokeret</string>
<string name="revanced_block_audio_ads_summary_off">Lydannoncer er ublokeret</string> <string name="revanced_block_audio_ads_summary_off">Lydannoncer er ublokeret</string>
<!-- </patch> --> </patch>
<!-- <patch id="ad.embedded.embeddedAdsPatch"> --> <patch id="ad.embedded.embeddedAdsPatch">
<string name="revanced_embedded_ads_service_unavailable">%s er ikke tilgængelig, annoncer vises muligvis. Prøv at skifte annonceblokeringstjeneste i indstillinger.</string> <string name="revanced_embedded_ads_service_unavailable">%s er ikke tilgængelig, annoncer vises muligvis. Prøv at skifte annonceblokeringstjeneste i indstillinger.</string>
<string name="revanced_embedded_ads_service_failed">%s returnerede en fejl, annoncer vises muligvis. Prøv at skifte annonceblokeringstjeneste i indstillinger.</string> <string name="revanced_embedded_ads_service_failed">%s returnerede en fejl, annoncer vises muligvis. Prøv at skifte annonceblokeringstjeneste i indstillinger.</string>
<string name="revanced_block_embedded_ads_title">Bloker indlejrede videoannoncer</string> <string name="revanced_block_embedded_ads_title">Bloker indlejrede videoannoncer</string>
<string name="revanced_block_embedded_ads_entry_1">Deaktiveret</string> <string name="revanced_block_embedded_ads_entry_1">Deaktiveret</string>
<string name="revanced_block_embedded_ads_entry_2">Lysende proxy</string> <string name="revanced_block_embedded_ads_entry_2">Lysende proxy</string>
<string name="revanced_block_embedded_ads_entry_3">PurpleAdBlock-proxy</string> <string name="revanced_block_embedded_ads_entry_3">PurpleAdBlock-proxy</string>
<!-- </patch> --> </patch>
<!-- <patch id="ad.video.videoAdsPatch"> --> <patch id="ad.video.videoAdsPatch">
<string name="revanced_block_video_ads_title">Blokér videoannoncer</string> <string name="revanced_block_video_ads_title">Blokér videoannoncer</string>
<string name="revanced_block_video_ads_summary_on">Videoreklamer er blokeret</string> <string name="revanced_block_video_ads_summary_on">Videoreklamer er blokeret</string>
<string name="revanced_block_video_ads_summary_off">Videoannoncer er ublokerede</string> <string name="revanced_block_video_ads_summary_off">Videoannoncer er ublokerede</string>
<!-- </patch> --> </patch>
<!-- <patch id="chat.antidelete.showDeletedMessagesPatch"> --> <patch id="chat.antidelete.showDeletedMessagesPatch">
<string name="revanced_deleted_msg">Meddelelse slettet</string> <string name="revanced_deleted_msg">Meddelelse slettet</string>
<string name="revanced_show_deleted_messages_title">Vis slettede beskeder</string> <string name="revanced_show_deleted_messages_title">Vis slettede beskeder</string>
<string name="revanced_show_deleted_messages_entry_1">Vis ikke slettede beskeder</string> <string name="revanced_show_deleted_messages_entry_1">Vis ikke slettede beskeder</string>
<string name="revanced_show_deleted_messages_entry_2">Skjul slettede beskeder bag en spoiler</string> <string name="revanced_show_deleted_messages_entry_2">Skjul slettede beskeder bag en spoiler</string>
<string name="revanced_show_deleted_messages_entry_3">Vis slettede beskeder som krydset tekst</string> <string name="revanced_show_deleted_messages_entry_3">Vis slettede beskeder som krydset tekst</string>
<!-- </patch> --> </patch>
<!-- <patch id="chat.autoclaim.autoClaimChannelPointsPatch"> --> <patch id="chat.autoclaim.autoClaimChannelPointsPatch">
<string name="revanced_auto_claim_channel_points_title">Auto-hævde Kanalpunkter</string> <string name="revanced_auto_claim_channel_points_title">Auto-hævde Kanalpunkter</string>
<string name="revanced_auto_claim_channel_points_summary_on">Kanalpunkter afhentes automatisk</string> <string name="revanced_auto_claim_channel_points_summary_on">Kanalpunkter afhentes automatisk</string>
<string name="revanced_auto_claim_channel_points_summary_off">Kanalpunkter afhentes ikke automatisk</string> <string name="revanced_auto_claim_channel_points_summary_off">Kanalpunkter afhentes ikke automatisk</string>
<!-- </patch> --> </patch>
<!-- <patch id="debug.debugModePatch"> --> <patch id="debug.debugModePatch">
<!-- Twitch specific internal debug mode, and not the same as 'revanced_debug_title'. --> <!-- Twitch specific internal debug mode, and not the same as 'revanced_debug_title'. -->
<string name="revanced_twitch_debug_mode_title">Aktiver Twitch-fejlfindingstilstand</string> <string name="revanced_twitch_debug_mode_title">Aktiver Twitch-fejlfindingstilstand</string>
<string name="revanced_twitch_debug_mode_summary_on">Twitch-fejlfindingstilstand er aktiveret (ikke anbefalet)</string> <string name="revanced_twitch_debug_mode_summary_on">Twitch-fejlfindingstilstand er aktiveret (ikke anbefalet)</string>
<string name="revanced_twitch_debug_mode_summary_off">Twitch-fejlfindingstilstand er deaktiveret</string> <string name="revanced_twitch_debug_mode_summary_off">Twitch-fejlfindingstilstand er deaktiveret</string>
<!-- </patch> --> </patch>
<!-- <patch id="misc.settings.settingsPatch"> --> <patch id="misc.settings.settingsPatch">
<string name="revanced_settings">Vigtigste Indstillinger</string> <string name="revanced_settings">Vigtigste Indstillinger</string>
<string name="revanced_about_title">Om</string> <string name="revanced_about_title">Om</string>
<string name="revanced_about_summary">Om ReVanced</string> <string name="revanced_about_summary">Om ReVanced</string>
@@ -1720,6 +1733,6 @@ Aktivering af dette kan låse op for højere videokvalitet"</string>
<string name="revanced_twitch_debug_title">Debug logning</string> <string name="revanced_twitch_debug_title">Debug logning</string>
<string name="revanced_twitch_debug_summary_on">Debug logs er aktiveret</string> <string name="revanced_twitch_debug_summary_on">Debug logs er aktiveret</string>
<string name="revanced_twitch_debug_summary_off">Debug logs er deaktiveret</string> <string name="revanced_twitch_debug_summary_off">Debug logs er deaktiveret</string>
<!-- </patch> --> </patch>
<!-- </app> --> </app>
</resources> </resources>

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