mirror of
https://github.com/ReVanced/revanced-patches.git
synced 2026-01-16 07:43:56 +00:00
Compare commits
8 Commits
v5.40.0-de
...
v5.40.0-de
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7e1bb8f3c7 | ||
|
|
f7f4a1b0f0 | ||
|
|
e89660d234 | ||
|
|
db796fb883 | ||
|
|
6bb8bad8d7 | ||
|
|
aa1fb41ad8 | ||
|
|
418f5945c2 | ||
|
|
e26c971067 |
21
CHANGELOG.md
21
CHANGELOG.md
@@ -1,3 +1,24 @@
|
||||
# [5.40.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v5.40.0-dev.7...v5.40.0-dev.8) (2025-09-20)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **YouTube:** Support version `20.14.43` ([#5940](https://github.com/ReVanced/revanced-patches/issues/5940)) ([f7f4a1b](https://github.com/ReVanced/revanced-patches/commit/f7f4a1b0f0186598266b41a2c6a781fdee49e440))
|
||||
|
||||
# [5.40.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.40.0-dev.6...v5.40.0-dev.7) (2025-09-20)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **YouTube - Hide video action buttons:** Add "Hide comments" button ([db796fb](https://github.com/ReVanced/revanced-patches/commit/db796fb8830b813e1ed626d491c4a797171e69e7))
|
||||
|
||||
# [5.40.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.40.0-dev.5...v5.40.0-dev.6) (2025-09-20)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **YouTube Music:** Add `Enable debugging` patch ([#5939](https://github.com/ReVanced/revanced-patches/issues/5939)) ([418f594](https://github.com/ReVanced/revanced-patches/commit/418f5945c213313f9a77cac9a5c326d89c754dfd))
|
||||
|
||||
# [5.40.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.40.0-dev.4...v5.40.0-dev.5) (2025-09-20)
|
||||
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ public class Settings extends BaseSettings {
|
||||
public static final BooleanSetting HIDE_UPGRADE_BUTTON = new BooleanSetting("revanced_music_hide_upgrade_button", TRUE, true);
|
||||
|
||||
// General
|
||||
public static final BooleanSetting HIDE_CAST_BUTTON = new BooleanSetting("revanced_music_hide_cast_button", FALSE, false);
|
||||
public static final BooleanSetting HIDE_CAST_BUTTON = new BooleanSetting("revanced_music_hide_cast_button", TRUE, false);
|
||||
public static final BooleanSetting HIDE_CATEGORY_BAR = new BooleanSetting("revanced_music_hide_category_bar", FALSE, true);
|
||||
public static final BooleanSetting HIDE_NAVIGATION_BAR_HOME_BUTTON = new BooleanSetting("revanced_music_hide_navigation_bar_home_button", FALSE, true);
|
||||
public static final BooleanSetting HIDE_NAVIGATION_BAR_SAMPLES_BUTTON = new BooleanSetting("revanced_music_hide_navigation_bar_samples_button", FALSE, true);
|
||||
|
||||
@@ -116,7 +116,7 @@ public class Utils {
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The version name of the app, such as 19.11.43
|
||||
* @return The version name of the app, such as 20.13.41
|
||||
*/
|
||||
public static String getAppVersionName() {
|
||||
if (versionName == null) {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package app.revanced.extension.youtube.patches;
|
||||
package app.revanced.extension.shared.patches;
|
||||
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
@@ -7,6 +7,10 @@ final class ButtonsFilter extends Filter {
|
||||
private static final String COMPACT_CHANNEL_BAR_PATH_PREFIX = "compact_channel_bar.eml";
|
||||
private static final String VIDEO_ACTION_BAR_PATH_PREFIX = "video_action_bar.eml";
|
||||
private static final String VIDEO_ACTION_BAR_PATH = "video_action_bar.eml";
|
||||
/**
|
||||
* Video bar path when the video information is collapsed. Seems to shown only with 20.14+
|
||||
*/
|
||||
private static final String COMPACTIFY_VIDEO_ACTION_BAR_PATH = "compactify_video_action_bar.eml";
|
||||
private static final String ANIMATED_VECTOR_TYPE_PATH = "AnimatedVectorType";
|
||||
|
||||
private final StringFilterGroup likeSubscribeGlow;
|
||||
@@ -82,6 +86,10 @@ final class ButtonsFilter extends Filter {
|
||||
Settings.HIDE_STOP_ADS_BUTTON,
|
||||
"yt_outline_slash_circle_left"
|
||||
),
|
||||
new ByteArrayFilterGroup(
|
||||
Settings.HIDE_COMMENTS_BUTTON,
|
||||
"yt_outline_message_bubble_right"
|
||||
),
|
||||
// Check for clip button both here and using a path filter,
|
||||
// as there's a chance the path is a generic action button and won't contain 'clip_button'
|
||||
new ByteArrayFilterGroup(
|
||||
@@ -124,9 +132,8 @@ final class ButtonsFilter extends Filter {
|
||||
}
|
||||
|
||||
if (matchedGroup == bufferFilterPathGroup) {
|
||||
// Make sure the current path is the right one
|
||||
// to avoid false positives.
|
||||
return path.startsWith(VIDEO_ACTION_BAR_PATH)
|
||||
// Make sure the current path is the right one to avoid false positives.
|
||||
return (path.startsWith(VIDEO_ACTION_BAR_PATH) || path.startsWith(COMPACTIFY_VIDEO_ACTION_BAR_PATH))
|
||||
&& bufferButtonsGroupList.check(buffer).isFiltered();
|
||||
}
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@ import static app.revanced.extension.youtube.sponsorblock.objects.CategoryBehavi
|
||||
import android.graphics.Color;
|
||||
|
||||
import app.revanced.extension.shared.Logger;
|
||||
import app.revanced.extension.shared.Utils;
|
||||
import app.revanced.extension.shared.settings.BaseSettings;
|
||||
import app.revanced.extension.shared.settings.BooleanSetting;
|
||||
import app.revanced.extension.shared.settings.EnumSetting;
|
||||
@@ -222,6 +223,7 @@ public class Settings extends BaseSettings {
|
||||
public static final BooleanSetting DISABLE_LIKE_SUBSCRIBE_GLOW = new BooleanSetting("revanced_disable_like_subscribe_glow", FALSE);
|
||||
public static final BooleanSetting HIDE_ASK_BUTTON = new BooleanSetting("revanced_hide_ask_button", FALSE);
|
||||
public static final BooleanSetting HIDE_CLIP_BUTTON = new BooleanSetting("revanced_hide_clip_button", TRUE);
|
||||
public static final BooleanSetting HIDE_COMMENTS_BUTTON = new BooleanSetting("revanced_hide_comments_button", TRUE);
|
||||
public static final BooleanSetting HIDE_DOWNLOAD_BUTTON = new BooleanSetting("revanced_hide_download_button", FALSE);
|
||||
public static final BooleanSetting HIDE_HYPE_BUTTON = new BooleanSetting("revanced_hide_hype_button", FALSE);
|
||||
public static final BooleanSetting HIDE_LIKE_DISLIKE_BUTTON = new BooleanSetting("revanced_hide_like_dislike_button", FALSE);
|
||||
@@ -513,10 +515,14 @@ public class Settings extends BaseSettings {
|
||||
DEPRECATED_SWIPE_OVERLAY_BACKGROUND_ALPHA.resetToDefault();
|
||||
}
|
||||
|
||||
// Old spoof versions that no longer work.
|
||||
if (SPOOF_APP_VERSION_TARGET.get().compareTo(SPOOF_APP_VERSION_TARGET.defaultValue) < 0) {
|
||||
Logger.printInfo(() -> "Resetting spoof app version target");
|
||||
// Old spoof versions that no longer work,
|
||||
// or is spoofing to a version the same or newer than this app.
|
||||
if (!SPOOF_APP_VERSION_TARGET.isSetToDefault() &&
|
||||
(SPOOF_APP_VERSION_TARGET.get().compareTo(SPOOF_APP_VERSION_TARGET.defaultValue) < 0
|
||||
|| (Utils.getAppVersionName().compareTo(SPOOF_APP_VERSION_TARGET.get()) <= 0))) {
|
||||
Logger.printInfo(() -> "Resetting spoof app version");
|
||||
SPOOF_APP_VERSION_TARGET.resetToDefault();
|
||||
SPOOF_APP_VERSION.resetToDefault();
|
||||
}
|
||||
|
||||
// RYD requires manually migrating old settings since the lack of
|
||||
|
||||
@@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M
|
||||
org.gradle.parallel = true
|
||||
android.useAndroidX = true
|
||||
kotlin.code.style = official
|
||||
version = 5.40.0-dev.5
|
||||
version = 5.40.0-dev.8
|
||||
|
||||
@@ -401,6 +401,10 @@ public final class app/revanced/patches/music/misc/backgroundplayback/Background
|
||||
public static final fun getBackgroundPlaybackPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/music/misc/debugging/EnableDebuggingPatchKt {
|
||||
public static final fun getEnableDebuggingPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/music/misc/extension/SharedExtensionPatchKt {
|
||||
public static final fun getSharedExtensionPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package app.revanced.patches.music.layout.navigationbar
|
||||
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
import app.revanced.patcher.fingerprint
|
||||
import app.revanced.util.containsLiteralInstruction
|
||||
import app.revanced.util.getReference
|
||||
import app.revanced.util.indexOfFirstInstruction
|
||||
import app.revanced.util.literal
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.iface.Method
|
||||
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||
|
||||
@@ -23,9 +23,9 @@ internal val tabLayoutTextFingerprint = fingerprint {
|
||||
Opcode.MOVE_RESULT
|
||||
)
|
||||
strings("FEmusic_search")
|
||||
literal { text1 }
|
||||
custom { method, _ ->
|
||||
indexOfGetVisibilityInstruction(method) >= 0
|
||||
method.containsLiteralInstruction(text1)
|
||||
&& indexOfGetVisibilityInstruction(method) >= 0
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
package app.revanced.patches.music.misc.debugging
|
||||
|
||||
import app.revanced.patches.music.misc.extension.sharedExtensionPatch
|
||||
import app.revanced.patches.music.misc.settings.PreferenceScreen
|
||||
import app.revanced.patches.music.misc.settings.settingsPatch
|
||||
import app.revanced.patches.shared.misc.debugging.enableDebuggingPatch
|
||||
|
||||
@Suppress("unused")
|
||||
val enableDebuggingPatch = enableDebuggingPatch(
|
||||
block = {
|
||||
dependsOn(
|
||||
sharedExtensionPatch,
|
||||
settingsPatch,
|
||||
)
|
||||
|
||||
compatibleWith(
|
||||
"com.google.android.apps.youtube.music"(
|
||||
"7.29.52"
|
||||
)
|
||||
)
|
||||
},
|
||||
// String feature flag does not appear to be present with YT Music.
|
||||
hookStringFeatureFlag = false,
|
||||
preferenceScreen = PreferenceScreen.MISC
|
||||
)
|
||||
@@ -8,12 +8,16 @@ import app.revanced.patches.all.misc.resources.addResources
|
||||
import app.revanced.patches.all.misc.resources.addResourcesPatch
|
||||
import app.revanced.patches.music.misc.extension.sharedExtensionPatch
|
||||
import app.revanced.patches.shared.misc.mapping.resourceMappingPatch
|
||||
import app.revanced.patches.shared.misc.settings.preference.*
|
||||
import app.revanced.patches.shared.misc.settings.preference.BasePreference
|
||||
import app.revanced.patches.shared.misc.settings.preference.BasePreferenceScreen
|
||||
import app.revanced.patches.shared.misc.settings.preference.IntentPreference
|
||||
import app.revanced.patches.shared.misc.settings.preference.NonInteractivePreference
|
||||
import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference
|
||||
import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference.Sorting
|
||||
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
|
||||
import app.revanced.patches.shared.misc.settings.settingsPatch
|
||||
import app.revanced.util.*
|
||||
import app.revanced.util.ResourceGroup
|
||||
import app.revanced.util.copyResources
|
||||
import app.revanced.util.copyXmlNode
|
||||
import app.revanced.util.inputStreamFromBundledResource
|
||||
import com.android.tools.smali.dexlib2.util.MethodUtil
|
||||
|
||||
private const val BASE_ACTIVITY_HOOK_CLASS_DESCRIPTOR =
|
||||
@@ -23,7 +27,6 @@ private const val GOOGLE_API_ACTIVITY_HOOK_CLASS_DESCRIPTOR =
|
||||
|
||||
private val preferences = mutableSetOf<BasePreference>()
|
||||
|
||||
|
||||
private val settingsResourcePatch = resourcePatch {
|
||||
dependsOn(
|
||||
resourceMappingPatch,
|
||||
@@ -87,27 +90,6 @@ val settingsPatch = bytecodePatch(
|
||||
addResources("music", "misc.settings.settingsPatch")
|
||||
addResources("shared", "misc.debugging.enableDebuggingPatch")
|
||||
|
||||
// Should make a separate debugging patch, but for now include it with all installations.
|
||||
PreferenceScreen.MISC.addPreferences(
|
||||
PreferenceScreenPreference(
|
||||
key = "revanced_debug_screen",
|
||||
sorting = Sorting.UNSORTED,
|
||||
preferences = setOf(
|
||||
SwitchPreference("revanced_debug"),
|
||||
NonInteractivePreference(
|
||||
"revanced_debug_export_logs_to_clipboard",
|
||||
tag = "app.revanced.extension.shared.settings.preference.ExportLogToClipboardPreference",
|
||||
selectable = true
|
||||
),
|
||||
NonInteractivePreference(
|
||||
"revanced_debug_logs_clear_buffer",
|
||||
tag = "app.revanced.extension.shared.settings.preference.ClearLogBufferPreference",
|
||||
selectable = true
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
// Add an "About" preference to the top.
|
||||
preferences += NonInteractivePreference(
|
||||
key = "revanced_settings_music_screen_0_about",
|
||||
@@ -154,19 +136,19 @@ fun newIntent(settingsName: String) = IntentPreference.Intent(
|
||||
|
||||
object PreferenceScreen : BasePreferenceScreen() {
|
||||
val ADS = Screen(
|
||||
"revanced_settings_music_screen_1_ads",
|
||||
key = "revanced_settings_music_screen_1_ads",
|
||||
summaryKey = null
|
||||
)
|
||||
val GENERAL = Screen(
|
||||
"revanced_settings_music_screen_2_general",
|
||||
key = "revanced_settings_music_screen_2_general",
|
||||
summaryKey = null
|
||||
)
|
||||
val PLAYER = Screen(
|
||||
"revanced_settings_music_screen_3_player",
|
||||
key = "revanced_settings_music_screen_3_player",
|
||||
summaryKey = null
|
||||
)
|
||||
val MISC = Screen(
|
||||
"revanced_settings_music_screen_4_misc",
|
||||
key = "revanced_settings_music_screen_4_misc",
|
||||
summaryKey = null
|
||||
)
|
||||
|
||||
|
||||
@@ -0,0 +1,147 @@
|
||||
package app.revanced.patches.shared.misc.debugging
|
||||
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||
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
|
||||
import app.revanced.patches.all.misc.resources.addResourcesPatch
|
||||
import app.revanced.patches.shared.misc.settings.preference.BasePreference
|
||||
import app.revanced.patches.shared.misc.settings.preference.BasePreferenceScreen
|
||||
import app.revanced.patches.shared.misc.settings.preference.NonInteractivePreference
|
||||
import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference
|
||||
import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference.Sorting
|
||||
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
|
||||
import app.revanced.util.findInstructionIndicesReversedOrThrow
|
||||
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||
import app.revanced.util.indexOfFirstInstructionReversedOrThrow
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
|
||||
private const val EXTENSION_CLASS_DESCRIPTOR =
|
||||
"Lapp/revanced/extension/shared/patches/EnableDebuggingPatch;"
|
||||
|
||||
/**
|
||||
* Patch shared with YouTube and YT Music.
|
||||
*/
|
||||
internal fun enableDebuggingPatch(
|
||||
block: BytecodePatchBuilder.() -> Unit = {},
|
||||
executeBlock: BytecodePatchContext.() -> Unit = {},
|
||||
hookStringFeatureFlag: Boolean,
|
||||
preferenceScreen: BasePreferenceScreen.Screen,
|
||||
additionalDebugPreferences: List<BasePreference> = emptyList()
|
||||
) = bytecodePatch(
|
||||
name = "Enable debugging",
|
||||
description = "Adds options for debugging and exporting ReVanced logs to the clipboard.",
|
||||
) {
|
||||
|
||||
dependsOn(addResourcesPatch)
|
||||
|
||||
block()
|
||||
|
||||
execute {
|
||||
executeBlock()
|
||||
|
||||
addResources("shared", "misc.debugging.enableDebuggingPatch")
|
||||
|
||||
val preferences = mutableSetOf<BasePreference>(
|
||||
SwitchPreference("revanced_debug"),
|
||||
)
|
||||
|
||||
preferences.addAll(additionalDebugPreferences)
|
||||
|
||||
preferences.addAll(
|
||||
listOf(
|
||||
SwitchPreference("revanced_debug_stacktrace"),
|
||||
SwitchPreference("revanced_debug_toast_on_error"),
|
||||
NonInteractivePreference(
|
||||
"revanced_debug_export_logs_to_clipboard",
|
||||
tag = "app.revanced.extension.shared.settings.preference.ExportLogToClipboardPreference",
|
||||
selectable = true
|
||||
),
|
||||
NonInteractivePreference(
|
||||
"revanced_debug_logs_clear_buffer",
|
||||
tag = "app.revanced.extension.shared.settings.preference.ClearLogBufferPreference",
|
||||
selectable = true
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
preferenceScreen.addPreferences(
|
||||
PreferenceScreenPreference(
|
||||
key = "revanced_debug_screen",
|
||||
sorting = Sorting.UNSORTED,
|
||||
preferences = preferences,
|
||||
)
|
||||
)
|
||||
|
||||
// Hook the methods that look up if a feature flag is active.
|
||||
experimentalBooleanFeatureFlagFingerprint.match(
|
||||
experimentalFeatureFlagParentFingerprint.originalClassDef
|
||||
).method.apply {
|
||||
findInstructionIndicesReversedOrThrow(Opcode.RETURN).forEach { index ->
|
||||
val register = getInstruction<OneRegisterInstruction>(index).registerA
|
||||
|
||||
addInstructions(
|
||||
index,
|
||||
"""
|
||||
invoke-static { v$register, p1 }, $EXTENSION_CLASS_DESCRIPTOR->isBooleanFeatureFlagEnabled(ZLjava/lang/Long;)Z
|
||||
move-result v$register
|
||||
"""
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
experimentalDoubleFeatureFlagFingerprint.match(
|
||||
experimentalFeatureFlagParentFingerprint.originalClassDef
|
||||
).method.apply {
|
||||
val insertIndex = indexOfFirstInstructionOrThrow(Opcode.MOVE_RESULT_WIDE)
|
||||
|
||||
addInstructions(
|
||||
insertIndex,
|
||||
"""
|
||||
move-result-wide v0 # Also clobbers v1 (p0) since result is wide.
|
||||
invoke-static/range { v0 .. v5 }, $EXTENSION_CLASS_DESCRIPTOR->isDoubleFeatureFlagEnabled(DJD)D
|
||||
move-result-wide v0
|
||||
return-wide v0
|
||||
"""
|
||||
)
|
||||
}
|
||||
|
||||
experimentalLongFeatureFlagFingerprint.match(
|
||||
experimentalFeatureFlagParentFingerprint.originalClassDef
|
||||
).method.apply {
|
||||
val insertIndex = indexOfFirstInstructionOrThrow(Opcode.MOVE_RESULT_WIDE)
|
||||
|
||||
addInstructions(
|
||||
insertIndex,
|
||||
"""
|
||||
move-result-wide v0
|
||||
invoke-static/range { v0 .. v5 }, $EXTENSION_CLASS_DESCRIPTOR->isLongFeatureFlagEnabled(JJJ)J
|
||||
move-result-wide v0
|
||||
return-wide v0
|
||||
"""
|
||||
)
|
||||
}
|
||||
|
||||
if (hookStringFeatureFlag) experimentalStringFeatureFlagFingerprint.match(
|
||||
experimentalFeatureFlagParentFingerprint.originalClassDef
|
||||
).method.apply {
|
||||
val insertIndex = indexOfFirstInstructionReversedOrThrow(Opcode.MOVE_RESULT_OBJECT)
|
||||
|
||||
addInstructions(
|
||||
insertIndex,
|
||||
"""
|
||||
move-result-object v0
|
||||
invoke-static { v0, p1, p2, p3 }, $EXTENSION_CLASS_DESCRIPTOR->isStringFeatureFlagEnabled(Ljava/lang/String;JLjava/lang/String;)Ljava/lang/String;
|
||||
move-result-object v0
|
||||
return-object v0
|
||||
"""
|
||||
)
|
||||
}
|
||||
|
||||
// There exists other experimental accessor methods for byte[]
|
||||
// and wrappers for obfuscated classes, but currently none of those are hooked.
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package app.revanced.patches.shared.misc.debugging
|
||||
|
||||
import app.revanced.patcher.fingerprint
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
|
||||
internal val experimentalFeatureFlagParentFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC)
|
||||
returns("L")
|
||||
parameters("L", "J", "[B")
|
||||
strings("Unable to parse proto typed experiment flag: ")
|
||||
}
|
||||
|
||||
internal val experimentalBooleanFeatureFlagFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC)
|
||||
returns("Z")
|
||||
parameters("L", "J", "Z")
|
||||
}
|
||||
|
||||
internal val experimentalDoubleFeatureFlagFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||
returns("D")
|
||||
parameters("J", "D")
|
||||
}
|
||||
|
||||
internal val experimentalLongFeatureFlagFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||
returns("J")
|
||||
parameters("J", "J")
|
||||
}
|
||||
|
||||
internal val experimentalStringFeatureFlagFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||
returns("Ljava/lang/String;")
|
||||
parameters("J", "Ljava/lang/String;")
|
||||
}
|
||||
@@ -1,9 +1,13 @@
|
||||
package app.revanced.patches.shared.misc.spoof
|
||||
|
||||
import app.revanced.patcher.fingerprint
|
||||
import app.revanced.util.getReference
|
||||
import app.revanced.util.indexOfFirstInstruction
|
||||
import app.revanced.util.literal
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.iface.Method
|
||||
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||
|
||||
internal val buildInitPlaybackRequestFingerprint = fingerprint {
|
||||
returns("Lorg/chromium/net/UrlRequest\$Builder;")
|
||||
@@ -37,10 +41,6 @@ internal val buildRequestFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC)
|
||||
returns("Lorg/chromium/net/UrlRequest") // UrlRequest; or UrlRequest$Builder;
|
||||
custom { methodDef, _ ->
|
||||
if (indexOfNewUrlRequestBuilderInstruction(methodDef) < 0) {
|
||||
return@custom false
|
||||
}
|
||||
|
||||
// Different targets have slightly different parameters
|
||||
|
||||
// Earlier targets have parameters:
|
||||
@@ -74,10 +74,10 @@ internal val buildRequestFingerprint = fingerprint {
|
||||
val parameterTypesSize = parameterTypes.size
|
||||
(parameterTypesSize == 6 || parameterTypesSize == 7 || parameterTypesSize == 8) &&
|
||||
parameterTypes[1] == "Ljava/util/Map;" // URL headers.
|
||||
&& indexOfNewUrlRequestBuilderInstruction(methodDef) >= 0
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
internal val protobufClassParseByteBufferFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PROTECTED, AccessFlags.STATIC)
|
||||
returns("L")
|
||||
@@ -191,3 +191,13 @@ internal val playbackStartDescriptorFeatureFlagFingerprint = fingerprint {
|
||||
returns("Z")
|
||||
literal { PLAYBACK_START_CHECK_ENDPOINT_USED_FEATURE_FLAG }
|
||||
}
|
||||
|
||||
internal fun indexOfNewUrlRequestBuilderInstruction(method: Method) = method.indexOfFirstInstruction {
|
||||
val reference = getReference<MethodReference>()
|
||||
opcode == Opcode.INVOKE_VIRTUAL && reference?.definingClass == "Lorg/chromium/net/CronetEngine;"
|
||||
&& reference.name == "newUrlRequestBuilder"
|
||||
&& reference.parameterTypes.size == 3
|
||||
&& reference.parameterTypes[0] == "Ljava/lang/String;"
|
||||
&& reference.parameterTypes[1] == "Lorg/chromium/net/UrlRequest\$Callback;"
|
||||
&& reference.parameterTypes[2] == "Ljava/util/concurrent/Executor;"
|
||||
}
|
||||
|
||||
@@ -16,20 +16,17 @@ import app.revanced.patches.all.misc.resources.addResourcesPatch
|
||||
import app.revanced.util.findFreeRegister
|
||||
import app.revanced.util.findInstructionIndicesReversedOrThrow
|
||||
import app.revanced.util.getReference
|
||||
import app.revanced.util.indexOfFirstInstruction
|
||||
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||
import app.revanced.util.insertLiteralOverride
|
||||
import app.revanced.util.returnEarly
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.builder.MutableMethodImplementation
|
||||
import com.android.tools.smali.dexlib2.iface.Method
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
|
||||
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||
import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
|
||||
import com.android.tools.smali.dexlib2.immutable.ImmutableMethodParameter
|
||||
|
||||
@@ -337,12 +334,3 @@ fun spoofVideoStreamsPatch(
|
||||
executeBlock()
|
||||
}
|
||||
}
|
||||
|
||||
internal fun indexOfNewUrlRequestBuilderInstruction(method: Method) = method.indexOfFirstInstruction {
|
||||
opcode == Opcode.INVOKE_VIRTUAL && getReference<MethodReference>().toString() ==
|
||||
"Lorg/chromium/net/CronetEngine;" +
|
||||
"->newUrlRequestBuilder(" +
|
||||
"Ljava/lang/String;Lorg/chromium/net/UrlRequest${'$'}Callback;" +
|
||||
"Ljava/util/concurrent/Executor;" +
|
||||
")Lorg/chromium/net/UrlRequest${'$'}Builder;"
|
||||
}
|
||||
|
||||
@@ -78,10 +78,9 @@ val hideAdsPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -27,10 +27,9 @@ val hideGetPremiumPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -25,10 +25,9 @@ val videoAdsPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -55,10 +55,9 @@ val copyVideoUrlPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -26,10 +26,9 @@ val removeViewerDiscretionDialogPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -29,8 +29,8 @@ val disableDoubleTapActionsPatch = bytecodePatch(
|
||||
compatibleWith(
|
||||
"com.google.android.youtube"(
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -76,10 +76,9 @@ val downloadsPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -22,10 +22,9 @@ val seekbarPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -90,10 +90,9 @@ val swipeControlsPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -26,10 +26,9 @@ val autoCaptionsPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -45,10 +45,9 @@ val customBrandingPatch = resourcePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -95,10 +95,9 @@ val changeHeaderPatch = resourcePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -24,10 +24,9 @@ val hideButtonsPatch = resourcePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
@@ -41,6 +40,7 @@ val hideButtonsPatch = resourcePatch(
|
||||
SwitchPreference("revanced_disable_like_subscribe_glow"),
|
||||
SwitchPreference("revanced_hide_ask_button"),
|
||||
SwitchPreference("revanced_hide_clip_button"),
|
||||
SwitchPreference("revanced_hide_comments_button"),
|
||||
SwitchPreference("revanced_hide_download_button"),
|
||||
SwitchPreference("revanced_hide_hype_button"),
|
||||
SwitchPreference("revanced_hide_like_dislike_button"),
|
||||
|
||||
@@ -42,10 +42,9 @@ val navigationButtonsPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -60,10 +60,9 @@ val hidePlayerOverlayButtonsPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -35,10 +35,9 @@ val changeFormFactorPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -61,10 +61,9 @@ val hideEndscreenCardsPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -33,10 +33,9 @@ val hideEndScreenSuggestedVideoPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -31,10 +31,9 @@ val disableFullscreenAmbientModePatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -128,10 +128,9 @@ val hideLayoutComponentsPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -59,10 +59,9 @@ val hideInfoCardsPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -26,10 +26,9 @@ val hidePlayerFlyoutMenuPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -50,10 +50,9 @@ val hideRelatedVideoOverlayPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -31,10 +31,9 @@ val disableRollingNumberAnimationPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -174,10 +174,9 @@ val hideShortsComponentsPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -33,10 +33,9 @@ val disableSignInToTvPopupPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -23,10 +23,9 @@ val hideTimestampPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -155,10 +155,9 @@ val miniplayerPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -23,10 +23,9 @@ val playerPopupPanelsPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -23,10 +23,9 @@ internal val exitFullscreenPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -25,10 +25,9 @@ val openVideosFullscreenPatch = bytecodePatch(
|
||||
|
||||
compatibleWith(
|
||||
"com.google.android.youtube"(
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -54,10 +54,9 @@ val customPlayerOverlayOpacityPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -63,10 +63,9 @@ val returnYouTubeDislikePatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -68,10 +68,9 @@ val wideSearchbarPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -46,10 +46,9 @@ val shortsAutoplayPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -66,10 +66,9 @@ val openShortsInRegularPlayerPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -128,10 +128,9 @@ val sponsorBlockPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@ import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPref
|
||||
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
|
||||
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
||||
import app.revanced.patches.youtube.misc.playservice.is_19_43_or_greater
|
||||
import app.revanced.patches.youtube.misc.playservice.is_20_14_or_greater
|
||||
import app.revanced.patches.youtube.misc.playservice.versionCheckPatch
|
||||
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
|
||||
import app.revanced.patches.youtube.misc.settings.settingsPatch
|
||||
@@ -60,10 +61,9 @@ val spoofAppVersionPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
@@ -79,17 +79,21 @@ val spoofAppVersionPatch = bytecodePatch(
|
||||
tag = "app.revanced.extension.shared.settings.preference.NoTitlePreferenceCategory",
|
||||
preferences = setOf(
|
||||
SwitchPreference("revanced_spoof_app_version"),
|
||||
if (is_19_43_or_greater) {
|
||||
if (is_20_14_or_greater) {
|
||||
ListPreference("revanced_spoof_app_version_target")
|
||||
} else if (is_19_43_or_greater) {
|
||||
ListPreference(
|
||||
key = "revanced_spoof_app_version_target",
|
||||
summaryKey = null
|
||||
summaryKey = null,
|
||||
entriesKey = "revanced_spoof_app_version_target_legacy_20_13_entries",
|
||||
entryValuesKey = "revanced_spoof_app_version_target_legacy_20_13_entry_values"
|
||||
)
|
||||
} else {
|
||||
ListPreference(
|
||||
key = "revanced_spoof_app_version_target",
|
||||
summaryKey = null,
|
||||
entriesKey = "revanced_spoof_app_version_target_legacy_entries",
|
||||
entryValuesKey = "revanced_spoof_app_version_target_legacy_entry_values"
|
||||
entriesKey = "revanced_spoof_app_version_target_legacy_19_34_entries",
|
||||
entryValuesKey = "revanced_spoof_app_version_target_legacy_19_34_entry_values"
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
@@ -34,10 +34,9 @@ val changeStartPagePatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -36,10 +36,9 @@ val disableResumingShortsOnStartupPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -206,10 +206,9 @@ val themePatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -35,10 +35,9 @@ val alternativeThumbnailsPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -29,10 +29,9 @@ val bypassImageRegionRestrictionsPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -25,10 +25,9 @@ val announcementsPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -26,10 +26,9 @@ val autoRepeatPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -53,10 +53,9 @@ val backgroundPlaybackPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -1,144 +1,34 @@
|
||||
package app.revanced.patches.youtube.misc.debugging
|
||||
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||
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.NonInteractivePreference
|
||||
import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference
|
||||
import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference.Sorting
|
||||
import app.revanced.patches.shared.misc.debugging.enableDebuggingPatch
|
||||
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
|
||||
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
||||
import app.revanced.patches.youtube.misc.playservice.versionCheckPatch
|
||||
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
|
||||
import app.revanced.patches.youtube.misc.settings.settingsPatch
|
||||
import app.revanced.util.findInstructionIndicesReversedOrThrow
|
||||
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||
import app.revanced.util.indexOfFirstInstructionReversedOrThrow
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
|
||||
private const val EXTENSION_CLASS_DESCRIPTOR =
|
||||
"Lapp/revanced/extension/youtube/patches/EnableDebuggingPatch;"
|
||||
|
||||
// TODO: Refactor this into a shared patch that can be used by both YT and YT Music.
|
||||
// Almost all of the feature flag hooks are the same between both apps.
|
||||
val enableDebuggingPatch = bytecodePatch(
|
||||
name = "Enable debugging",
|
||||
description = "Adds options for debugging and exporting ReVanced logs to the clipboard.",
|
||||
) {
|
||||
dependsOn(
|
||||
sharedExtensionPatch,
|
||||
settingsPatch,
|
||||
addResourcesPatch,
|
||||
versionCheckPatch
|
||||
)
|
||||
|
||||
compatibleWith(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
@Suppress("unused")
|
||||
val enableDebuggingPatch = enableDebuggingPatch(
|
||||
block = {
|
||||
dependsOn(
|
||||
sharedExtensionPatch,
|
||||
settingsPatch,
|
||||
)
|
||||
)
|
||||
|
||||
execute {
|
||||
addResources("shared", "misc.debugging.enableDebuggingPatch")
|
||||
compatibleWith(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"20.07.39",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
},
|
||||
executeBlock = {
|
||||
addResources("youtube", "misc.debugging.enableDebuggingPatch")
|
||||
|
||||
PreferenceScreen.MISC.addPreferences(
|
||||
PreferenceScreenPreference(
|
||||
key = "revanced_debug_screen",
|
||||
sorting = Sorting.UNSORTED,
|
||||
preferences = setOf(
|
||||
SwitchPreference("revanced_debug"),
|
||||
SwitchPreference("revanced_debug_protobuffer"),
|
||||
SwitchPreference("revanced_debug_stacktrace"),
|
||||
SwitchPreference("revanced_debug_toast_on_error"),
|
||||
NonInteractivePreference(
|
||||
"revanced_debug_export_logs_to_clipboard",
|
||||
tag = "app.revanced.extension.shared.settings.preference.ExportLogToClipboardPreference",
|
||||
selectable = true
|
||||
),
|
||||
NonInteractivePreference(
|
||||
"revanced_debug_logs_clear_buffer",
|
||||
tag = "app.revanced.extension.shared.settings.preference.ClearLogBufferPreference",
|
||||
selectable = true
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
// Hook the methods that look up if a feature flag is active.
|
||||
experimentalBooleanFeatureFlagFingerprint.match(
|
||||
experimentalFeatureFlagParentFingerprint.originalClassDef
|
||||
).method.apply {
|
||||
findInstructionIndicesReversedOrThrow(Opcode.RETURN).forEach { index ->
|
||||
val register = getInstruction<OneRegisterInstruction>(index).registerA
|
||||
|
||||
addInstructions(
|
||||
index,
|
||||
"""
|
||||
invoke-static { v$register, p1 }, $EXTENSION_CLASS_DESCRIPTOR->isBooleanFeatureFlagEnabled(ZLjava/lang/Long;)Z
|
||||
move-result v$register
|
||||
"""
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
experimentalDoubleFeatureFlagFingerprint.match(
|
||||
experimentalFeatureFlagParentFingerprint.originalClassDef
|
||||
).method.apply {
|
||||
val insertIndex = indexOfFirstInstructionOrThrow(Opcode.MOVE_RESULT_WIDE)
|
||||
|
||||
addInstructions(
|
||||
insertIndex,
|
||||
"""
|
||||
move-result-wide v0 # Also clobbers v1 (p0) since result is wide.
|
||||
invoke-static/range { v0 .. v5 }, $EXTENSION_CLASS_DESCRIPTOR->isDoubleFeatureFlagEnabled(DJD)D
|
||||
move-result-wide v0
|
||||
return-wide v0
|
||||
"""
|
||||
)
|
||||
}
|
||||
|
||||
experimentalLongFeatureFlagFingerprint.match(
|
||||
experimentalFeatureFlagParentFingerprint.originalClassDef
|
||||
).method.apply {
|
||||
val insertIndex = indexOfFirstInstructionOrThrow(Opcode.MOVE_RESULT_WIDE)
|
||||
|
||||
addInstructions(
|
||||
insertIndex,
|
||||
"""
|
||||
move-result-wide v0
|
||||
invoke-static/range { v0 .. v5 }, $EXTENSION_CLASS_DESCRIPTOR->isLongFeatureFlagEnabled(JJJ)J
|
||||
move-result-wide v0
|
||||
return-wide v0
|
||||
"""
|
||||
)
|
||||
}
|
||||
|
||||
experimentalStringFeatureFlagFingerprint.match(
|
||||
experimentalFeatureFlagParentFingerprint.originalClassDef
|
||||
).method.apply {
|
||||
val insertIndex = indexOfFirstInstructionReversedOrThrow(Opcode.MOVE_RESULT_OBJECT)
|
||||
|
||||
addInstructions(
|
||||
insertIndex,
|
||||
"""
|
||||
move-result-object v0
|
||||
invoke-static { v0, p1, p2, p3 }, $EXTENSION_CLASS_DESCRIPTOR->isStringFeatureFlagEnabled(Ljava/lang/String;JLjava/lang/String;)Ljava/lang/String;
|
||||
move-result-object v0
|
||||
return-object v0
|
||||
"""
|
||||
)
|
||||
}
|
||||
|
||||
// There exists other experimental accessor methods for byte[]
|
||||
// and wrappers for obfuscated classes, but currently none of those are hooked.
|
||||
}
|
||||
}
|
||||
},
|
||||
hookStringFeatureFlag = true,
|
||||
preferenceScreen = PreferenceScreen.MISC,
|
||||
additionalDebugPreferences = listOf(SwitchPreference("revanced_debug_protobuffer"))
|
||||
)
|
||||
|
||||
@@ -26,10 +26,9 @@ val spoofDeviceDimensionsPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -23,10 +23,9 @@ val checkWatchHistoryDomainNameResolutionPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package app.revanced.patches.youtube.misc.fix.backtoexitgesture
|
||||
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
import app.revanced.patcher.fingerprint
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
|
||||
internal val scrollPositionFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PROTECTED, AccessFlags.FINAL)
|
||||
@@ -24,30 +24,18 @@ internal val recyclerViewTopScrollingFingerprint = fingerprint {
|
||||
returns("V")
|
||||
parameters()
|
||||
opcodes(
|
||||
Opcode.IGET_OBJECT,
|
||||
Opcode.IF_EQZ,
|
||||
Opcode.IGET_OBJECT,
|
||||
Opcode.INVOKE_INTERFACE,
|
||||
Opcode.MOVE_RESULT_OBJECT,
|
||||
Opcode.INVOKE_INTERFACE,
|
||||
Opcode.MOVE_RESULT,
|
||||
Opcode.IF_EQZ,
|
||||
Opcode.INVOKE_INTERFACE,
|
||||
Opcode.MOVE_RESULT_OBJECT,
|
||||
Opcode.CHECK_CAST,
|
||||
Opcode.CONST_4,
|
||||
Opcode.INVOKE_VIRTUAL,
|
||||
Opcode.GOTO,
|
||||
Opcode.IGET_OBJECT,
|
||||
Opcode.INVOKE_INTERFACE,
|
||||
Opcode.INVOKE_INTERFACE
|
||||
)
|
||||
}
|
||||
|
||||
internal val recyclerViewTopScrollingParentFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR)
|
||||
parameters("L", "L", "Landroid/view/ViewGroup;", "Landroid/view/ViewGroup;")
|
||||
opcodes(
|
||||
Opcode.INVOKE_DIRECT,
|
||||
Opcode.IPUT_OBJECT,
|
||||
Opcode.IPUT_OBJECT,
|
||||
Opcode.IPUT_OBJECT,
|
||||
@@ -55,5 +43,8 @@ internal val recyclerViewTopScrollingParentFingerprint = fingerprint {
|
||||
Opcode.CONST_16,
|
||||
Opcode.INVOKE_VIRTUAL,
|
||||
Opcode.NEW_INSTANCE,
|
||||
Opcode.INVOKE_DIRECT,
|
||||
Opcode.IPUT_OBJECT,
|
||||
Opcode.RETURN_VOID
|
||||
)
|
||||
}
|
||||
|
||||
@@ -15,13 +15,14 @@ internal val fixBackToExitGesturePatch = bytecodePatch(
|
||||
) {
|
||||
|
||||
execute {
|
||||
recyclerViewTopScrollingFingerprint.match(recyclerViewTopScrollingParentFingerprint.originalClassDef)
|
||||
.let {
|
||||
it.method.addInstruction(
|
||||
it.patternMatch!!.endIndex,
|
||||
"invoke-static { }, $EXTENSION_CLASS_DESCRIPTOR->onTopView()V"
|
||||
)
|
||||
}
|
||||
recyclerViewTopScrollingFingerprint.match(
|
||||
recyclerViewTopScrollingParentFingerprint.originalClassDef
|
||||
).let {
|
||||
it.method.addInstruction(
|
||||
it.patternMatch!!.endIndex,
|
||||
"invoke-static { }, $EXTENSION_CLASS_DESCRIPTOR->onTopView()V"
|
||||
)
|
||||
}
|
||||
|
||||
scrollPositionFingerprint.let {
|
||||
navigate(it.originalMethod)
|
||||
|
||||
@@ -37,10 +37,9 @@ val gmsCoreSupportPatch = gmsCoreSupportPatch(
|
||||
YOUTUBE_PACKAGE_NAME(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -28,10 +28,9 @@ val disableHapticFeedbackPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -34,10 +34,9 @@ val bypassURLRedirectsPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -43,10 +43,9 @@ val openLinksExternallyPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -32,10 +32,9 @@ val removeTrackingQueryParameterPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -24,10 +24,9 @@ val spoofVideoStreamsPatch = spoofVideoStreamsPatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -46,10 +46,9 @@ val forceOriginalAudioPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -56,10 +56,9 @@ val disableHdrPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -26,10 +26,9 @@ val videoQualityPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -30,10 +30,9 @@ val playbackSpeedPatch = bytecodePatch(
|
||||
"com.google.android.youtube"(
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.47.53",
|
||||
"20.07.39",
|
||||
"20.12.46",
|
||||
"20.13.41",
|
||||
"20.14.43",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -253,8 +253,17 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
|
||||
</patch>
|
||||
<patch id="layout.castbutton.hideCastButton">
|
||||
</patch>
|
||||
<patch id="layout.compactheader.hideCategoryBar">
|
||||
</patch>
|
||||
<patch id="layout.navigationbar.navigationBarPatch">
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Explore' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Library' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Upgrade' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
</patch>
|
||||
<patch id="layout.premium.hideGetPremiumPatch">
|
||||
</patch>
|
||||
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
|
||||
|
||||
@@ -253,8 +253,17 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
|
||||
</patch>
|
||||
<patch id="layout.castbutton.hideCastButton">
|
||||
</patch>
|
||||
<patch id="layout.compactheader.hideCategoryBar">
|
||||
</patch>
|
||||
<patch id="layout.navigationbar.navigationBarPatch">
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Explore' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Library' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Upgrade' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
</patch>
|
||||
<patch id="layout.premium.hideGetPremiumPatch">
|
||||
</patch>
|
||||
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
|
||||
|
||||
@@ -1585,11 +1585,46 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_music_play_permanent_repeat_summary_on">تم تمكين التكرار الدائم</string>
|
||||
<string name="revanced_music_play_permanent_repeat_summary_off">تم تعطيل التكرار الدائم</string>
|
||||
</patch>
|
||||
<patch id="layout.castbutton.hideCastButton">
|
||||
<string name="revanced_music_hide_cast_button_title">إخفاء زر الإرسال</string>
|
||||
<string name="revanced_music_hide_cast_button_summary_on">زر الإرسال مخفي</string>
|
||||
<string name="revanced_music_hide_cast_button_summary_off">زر الإرسال ظاهر</string>
|
||||
</patch>
|
||||
<patch id="layout.compactheader.hideCategoryBar">
|
||||
<string name="revanced_music_hide_category_bar_title">إخفاء شريط الفئات</string>
|
||||
<string name="revanced_music_hide_category_bar_summary_on">شريط الفئات مخفي</string>
|
||||
<string name="revanced_music_hide_category_bar_summary_off">شريط الفئات معروض</string>
|
||||
</patch>
|
||||
<patch id="layout.navigationbar.navigationBarPatch">
|
||||
<string name="revanced_music_navigation_bar_screen_title">شريط التنقل</string>
|
||||
<string name="revanced_music_navigation_bar_screen_summary">إخفاء أزرار شريط التنقل أو تغييرها</string>
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_title">إخفاء زر \"الرئيسية\"</string>
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_summary_on">زر \"الرئيسية\" مخفي</string>
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_summary_off">زر \"الرئيسية\" ظاهر</string>
|
||||
<!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_title">إخفاء زر \"المقتطفات\"</string>
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_summary_on">زر \"المقتطفات\" مخفي</string>
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_summary_off">زر \"المقتطفات\" ظاهر</string>
|
||||
<!-- 'Explore' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_title">إخفاء زر \"استكشاف\"</string>
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_summary_on">زر \"استكشاف\" مخفي</string>
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_summary_off">زر \"استكشاف\" ظاهر</string>
|
||||
<!-- 'Library' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_title">إخفاء زر \"المكتبة\"</string>
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_summary_on">زر \"المكتبة\" مخفي</string>
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_summary_off">زر \"المكتبة\" ظاهر</string>
|
||||
<!-- 'Upgrade' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_title">إخفاء زر \"الترقية\"</string>
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_summary_on">زر \"الترقية\" مخفي</string>
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_summary_off">زر \"الترقية\" ظاهر</string>
|
||||
<string name="revanced_music_hide_navigation_bar_title">إخفاء شريط التنقل</string>
|
||||
<string name="revanced_music_hide_navigation_bar_summary_on">شريط التنقل مخفي</string>
|
||||
<string name="revanced_music_hide_navigation_bar_summary_off">شريط التنقل ظاهر</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_title">إخفاء تسميات أزرار التنقل</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_summary_on">التسميات مخفية</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_summary_off">التسميات ظاهرة</string>
|
||||
</patch>
|
||||
<patch id="layout.premium.hideGetPremiumPatch">
|
||||
<string name="revanced_music_hide_get_premium_label_title">إخفاء تسمية \'الحصول على Music Premium\'</string>
|
||||
<string name="revanced_music_hide_get_premium_label_summary_on">التسمية مخفية</string>
|
||||
|
||||
@@ -255,8 +255,17 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
|
||||
</patch>
|
||||
<patch id="layout.castbutton.hideCastButton">
|
||||
</patch>
|
||||
<patch id="layout.compactheader.hideCategoryBar">
|
||||
</patch>
|
||||
<patch id="layout.navigationbar.navigationBarPatch">
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Explore' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Library' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Upgrade' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
</patch>
|
||||
<patch id="layout.premium.hideGetPremiumPatch">
|
||||
</patch>
|
||||
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
|
||||
|
||||
@@ -1584,11 +1584,20 @@ Bunu aktivləşdirmə daha yüksək video keyfiyyətləri əngəlin silə bilər
|
||||
<string name="revanced_music_play_permanent_repeat_summary_on">Kəsintisiz təkrarlama aktivdir</string>
|
||||
<string name="revanced_music_play_permanent_repeat_summary_off">Kəsintisiz təkrarlama qapalıdır</string>
|
||||
</patch>
|
||||
<patch id="layout.castbutton.hideCastButton">
|
||||
</patch>
|
||||
<patch id="layout.compactheader.hideCategoryBar">
|
||||
<string name="revanced_music_hide_category_bar_title">Kateqoriya cizgisin gizlət</string>
|
||||
<string name="revanced_music_hide_category_bar_summary_on">Kateqoriya cizgisi gizlidir</string>
|
||||
<string name="revanced_music_hide_category_bar_summary_off">Kateqoriya cizgisi görünür</string>
|
||||
</patch>
|
||||
<patch id="layout.navigationbar.navigationBarPatch">
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Explore' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Library' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Upgrade' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
</patch>
|
||||
<patch id="layout.premium.hideGetPremiumPatch">
|
||||
<string name="revanced_music_hide_get_premium_label_title"> \'Musiqi Premiumu Əldə et\' etiketini gizlət</string>
|
||||
<string name="revanced_music_hide_get_premium_label_summary_on">Etiket gizlidir</string>
|
||||
|
||||
@@ -1586,11 +1586,46 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_music_play_permanent_repeat_summary_on">Пастаянны паўтор уключаны</string>
|
||||
<string name="revanced_music_play_permanent_repeat_summary_off">Пастаянны паўтор адключаны</string>
|
||||
</patch>
|
||||
<patch id="layout.castbutton.hideCastButton">
|
||||
<string name="revanced_music_hide_cast_button_title">Схаваць кнопку трансляцыі</string>
|
||||
<string name="revanced_music_hide_cast_button_summary_on">Кнопка трансляцыі схавана</string>
|
||||
<string name="revanced_music_hide_cast_button_summary_off">Кнопка трансляцыі паказана</string>
|
||||
</patch>
|
||||
<patch id="layout.compactheader.hideCategoryBar">
|
||||
<string name="revanced_music_hide_category_bar_title">Схаваць панэль катэгорый</string>
|
||||
<string name="revanced_music_hide_category_bar_summary_on">Панэль катэгорый схаваная</string>
|
||||
<string name="revanced_music_hide_category_bar_summary_off">Панэль катэгорый паказаная</string>
|
||||
</patch>
|
||||
<patch id="layout.navigationbar.navigationBarPatch">
|
||||
<string name="revanced_music_navigation_bar_screen_title">Панэль навігацыі</string>
|
||||
<string name="revanced_music_navigation_bar_screen_summary">Схаваць або змяніць кнопкі панэлі навігацыі</string>
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_title">Схаваць кнопку \"Галоўная\"</string>
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_summary_on">Кнопка \"Галоўная\" схавана</string>
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_summary_off">Кнопка \"Галоўная\" паказана</string>
|
||||
<!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_title">Схаваць кнопку \"Узоры\"</string>
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_summary_on">Кнопка \"Узоры\" схавана</string>
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_summary_off">Кнопка \"Узоры\" паказана</string>
|
||||
<!-- 'Explore' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_title">Схаваць кнопку \"Агляд\"</string>
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_summary_on">Кнопка \"Агляд\" схавана</string>
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_summary_off">Кнопка \"Агляд\" паказана</string>
|
||||
<!-- 'Library' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_title">Схаваць кнопку \"Бібліятэка\"</string>
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_summary_on">Кнопка \"Бібліятэка\" схавана</string>
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_summary_off">Кнопка \"Бібліятэка\" паказана</string>
|
||||
<!-- 'Upgrade' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_title">Схаваць кнопку \"Абнавіць\"</string>
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_summary_on">Кнопка \"Абнавіць\" схавана</string>
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_summary_off">Кнопка \"Абнавіць\" паказана</string>
|
||||
<string name="revanced_music_hide_navigation_bar_title">Схаваць панэль навігацыі</string>
|
||||
<string name="revanced_music_hide_navigation_bar_summary_on">Панэль навігацыі схавана</string>
|
||||
<string name="revanced_music_hide_navigation_bar_summary_off">Панэль навігацыі паказана</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_title">Схаваць подпісы кнопак навігацыі</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_summary_on">Подпісы схаваны</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_summary_off">Подпісы паказаны</string>
|
||||
</patch>
|
||||
<patch id="layout.premium.hideGetPremiumPatch">
|
||||
<string name="revanced_music_hide_get_premium_label_title">Схаваць надпіс \"Атрымаць Music Premium\"</string>
|
||||
<string name="revanced_music_hide_get_premium_label_summary_on">Надпіс схаваны</string>
|
||||
|
||||
@@ -1585,11 +1585,46 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_music_play_permanent_repeat_summary_on">Постоянното повтаряне е активирано</string>
|
||||
<string name="revanced_music_play_permanent_repeat_summary_off">Постоянното повтаряне е деактивирано</string>
|
||||
</patch>
|
||||
<patch id="layout.castbutton.hideCastButton">
|
||||
<string name="revanced_music_hide_cast_button_title">Скриване на бутона за предаване</string>
|
||||
<string name="revanced_music_hide_cast_button_summary_on">Бутонът за предаване е скрит</string>
|
||||
<string name="revanced_music_hide_cast_button_summary_off">Бутонът за предаване е показан</string>
|
||||
</patch>
|
||||
<patch id="layout.compactheader.hideCategoryBar">
|
||||
<string name="revanced_music_hide_category_bar_title">Скриване на лентата с категории</string>
|
||||
<string name="revanced_music_hide_category_bar_summary_on">Лентата с категории е скрита</string>
|
||||
<string name="revanced_music_hide_category_bar_summary_off">Лентата с категории е показана</string>
|
||||
</patch>
|
||||
<patch id="layout.navigationbar.navigationBarPatch">
|
||||
<string name="revanced_music_navigation_bar_screen_title">Навигационна лента</string>
|
||||
<string name="revanced_music_navigation_bar_screen_summary">Скриване или промяна на бутоните на навигационната лента</string>
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_title">Скриване на бутона Начало</string>
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_summary_on">Бутонът Начало е скрит</string>
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_summary_off">Бутонът Начало е показан</string>
|
||||
<!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_title">Скриване на бутона Мостри</string>
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_summary_on">Бутонът Мостри е скрит</string>
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_summary_off">Бутонът Мостри е показан</string>
|
||||
<!-- 'Explore' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_title">Скриване на бутона Проучване</string>
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_summary_on">Бутонът Проучване е скрит</string>
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_summary_off">Бутонът Проучване е показан</string>
|
||||
<!-- 'Library' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_title">Скриване на бутона Библиотека</string>
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_summary_on">Бутонът Библиотека е скрит</string>
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_summary_off">Бутонът Библиотека е показан</string>
|
||||
<!-- 'Upgrade' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_title">Скриване на бутона Надграждане</string>
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_summary_on">Бутонът Надграждане е скрит</string>
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_summary_off">Бутонът Надграждане е показан</string>
|
||||
<string name="revanced_music_hide_navigation_bar_title">Скриване на навигационната лента</string>
|
||||
<string name="revanced_music_hide_navigation_bar_summary_on">Навигационната лента е скрита</string>
|
||||
<string name="revanced_music_hide_navigation_bar_summary_off">Навигационната лента е показана</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_title">Скриване на етикетите на навигационните бутони</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_summary_on">Етикетите са скрити</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_summary_off">Етикетите са показани</string>
|
||||
</patch>
|
||||
<patch id="layout.premium.hideGetPremiumPatch">
|
||||
<string name="revanced_music_hide_get_premium_label_title">Скриване на етикета „Вземете Music Premium“</string>
|
||||
<string name="revanced_music_hide_get_premium_label_summary_on">Етикетът е скрит</string>
|
||||
|
||||
@@ -1581,11 +1581,46 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট
|
||||
<string name="revanced_music_play_permanent_repeat_summary_on">স্থায়ী পুনরাবৃত্তি সক্ষম করা হয়েছে</string>
|
||||
<string name="revanced_music_play_permanent_repeat_summary_off">স্থায়ী পুনরাবৃত্তি অক্ষম করা হয়েছে</string>
|
||||
</patch>
|
||||
<patch id="layout.castbutton.hideCastButton">
|
||||
<string name="revanced_music_hide_cast_button_title">কাস্ট বোতাম লুকান</string>
|
||||
<string name="revanced_music_hide_cast_button_summary_on">কাস্ট বোতাম লুকানো আছে</string>
|
||||
<string name="revanced_music_hide_cast_button_summary_off">কাস্ট বোতাম দেখানো আছে</string>
|
||||
</patch>
|
||||
<patch id="layout.compactheader.hideCategoryBar">
|
||||
<string name="revanced_music_hide_category_bar_title">ক্যাটাগরি বার লুকান</string>
|
||||
<string name="revanced_music_hide_category_bar_summary_on">ক্যাটাগরি বার লুকানো আছে</string>
|
||||
<string name="revanced_music_hide_category_bar_summary_off">ক্যাটাগরি বার দেখানো আছে</string>
|
||||
</patch>
|
||||
<patch id="layout.navigationbar.navigationBarPatch">
|
||||
<string name="revanced_music_navigation_bar_screen_title">নেভিগেশন বার</string>
|
||||
<string name="revanced_music_navigation_bar_screen_summary">নেভিগেশন বারের বোতামগুলি লুকান বা পরিবর্তন করুন</string>
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_title">হোম বোতাম লুকান</string>
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_summary_on">হোম বোতাম লুকানো আছে</string>
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_summary_off">হোম বোতাম দেখানো আছে</string>
|
||||
<!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_title">স্যাম্পল বোতাম লুকান</string>
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_summary_on">স্যাম্পল বোতাম লুকানো আছে</string>
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_summary_off">স্যাম্পল বোতাম দেখানো আছে</string>
|
||||
<!-- 'Explore' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_title">অনুসন্ধান বোতাম লুকান</string>
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_summary_on">অনুসন্ধান বোতাম লুকানো আছে</string>
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_summary_off">অনুসন্ধান বোতাম দেখানো আছে</string>
|
||||
<!-- 'Library' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_title">লাইব্রেরি বোতাম লুকান</string>
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_summary_on">লাইব্রেরি বোতাম লুকানো আছে</string>
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_summary_off">লাইব্রেরি বোতাম দেখানো আছে</string>
|
||||
<!-- 'Upgrade' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_title">আপগ্রেড বোতাম লুকান</string>
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_summary_on">আপগ্রেড বোতাম লুকানো আছে</string>
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_summary_off">আপগ্রেড বোতাম দেখানো আছে</string>
|
||||
<string name="revanced_music_hide_navigation_bar_title">নেভিগেশন বার লুকান</string>
|
||||
<string name="revanced_music_hide_navigation_bar_summary_on">নেভিগেশন বার লুকানো আছে</string>
|
||||
<string name="revanced_music_hide_navigation_bar_summary_off">নেভিগেশন বার দেখানো আছে</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_title">নেভিগেশন বোতামের লেবেলগুলি লুকান</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_summary_on">লেবেলগুলি লুকানো আছে</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_summary_off">লেবেলগুলি দেখানো আছে</string>
|
||||
</patch>
|
||||
<patch id="layout.premium.hideGetPremiumPatch">
|
||||
<string name="revanced_music_hide_get_premium_label_title">\'গেট মিউজিক প্রিমিয়াম\' লেবেল লুকান</string>
|
||||
<string name="revanced_music_hide_get_premium_label_summary_on">লেবেল লুকানো আছে</string>
|
||||
|
||||
@@ -253,8 +253,17 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
|
||||
</patch>
|
||||
<patch id="layout.castbutton.hideCastButton">
|
||||
</patch>
|
||||
<patch id="layout.compactheader.hideCategoryBar">
|
||||
</patch>
|
||||
<patch id="layout.navigationbar.navigationBarPatch">
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Explore' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Library' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Upgrade' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
</patch>
|
||||
<patch id="layout.premium.hideGetPremiumPatch">
|
||||
</patch>
|
||||
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
|
||||
|
||||
@@ -253,8 +253,17 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
|
||||
</patch>
|
||||
<patch id="layout.castbutton.hideCastButton">
|
||||
</patch>
|
||||
<patch id="layout.compactheader.hideCategoryBar">
|
||||
</patch>
|
||||
<patch id="layout.navigationbar.navigationBarPatch">
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Explore' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Library' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Upgrade' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
</patch>
|
||||
<patch id="layout.premium.hideGetPremiumPatch">
|
||||
</patch>
|
||||
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
|
||||
|
||||
@@ -1585,11 +1585,46 @@ Povolením této funkce lze odemknout vyšší kvality videa"</string>
|
||||
<string name="revanced_music_play_permanent_repeat_summary_on">Trvalé opakování je povoleno</string>
|
||||
<string name="revanced_music_play_permanent_repeat_summary_off">Trvalé opakování je zakázáno</string>
|
||||
</patch>
|
||||
<patch id="layout.castbutton.hideCastButton">
|
||||
<string name="revanced_music_hide_cast_button_title">Skrýt tlačítko Odesílat</string>
|
||||
<string name="revanced_music_hide_cast_button_summary_on">Tlačítko Odesílat je skryté</string>
|
||||
<string name="revanced_music_hide_cast_button_summary_off">Tlačítko Odesílat je zobrazené</string>
|
||||
</patch>
|
||||
<patch id="layout.compactheader.hideCategoryBar">
|
||||
<string name="revanced_music_hide_category_bar_title">Skrýt panel kategorií</string>
|
||||
<string name="revanced_music_hide_category_bar_summary_on">Panel kategorií je skryt</string>
|
||||
<string name="revanced_music_hide_category_bar_summary_off">Panel kategorií je zobrazen</string>
|
||||
</patch>
|
||||
<patch id="layout.navigationbar.navigationBarPatch">
|
||||
<string name="revanced_music_navigation_bar_screen_title">Navigační panel</string>
|
||||
<string name="revanced_music_navigation_bar_screen_summary">Skrýt nebo změnit tlačítka navigačního panelu</string>
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_title">Skrýt tlačítko Domů</string>
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_summary_on">Tlačítko Domů je skryté</string>
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_summary_off">Tlačítko Domů je zobrazeno</string>
|
||||
<!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_title">Skrýt tlačítko Ukázky</string>
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_summary_on">Tlačítko Ukázky je skryté</string>
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_summary_off">Tlačítko Ukázky je zobrazeno</string>
|
||||
<!-- 'Explore' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_title">Skrýt tlačítko Prozkoumat</string>
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_summary_on">Tlačítko Prozkoumat je skryté</string>
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_summary_off">Tlačítko Prozkoumat je zobrazeno</string>
|
||||
<!-- 'Library' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_title">Skrýt tlačítko Knihovna</string>
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_summary_on">Tlačítko Knihovna je skryté</string>
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_summary_off">Tlačítko Knihovna je zobrazeno</string>
|
||||
<!-- 'Upgrade' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_title">Skrýt tlačítko Vylepšit</string>
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_summary_on">Tlačítko Vylepšit je skryté</string>
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_summary_off">Tlačítko Vylepšit je zobrazeno</string>
|
||||
<string name="revanced_music_hide_navigation_bar_title">Skrýt navigační panel</string>
|
||||
<string name="revanced_music_hide_navigation_bar_summary_on">Navigační panel je skrytý</string>
|
||||
<string name="revanced_music_hide_navigation_bar_summary_off">Navigační panel je zobrazen</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_title">Skrýt popisky navigačních tlačítek</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_summary_on">Popisky jsou skryté</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_summary_off">Popisky jsou zobrazeny</string>
|
||||
</patch>
|
||||
<patch id="layout.premium.hideGetPremiumPatch">
|
||||
<string name="revanced_music_hide_get_premium_label_title">Skrýt štítek \"Získat Music Premium\"</string>
|
||||
<string name="revanced_music_hide_get_premium_label_summary_on">Štítek je skryt</string>
|
||||
|
||||
@@ -1587,11 +1587,46 @@ Aktivering af dette kan låse op for højere videokvalitet"</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>
|
||||
</patch>
|
||||
<patch id="layout.castbutton.hideCastButton">
|
||||
<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_off">Cast-knappen vises</string>
|
||||
</patch>
|
||||
<patch id="layout.compactheader.hideCategoryBar">
|
||||
<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_off">Kategorilinjen vises</string>
|
||||
</patch>
|
||||
<patch id="layout.navigationbar.navigationBarPatch">
|
||||
<string name="revanced_music_navigation_bar_screen_title">Navigationslinje</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. -->
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_title">Skjul Startside-knap</string>
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_summary_on">Startside-knappen er skjult</string>
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_summary_off">Startside-knappen vises</string>
|
||||
<!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_title">Skjul Kortklip-knap</string>
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_summary_on">Kortklip-knappen er skjult</string>
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_summary_off">Kortklip-knappen vises</string>
|
||||
<!-- 'Explore' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_title">Skjul Udforsk-knap</string>
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_summary_on">Udforsk-knappen er skjult</string>
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_summary_off">Udforsk-knappen vises</string>
|
||||
<!-- 'Library' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_title">Skjul Bibliotek-knap</string>
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_summary_on">Bibliotek-knappen er skjult</string>
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_summary_off">Bibliotek-knappen vises</string>
|
||||
<!-- 'Upgrade' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_title">Skjul Opgrader-knap</string>
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_summary_on">Opgrader-knappen er skjult</string>
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_summary_off">Opgrader-knappen vises</string>
|
||||
<string name="revanced_music_hide_navigation_bar_title">Skjul navigationslinje</string>
|
||||
<string name="revanced_music_hide_navigation_bar_summary_on">Navigationslinjen er skjult</string>
|
||||
<string name="revanced_music_hide_navigation_bar_summary_off">Navigationslinjen vises</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_off">Etiketter vises</string>
|
||||
</patch>
|
||||
<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_summary_on">Etiketten er skjult</string>
|
||||
|
||||
@@ -1582,11 +1582,46 @@ Durch Aktivieren dieser Option können höhere Videoqualitäten freigeschaltet w
|
||||
<string name="revanced_music_play_permanent_repeat_summary_on">Dauerwiederholung ist aktiviert</string>
|
||||
<string name="revanced_music_play_permanent_repeat_summary_off">Dauerwiederholung ist deaktiviert</string>
|
||||
</patch>
|
||||
<patch id="layout.castbutton.hideCastButton">
|
||||
<string name="revanced_music_hide_cast_button_title">Übertragen-Taste ausblenden</string>
|
||||
<string name="revanced_music_hide_cast_button_summary_on">Übertragen-Taste ist ausgeblendet</string>
|
||||
<string name="revanced_music_hide_cast_button_summary_off">Übertragen-Taste wird angezeigt</string>
|
||||
</patch>
|
||||
<patch id="layout.compactheader.hideCategoryBar">
|
||||
<string name="revanced_music_hide_category_bar_title">Kategorieleiste ausblenden</string>
|
||||
<string name="revanced_music_hide_category_bar_summary_on">Kategorieleiste ist ausgeblendet</string>
|
||||
<string name="revanced_music_hide_category_bar_summary_off">Kategorieleiste wird angezeigt</string>
|
||||
</patch>
|
||||
<patch id="layout.navigationbar.navigationBarPatch">
|
||||
<string name="revanced_music_navigation_bar_screen_title">Navigationsleiste</string>
|
||||
<string name="revanced_music_navigation_bar_screen_summary">Navigationsleisten-Schaltflächen ausblenden oder ändern</string>
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_title">Start-Schaltfläche ausblenden</string>
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_summary_on">Start-Schaltfläche ist ausgeblendet</string>
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_summary_off">Start-Schaltfläche wird angezeigt</string>
|
||||
<!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_title">Samples-Schaltfläche ausblenden</string>
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_summary_on">Samples-Schaltfläche ist ausgeblendet</string>
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_summary_off">Samples-Schaltfläche wird angezeigt</string>
|
||||
<!-- 'Explore' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_title">Entdecken-Schaltfläche ausblenden</string>
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_summary_on">Entdecken-Schaltfläche ist ausgeblendet</string>
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_summary_off">Entdecken-Schaltfläche wird angezeigt</string>
|
||||
<!-- 'Library' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_title">Mediathek-Schaltfläche ausblenden</string>
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_summary_on">Mediathek-Schaltfläche ist ausgeblendet</string>
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_summary_off">Mediathek-Schaltfläche wird angezeigt</string>
|
||||
<!-- 'Upgrade' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_title">Upgrade-Schaltfläche ausblenden</string>
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_summary_on">Upgrade-Schaltfläche ist ausgeblendet</string>
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_summary_off">Upgrade-Schaltfläche wird angezeigt</string>
|
||||
<string name="revanced_music_hide_navigation_bar_title">Navigationsleiste ausblenden</string>
|
||||
<string name="revanced_music_hide_navigation_bar_summary_on">Navigationsleiste ist ausgeblendet</string>
|
||||
<string name="revanced_music_hide_navigation_bar_summary_off">Navigationsleiste wird angezeigt</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_title">Beschriftungen der Navigationsschaltflächen ausblenden</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_summary_on">Beschriftungen sind ausgeblendet</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_summary_off">Beschriftungen werden angezeigt</string>
|
||||
</patch>
|
||||
<patch id="layout.premium.hideGetPremiumPatch">
|
||||
<string name="revanced_music_hide_get_premium_label_title">\"Music Premium holen\"-Label ausblenden</string>
|
||||
<string name="revanced_music_hide_get_premium_label_summary_on">Label ist ausgeblendet</string>
|
||||
|
||||
@@ -1584,11 +1584,46 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_music_play_permanent_repeat_summary_on">Η μόνιμη επανάληψη είναι ενεργοποιημένη</string>
|
||||
<string name="revanced_music_play_permanent_repeat_summary_off">Η μόνιμη επανάληψη είναι απενεργοποιημένη</string>
|
||||
</patch>
|
||||
<patch id="layout.castbutton.hideCastButton">
|
||||
<string name="revanced_music_hide_cast_button_title">Απόκρυψη κουμπιού μετάδοσης</string>
|
||||
<string name="revanced_music_hide_cast_button_summary_on">Κρυμμένο</string>
|
||||
<string name="revanced_music_hide_cast_button_summary_off">Εμφανίζεται</string>
|
||||
</patch>
|
||||
<patch id="layout.compactheader.hideCategoryBar">
|
||||
<string name="revanced_music_hide_category_bar_title">Γραμμή κατηγοριών</string>
|
||||
<string name="revanced_music_hide_category_bar_summary_on">Κρυμμένη</string>
|
||||
<string name="revanced_music_hide_category_bar_summary_off">Εμφανίζεται</string>
|
||||
</patch>
|
||||
<patch id="layout.navigationbar.navigationBarPatch">
|
||||
<string name="revanced_music_navigation_bar_screen_title">Γραμμή πλοήγησης</string>
|
||||
<string name="revanced_music_navigation_bar_screen_summary">Απόκρυψη ή αλλαγή κουμπιών γραμμής πλοήγησης</string>
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_title">Απόκρυψη κουμπιού Αρχικής οθόνης</string>
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_summary_on">Κρυμμένο</string>
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_summary_off">Εμφανίζεται</string>
|
||||
<!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_title">Απόκρυψη κουμπιού Δειγμάτων</string>
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_summary_on">Το κουμπί «Δείγματα» είναι κρυμμένο</string>
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_summary_off">Το κουμπί «Δείγματα» εμφανίζεται</string>
|
||||
<!-- 'Explore' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_title">Απόκρυψη κουμπιού Εξερεύνησης</string>
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_summary_on">Το κουμπί «Εξερεύνηση» είναι κρυμμένο</string>
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_summary_off">Το κουμπί «Εξερεύνηση» εμφανίζεται</string>
|
||||
<!-- 'Library' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_title">Απόκρυψη κουμπιού Βιβλιοθήκης</string>
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_summary_on">Το κουμπί «Βιβλιοθήκη» είναι κρυμμένο</string>
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_summary_off">Το κουμπί «Βιβλιοθήκη» εμφανίζεται</string>
|
||||
<!-- 'Upgrade' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_title">Απόκρυψη κουμπιού «Αναβάθμιση»</string>
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_summary_on">Το κουμπί «Αναβάθμιση» είναι κρυμμένο</string>
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_summary_off">Το κουμπί «Αναβάθμιση» εμφανίζεται</string>
|
||||
<string name="revanced_music_hide_navigation_bar_title">Γραμμή πλοήγησης</string>
|
||||
<string name="revanced_music_hide_navigation_bar_summary_on">Η γραμμή πλοήγησης θα είναι κρυμμένη κατά την αναπαραγωγή Shorts</string>
|
||||
<string name="revanced_music_hide_navigation_bar_summary_off">Η γραμμή πλοήγησης εμφανίζεται κατά την αναπαραγωγή Shorts</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_title">Ονομασίες κουμπιών γραμμής πλοήγησης</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_summary_on">Κρυμμένες</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_summary_off">Εμφανίζονται</string>
|
||||
</patch>
|
||||
<patch id="layout.premium.hideGetPremiumPatch">
|
||||
<string name="revanced_music_hide_get_premium_label_title">Ετικέτα «Αποκτήστε το Music Premium»</string>
|
||||
<string name="revanced_music_hide_get_premium_label_summary_on">Κρυμμένη</string>
|
||||
|
||||
@@ -1576,11 +1576,46 @@ Habilitar esto puede desbloquear calidades de vídeo más altas"</string>
|
||||
<string name="revanced_music_play_permanent_repeat_summary_on">La repetición permanente está habilitada</string>
|
||||
<string name="revanced_music_play_permanent_repeat_summary_off">La repetición permanente está deshabilitada</string>
|
||||
</patch>
|
||||
<patch id="layout.castbutton.hideCastButton">
|
||||
<string name="revanced_music_hide_cast_button_title">Ocultar el botón de emisión</string>
|
||||
<string name="revanced_music_hide_cast_button_summary_on">El botón de emisión está oculto</string>
|
||||
<string name="revanced_music_hide_cast_button_summary_off">El botón de emisión es visible</string>
|
||||
</patch>
|
||||
<patch id="layout.compactheader.hideCategoryBar">
|
||||
<string name="revanced_music_hide_category_bar_title">Ocultar barra de categorías</string>
|
||||
<string name="revanced_music_hide_category_bar_summary_on">La barra de categorías está oculta</string>
|
||||
<string name="revanced_music_hide_category_bar_summary_off">La barra de categorías es visible</string>
|
||||
</patch>
|
||||
<patch id="layout.navigationbar.navigationBarPatch">
|
||||
<string name="revanced_music_navigation_bar_screen_title">Barra de navegación</string>
|
||||
<string name="revanced_music_navigation_bar_screen_summary">Ocultar o cambiar los botones de la barra de navegación</string>
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_title">Ocultar el botón Inicio</string>
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_summary_on">El botón Inicio está oculto</string>
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_summary_off">El botón Inicio es visible</string>
|
||||
<!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_title">Ocultar el botón Muestras</string>
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_summary_on">El botón Muestras está oculto</string>
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_summary_off">El botón Muestras es visible</string>
|
||||
<!-- 'Explore' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_title">Ocultar el botón Explorar</string>
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_summary_on">El botón Explorar está oculto</string>
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_summary_off">El botón Explorar es visible</string>
|
||||
<!-- 'Library' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_title">Ocultar el botón Biblioteca</string>
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_summary_on">El botón Biblioteca está oculto</string>
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_summary_off">El botón Biblioteca es visible</string>
|
||||
<!-- 'Upgrade' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_title">Ocultar el botón Actualizar</string>
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_summary_on">El botón Actualizar está oculto</string>
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_summary_off">El botón Actualizar es visible</string>
|
||||
<string name="revanced_music_hide_navigation_bar_title">Ocultar la barra de navegación</string>
|
||||
<string name="revanced_music_hide_navigation_bar_summary_on">La barra de navegación está oculta</string>
|
||||
<string name="revanced_music_hide_navigation_bar_summary_off">La barra de navegación es visible</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_title">Ocultar etiquetas de navegación</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_summary_on">Las etiquetas están ocultas</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_summary_off">Las etiquetas son visibles</string>
|
||||
</patch>
|
||||
<patch id="layout.premium.hideGetPremiumPatch">
|
||||
<string name="revanced_music_hide_get_premium_label_title">Ocultar la etiqueta \'Obtener Music Premium\'</string>
|
||||
<string name="revanced_music_hide_get_premium_label_summary_on">La etiqueta está oculta</string>
|
||||
|
||||
@@ -1585,11 +1585,46 @@ Selle lubamine võib avada kõrgema video kvaliteedi"</string>
|
||||
<string name="revanced_music_play_permanent_repeat_summary_on">Püsiv kordus on lubatud</string>
|
||||
<string name="revanced_music_play_permanent_repeat_summary_off">Püsiv kordus on keelatud</string>
|
||||
</patch>
|
||||
<patch id="layout.castbutton.hideCastButton">
|
||||
<string name="revanced_music_hide_cast_button_title">Peida edastusnupp</string>
|
||||
<string name="revanced_music_hide_cast_button_summary_on">Edastusnupp on peidetud</string>
|
||||
<string name="revanced_music_hide_cast_button_summary_off">Edastusnupp on nähtav</string>
|
||||
</patch>
|
||||
<patch id="layout.compactheader.hideCategoryBar">
|
||||
<string name="revanced_music_hide_category_bar_title">Peida kategooriariba</string>
|
||||
<string name="revanced_music_hide_category_bar_summary_on">Kategooriariba on peidetud</string>
|
||||
<string name="revanced_music_hide_category_bar_summary_off">Kategooriariba on nähtaval</string>
|
||||
</patch>
|
||||
<patch id="layout.navigationbar.navigationBarPatch">
|
||||
<string name="revanced_music_navigation_bar_screen_title">Navigeerimisriba</string>
|
||||
<string name="revanced_music_navigation_bar_screen_summary">Peida või muuda navigeerimisriba nuppe</string>
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_title">Peida Avalehe nupp</string>
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_summary_on">Avalehe nupp on peidetud</string>
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_summary_off">Avalehe nupp on nähtav</string>
|
||||
<!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_title">Peida Näidiste nupp</string>
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_summary_on">Näidiste nupp on peidetud</string>
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_summary_off">Näidiste nupp on nähtav</string>
|
||||
<!-- 'Explore' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_title">Peida Avasta nupp</string>
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_summary_on">Avasta nupp on peidetud</string>
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_summary_off">Avasta nupp on nähtav</string>
|
||||
<!-- 'Library' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_title">Peida Kogu nupp</string>
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_summary_on">Kogu nupp on peidetud</string>
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_summary_off">Kogu nupp on nähtav</string>
|
||||
<!-- 'Upgrade' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_title">Peida Uuenda nupp</string>
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_summary_on">Uuenda nupp on peidetud</string>
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_summary_off">Uuenda nupp on nähtav</string>
|
||||
<string name="revanced_music_hide_navigation_bar_title">Peida navigeerimisriba</string>
|
||||
<string name="revanced_music_hide_navigation_bar_summary_on">Navigeerimisriba on peidetud</string>
|
||||
<string name="revanced_music_hide_navigation_bar_summary_off">Navigeerimisriba on nähtav</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_title">Peida navigeerimisnuppude sildid</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_summary_on">Sildid on peidetud</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_summary_off">Sildid on nähtavale toodud</string>
|
||||
</patch>
|
||||
<patch id="layout.premium.hideGetPremiumPatch">
|
||||
<string name="revanced_music_hide_get_premium_label_title">Peida sildike \"Hangi Music Premium\"</string>
|
||||
<string name="revanced_music_hide_get_premium_label_summary_on">Silt on peidetud</string>
|
||||
|
||||
@@ -253,8 +253,17 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
|
||||
</patch>
|
||||
<patch id="layout.castbutton.hideCastButton">
|
||||
</patch>
|
||||
<patch id="layout.compactheader.hideCategoryBar">
|
||||
</patch>
|
||||
<patch id="layout.navigationbar.navigationBarPatch">
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Explore' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Library' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Upgrade' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
</patch>
|
||||
<patch id="layout.premium.hideGetPremiumPatch">
|
||||
</patch>
|
||||
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
|
||||
|
||||
@@ -303,8 +303,17 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
|
||||
</patch>
|
||||
<patch id="layout.castbutton.hideCastButton">
|
||||
</patch>
|
||||
<patch id="layout.compactheader.hideCategoryBar">
|
||||
</patch>
|
||||
<patch id="layout.navigationbar.navigationBarPatch">
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Explore' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Library' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Upgrade' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
</patch>
|
||||
<patch id="layout.premium.hideGetPremiumPatch">
|
||||
</patch>
|
||||
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
|
||||
|
||||
@@ -1585,11 +1585,46 @@ Tämä voi avata korkealaatuisemmat videot"</string>
|
||||
<string name="revanced_music_play_permanent_repeat_summary_on">Pysyvä toisto on käytössä</string>
|
||||
<string name="revanced_music_play_permanent_repeat_summary_off">Pysyvä toisto on poissa käytöstä</string>
|
||||
</patch>
|
||||
<patch id="layout.castbutton.hideCastButton">
|
||||
<string name="revanced_music_hide_cast_button_title">Piilota lähetyspainike</string>
|
||||
<string name="revanced_music_hide_cast_button_summary_on">Lähetyspainike on piilotettu</string>
|
||||
<string name="revanced_music_hide_cast_button_summary_off">Lähetyspainike näytetään</string>
|
||||
</patch>
|
||||
<patch id="layout.compactheader.hideCategoryBar">
|
||||
<string name="revanced_music_hide_category_bar_title">Piilota kategoriapalkki</string>
|
||||
<string name="revanced_music_hide_category_bar_summary_on">Kategoriapalkki on piilotettu</string>
|
||||
<string name="revanced_music_hide_category_bar_summary_off">Kategoriapalkki näytetään</string>
|
||||
</patch>
|
||||
<patch id="layout.navigationbar.navigationBarPatch">
|
||||
<string name="revanced_music_navigation_bar_screen_title">Navigointipalkki</string>
|
||||
<string name="revanced_music_navigation_bar_screen_summary">Piilota tai muuta navigointipalkin painikkeita</string>
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_title">Piilota Etusivu-painike</string>
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_summary_on">Etusivu-painike on piilotettu</string>
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_summary_off">Etusivu-painike näytetään</string>
|
||||
<!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_title">Piilota Näytteet-painike</string>
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_summary_on">Näytteet-painike on piilotettu</string>
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_summary_off">Näytteet-painike näytetään</string>
|
||||
<!-- 'Explore' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_title">Piilota Tutustu-painike</string>
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_summary_on">Tutustu-painike on piilotettu</string>
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_summary_off">Tutustu-painike näytetään</string>
|
||||
<!-- 'Library' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_title">Piilota Kirjasto-painike</string>
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_summary_on">Kirjasto-painike on piilotettu</string>
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_summary_off">Kirjasto-painike näytetään</string>
|
||||
<!-- 'Upgrade' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_title">Piilota Päivitä-painike</string>
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_summary_on">Päivitä-painike on piilotettu</string>
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_summary_off">Päivitä-painike näytetään</string>
|
||||
<string name="revanced_music_hide_navigation_bar_title">Piilota navigointipalkki</string>
|
||||
<string name="revanced_music_hide_navigation_bar_summary_on">Navigointipalkki on piilotettu</string>
|
||||
<string name="revanced_music_hide_navigation_bar_summary_off">Navigointipalkki näytetään</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_title">Piilota navigointipainikkeiden otsikot</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_summary_on">Otsikot on piilotettu</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_summary_off">Otsikot näytetään</string>
|
||||
</patch>
|
||||
<patch id="layout.premium.hideGetPremiumPatch">
|
||||
<string name="revanced_music_hide_get_premium_label_title">Piilota \"Hanki Music Premium\" -merkintä</string>
|
||||
<string name="revanced_music_hide_get_premium_label_summary_on">Merkintä on piilotettu</string>
|
||||
|
||||
@@ -1583,11 +1583,46 @@ Ang pagpapagana nito ay maaaring magbukas ng mas mataas na kalidad ng video"</st
|
||||
<string name="revanced_music_play_permanent_repeat_summary_on">Pinagana ang permanenteng pag-ulit</string>
|
||||
<string name="revanced_music_play_permanent_repeat_summary_off">Hindi pinagana ang permanenteng pag-ulit</string>
|
||||
</patch>
|
||||
<patch id="layout.castbutton.hideCastButton">
|
||||
<string name="revanced_music_hide_cast_button_title">Itago ang pindutan ng Cast</string>
|
||||
<string name="revanced_music_hide_cast_button_summary_on">Nakatago ang pindutan ng Cast</string>
|
||||
<string name="revanced_music_hide_cast_button_summary_off">Ipinapakita ang pindutan ng Cast</string>
|
||||
</patch>
|
||||
<patch id="layout.compactheader.hideCategoryBar">
|
||||
<string name="revanced_music_hide_category_bar_title">Itago ang category bar</string>
|
||||
<string name="revanced_music_hide_category_bar_summary_on">Nakatago ang category bar</string>
|
||||
<string name="revanced_music_hide_category_bar_summary_off">Ipinapakita ang category bar</string>
|
||||
</patch>
|
||||
<patch id="layout.navigationbar.navigationBarPatch">
|
||||
<string name="revanced_music_navigation_bar_screen_title">Navigation bar</string>
|
||||
<string name="revanced_music_navigation_bar_screen_summary">Itago o baguhin ang mga pindutan ng navigation bar</string>
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_title">Itago ang pindutan ng Home</string>
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_summary_on">Nakatago ang pindutan ng Home</string>
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_summary_off">Nakalabas ang pindutan ng Home</string>
|
||||
<!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_title">Itago ang pindutan ng Samples</string>
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_summary_on">Nakatago ang pindutan ng Samples</string>
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_summary_off">Nakalabas ang pindutan ng Samples</string>
|
||||
<!-- 'Explore' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_title">Itago ang pindutan ng Explore</string>
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_summary_on">Nakatago ang pindutan ng Explore</string>
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_summary_off">Nakalabas ang pindutan ng Explore</string>
|
||||
<!-- 'Library' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_title">Itago ang pindutan ng Library</string>
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_summary_on">Nakatago ang pindutan ng Library</string>
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_summary_off">Nakalabas ang pindutan ng Library</string>
|
||||
<!-- 'Upgrade' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_title">Itago ang pindutan ng Upgrade</string>
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_summary_on">Nakatago ang pindutan ng Upgrade</string>
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_summary_off">Nakalabas ang pindutan ng Upgrade</string>
|
||||
<string name="revanced_music_hide_navigation_bar_title">Itago ang navigation bar</string>
|
||||
<string name="revanced_music_hide_navigation_bar_summary_on">Nakatago ang navigation bar</string>
|
||||
<string name="revanced_music_hide_navigation_bar_summary_off">Nakalabas ang navigation bar</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_title">Itago ang mga label ng pindutan ng navigation</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_summary_on">Nakatago ang mga label</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_summary_off">Nakalabas ang mga label</string>
|
||||
</patch>
|
||||
<patch id="layout.premium.hideGetPremiumPatch">
|
||||
<string name="revanced_music_hide_get_premium_label_title">Itago ang label na \'Kumuha ng Music Premium\'</string>
|
||||
<string name="revanced_music_hide_get_premium_label_summary_on">Nakatago ang label</string>
|
||||
|
||||
@@ -1586,11 +1586,46 @@ Activer cette option peut déverrouiller des qualités vidéo supérieures"</str
|
||||
<string name="revanced_music_play_permanent_repeat_summary_on">La lecture en boucle permanente est activée</string>
|
||||
<string name="revanced_music_play_permanent_repeat_summary_off">La lecture en boucle permanente est désactivée</string>
|
||||
</patch>
|
||||
<patch id="layout.castbutton.hideCastButton">
|
||||
<string name="revanced_music_hide_cast_button_title">Masquer le bouton de diffusion</string>
|
||||
<string name="revanced_music_hide_cast_button_summary_on">Le bouton de diffusion est masqué</string>
|
||||
<string name="revanced_music_hide_cast_button_summary_off">Le bouton de diffusion est affiché</string>
|
||||
</patch>
|
||||
<patch id="layout.compactheader.hideCategoryBar">
|
||||
<string name="revanced_music_hide_category_bar_title">Masquer la barre des catégories</string>
|
||||
<string name="revanced_music_hide_category_bar_summary_on">La barre des catégories est masquée</string>
|
||||
<string name="revanced_music_hide_category_bar_summary_off">La barre des catégories est affichée</string>
|
||||
</patch>
|
||||
<patch id="layout.navigationbar.navigationBarPatch">
|
||||
<string name="revanced_music_navigation_bar_screen_title">Barre de navigation</string>
|
||||
<string name="revanced_music_navigation_bar_screen_summary">Masquer ou modifier les boutons de la barre de navigation</string>
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_title">Masquer le bouton Accueil</string>
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_summary_on">Le bouton Accueil est masqué</string>
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_summary_off">Le bouton Accueil est affiché</string>
|
||||
<!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_title">Masquer le bouton Extraits</string>
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_summary_on">Le bouton Extraits est masqué</string>
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_summary_off">Le bouton Extraits est affiché</string>
|
||||
<!-- 'Explore' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_title">Masquer le bouton Explorer</string>
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_summary_on">Le bouton Explorer est masqué</string>
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_summary_off">Le bouton Explorer est affiché</string>
|
||||
<!-- 'Library' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_title">Masquer le bouton Bibliothèque</string>
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_summary_on">Le bouton Bibliothèque est masqué</string>
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_summary_off">Le bouton Bibliothèque est affiché</string>
|
||||
<!-- 'Upgrade' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_title">Masquer le bouton S\'abonner</string>
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_summary_on">Le bouton S\'abonner est masqué</string>
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_summary_off">Le bouton S\'abonner est affiché</string>
|
||||
<string name="revanced_music_hide_navigation_bar_title">Masquer la barre de navigation</string>
|
||||
<string name="revanced_music_hide_navigation_bar_summary_on">La barre de navigation est masquée</string>
|
||||
<string name="revanced_music_hide_navigation_bar_summary_off">La barre de navigation est affichée</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_title">Masquer les libellés des boutons de navigation</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_summary_on">Les libellés sont masqués</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_summary_off">Les libellés sont affichés</string>
|
||||
</patch>
|
||||
<patch id="layout.premium.hideGetPremiumPatch">
|
||||
<string name="revanced_music_hide_get_premium_label_title">Masquer le libellé \"S\'abonner à Music Premium\"</string>
|
||||
<string name="revanced_music_hide_get_premium_label_summary_on">Le libellé est masqué</string>
|
||||
|
||||
@@ -1585,11 +1585,46 @@ Is féidir le seo caighdeáin físeáin níos airde a dhíghlasáil"</string>
|
||||
<string name="revanced_music_play_permanent_repeat_summary_on">Tá athdhéanamh buan cumasaithe</string>
|
||||
<string name="revanced_music_play_permanent_repeat_summary_off">Tá athdhéanamh buan díchumasaithe</string>
|
||||
</patch>
|
||||
<patch id="layout.castbutton.hideCastButton">
|
||||
<string name="revanced_music_hide_cast_button_title">Folaigh an cnaipe teilgthe</string>
|
||||
<string name="revanced_music_hide_cast_button_summary_on">Tá an cnaipe teilgthe i bhfolach</string>
|
||||
<string name="revanced_music_hide_cast_button_summary_off">Tá an cnaipe teilgthe ar taispeáint</string>
|
||||
</patch>
|
||||
<patch id="layout.compactheader.hideCategoryBar">
|
||||
<string name="revanced_music_hide_category_bar_title">Folaigh an barra catagóirí</string>
|
||||
<string name="revanced_music_hide_category_bar_summary_on">Tá an barra catagóirí i bhfolach</string>
|
||||
<string name="revanced_music_hide_category_bar_summary_off">Taispeántar an barra catagóirí</string>
|
||||
</patch>
|
||||
<patch id="layout.navigationbar.navigationBarPatch">
|
||||
<string name="revanced_music_navigation_bar_screen_title">Barra nascleanúna</string>
|
||||
<string name="revanced_music_navigation_bar_screen_summary">Folaigh nó athraigh cnaipí an bharra nascleanúna</string>
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_title">Folaigh cnaipe Baile</string>
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_summary_on">Tá cnaipe Baile folaithe</string>
|
||||
<string name="revanced_music_hide_navigation_bar_home_button_summary_off">Tá cnaipe Baile taispeánta</string>
|
||||
<!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_title">Folaigh cnaipe Samplaí</string>
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_summary_on">Tá cnaipe Samplaí folaithe</string>
|
||||
<string name="revanced_music_hide_navigation_bar_samples_button_summary_off">Tá cnaipe Samplaí taispeánta</string>
|
||||
<!-- 'Explore' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_title">Folaigh cnaipe Fionnachtana</string>
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_summary_on">Tá cnaipe Fionnachtana folaithe</string>
|
||||
<string name="revanced_music_hide_navigation_bar_explore_button_summary_off">Tá cnaipe Fionnachtana taispeánta</string>
|
||||
<!-- 'Library' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_title">Folaigh cnaipe Leabharlann</string>
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_summary_on">Tá cnaipe Leabharlann folaithe</string>
|
||||
<string name="revanced_music_hide_navigation_bar_library_button_summary_off">Tá cnaipe Leabharlann taispeánta</string>
|
||||
<!-- 'Upgrade' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_title">Folaigh cnaipe Uasghrádú</string>
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_summary_on">Tá cnaipe Uasghrádú folaithe</string>
|
||||
<string name="revanced_music_hide_navigation_bar_upgrade_button_summary_off">Tá cnaipe Uasghrádú taispeánta</string>
|
||||
<string name="revanced_music_hide_navigation_bar_title">Folaigh barra nascleanúna</string>
|
||||
<string name="revanced_music_hide_navigation_bar_summary_on">Tá barra nascleanúna folaithe</string>
|
||||
<string name="revanced_music_hide_navigation_bar_summary_off">Tá barra nascleanúna taispeánta</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_title">Folaigh lipéid cnaipí nascleanúna</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_summary_on">Tá lipéid folaithe</string>
|
||||
<string name="revanced_music_hide_navigation_bar_labels_summary_off">Tá lipéid taispeánta</string>
|
||||
</patch>
|
||||
<patch id="layout.premium.hideGetPremiumPatch">
|
||||
<string name="revanced_music_hide_get_premium_label_title">Folaigh an lipéad \'Faigh Music Premium\'</string>
|
||||
<string name="revanced_music_hide_get_premium_label_summary_on">Tá an lipéad i bhfolach</string>
|
||||
|
||||
@@ -253,8 +253,17 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
|
||||
</patch>
|
||||
<patch id="layout.castbutton.hideCastButton">
|
||||
</patch>
|
||||
<patch id="layout.compactheader.hideCategoryBar">
|
||||
</patch>
|
||||
<patch id="layout.navigationbar.navigationBarPatch">
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Explore' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Library' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Upgrade' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
</patch>
|
||||
<patch id="layout.premium.hideGetPremiumPatch">
|
||||
</patch>
|
||||
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
|
||||
|
||||
@@ -253,8 +253,17 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
|
||||
</patch>
|
||||
<patch id="layout.castbutton.hideCastButton">
|
||||
</patch>
|
||||
<patch id="layout.compactheader.hideCategoryBar">
|
||||
</patch>
|
||||
<patch id="layout.navigationbar.navigationBarPatch">
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Explore' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Library' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
<!-- 'Upgrade' should be translated using the same localized wording YouTube Music displays for the tab. -->
|
||||
</patch>
|
||||
<patch id="layout.premium.hideGetPremiumPatch">
|
||||
</patch>
|
||||
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user