From dfb5407e67222e80e23c8935e04b6dbf1a43d757 Mon Sep 17 00:00:00 2001
From: MarcaD <152095496+MarcaDian@users.noreply.github.com>
Date: Mon, 22 Sep 2025 11:54:09 +0300
Subject: [PATCH 1/5] feat(YouTube - Loop video): Add player button to change
loop video state (#5961)
---
.../youtube/patches/AutoRepeatPatch.java | 11 ---
.../youtube/patches/LoopVideoPatch.java | 13 +++
.../extension/youtube/settings/Settings.java | 27 +++---
.../youtube/videoplayer/LoopVideoButton.java | 83 +++++++++++++++++++
patches/api/patches.api | 4 +
.../player/fullscreen/ExitFullscreenPatch.kt | 6 +-
.../misc/autorepeat/AutoRepeatPatch.kt | 61 +-------------
.../youtube/misc/loopvideo/LoopVideoPatch.kt | 62 ++++++++++++++
.../loopvideo/button/LoopVideoButtonPatch.kt | 57 +++++++++++++
.../patches/youtube/shared/Fingerprints.kt | 7 +-
.../resources/addresources/values/strings.xml | 15 +++-
.../revanced_loop_video_button_off.xml | 11 +++
.../revanced_loop_video_button_on.xml | 9 ++
.../youtube_controls_bottom_ui_container.xml | 22 +++++
14 files changed, 299 insertions(+), 89 deletions(-)
delete mode 100644 extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/AutoRepeatPatch.java
create mode 100644 extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/LoopVideoPatch.java
create mode 100644 extensions/youtube/src/main/java/app/revanced/extension/youtube/videoplayer/LoopVideoButton.java
create mode 100644 patches/src/main/kotlin/app/revanced/patches/youtube/misc/loopvideo/LoopVideoPatch.kt
create mode 100644 patches/src/main/kotlin/app/revanced/patches/youtube/misc/loopvideo/button/LoopVideoButtonPatch.kt
create mode 100644 patches/src/main/resources/loopvideobutton/drawable/revanced_loop_video_button_off.xml
create mode 100644 patches/src/main/resources/loopvideobutton/drawable/revanced_loop_video_button_on.xml
create mode 100644 patches/src/main/resources/loopvideobutton/host/layout/youtube_controls_bottom_ui_container.xml
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/AutoRepeatPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/AutoRepeatPatch.java
deleted file mode 100644
index 21409e739..000000000
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/AutoRepeatPatch.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package app.revanced.extension.youtube.patches;
-
-import app.revanced.extension.youtube.settings.Settings;
-
-@SuppressWarnings("unused")
-public class AutoRepeatPatch {
- //Used by app.revanced.patches.youtube.layout.autorepeat.patch.AutoRepeatPatch
- public static boolean shouldAutoRepeat() {
- return Settings.AUTO_REPEAT.get();
- }
-}
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/LoopVideoPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/LoopVideoPatch.java
new file mode 100644
index 000000000..8504aad93
--- /dev/null
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/LoopVideoPatch.java
@@ -0,0 +1,13 @@
+package app.revanced.extension.youtube.patches;
+
+import app.revanced.extension.youtube.settings.Settings;
+
+@SuppressWarnings("unused")
+public class LoopVideoPatch {
+ /**
+ * Injection point
+ */
+ public static boolean shouldLoopVideo() {
+ return Settings.LOOP_VIDEO.get();
+ }
+}
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java
index 7980bb5fa..63a8e9c8f 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java
@@ -341,7 +341,8 @@ public class Settings extends BaseSettings {
// Miscellaneous
public static final BooleanSetting ANNOUNCEMENTS = new BooleanSetting("revanced_announcements", TRUE);
public static final IntegerSetting ANNOUNCEMENT_LAST_ID = new IntegerSetting("revanced_announcement_last_id", -1, false, false);
- public static final BooleanSetting AUTO_REPEAT = new BooleanSetting("revanced_auto_repeat", 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 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);
@@ -444,28 +445,30 @@ public class Settings extends BaseSettings {
public static final StringSetting SB_CATEGORY_UNSUBMITTED_COLOR = new StringSetting("sb_unsubmitted_color", "#FFFFFFFF", false, false);
// Deprecated migrations
+ private static final BooleanSetting DEPRECATED_AUTO_REPEAT = new BooleanSetting("revanced_auto_repeat", FALSE);
private static final BooleanSetting DEPRECATED_HIDE_PLAYER_BUTTONS = new BooleanSetting("revanced_hide_player_buttons", FALSE, true);
private static final BooleanSetting DEPRECATED_HIDE_PLAYER_FLYOUT_VIDEO_QUALITY_FOOTER = new BooleanSetting("revanced_hide_video_quality_menu_footer", FALSE);
private static final IntegerSetting DEPRECATED_SWIPE_OVERLAY_BACKGROUND_ALPHA = new IntegerSetting("revanced_swipe_overlay_background_alpha", 127);
- private static final StringSetting DEPRECATED_SEEKBAR_CUSTOM_COLOR_PRIMARY = new StringSetting("revanced_seekbar_custom_color_value", "#FF0033");
+ private static final StringSetting DEPRECATED_SEEKBAR_CUSTOM_COLOR_PRIMARY = new StringSetting("revanced_seekbar_custom_color_value", "#FF0033");
private static final BooleanSetting DEPRECATED_DISABLE_SUGGESTED_VIDEO_END_SCREEN = new BooleanSetting("revanced_disable_suggested_video_end_screen", FALSE);
private static final BooleanSetting DEPRECATED_RESTORE_OLD_VIDEO_QUALITY_MENU = new BooleanSetting("revanced_restore_old_video_quality_menu", TRUE);
private static final BooleanSetting DEPRECATED_AUTO_CAPTIONS = new BooleanSetting("revanced_auto_captions", FALSE);
- public static final FloatSetting DEPRECATED_SB_CATEGORY_SPONSOR_OPACITY = new FloatSetting("sb_sponsor_opacity", 0.8f, false, false);
- public static final FloatSetting DEPRECATED_SB_CATEGORY_SELF_PROMO_OPACITY = new FloatSetting("sb_selfpromo_opacity", 0.8f, false, false);
- public static final FloatSetting DEPRECATED_SB_CATEGORY_INTERACTION_OPACITY = new FloatSetting("sb_interaction_opacity", 0.8f, false, false);
- public static final FloatSetting DEPRECATED_SB_CATEGORY_HIGHLIGHT_OPACITY = new FloatSetting("sb_highlight_opacity", 0.8f, false, false);
- public static final FloatSetting DEPRECATED_SB_CATEGORY_HOOK_OPACITY = new FloatSetting("sb_hook_opacity", 0.8f, false, false);
- public static final FloatSetting DEPRECATED_SB_CATEGORY_INTRO_OPACITY = new FloatSetting("sb_intro_opacity", 0.8f, false, false);
- public static final FloatSetting DEPRECATED_SB_CATEGORY_OUTRO_OPACITY = new FloatSetting("sb_outro_opacity", 0.8f, false, false);
- public static final FloatSetting DEPRECATED_SB_CATEGORY_PREVIEW_OPACITY = new FloatSetting("sb_preview_opacity", 0.8f, false, false);
- public static final FloatSetting DEPRECATED_SB_CATEGORY_FILLER_OPACITY = new FloatSetting("sb_filler_opacity", 0.8f, false, false);
- public static final FloatSetting DEPRECATED_SB_CATEGORY_MUSIC_OFFTOPIC_OPACITY = new FloatSetting("sb_music_offtopic_opacity", 0.8f, false, false);
+ private static final FloatSetting DEPRECATED_SB_CATEGORY_SPONSOR_OPACITY = new FloatSetting("sb_sponsor_opacity", 0.8f, false, false);
+ private static final FloatSetting DEPRECATED_SB_CATEGORY_SELF_PROMO_OPACITY = new FloatSetting("sb_selfpromo_opacity", 0.8f, false, false);
+ private static final FloatSetting DEPRECATED_SB_CATEGORY_INTERACTION_OPACITY = new FloatSetting("sb_interaction_opacity", 0.8f, false, false);
+ private static final FloatSetting DEPRECATED_SB_CATEGORY_HIGHLIGHT_OPACITY = new FloatSetting("sb_highlight_opacity", 0.8f, false, false);
+ private static final FloatSetting DEPRECATED_SB_CATEGORY_HOOK_OPACITY = new FloatSetting("sb_hook_opacity", 0.8f, false, false);
+ private static final FloatSetting DEPRECATED_SB_CATEGORY_INTRO_OPACITY = new FloatSetting("sb_intro_opacity", 0.8f, false, false);
+ private static final FloatSetting DEPRECATED_SB_CATEGORY_OUTRO_OPACITY = new FloatSetting("sb_outro_opacity", 0.8f, false, false);
+ private static final FloatSetting DEPRECATED_SB_CATEGORY_PREVIEW_OPACITY = new FloatSetting("sb_preview_opacity", 0.8f, false, false);
+ private static final FloatSetting DEPRECATED_SB_CATEGORY_FILLER_OPACITY = new FloatSetting("sb_filler_opacity", 0.8f, false, false);
+ private static final FloatSetting DEPRECATED_SB_CATEGORY_MUSIC_OFFTOPIC_OPACITY = new FloatSetting("sb_music_offtopic_opacity", 0.8f, false, false);
static {
// region Migration
+ migrateOldSettingToNew(DEPRECATED_AUTO_REPEAT, LOOP_VIDEO);
migrateOldSettingToNew(DEPRECATED_HIDE_PLAYER_BUTTONS, HIDE_PLAYER_PREVIOUS_NEXT_BUTTONS);
migrateOldSettingToNew(DEPRECATED_HIDE_PLAYER_FLYOUT_VIDEO_QUALITY_FOOTER, HIDE_PLAYER_FLYOUT_VIDEO_QUALITY_FOOTER);
migrateOldSettingToNew(DEPRECATED_DISABLE_SUGGESTED_VIDEO_END_SCREEN, HIDE_END_SCREEN_SUGGESTED_VIDEO);
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/videoplayer/LoopVideoButton.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/videoplayer/LoopVideoButton.java
new file mode 100644
index 000000000..068ede3d2
--- /dev/null
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/videoplayer/LoopVideoButton.java
@@ -0,0 +1,83 @@
+package app.revanced.extension.youtube.videoplayer;
+
+import static app.revanced.extension.shared.StringRef.str;
+
+import android.view.View;
+import androidx.annotation.Nullable;
+import app.revanced.extension.shared.Logger;
+import app.revanced.extension.shared.Utils;
+import app.revanced.extension.youtube.settings.Settings;
+
+@SuppressWarnings("unused")
+public class LoopVideoButton {
+ @Nullable
+ private static PlayerControlButton instance;
+
+ private static final int LOOP_VIDEO_ON = Utils.getResourceIdentifierOrThrow(
+ "revanced_loop_video_button_on", "drawable");
+ private static final int LOOP_VIDEO_OFF = Utils.getResourceIdentifierOrThrow(
+ "revanced_loop_video_button_off", "drawable");
+
+ /**
+ * Injection point.
+ */
+ public static void initializeButton(View controlsView) {
+ try {
+ instance = new PlayerControlButton(
+ controlsView,
+ "revanced_loop_video_button",
+ null,
+ Settings.LOOP_VIDEO_BUTTON::get,
+ v -> updateButtonAppearance(),
+ null
+ );
+ } catch (Exception ex) {
+ Logger.printException(() -> "initializeButton failure", ex);
+ }
+ }
+
+ /**
+ * injection point.
+ */
+ public static void setVisibilityNegatedImmediate() {
+ if (instance != null) instance.setVisibilityNegatedImmediate();
+ }
+
+ /**
+ * injection point.
+ */
+ public static void setVisibilityImmediate(boolean visible) {
+ if (instance != null) instance.setVisibilityImmediate(visible);
+ }
+
+ /**
+ * injection point.
+ */
+ public static void setVisibility(boolean visible, boolean animated) {
+ if (instance != null) instance.setVisibility(visible, animated);
+ }
+
+ /**
+ * Updates the button's appearance.
+ */
+ private static void updateButtonAppearance() {
+ if (instance == null) return;
+
+ try {
+ Utils.verifyOnMainThread();
+
+ final boolean currentState = Settings.LOOP_VIDEO.get();
+ final boolean newState = !currentState;
+ Settings.LOOP_VIDEO.save(newState);
+
+ instance.setIcon(newState
+ ? LOOP_VIDEO_ON
+ : LOOP_VIDEO_OFF);
+ Utils.showToastShort(str(newState
+ ? "revanced_loop_video_button_toast_on"
+ : "revanced_loop_video_button_toast_off"));
+ } catch (Exception ex) {
+ Logger.printException(() -> "updateButtonAppearance failure", ex);
+ }
+ }
+}
diff --git a/patches/api/patches.api b/patches/api/patches.api
index 76a7225f6..a54506b97 100644
--- a/patches/api/patches.api
+++ b/patches/api/patches.api
@@ -1610,6 +1610,10 @@ public final class app/revanced/patches/youtube/misc/litho/filter/LithoFilterPat
public static final fun getLithoFilterPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
+public final class app/revanced/patches/youtube/misc/loopvideo/LoopVideoPatchKt {
+ public static final fun getLoopVideoPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
+}
+
public final class app/revanced/patches/youtube/misc/navigation/NavigationBarHookPatchKt {
public static field hookNavigationButtonCreated Lkotlin/jvm/functions/Function1;
public static final fun getHookNavigationButtonCreated ()Lkotlin/jvm/functions/Function1;
diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/player/fullscreen/ExitFullscreenPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/player/fullscreen/ExitFullscreenPatch.kt
index 148427a95..f60b0354a 100644
--- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/player/fullscreen/ExitFullscreenPatch.kt
+++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/player/fullscreen/ExitFullscreenPatch.kt
@@ -9,8 +9,8 @@ import app.revanced.patches.youtube.misc.playercontrols.playerControlsPatch
import app.revanced.patches.youtube.misc.playertype.playerTypeHookPatch
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
import app.revanced.patches.youtube.misc.settings.settingsPatch
-import app.revanced.patches.youtube.shared.autoRepeatFingerprint
-import app.revanced.patches.youtube.shared.autoRepeatParentFingerprint
+import app.revanced.patches.youtube.shared.loopVideoFingerprint
+import app.revanced.patches.youtube.shared.loopVideoParentFingerprint
import app.revanced.util.addInstructionsAtControlFlowLabel
@Suppress("unused")
@@ -50,7 +50,7 @@ internal val exitFullscreenPatch = bytecodePatch(
ListPreference("revanced_exit_fullscreen")
)
- autoRepeatFingerprint.match(autoRepeatParentFingerprint.originalClassDef).method.apply {
+ loopVideoFingerprint.match(loopVideoParentFingerprint.originalClassDef).method.apply {
addInstructionsAtControlFlowLabel(
implementation!!.instructions.lastIndex,
"invoke-static {}, $EXTENSION_CLASS_DESCRIPTOR->endOfVideoReached()V",
diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/autorepeat/AutoRepeatPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/autorepeat/AutoRepeatPatch.kt
index 324006c05..655f6d176 100644
--- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/autorepeat/AutoRepeatPatch.kt
+++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/autorepeat/AutoRepeatPatch.kt
@@ -1,62 +1,9 @@
package app.revanced.patches.youtube.misc.autorepeat
-import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
-import app.revanced.patcher.extensions.InstructionExtensions.instructions
-import app.revanced.patcher.extensions.InstructionExtensions.removeInstruction
import app.revanced.patcher.patch.bytecodePatch
-import app.revanced.patches.all.misc.resources.addResources
-import app.revanced.patches.all.misc.resources.addResourcesPatch
-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.shared.autoRepeatFingerprint
-import app.revanced.patches.youtube.shared.autoRepeatParentFingerprint
+import app.revanced.patches.youtube.misc.loopvideo.loopVideoPatch
-// TODO: Rename this patch to AlwaysRepeatPatch (as well as strings and references in the extension).
-val autoRepeatPatch = bytecodePatch(
- name = "Always repeat",
- description = "Adds an option to always repeat videos when they end.",
-) {
- dependsOn(
- sharedExtensionPatch,
- addResourcesPatch,
- )
-
- compatibleWith(
- "com.google.android.youtube"(
- "19.34.42",
- "19.43.41",
- "20.07.39",
- "20.13.41",
- "20.14.43",
- )
- )
-
- execute {
- addResources("youtube", "misc.autorepeat.autoRepeatPatch")
-
- PreferenceScreen.MISC.addPreferences(
- SwitchPreference("revanced_auto_repeat"),
- )
-
- autoRepeatFingerprint.match(autoRepeatParentFingerprint.originalClassDef).method.apply {
- val playMethod = autoRepeatParentFingerprint.method
- val index = instructions.lastIndex
-
- // Remove return-void.
- removeInstruction(index)
- // Add own instructions there.
- addInstructionsWithLabels(
- index,
- """
- invoke-static {}, Lapp/revanced/extension/youtube/patches/AutoRepeatPatch;->shouldAutoRepeat()Z
- move-result v0
- if-eqz v0, :noautorepeat
- invoke-virtual { p0 }, $playMethod
- :noautorepeat
- return-void
- """,
- )
- }
- }
+@Deprecated("Patch was renamed", ReplaceWith("looVideoPatch"))
+val autoRepeatPatch = bytecodePatch {
+ dependsOn(loopVideoPatch)
}
diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/loopvideo/LoopVideoPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/loopvideo/LoopVideoPatch.kt
new file mode 100644
index 000000000..2aebe318f
--- /dev/null
+++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/loopvideo/LoopVideoPatch.kt
@@ -0,0 +1,62 @@
+package app.revanced.patches.youtube.misc.loopvideo
+
+import app.revanced.patcher.patch.bytecodePatch
+import app.revanced.patches.all.misc.resources.addResources
+import app.revanced.patches.all.misc.resources.addResourcesPatch
+import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
+import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
+import app.revanced.patches.youtube.misc.loopvideo.button.loopVideoButtonPatch
+import app.revanced.patches.youtube.misc.settings.PreferenceScreen
+import app.revanced.patches.youtube.shared.loopVideoFingerprint
+import app.revanced.patches.youtube.shared.loopVideoParentFingerprint
+import app.revanced.util.addInstructionsAtControlFlowLabel
+import app.revanced.util.indexOfFirstInstructionReversedOrThrow
+import com.android.tools.smali.dexlib2.Opcode
+
+private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/youtube/patches/LoopVideoPatch;"
+
+val loopVideoPatch = bytecodePatch(
+ name = "Loop video",
+ description = "Adds an option to loop videos and display loop video button in the video player.",
+) {
+ dependsOn(
+ sharedExtensionPatch,
+ addResourcesPatch,
+ loopVideoButtonPatch
+ )
+
+ compatibleWith(
+ "com.google.android.youtube"(
+ "19.34.42",
+ "19.43.41",
+ "20.07.39",
+ "20.13.41",
+ "20.14.43",
+ )
+ )
+
+ execute {
+ addResources("youtube", "misc.loopvideo.loopVideoPatch")
+
+ PreferenceScreen.MISC.addPreferences(
+ SwitchPreference("revanced_loop_video"),
+ )
+
+ loopVideoFingerprint.match(loopVideoParentFingerprint.originalClassDef).method.apply {
+ val playMethod = loopVideoParentFingerprint.method
+ val insertIndex = indexOfFirstInstructionReversedOrThrow(Opcode.RETURN_VOID)
+
+ addInstructionsAtControlFlowLabel(
+ insertIndex,
+ """
+ invoke-static {}, $EXTENSION_CLASS_DESCRIPTOR->shouldLoopVideo()Z
+ move-result v0
+ if-eqz v0, :do_not_loop
+ invoke-virtual { p0 }, $playMethod
+ :do_not_loop
+ nop
+ """
+ )
+ }
+ }
+}
diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/loopvideo/button/LoopVideoButtonPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/loopvideo/button/LoopVideoButtonPatch.kt
new file mode 100644
index 000000000..0c3b9dc68
--- /dev/null
+++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/loopvideo/button/LoopVideoButtonPatch.kt
@@ -0,0 +1,57 @@
+package app.revanced.patches.youtube.misc.loopvideo.button
+
+import app.revanced.patcher.patch.bytecodePatch
+import app.revanced.patcher.patch.resourcePatch
+import app.revanced.patches.all.misc.resources.addResources
+import app.revanced.patches.all.misc.resources.addResourcesPatch
+import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
+import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
+import app.revanced.patches.youtube.misc.playercontrols.*
+import app.revanced.patches.youtube.misc.settings.PreferenceScreen
+import app.revanced.patches.youtube.misc.settings.settingsPatch
+import app.revanced.util.ResourceGroup
+import app.revanced.util.copyResources
+
+private val loopVideoButtonResourcePatch = resourcePatch {
+ dependsOn(playerControlsResourcePatch)
+
+ execute {
+ copyResources(
+ "loopvideobutton",
+ ResourceGroup(
+ "drawable",
+ "revanced_loop_video_button_on.xml",
+ "revanced_loop_video_button_off.xml"
+ )
+ )
+
+ addBottomControl("loopvideobutton")
+ }
+}
+
+private const val LOOP_VIDEO_BUTTON_CLASS_DESCRIPTOR =
+ "Lapp/revanced/extension/youtube/videoplayer/LoopVideoButton;"
+
+internal val loopVideoButtonPatch = bytecodePatch(
+ description = "Adds the option to display loop video button in the video player.",
+) {
+ dependsOn(
+ sharedExtensionPatch,
+ settingsPatch,
+ addResourcesPatch,
+ loopVideoButtonResourcePatch,
+ playerControlsPatch,
+ )
+
+ execute {
+ addResources("youtube", "misc.loopvideo.button.loopVideoButtonPatch")
+
+ PreferenceScreen.PLAYER.addPreferences(
+ SwitchPreference("revanced_loop_video_button"),
+ )
+
+ // Initialize the button using standard approach.
+ initializeBottomControl(LOOP_VIDEO_BUTTON_CLASS_DESCRIPTOR)
+ injectVisibilityCheckCall(LOOP_VIDEO_BUTTON_CLASS_DESCRIPTOR)
+ }
+}
diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/shared/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/shared/Fingerprints.kt
index 6fc138fc5..44c212e6f 100644
--- a/patches/src/main/kotlin/app/revanced/patches/youtube/shared/Fingerprints.kt
+++ b/patches/src/main/kotlin/app/revanced/patches/youtube/shared/Fingerprints.kt
@@ -21,7 +21,10 @@ internal val conversionContextFingerprintToString = fingerprint {
}
}
-internal val autoRepeatFingerprint = fingerprint {
+/**
+ * Resolves to class found in [loopVideoParentFingerprint].
+ */
+internal val loopVideoFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returns("V")
parameters()
@@ -30,7 +33,7 @@ internal val autoRepeatFingerprint = fingerprint {
}
}
-internal val autoRepeatParentFingerprint = fingerprint {
+internal val loopVideoParentFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returns("V")
strings(
diff --git a/patches/src/main/resources/addresources/values/strings.xml b/patches/src/main/resources/addresources/values/strings.xml
index 531f6b115..4a02b6351 100644
--- a/patches/src/main/resources/addresources/values/strings.xml
+++ b/patches/src/main/resources/addresources/values/strings.xml
@@ -1526,10 +1526,17 @@ Tap here to learn more about DeArrow"
Your watch history is not being saved.<br><br>This most likely is caused by a DNS ad blocker or network proxy.<br><br>To fix this, whitelist <b>s.youtube.com</b> or turn off all DNS blockers and proxies.
Do not show again
-
- Enable auto-repeat
- Auto-repeat is enabled
- Auto-repeat is disabled
+
+ Enable loop video
+ Video will loop
+ Video will not loop
+
+
+ Show loop video button
+ Button is shown
+ Button is not shown
+ Loop video is on
+ Loop video is off
Spoof device dimensions
diff --git a/patches/src/main/resources/loopvideobutton/drawable/revanced_loop_video_button_off.xml b/patches/src/main/resources/loopvideobutton/drawable/revanced_loop_video_button_off.xml
new file mode 100644
index 000000000..e6c5fad66
--- /dev/null
+++ b/patches/src/main/resources/loopvideobutton/drawable/revanced_loop_video_button_off.xml
@@ -0,0 +1,11 @@
+
+
+
diff --git a/patches/src/main/resources/loopvideobutton/drawable/revanced_loop_video_button_on.xml b/patches/src/main/resources/loopvideobutton/drawable/revanced_loop_video_button_on.xml
new file mode 100644
index 000000000..f877626ed
--- /dev/null
+++ b/patches/src/main/resources/loopvideobutton/drawable/revanced_loop_video_button_on.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/patches/src/main/resources/loopvideobutton/host/layout/youtube_controls_bottom_ui_container.xml b/patches/src/main/resources/loopvideobutton/host/layout/youtube_controls_bottom_ui_container.xml
new file mode 100644
index 000000000..bcd7def9e
--- /dev/null
+++ b/patches/src/main/resources/loopvideobutton/host/layout/youtube_controls_bottom_ui_container.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
From 772df6eb7303ea0ed49ccad5a6289cc43bacb164 Mon Sep 17 00:00:00 2001
From: semantic-release-bot
Date: Mon, 22 Sep 2025 08:57:43 +0000
Subject: [PATCH 2/5] chore: Release v5.41.0-dev.3 [skip ci]
# [5.41.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.41.0-dev.2...v5.41.0-dev.3) (2025-09-22)
### Features
* **YouTube - Loop video:** Add player button to change loop video state ([#5961](https://github.com/ReVanced/revanced-patches/issues/5961)) ([dfb5407](https://github.com/ReVanced/revanced-patches/commit/dfb5407e67222e80e23c8935e04b6dbf1a43d757))
---
CHANGELOG.md | 7 +++++++
gradle.properties | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 440982f6d..571d97d9a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+# [5.41.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.41.0-dev.2...v5.41.0-dev.3) (2025-09-22)
+
+
+### Features
+
+* **YouTube - Loop video:** Add player button to change loop video state ([#5961](https://github.com/ReVanced/revanced-patches/issues/5961)) ([dfb5407](https://github.com/ReVanced/revanced-patches/commit/dfb5407e67222e80e23c8935e04b6dbf1a43d757))
+
# [5.41.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.41.0-dev.1...v5.41.0-dev.2) (2025-09-21)
diff --git a/gradle.properties b/gradle.properties
index 6a49cce09..3ef41a012 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M
org.gradle.parallel = true
android.useAndroidX = true
kotlin.code.style = official
-version = 5.41.0-dev.2
+version = 5.41.0-dev.3
From c72d99518cfb94a9f82145bdfaf2533a32df0360 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Mon, 22 Sep 2025 13:32:12 +0400
Subject: [PATCH 3/5] chore: Sync translations (#5968)
---
.../addresources/values-af-rZA/strings.xml | 4 +-
.../addresources/values-am-rET/strings.xml | 4 +-
.../addresources/values-ar-rSA/strings.xml | 19 +-
.../addresources/values-as-rIN/strings.xml | 4 +-
.../addresources/values-az-rAZ/strings.xml | 25 +-
.../addresources/values-be-rBY/strings.xml | 23 +-
.../addresources/values-bg-rBG/strings.xml | 19 +-
.../addresources/values-bn-rBD/strings.xml | 19 +-
.../addresources/values-bs-rBA/strings.xml | 4 +-
.../addresources/values-ca-rES/strings.xml | 4 +-
.../addresources/values-cs-rCZ/strings.xml | 19 +-
.../addresources/values-da-rDK/strings.xml | 381 +++++++++---------
.../addresources/values-de-rDE/strings.xml | 19 +-
.../addresources/values-el-rGR/strings.xml | 25 +-
.../addresources/values-es-rES/strings.xml | 19 +-
.../addresources/values-et-rEE/strings.xml | 19 +-
.../addresources/values-eu-rES/strings.xml | 4 +-
.../addresources/values-fa-rIR/strings.xml | 4 +-
.../addresources/values-fi-rFI/strings.xml | 19 +-
.../addresources/values-fil-rPH/strings.xml | 19 +-
.../addresources/values-fr-rFR/strings.xml | 35 +-
.../addresources/values-ga-rIE/strings.xml | 19 +-
.../addresources/values-gl-rES/strings.xml | 4 +-
.../addresources/values-gu-rIN/strings.xml | 4 +-
.../addresources/values-hi-rIN/strings.xml | 4 +-
.../addresources/values-hr-rHR/strings.xml | 366 ++++++++---------
.../addresources/values-hu-rHU/strings.xml | 21 +-
.../addresources/values-hy-rAM/strings.xml | 19 +-
.../addresources/values-in-rID/strings.xml | 19 +-
.../addresources/values-is-rIS/strings.xml | 4 +-
.../addresources/values-it-rIT/strings.xml | 19 +-
.../addresources/values-iw-rIL/strings.xml | 19 +-
.../addresources/values-ja-rJP/strings.xml | 47 ++-
.../addresources/values-ka-rGE/strings.xml | 4 +-
.../addresources/values-kk-rKZ/strings.xml | 4 +-
.../addresources/values-km-rKH/strings.xml | 4 +-
.../addresources/values-kn-rIN/strings.xml | 4 +-
.../addresources/values-ko-rKR/strings.xml | 25 +-
.../addresources/values-ky-rKG/strings.xml | 4 +-
.../addresources/values-lo-rLA/strings.xml | 4 +-
.../addresources/values-lt-rLT/strings.xml | 19 +-
.../addresources/values-lv-rLV/strings.xml | 19 +-
.../addresources/values-mk-rMK/strings.xml | 4 +-
.../addresources/values-ml-rIN/strings.xml | 4 +-
.../addresources/values-mn-rMN/strings.xml | 4 +-
.../addresources/values-mr-rIN/strings.xml | 4 +-
.../addresources/values-ms-rMY/strings.xml | 4 +-
.../addresources/values-my-rMM/strings.xml | 4 +-
.../addresources/values-nb-rNO/strings.xml | 4 +-
.../addresources/values-ne-rIN/strings.xml | 4 +-
.../addresources/values-nl-rNL/strings.xml | 19 +-
.../addresources/values-or-rIN/strings.xml | 4 +-
.../addresources/values-pa-rIN/strings.xml | 4 +-
.../addresources/values-pl-rPL/strings.xml | 19 +-
.../addresources/values-pt-rBR/strings.xml | 19 +-
.../addresources/values-pt-rPT/strings.xml | 19 +-
.../addresources/values-ro-rRO/strings.xml | 19 +-
.../addresources/values-ru-rRU/strings.xml | 19 +-
.../addresources/values-si-rLK/strings.xml | 4 +-
.../addresources/values-sk-rSK/strings.xml | 19 +-
.../addresources/values-sl-rSI/strings.xml | 19 +-
.../addresources/values-sq-rAL/strings.xml | 19 +-
.../addresources/values-sr-rCS/strings.xml | 31 +-
.../addresources/values-sr-rSP/strings.xml | 31 +-
.../addresources/values-sv-rSE/strings.xml | 19 +-
.../addresources/values-sw-rKE/strings.xml | 4 +-
.../addresources/values-ta-rIN/strings.xml | 4 +-
.../addresources/values-te-rIN/strings.xml | 4 +-
.../addresources/values-th-rTH/strings.xml | 19 +-
.../addresources/values-tr-rTR/strings.xml | 21 +-
.../addresources/values-uk-rUA/strings.xml | 19 +-
.../addresources/values-ur-rIN/strings.xml | 4 +-
.../addresources/values-uz-rUZ/strings.xml | 4 +-
.../addresources/values-vi-rVN/strings.xml | 19 +-
.../addresources/values-zh-rCN/strings.xml | 19 +-
.../addresources/values-zh-rTW/strings.xml | 19 +-
.../addresources/values-zu-rZA/strings.xml | 4 +-
77 files changed, 1103 insertions(+), 653 deletions(-)
diff --git a/patches/src/main/resources/addresources/values-af-rZA/strings.xml b/patches/src/main/resources/addresources/values-af-rZA/strings.xml
index 392858935..67bf7dc15 100644
--- a/patches/src/main/resources/addresources/values-af-rZA/strings.xml
+++ b/patches/src/main/resources/addresources/values-af-rZA/strings.xml
@@ -211,7 +211,9 @@ Second \"item\" text"
-
+
+
+
diff --git a/patches/src/main/resources/addresources/values-am-rET/strings.xml b/patches/src/main/resources/addresources/values-am-rET/strings.xml
index 392858935..67bf7dc15 100644
--- a/patches/src/main/resources/addresources/values-am-rET/strings.xml
+++ b/patches/src/main/resources/addresources/values-am-rET/strings.xml
@@ -211,7 +211,9 @@ Second \"item\" text"
-
+
+
+
diff --git a/patches/src/main/resources/addresources/values-ar-rSA/strings.xml b/patches/src/main/resources/addresources/values-ar-rSA/strings.xml
index 6f436afa0..b8007fb80 100644
--- a/patches/src/main/resources/addresources/values-ar-rSA/strings.xml
+++ b/patches/src/main/resources/addresources/values-ar-rSA/strings.xml
@@ -1447,10 +1447,17 @@ Second \"item\" text"
لم يتم حفظ سجل المشاهدة الخاص بك.<br><br>من المرجح أن يكون السبب في ذلك هو مانع إعلانات DNS أو وكيل الشبكة.<br><br>لإصلاح هذه المشكلة، قم بإضافة <b>s.youtube.com</b> إلى القائمة البيضاء أو قم بإيقاف تشغيل جميع أدوات حظر DNS ووكلاء البروكسي.
لا تعرض مرة أخرى
-
- تمكين التكرار التلقائي
- تم تمكين التكرار التلقائي
- تم تعطيل التكرار التلقائي
+
+ تفعيل تكرار الفيديو
+ سيتم تكرار الفيديو
+ لن يتم تكرار الفيديو
+
+
+ إظهار زر تكرار الفيديو
+ الزر ظاهر
+ الزر غير ظاهر
+ تكرار الفيديو قيد التشغيل
+ تكرار الفيديو متوقف
محاكاة أبعاد الجهاز
@@ -1571,9 +1578,11 @@ Second \"item\" text"
الآثار الجانبية للتزوير
- • قد يتوقف الفيديو عند 1:00، أو قد لا يكون متاحًا في بعض المناطق
• عميل تجريبي وقد يتوقف عن العمل في أي وقت
+ • قد يتوقف الفيديو عند 1:00، أو قد لا يكون متاحًا في بعض المناطق
+ • قائمة المسارات الصوتية مفقودة
• لا يوجد ترميز الفيديو AV1
+ • مستوى الصوت الثابت غير متاح
• قد لا يتم تشغيل الفيديوهات المخصصة للأطفال عند تسجيل الخروج أو عند استخدام وضع التصفح المتخفي
• فرض الصوت الأصلي غير متاح
diff --git a/patches/src/main/resources/addresources/values-as-rIN/strings.xml b/patches/src/main/resources/addresources/values-as-rIN/strings.xml
index d373510c7..b7bd0667b 100644
--- a/patches/src/main/resources/addresources/values-as-rIN/strings.xml
+++ b/patches/src/main/resources/addresources/values-as-rIN/strings.xml
@@ -213,7 +213,9 @@ Second \"item\" text"
সকীয়নি
-
+
+
+
diff --git a/patches/src/main/resources/addresources/values-az-rAZ/strings.xml b/patches/src/main/resources/addresources/values-az-rAZ/strings.xml
index 6c88288e5..501261d63 100644
--- a/patches/src/main/resources/addresources/values-az-rAZ/strings.xml
+++ b/patches/src/main/resources/addresources/values-az-rAZ/strings.xml
@@ -144,9 +144,9 @@ Gözlənilməz hallardan xəbərdar olmayacaqsınız."
İzləmə sorğusu faktorun sil
İzləmə sorğusu faktoru bağlantılardan silinir
İzləmə sorğusu faktoru bağlantılardan silinmir
- Paylaşma keçidlərini youtube.com olaraq dəyişdirin
- Paylaşılan keçidlər youtube.com-dan istifadə edir
- Paylaşılan keçidlər music.youtube.com-dan istifadə edir
+ Paylaşma keçidlərini youtube.com-a dəyişdir
+ Paylaşılan keçidlər youtube.com istifadə edir
+ Paylaşılan keçidlər music.youtube.com istifadə edir
@@ -1446,10 +1446,17 @@ DeArrow haqqında ətraflı öyrənmək üçün bura toxun"
Baxış tarixçəniz saxlanmır.<br><br>Bu çox güman ki, DNS reklam bloklayıcı və ya şəbəkə proksisinə görədir.<br><br>.Bunu düzəltmək üçün s.youtube.com-u</b> <b>ağ siyahıya salın və ya bütün DNS bloklayıcıları və proksiləri bağlayın.
Təkrar göstərmə
-
- Avto-təkrarlamanı aktivləşdir
- Avtomatik təkrar aktivləşdirilib
- Avtomatik təkrarlama qeyri-aktiv edilib
+
+ Döngü videosunu aktivləşdir
+ Video döngüyə alınacaq
+ Video döngüyə alınmayacaq
+
+
+ Döngü videosu düyməsini göstər
+ Düymə görünür
+ Düymə görünmür
+ Video döngüsü aktivdir
+ Video döngüsü passivdir
Cihaz ölçülərini saxtalaşdır
@@ -1570,9 +1577,11 @@ Bunu aktivləşdirmə daha yüksək video keyfiyyətləri əngəlin silə bilər
Saxtakarlıq yan təsirləri
- • Video 01:00-da dayana bilər və ya bəzi bölgələrdə mövcud olmaya bilər
• Təcrübi qəbuledici və hər vaxt işləməyi dayandıra bilər
+ • Video 01:00-da dayana bilər və ya bəzi bölgələrdə mövcud olmaya bilər
+ • Səs treki menyusu çatışmır
• AV1 video kodlayıcı yoxdur
+ • Sabit səs yoxdur
• Giriş edilməyəndə və ya gizli rejimdə uşaq videoları oynadıla bilməz
• \"Orijinal səsi zorla\" əlçatmazdır
diff --git a/patches/src/main/resources/addresources/values-be-rBY/strings.xml b/patches/src/main/resources/addresources/values-be-rBY/strings.xml
index fa3028296..47d9bd63f 100644
--- a/patches/src/main/resources/addresources/values-be-rBY/strings.xml
+++ b/patches/src/main/resources/addresources/values-be-rBY/strings.xml
@@ -67,7 +67,9 @@ Second \"item\" text"
Значкі налад паказваюцца
Значкі налад не паказваюцца
Мова ReVanced
- "Пераклады для некаторых моў могуць адсутнічаць або быць няпоўнымі.\n\nКаб перакласці новыя мовы або палепшыць існуючыя пераклады, наведайце translate.revanced.app"
+ "Пераклады для некаторых моў могуць адсутнічаць або быць няпоўнымі.
+
+Каб перакласці новыя мовы або палепшыць існуючыя пераклады, наведайце translate.revanced.app"
Мова праграмы
Імпарт / Экспарт
Імпарт / Экспарт налад ReVanced
@@ -1446,10 +1448,17 @@ Second \"item\" text"
Ваша гісторыя прагляду не захоўваецца.<br><br>Гэта, хутчэй за ўсё, выклікана DNS-блакіроўшчыкам рэкламы або сеткавым праксі.<br><br>Каб выправіць гэта, дадайце <b>s.youtube.com</b> у белы спіс або адключыце ўсе DNS-блакіроўшчыкі і праксі.
Больш не паказваць
-
- Уключыць аўтаматычны паўтор
- Аўтаматычны паўтор уключаны
- Аўтаматычны паўтор адключаны
+
+ Уключыць зацыкленае відэа
+ Відэа будзе зацыклена
+ Відэа не будзе зацыклена
+
+
+ Паказаць кнопку зацыклення відэа
+ Кнопка паказана
+ Кнопка не паказваецца
+ Зацыкленне відэа ўключана
+ Зацыкленне відэа выключана
Памеры падманнага прылады
@@ -1570,9 +1579,11 @@ Second \"item\" text"
Пабочныя эфекты падробкі
- • Відэа можа спыніцца на 1:00, ці можа быць недаступным у некаторых рэгіёнах
• Эксперыментальны кліент і можа спыніць працу ў любы час
+ • Відэа можа спыніцца на 1:00, ці можа быць недаступным у некаторых рэгіёнах
+ • Меню аўдыядарожкі адсутнічае
• Няма відэакідавання AV1
+ • Стабільная гучнасць недаступная
• Дзіцячыя відэа могуць не прайгравацца ў стане выхаду з акаўнта або ў рэжыме інкогніта
• Прымусовы арыгінальны аўдыё недаступны
diff --git a/patches/src/main/resources/addresources/values-bg-rBG/strings.xml b/patches/src/main/resources/addresources/values-bg-rBG/strings.xml
index 8655f9d47..a99f44658 100644
--- a/patches/src/main/resources/addresources/values-bg-rBG/strings.xml
+++ b/patches/src/main/resources/addresources/values-bg-rBG/strings.xml
@@ -1447,10 +1447,17 @@ Second \"item\" text"
Историята ви на гледане не се запазва.<br><br>Това най-вероятно е причинено от DNS блокиращ реклами или мрежов прокси.<br><br>За да коригирате това, поставете <b>s.youtube в белия списък.com</b> или изключете всички DNS блокери и проксита.
Не показвай отново
-
- Автоматично повтаряне на текущия видеоклип
- Включено автоматично повтаряне на текущия видеоклип
- Изключено автоматично повтаряне на текущия видеоклип
+
+ Активиране на повторение на видеото
+ Видеоклипът ще се повтаря
+ Видеоклипът няма да се повтаря
+
+
+ Показване на бутона за повторение на видеото
+ Бутонът е показан
+ Бутонът не е показан
+ Повторението на видеото е включено
+ Повторението на видеото е изключено
Лъжливи параметри на устройството
@@ -1571,9 +1578,11 @@ Second \"item\" text"
Странични ефекти от подменянето
- • Видеото може да спре на 1:00 или може да не е налично в някои региони
• Експериментален клиент и може да спре да работи по всяко време
+ • Видеото може да спре на 1:00 или може да не е налично в някои региони
+ • Менюто за аудиозаписи липсва
• Без AV1 видео кодек
+ • Стабилният звук не е наличен
• Детските видеоклипове може да не се възпроизвеждат, когато сте излезли от профила си или в режим \"инкогнито\"
• Принудителният оригинален звук не е наличен
diff --git a/patches/src/main/resources/addresources/values-bn-rBD/strings.xml b/patches/src/main/resources/addresources/values-bn-rBD/strings.xml
index 86bf1b625..4a3c4df2d 100644
--- a/patches/src/main/resources/addresources/values-bn-rBD/strings.xml
+++ b/patches/src/main/resources/addresources/values-bn-rBD/strings.xml
@@ -1443,10 +1443,17 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট
আপনার দেখার ইতিহাস সংরক্ষিত হচ্ছে না।<br><br>এটি সম্ভবত DNS অ্যাড ব্লকার অথবা নেটওয়ার্ক প্রক্সির কারণে।<br><br>এটি ঠিক করার জন্য, <b>s.youtube.com</b> সাদা তালিকাভুক্ত করুন অথবা সকল DNS ব্লকার এবং প্রক্সি বন্ধ করুন।
আবার দেখাবেন না
-
- স্বয়ংক্রিয়ভাবে-আবার দেখানো সক্রিয় করুন
- স্বয়ংক্রিয়ভাবে-আবার দেখানো সক্রিয় হয়েছে
- স্বয়ংক্রিয়ভাবে-আবার দেখানো সক্রিয় নিষ্ক্রিয় হয়েছে
+
+ লুপ ভিডিও সক্ষম করুন
+ ভিডিও লুপ হবে
+ ভিডিও লুপ হবে না
+
+
+ লুপ ভিডিও বোতাম দেখান
+ বোতামটি দেখানো হয়েছে
+ বোতামটি দেখানো হয়নি
+ লুপ ভিডিও চালু আছে
+ লুপ ভিডিও বন্ধ আছে
ডিভাইস ডাইমেনশন স্পুফ করুন
@@ -1567,9 +1574,11 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট
স্পুফিংয়ের পার্শ্বপ্রতিক্রিয়া
- • ভিডিও ১:০০ মিনিটে বন্ধ হতে পারে, অথবা কিছু অঞ্চলে উপলব্ধ নাও হতে পারে
• পরীক্ষামূলক ক্লায়েন্ট এবং যেকোনো সময় কাজ করা বন্ধ করতে পারে
+ • ভিডিও ১:০০ মিনিটে বন্ধ হতে পারে, অথবা কিছু অঞ্চলে উপলব্ধ নাও হতে পারে
+ • অডিও ট্র্যাক মেনু অনুপস্থিত
• কোনো AV1 ভিডিও কোডেক নেই
+ • স্থিতিশীল ভলিউম উপলব্ধ নেই
• লগআউট করা হলে বা ছদ্মবেশী মোডে বাচ্চাদের ভিডিও চলতে নাও পারে
• মূল অডিও জোরপূর্বক উপলব্ধ নেই
diff --git a/patches/src/main/resources/addresources/values-bs-rBA/strings.xml b/patches/src/main/resources/addresources/values-bs-rBA/strings.xml
index 392858935..67bf7dc15 100644
--- a/patches/src/main/resources/addresources/values-bs-rBA/strings.xml
+++ b/patches/src/main/resources/addresources/values-bs-rBA/strings.xml
@@ -211,7 +211,9 @@ Second \"item\" text"
-
+
+
+
diff --git a/patches/src/main/resources/addresources/values-ca-rES/strings.xml b/patches/src/main/resources/addresources/values-ca-rES/strings.xml
index 392858935..67bf7dc15 100644
--- a/patches/src/main/resources/addresources/values-ca-rES/strings.xml
+++ b/patches/src/main/resources/addresources/values-ca-rES/strings.xml
@@ -211,7 +211,9 @@ Second \"item\" text"
-
+
+
+
diff --git a/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml b/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml
index 3fff5642e..a92d22f3e 100644
--- a/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml
+++ b/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml
@@ -1447,10 +1447,17 @@ Klepnutím sem se dozvíte více o DeArrow"
Vaše historie sledování není ukládána.<br><br>Příčinou je s největší pravděpodobností DNS blokátor reklam nebo síťový proxy server.<br><br>Chcete-li to opravit, přidejte<b>s.youtube.com</b> na whitelist nebo vypněte všechny DNS blokátory a proxy servery.
Už nezobrazovat
-
- Povolit automatické opakování
- Automatické opakování je povoleno
- Automatické opakování je zakázáno
+
+ Povolit smyčku videa
+ Video se bude přehrávat ve smyčce
+ Video se nebude přehrávat ve smyčce
+
+
+ Zobrazit tlačítko pro smyčku videa
+ Tlačítko je zobrazeno
+ Tlačítko není zobrazeno
+ Smyčka videa je zapnuta
+ Smyčka videa je vypnuta
Napodobovat rozměry zařízení
@@ -1571,9 +1578,11 @@ Povolením této funkce lze odemknout vyšší kvality videa"
Vedlejší účinky maskování
- • Video se může zastavit v 1:00 nebo nemusí být dostupné v některých oblastech
• Experimentální klient a může kdykoli přestat fungovat
+ • Video se může zastavit v 1:00 nebo nemusí být dostupné v některých oblastech
+ • Chybí nabídka zvukových stop
• Žádný video kodek AV1
+ • Stabilní hlasitost není k dispozici
• Dětská videa se nemusí přehrávat, když jste odhlášení nebo v anonymním režimu
• Vynutit původní zvuk není k dispozici
diff --git a/patches/src/main/resources/addresources/values-da-rDK/strings.xml b/patches/src/main/resources/addresources/values-da-rDK/strings.xml
index 844ca517c..a7115e8a2 100644
--- a/patches/src/main/resources/addresources/values-da-rDK/strings.xml
+++ b/patches/src/main/resources/addresources/values-da-rDK/strings.xml
@@ -19,8 +19,8 @@ Second \"item\" text"
-->
-
-
+
+
Kontrol mislykkedes
Åbn officiel hjemmeside
Ignorer
@@ -30,8 +30,8 @@ Second \"item\" text"
Patched mere end 10 minutter siden
Patched for %s dage siden
APK byggedato er ødelagt
-
-
+
+
Indstillinger
Er du sikker på, at du vil fortsætte?
Nulstil
@@ -80,8 +80,8 @@ For at oversætte nye sprog eller forbedre de eksisterende oversættelser, besø
Officielle links
-
-
+
+
GmsCore Indstillinger
Indstillinger for GmsCore
@@ -99,8 +99,8 @@ Deaktivering af batterioptimeringer for MicroG vil ikke påvirke batteriforbruge
Tap på knappen Fortsæt, og tillad optimeringsændringer."
Fortsæt
-
-
+
+
Spoof videostreams
Spoof klienten video streams for at forhindre afspilning problemer
Simuler videostreams
@@ -114,8 +114,8 @@ Hvis du er en YouTube Premium-bruger, er denne indstilling muligvis ikke påkræ
Afspilning fungerer muligvis ikke"
Deaktivering af denne indstilling kan forårsage afspilningsproblemer.
Standard klient
-
-
+
+
Fejlfinding
Aktivér eller deaktiver fejlfindingsindstillinger
Fejlfindingslogning
@@ -139,18 +139,18 @@ Du modtager ikke notifikationer om uventede hændelser."
Ryd fejlsøgningslogfiler
Rydder alle gemte ReVanced-fejlsøgningslogfiler
Logfiler ryddet
-
-
+
+
Fjern sporingsforespørgselsparameter
Sporingsparameteren er fjernet fra links
Sporingsforespørgselsparameteren er ikke fjernet fra links
Skift delingslinks til youtube.com
Delte links bruger youtube.com
Delte links bruger music.youtube.com
-
-
-
-
+
+
+
+
Om
Annoncer
Alternative miniaturebilleder
@@ -164,13 +164,13 @@ Du modtager ikke notifikationer om uventede hændelser."
Gendan gamle indstillingsmenuer
Gamle indstillingsmenuer er vist
Gamle indstillingsmenuer er ikke vist
-
-
+
+
Deaktiver baggrundsafspilning af Shorts
Baggrundsafspilning af Shorts er deaktiveret
Baggrundsafspilning af Shorts er aktiveret
-
-
+
+
Logprotokolbuffer
Fejlfindingslogge inkluderer protobuffer
Fejlfindingslogge inkluderer ikke protobuffer
@@ -179,8 +179,8 @@ Du modtager ikke notifikationer om uventede hændelser."
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."
-
-
+
+
Skjul albumkort
Albumkort er skjult
Albumkort vises
@@ -427,8 +427,8 @@ Begrænsninger
Nøgleord har modstridende erklæringer: %s
Søgeordet er for kort og kræver anførselstegn: %s
Nøgleord vil skjule alle videoer: %s
-
-
+
+
Skjul butikshylde for skabere
Opretterbutikshylde under videoafspiller er skjult
Butikshylde for skaber under videoafspiller vises
@@ -463,18 +463,18 @@ Denne funktion er kun tilgængelig for ældre enheder"
Skjul søgeresultater
Websøgeresultater er skjult
Websøgeresultater vises
-
-
+
+
Skjul YouTube Premium kampagner
YouTube Premium kampagner under videoafspiller er skjult
YouTube Premium kampagner under videoafspiller vises
-
-
+
+
Skjul videoannoncer
Videoannoncer er skjult
Videoannoncer vises
-
-
+
+
URL kopieret til udklipsholder
URL med tidsstempel kopieret
Vis kopiér video URL knap
@@ -483,24 +483,24 @@ Denne funktion er kun tilgængelig for ældre enheder"
Vis kopi tidsstempel URL knap
Knappen vises. Tryk for at kopiere videoens URL med tidsstempel. Tryk og hold for at kopiere uden tidsstempel
Knap vises ikke
-
-
+
+
Fjern visningsdialog
Dialog vil blive fjernet
Dialog vil blive vist
Dette går ikke uden om aldersbegrænsningen. Det accepterer bare det automatisk.
-
-
-
+
+
Deaktiver dobbeltklik kapitelspring
Dobbeltklik kan aldrig udløse et spring til næste/forrige kapitel
Dobbeltklik kan lejlighedsvis udløse et spring til næste/forrige kapitel
-
-
+
+
Eksterne downloads
Indstillinger for brug af en ekstern downloader
Vis ekstern download-knap
@@ -520,18 +520,18 @@ Denne funktion er kun tilgængelig for ældre enheder"
Kontrollér, at pakkenavnet er korrekt, og at appen er installeret"
Pakkenavnet må ikke være tomt
-
-
+
+
Deaktivér præcis søgemåde
Bevægelse er deaktiveret
Bevægelse er aktiveret
-
-
+
+
Aktivér tryk for at søge
Tryk for at søge er aktiveret
Tryk for at søge er deaktiveret
-
-
+
+
Aktivér lysstyrke-bevægelse
"Fuldskaermens lysstyrke-swipe er aktiveret
@@ -582,13 +582,13 @@ Juster lydstyrken ved at swipe lodret i højre side af skærmen"
Aktivér swipe for at skifte videoer
Strygning i fuldskærmstilstand vil ændre til den næste/forrige video
Strygning i fuldskærmstilstand vil ikke ændre til den næste/forrige video
-
-
+
+
Deaktivér auto-billedtekster
Automatiske billedtekster er deaktiveret
Automatiske billedtekster er aktiveret
-
-
+
+
Handlingsknapper
Skjul eller vis knapper under videoer
Deaktiver Like og Abonner-knappen glød
@@ -652,8 +652,8 @@ Juster lydstyrken ved at swipe lodret i højre side af skærmen"
Skjul Gem
Knappen \"Gem\" er skjult
Knappen \"Gem\" vises
-
-
+
+
Navigationsknapper
Skjul eller skift knapper i navigationsbjælken
@@ -697,8 +697,8 @@ Hvis ændring af denne indstilling ikke træder i kraft, kan du prøve at skifte
Deaktiver mørk gennemsigtig linje
Navigationslinjen i mørk tilstand er ikke gennemsigtig
Mørk tilstand navigationslinjen er opak eller gennemsigtig
-
-
-
+
+
Skjul knappen Automatisk afspilning
Automatisk spil-knap er skjult
Automatisk afspilningsknap vises
@@ -777,28 +777,28 @@ For at vise lydsporsmenuen, skift 'Spoof videostreams' til iPadOS"
Skjul Forrige & Næste knapper
Knapper er skjult
Knapper vises
-
-
+
+
Skjul slutskærmkort
Slutskærmskortene er skjult
Kort til slutskærm vises
-
-
+
+
Deaktiver Ambient-tilstand i fuldskærm
Omgivelsestilstand deaktiveret
Omgivelsestilstand aktiveret
-
-
+
+
Skjul informationskort
Info kort er skjult
Info kort er vist
-
-
+
+
Deaktivér animationer med rullenummer
Rullende numre er ikke animeret
Rullende numre er animeret
-
-
+
+
Skjul videoafspillerens søgelinje
Videoafspillerens søgelinje er skjult
Videoafspillerens søgelinje vises
@@ -806,8 +806,8 @@ For at vise lydsporsmenuen, skift 'Spoof videostreams' til iPadOS"
Skjul video-miniaturebilledernes søgelinje
Video-miniaturebilledernes søgelinje er skjult
Video-miniaturebilledernes søgelinje vises
-
-
+
+
Shorts-afspiller
Skjul eller vis Shorts-afspillerkomponenter
@@ -920,48 +920,48 @@ For at vise lydsporsmenuen, skift 'Spoof videostreams' til iPadOS"
Skjul navigationslinje
Navigationsbjælken er skjult
Navigationsbjælken vises
-
-
+
+
Skjul foreslået video på slutskærmen
"Foreslået video på slutskærmen er skjult, når automatisk afspilning er slået fra
Automatisk afspilning kan ændres i YouTube-indstillinger:
Indstillinger → Afspilning → Afspil næste video automatisk"
Foreslået video på slutskærmen vises
-
-
+
+
Skjul overlay for relaterede videoer
Overlay for relaterede videoer i fuldskærm er skjult
Overlay for relaterede videoer i fuldskærm vises
-
-
+
+
Skjul tidsstempel på video
Tidsstempel er skjult
Tidsstempel er vist
-
-
-
+
+
Afslut fuldskærmstilstand ved videoens afslutning
Deaktiveret
Portræt
Landskab
Portræt og landskab
-
-
+
+
Åbn videoer i fuldskærm portræt
Videoer åbne fuld skærm
Videoer åbner ikke fuld skærm
-
-
+
+
Spiller overlay gennemsigtighed
Gennemsigtighedsværdi mellem 0-100, hvor 0 er gennemsigtig
Spiller overlay gennemsigtighed skal være mellem 0-100
-
-
+
+
Dislikerer midlertidigt ikke tilgængelig (API-timeout ud)
Dislikationer er ikke tilgængelige (status %d)
@@ -1009,13 +1009,13 @@ Begrænsning: Synes ikke godt om vises muligvis ikke i inkognitotilstand"Ingen klientrategrænser stødt på
Klient sats grænse stødt %d gange
%d millisekunder
-
-
+
+
Aktiver bred søgelinje
Bred søgelinje er aktiveret
Bred søgelinje er deaktiveret
-
-
+
+
Aktiver miniaturer af høj kvalitet
Seekbar miniaturer er af høj kvalitet
Seekbar miniaturer er af middel kvalitet
@@ -1029,8 +1029,8 @@ Denne funktion fungerer bedst med en videokvalitet på 720p eller lavere og ved
Gendan gamle miniaturer på søgelinjen
Seekbar miniaturer vises over søgelinjen
Seekbar miniaturer vises i fuld skærm
-
-
-
+
+
Layout-formfaktor
Standard
Telefon
@@ -1256,8 +1256,8 @@ Tabletlayout
Automotive-layout
• Shorts åbnes i den almindelige afspiller
• Feed er organiseret efter emner og kanaler"
-
-
+
+
Spoof app-version
Version-manipulering
Version ikke spoofed
@@ -1270,8 +1270,8 @@ Hvis det senere slås fra, anbefales det at rydde app-dataene for at forhindre U
20.13.41 - Gendan ikke-kollapset videohandlingslinje
19.35.36 - Gendan gamle Shorts player ikoner
19.01.34 - Gendan gamle navigationsikoner
-
-
+
+
Skift startside
Standard
Alle abonnementer
@@ -1302,27 +1302,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"
Startsiden ændres kun ved appstart
-
-
+
+
Deaktivér genoptagelse af Shorts spiller
Shorts-afspilleren genoptages ikke ved app-start
Kortspilleren vil genoptage ved app-opstart
-
-
+
+
Åbne Shorts med
Shorts-afspiller
Standardafspiller
Standardafspiller i fuld skærm
-
-
+
+
Automatisk afspilning af Shorts
Shorts afspilles automatisk
Shorts gentages
Automatisk afspilning af Shorts i baggrunden
Shorts i baggrunden afspilles automatisk
Shorts i baggrunden gentages
-
-
+
+
Mini-afspiller
Skift stilen på den minimerede afspiller i appen
Type af miniplayer
@@ -1368,8 +1368,8 @@ Miniafspiller kan trækkes ud over skærmen til venstre eller højre"
Overlay uigennemsigtighed
Gennemsigtighedsværdi mellem 0-100, hvor 0 er gennemsigtig
Miniplayer overlay gennemsigtighed skal være mellem 0-100
-
-
+
+
Aktiver gradient indlæsning af skærmen
Indlæser skærmen vil have en gradient baggrund
Indlæser skærmen vil have en solid baggrund
@@ -1384,23 +1384,23 @@ Miniafspiller kan trækkes ud over skærmen til venstre eller højre"
Brugerdefineret accentfarve på søgelinje
Søgelinjens accentfarve
Ugyldig søgelinje farveværdi
-
-
+
+
Sidehovedlogo
Standard
Normal
ReVanced minimal
Brugerdefineret
-
-
+
+
Bypass billede region restriktioner
Bruger billedvært yt4.ggpht.com
"Bruger original billedevært
Aktivering af dette kan løse manglende billeder, der er blokeret i nogle regioner"
-
-
+
+
Hjem fane
@@ -1435,26 +1435,33 @@ Tryk her for at lære mere om DeArrow"
DeArrow er midlertidigt ikke tilgængelig (statuskode: %s)
DeArrow er midlertidigt ikke tilgængelig
-
-
+
+
Vis ReVanced meddelelser
Meddelelser ved opstart vises
Meddelelser ved opstart vises ikke
Vis meddelelser ved opstart
Kunne ikke forbinde til udbyder af annonceringer
Luk
-
-
+
+
Advarsel
Din urhistorik gemmes ikke.<br><br>Dette skyldes sandsynligvis en DNS-annonceblokker eller netværksproxy.<br><br>For at løse dette, whitelist <b>s.youtube.com</b> eller slå alle DNS-blokkere og fuldmagter fra.
Vis ikke igen
-
-
- Aktivér auto-gentag
- Auto-gentag er aktiveret
- Auto-gentag er deaktiveret
-
-
+
+
+ Aktiver loop-video
+ Videoen vil loope
+ Videoen vil ikke loope
+
+
+ Vis knap for loop-video
+ Knappen vises
+ Knappen vises ikke
+ Loop-video er slået til
+ Loop-video er slået fra
+
+
Spoof enhedens dimensioner
"Enhedens dimensioner er forfalsket
@@ -1463,8 +1470,8 @@ Højere videokvalitet kan låses op, men du kan opleve videoafspilningshakkethed
Aktivering af dette kan låse op for højere videokvalitet"
Aktivering af dette kan forårsage videoafspilning stuttering, værre batterilevetid og ukendte bivirkninger.
-
-
+
+
Haptisk feedback
Skift haptisk feedback
Deaktivér haptics for kapitler
@@ -1479,28 +1486,28 @@ Aktivering af dette kan låse op for højere videokvalitet"
Deaktivér zoom haptics
Zoom haptics er deaktiveret
Zoom haptics er aktiveret
-
-
+
+
Hvis du for nylig har ændret dine kontooplysninger, skal du afinstallere og geninstallere MicroG.
-
-
+
+
Bypass URL omdirigeringer
URL omdirigeringer er omgået
URL omdirigeringer er ikke omgået
-
-
+
+
Åbn links i browser
Åbner links i ekstern browser
Åbner links i browser i appen
-
-
+
+
Tving originalt lydsprog
Bruger originalt lydsprog
Brug standard lyd
For at bruge denne funktion skal du ændre \"Forfalsk videostreams\" til en hvilken som helst klient undtagen Android Studio
-
-
+
+
Automatisk
Husk ændringer i videokvalitet
@@ -1520,18 +1527,18 @@ Aktivering af dette kan låse op for højere videokvalitet"
Wi-Fi
Ændrede standard %1$s kvalitet til: %2$s
Ændrede Shorts %1$s kvalitet til: %2$s
-
-
+
+
Vis hastigheds dialogknap
Knappen vises. Tryk og hold for at nulstille afspilningshastigheden til standard.
Knap vises ikke
-
-
+
+
Vis videokvalitetsknap
Knap vises. Tryk og hold nede for at nulstille kvaliteten til standard
Knappen vises ikke
-
-
+
+
Tilpasset afspilningshastighed menu
Tilpasset hastighed menu er vist
Brugerdefineret hastighedsmenu vises ikke
@@ -1545,8 +1552,8 @@ Aktivering af dette kan låse op for højere videokvalitet"
Automatisk
Brugerdefineret hastighed, når du holder den nede
Afspilningshastighed mellem 0-8
-
-
+
+
Husk ændringer i afspilningshastighed
Ændring af afspilningshastighed gælder for alle videoer
Ændringerne i afspilningshastighed gælder kun for den aktuelle video
@@ -1555,27 +1562,29 @@ Aktivering af dette kan låse op for højere videokvalitet"
Meddelelse vises ikke, når standardafspilningshastigheden ændres
Standard afspilningshastighed
Ændrede standardhastighed til: %s
-
-
+
+
Deaktiver HDR-video
HDR-video er deaktiveret
HDR-video er aktiveret
-
-
-
+
+
Aktivér dias for at søge
Dias for at søge er aktiveret
Dias til søgning er ikke aktiveret
-
-
+
+
Bivirkninger ved spoofing
- • Videoen kan stoppe ved 1:00, eller er muligvis ikke tilgængelig i visse regioner
• Eksperimentel klient og kan stoppe med at fungere når som helst
+ • Videoen kan stoppe ved 1:00, eller er muligvis ikke tilgængelig i visse regioner
+ • Lydspormenu mangler
• Intet AV1-videokodek
+ • Stabil lydstyrke er ikke tilgængelig
• Videoer til børn afspilles muligvis ikke, når du er logget ud eller i inkognitotilstand
• Tving original lyd er ikke tilgængelig
@@ -1586,37 +1595,37 @@ Aktivering af dette kan låse op for højere videokvalitet"
For at vælge et specifikt lydsprog, slå \'Gennemtving originalt lydsprog\' fra
Valg af streaming-sprog er ikke tilgængeligt med Android Studio
-
-
-
-
+
+
+
+
Om
Annoncer
Generelt
Afspiller
Diverse
-
-
+
+
Skjul videoannoncer
Videoannoncer er skjult
Videoannoncer vises
-
-
+
+
Aktiver permanent gentagelse
Permanent gentagelse er aktiveret
Permanent gentagelse er deaktiveret
-
-
+
+
Skjul cast-knap
Cast-knappen er skjult
Cast-knappen vises
-
-
-
+
+
Navigationslinje
Skjul eller skift navigationslinjeknapper
@@ -1645,56 +1654,56 @@ Aktivering af dette kan låse op for højere videokvalitet"
Skjul etiketter for navigationsknapper
Etiketter er skjult
Etiketter vises
-
-
+
+
Skjul \'Få Music Premium\'-etiket
Etiketten er skjult
Etiketten vises
-
-
+
+
Skjul opgraderingsknap
Knappen er skjult
Knappen vises
-
-
-
-
+
+
+
+
Blokér lydannoncer
Lydannoncer er blokeret
Lydannoncer er ublokeret
-
-
+
+
%s er ikke tilgængelig, annoncer vises muligvis. Prøv at skifte annonceblokeringstjeneste i indstillinger.
%s returnerede en fejl, annoncer vises muligvis. Prøv at skifte annonceblokeringstjeneste i indstillinger.
Bloker indlejrede videoannoncer
Deaktiveret
Lysende proxy
PurpleAdBlock-proxy
-
-
+
+
Blokér videoannoncer
Videoreklamer er blokeret
Videoannoncer er ublokerede
-
-
+
+
Meddelelse slettet
Vis slettede beskeder
Vis ikke slettede beskeder
Skjul slettede beskeder bag en spoiler
Vis slettede beskeder som krydset tekst
-
-
+
+
Auto-hævde Kanalpunkter
Kanalpunkter afhentes automatisk
Kanalpunkter afhentes ikke automatisk
-
-
+
+
Aktiver Twitch-fejlfindingstilstand
Twitch-fejlfindingstilstand er aktiveret (ikke anbefalet)
Twitch-fejlfindingstilstand er deaktiveret
-
-
+
+
Vigtigste Indstillinger
Om
Om ReVanced
@@ -1711,6 +1720,6 @@ Aktivering af dette kan låse op for højere videokvalitet"
Debug logning
Debug logs er aktiveret
Debug logs er deaktiveret
-
-
+
+
diff --git a/patches/src/main/resources/addresources/values-de-rDE/strings.xml b/patches/src/main/resources/addresources/values-de-rDE/strings.xml
index 8589ed61f..eae3f4f22 100644
--- a/patches/src/main/resources/addresources/values-de-rDE/strings.xml
+++ b/patches/src/main/resources/addresources/values-de-rDE/strings.xml
@@ -1444,10 +1444,17 @@ Tippen Sie hier, um mehr über DeArrow zu erfahren"
Ihr Verlauf wird nicht gespeichert.<br><br>Dies wird höchstwahrscheinlich durch einen DNS-Werbeblocker oder einen Netzwerkproxy verursacht.<br><br>Um dies zu beheben, setze <b>s.youtube.com</b> auf die Whitelist oder schalten Sie alle DNS-Blocker und Proxies aus.
Nicht wieder anzeigen
-
- Auto-Wiederholung aktivieren
- Auto-Wiederholung ist aktiviert
- Auto-Wiederholung ist deaktiviert
+
+ Loop-Video aktivieren
+ Video wird wiederholt
+ Video wird nicht wiederholt
+
+
+ Loop-Video-Schaltfläche anzeigen
+ Schaltfläche wird angezeigt
+ Schaltfläche wird nicht angezeigt
+ Loop-Video ist aktiviert
+ Loop-Video ist deaktiviert
Spoof-Gerätegröße
@@ -1568,9 +1575,11 @@ Durch Aktivieren dieser Option können höhere Videoqualitäten freigeschaltet w
Nebenwirkungen des Spoofings
- • Video kann um 1:00 Uhr stoppen oder ist möglicherweise in einigen Regionen nicht verfügbar
• Experimenteller Client und kann jederzeit aufhören zu funktionieren
+ • Video kann um 1:00 Uhr stoppen oder ist möglicherweise in einigen Regionen nicht verfügbar
+ • Audiotrack-Menü fehlt
• Kein AV1-Videocodec
+ • Stabile Lautstärke ist nicht verfügbar
• Kinder-Videos werden möglicherweise nicht abgespielt, wenn du abgemeldet bist oder den Inkognito-Modus verwendest.
• Originalton erzwingen ist nicht verfügbar
diff --git a/patches/src/main/resources/addresources/values-el-rGR/strings.xml b/patches/src/main/resources/addresources/values-el-rGR/strings.xml
index ac16b82a4..a598d8b36 100644
--- a/patches/src/main/resources/addresources/values-el-rGR/strings.xml
+++ b/patches/src/main/resources/addresources/values-el-rGR/strings.xml
@@ -144,9 +144,9 @@ Second \"item\" text"
Καθαρισμός συνδέσμων κοινοποίησης
Η παράμετρος παρακολούθησης αφαιρείται από τους συνδέσμους στην κοινοποίηση
Η παράμετρος παρακολούθησης δεν αφαιρείται από τους συνδέσμους στην κοινοποίηση
- Αλλαγή συνδέσμων κοινής χρήσης σε youtube.com
- Οι κοινόχρηστοι σύνδεσμοι χρησιμοποιούν youtube.com
- Οι κοινόχρηστοι σύνδεσμοι χρησιμοποιούν music.youtube.com
+ Αλλαγή συνδέσμων κοινοποίησης σε youtube.com
+ Οι κοινοποιημένοι σύνδεσμοι χρησιμοποιούν το youtube.com
+ Οι κοινοποιημένοι σύνδεσμοι χρησιμοποιούν το music.youtube.com
@@ -1446,10 +1446,17 @@ Second \"item\" text"
Το ιστορικό παρακολούθησης δεν αποθηκεύεται.<br><br>Πιθανό να συμβαίνει λόγω αποκλεισμού διαφημίσεων μέσω DNS ή μέσω διακομιστή μεσολάβησης δικτύου.<br><br>Μια λύση γι\'αυτό θα ήταν να προσθέσετε σε whitelist το <b>s.youtube.com</b> ή να απενεργοποιήστε τους DNS/proxy blockers.
Να μην εμφανιστεί ξανά
-
- Ενεργοποίηση αυτόματης επανάληψης
- Η αυτόματη επανάληψη είναι ενεργοποιημένη
- Η αυτόματη επανάληψη είναι απενεργοποιημένη
+
+ Ενεργοποίηση επανάληψης βίντεο
+ Το βίντεο θα επαναληφθεί
+ Το βίντεο δεν θα επαναληφθεί
+
+
+ Εμφάνιση κουμπιού επανάληψης βίντεο
+ Εμφανίζεται
+ Το κουμπί δεν εμφανίζεται
+ Η επανάληψη βίντεο είναι ενεργή
+ Η επανάληψη βίντεο είναι ανενεργή}]}],
Παραποίηση διαστάσεων συσκευής
@@ -1570,9 +1577,11 @@ Second \"item\" text"
Παρενέργειες παραποίησης
- • Το βίντεο ενδέχεται να σταματήσει στο 1:00 ή να μην είναι διαθέσιμο σε ορισμένες περιοχές
• Πειραματικός πελάτης και μπορεί να σταματήσει να λειτουργεί ανά πάσα στιγμή
+ • Το βίντεο ενδέχεται να σταματήσει στο 1:00 ή να μην είναι διαθέσιμο σε ορισμένες περιοχές
+ • Το μενού «Κομμάτι ήχου» λείπει
• Δεν υπάρχει ο κωδικοποιητής βίντεο AV1
+ • Η λειτουργία «Σταθερή ένταση» δεν είναι διαθέσιμη
• Τα βίντεο για παιδιά ενδέχεται να μην αναπαράγονται αν είστε αποσυνδεδεμένοι ή σε λειτουργία ανώνυμης περιήγησης
• Ο εξαναγκασμός αρχικής γλώσσας ήχου δεν είναι διαθέσιμος
diff --git a/patches/src/main/resources/addresources/values-es-rES/strings.xml b/patches/src/main/resources/addresources/values-es-rES/strings.xml
index d5e0e8a9b..3efbffbe2 100644
--- a/patches/src/main/resources/addresources/values-es-rES/strings.xml
+++ b/patches/src/main/resources/addresources/values-es-rES/strings.xml
@@ -1438,10 +1438,17 @@ Toca aquí para obtener más información sobre DeArrow"
Tu historial no está siendo guardado.<br><br>Esto puede ser por un bloqueador de anuncios DNS o Proxy.<br><br>Para arreglarlo, permita el dominio <b>s.youtube.com</b> o desactive el bloqueador DNS o Proxy.
No mostrar de nuevo
-
- Activar autorepetición
- Auto-repetición habilitada
- Auto-repetición desactivada
+
+ Activar bucle de vídeo
+ El vídeo se reproducirá en bucle
+ El vídeo no se reproducirá en bucle
+
+
+ Mostrar botón de bucle de vídeo
+ El botón es visible
+ El botón no es visible
+ Bucle de vídeo activado
+ Bucle de vídeo desactivado
Dimensiones del dispositivo
@@ -1562,9 +1569,11 @@ Habilitar esto puede desbloquear calidades de vídeo más altas"
Efectos secundarios de la falsificación
- • El video puede detenerse en 1:00, o puede no estar disponible en algunas regiones
• El cliente es experimental y puede dejar de funcionar en cualquier momento
+ • El video puede detenerse en 1:00, o puede no estar disponible en algunas regiones
+ • Falta el menú de la pista de audio
• Sin códec de vídeo AV1
+ • Volumen estable no disponible
• Es posible que los vídeos infantiles no se reproduzcan cuando se cierra la sesión o se está en modo incógnito
• Forzar audio original no está disponible
diff --git a/patches/src/main/resources/addresources/values-et-rEE/strings.xml b/patches/src/main/resources/addresources/values-et-rEE/strings.xml
index 6c5c5f666..34d880a3b 100644
--- a/patches/src/main/resources/addresources/values-et-rEE/strings.xml
+++ b/patches/src/main/resources/addresources/values-et-rEE/strings.xml
@@ -1447,10 +1447,17 @@ Puudutage siia, et saada lisateavet DeArrow kohta"
Teie vaatamise ajalugu ei salvestata.<br><br>See on tõenäoliselt tingitud DNS-i reklaamiblokeerijast või võrguproksilt.<br><br>Selle parandamiseks lisage valgesse nimekirja <b>s.youtube.com</b> või lülitage kõik DNS-i reklaamiblokeerijad ja proksid välja.
Ära kuva uuesti
-
- Luba automaatne kordamine
- Automaatne kordamine on lubatud
- Automaatne kordamine on keelatud
+
+ Luba video kordamine
+ Video kordub
+ Video ei kordu
+
+
+ Näita video korduse nuppu
+ Nuppu kuvatakse
+ Nuppu ei kuvata
+ Video kordus on sees
+ Video kordus on väljas
Võltsitud seadme mõõtmed
@@ -1571,9 +1578,11 @@ Selle lubamine võib avada kõrgema video kvaliteedi"
Võltsimise kõrvalmõjud
- • Video võib peatuda kell 1:00 või ei pruugi olla teatud piirkondades saadaval
• Eksperimentaalne klient ja võib igal ajal töötamast lakata
+ • Video võib peatuda kell 1:00 või ei pruugi olla teatud piirkondades saadaval
+ • Heliraja menüü puudub
• Puuduv AV1 videokoodek
+ • Stabiilne helitugevus pole saadaval
• Video lastele ei pruugi taasesitada, kui olete välja logitud või inkognito režiimis
• Sunni algne heli pole saadaval
diff --git a/patches/src/main/resources/addresources/values-eu-rES/strings.xml b/patches/src/main/resources/addresources/values-eu-rES/strings.xml
index 392858935..67bf7dc15 100644
--- a/patches/src/main/resources/addresources/values-eu-rES/strings.xml
+++ b/patches/src/main/resources/addresources/values-eu-rES/strings.xml
@@ -211,7 +211,9 @@ Second \"item\" text"
-
+
+
+
diff --git a/patches/src/main/resources/addresources/values-fa-rIR/strings.xml b/patches/src/main/resources/addresources/values-fa-rIR/strings.xml
index 3471a5880..950f967f4 100644
--- a/patches/src/main/resources/addresources/values-fa-rIR/strings.xml
+++ b/patches/src/main/resources/addresources/values-fa-rIR/strings.xml
@@ -261,7 +261,9 @@ Second \"item\" text"
-
+
+
+
diff --git a/patches/src/main/resources/addresources/values-fi-rFI/strings.xml b/patches/src/main/resources/addresources/values-fi-rFI/strings.xml
index 74dd4917d..c7a1b3e78 100644
--- a/patches/src/main/resources/addresources/values-fi-rFI/strings.xml
+++ b/patches/src/main/resources/addresources/values-fi-rFI/strings.xml
@@ -1447,10 +1447,17 @@ Napauta tästä saadaksesi lisätietoja DeArrowista"
Kellon historiaa ei tallenneta.<br><br>Tämä todennäköisesti johtuu DNS mainosten estäjä tai verkkovälityspalvelin.<br><br>Korjataksesi tämän, valkoiselle listalle <b>s.youtube.com</b> tai poistaaksesi kaikki DNS-estäjät ja -profiilit.
Älä näytä uudelleen
-
- Ota automaattinen toisto käyttöön
- Automaattinen toisto on käytössä
- Automaattinen toisto ei ole käytössä
+
+ Ota videon toisto käyttöön
+ Video toistetaan
+ Videota ei toisteta
+
+
+ Näytä toistovideon painike
+ Painike näytetään
+ Painiketta ei näytetä
+ Videon toisto on päällä
+ Videon toisto on pois päältä
Naamioi laitteen mitat
@@ -1571,9 +1578,11 @@ Tämä voi avata korkealaatuisemmat videot"
Naamioimisen sivuvaikutukset
- • Video voi pysähtyä ajassa 1:00, tai ei välttämättä ole saatavilla joillakin alueilla
• Kokeellinen asiakasohjelma, joka saattaa lakata toimimasta milloin tahansa
+ • Video voi pysähtyä ajassa 1:00, tai ei välttämättä ole saatavilla joillakin alueilla
+ • Ääniraitavalikko puuttuu
• Ei AV1-videokoodekkia
+ • Vakaa äänenvoimakkuus ei ole käytettävissä
• Lasten videot eivät ehkä toistu, kun olet kirjautunut ulos tai incognito-tilassa
• Pakota alkuperäinen ääni ei ole käytettävissä
diff --git a/patches/src/main/resources/addresources/values-fil-rPH/strings.xml b/patches/src/main/resources/addresources/values-fil-rPH/strings.xml
index 82d9624e1..e247a47a0 100644
--- a/patches/src/main/resources/addresources/values-fil-rPH/strings.xml
+++ b/patches/src/main/resources/addresources/values-fil-rPH/strings.xml
@@ -1445,10 +1445,17 @@ Mag-tap dito upang matuto nang higit pa tungkol sa DeArrow"
Hindi nai-save ang iyong kasaysayan ng panonood.<br><br>Karaniwang sanhi nito ay ang DNS ad blocker o network proxy.<br><br>Para maayos ito, i-whitelist ang <b>s.youtube.com</b> o i-off ang lahat ng DNS blocker at proxy.
Huwag ipakitang muli
-
- Paganahin ang auto-repeat
- Naka-enable ang auto-repeat
- Naka-disable ang auto-repeat
+
+ Paganahin ang loop ng video
+ Maglo-loop ang video
+ Hindi maglo-loop ang video
+
+
+ Ipakita ang button ng loop ng video
+ Ipinapakita ang button
+ Hindi ipinapakita ang buton
+ Naka-on ang loop ng video
+ Naka-off ang loop ng video
Mga dimensyon ng spoof device
@@ -1569,9 +1576,11 @@ Ang pagpapagana nito ay maaaring magbukas ng mas mataas na kalidad ng video"
Mga epekto ng pagpapanggap
- • Maaaring huminto ang video sa 1:00, o maaaring hindi available sa ilang rehiyon
• Pang-eksperimentong kliyente at maaaring huminto sa paggana anumang oras
+ • Maaaring huminto ang video sa 1:00, o maaaring hindi available sa ilang rehiyon
+ • Nawawala ang menu ng audio track
• Walang AV1 video codec
+ • Hindi available ang stable volume
• Mga video ng mga bata ay maaaring hindi ma-play kapag naka-log out o nasa incognito mode
• Ang Pilitin ang orihinal na audio ay hindi magagamit
diff --git a/patches/src/main/resources/addresources/values-fr-rFR/strings.xml b/patches/src/main/resources/addresources/values-fr-rFR/strings.xml
index c60d05d23..16cddb4bd 100644
--- a/patches/src/main/resources/addresources/values-fr-rFR/strings.xml
+++ b/patches/src/main/resources/addresources/values-fr-rFR/strings.xml
@@ -606,7 +606,7 @@ Réglez le volume en balayant verticalement sur le côté droit de l'écran"Le bouton Zéro annonce est masqué
Le bouton Zéro annonce est affiché
- Masquer les commentaires
+ Masquer \"Commentaires\"
Le bouton Commentaires est masqué
Le bouton Commentaires est affiché
• Forcer l\'audio original n\'est pas disponible
@@ -1606,9 +1615,9 @@ Activer cette option peut déverrouiller des qualités vidéo supérieures"La lecture en boucle permanente est désactivée
- Masquer le bouton de diffusion
- Le bouton de diffusion est masqué
- Le bouton de diffusion est affiché
+ Masquer le bouton Diffuser
+ Le bouton Diffuser est masqué
+ Le bouton Diffuser est affiché