Compare commits

..

8 Commits

Author SHA1 Message Date
semantic-release-bot
7e1bb8f3c7 chore: Release v5.40.0-dev.8 [skip ci]
# [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](f7f4a1b0f0))
2025-09-20 15:33:42 +00:00
LisoUseInAIKyrios
f7f4a1b0f0 feat(YouTube): Support version 20.14.43 (#5940) 2025-09-20 19:30:05 +04:00
semantic-release-bot
e89660d234 chore: Release v5.40.0-dev.7 [skip ci]
# [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](db796fb883))
2025-09-20 15:03:00 +00:00
LisoUseInAIKyrios
db796fb883 feat(YouTube - Hide video action buttons): Add "Hide comments" button
Button is only shown when using YouTube 20.14+ and the video information area is collapsed to a compact state
2025-09-20 19:00:00 +04:00
LisoUseInAIKyrios
6bb8bad8d7 chore(YouTube Music): Fix fingerprint typo, change hide cast button to default off 2025-09-20 18:03:41 +04:00
semantic-release-bot
aa1fb41ad8 chore: Release v5.40.0-dev.6 [skip ci]
# [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](418f5945c2))
2025-09-20 12:37:33 +00:00
LisoUseInAIKyrios
418f5945c2 feat(YouTube Music): Add Enable debugging patch (#5939) 2025-09-20 16:33:03 +04:00
github-actions[bot]
e26c971067 chore: Sync translations (#5942) 2025-09-20 16:32:50 +04:00
155 changed files with 2179 additions and 349 deletions

View File

@@ -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) # [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)

View File

@@ -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); public static final BooleanSetting HIDE_UPGRADE_BUTTON = new BooleanSetting("revanced_music_hide_upgrade_button", TRUE, true);
// General // 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_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_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); public static final BooleanSetting HIDE_NAVIGATION_BAR_SAMPLES_BUTTON = new BooleanSetting("revanced_music_hide_navigation_bar_samples_button", FALSE, true);

View File

@@ -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() { public static String getAppVersionName() {
if (versionName == null) { if (versionName == null) {

View File

@@ -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.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ConcurrentMap;

View File

@@ -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 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_PREFIX = "video_action_bar.eml";
private static final String VIDEO_ACTION_BAR_PATH = "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 static final String ANIMATED_VECTOR_TYPE_PATH = "AnimatedVectorType";
private final StringFilterGroup likeSubscribeGlow; private final StringFilterGroup likeSubscribeGlow;
@@ -82,6 +86,10 @@ final class ButtonsFilter extends Filter {
Settings.HIDE_STOP_ADS_BUTTON, Settings.HIDE_STOP_ADS_BUTTON,
"yt_outline_slash_circle_left" "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, // 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' // as there's a chance the path is a generic action button and won't contain 'clip_button'
new ByteArrayFilterGroup( new ByteArrayFilterGroup(
@@ -124,9 +132,8 @@ final class ButtonsFilter extends Filter {
} }
if (matchedGroup == bufferFilterPathGroup) { if (matchedGroup == bufferFilterPathGroup) {
// Make sure the current path is the right one // Make sure the current path is the right one to avoid false positives.
// to avoid false positives. return (path.startsWith(VIDEO_ACTION_BAR_PATH) || path.startsWith(COMPACTIFY_VIDEO_ACTION_BAR_PATH))
return path.startsWith(VIDEO_ACTION_BAR_PATH)
&& bufferButtonsGroupList.check(buffer).isFiltered(); && bufferButtonsGroupList.check(buffer).isFiltered();
} }

View File

@@ -32,6 +32,7 @@ import static app.revanced.extension.youtube.sponsorblock.objects.CategoryBehavi
import android.graphics.Color; import android.graphics.Color;
import app.revanced.extension.shared.Logger; 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.BaseSettings;
import app.revanced.extension.shared.settings.BooleanSetting; import app.revanced.extension.shared.settings.BooleanSetting;
import app.revanced.extension.shared.settings.EnumSetting; 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 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_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_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_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_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); 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(); DEPRECATED_SWIPE_OVERLAY_BACKGROUND_ALPHA.resetToDefault();
} }
// Old spoof versions that no longer work. // Old spoof versions that no longer work,
if (SPOOF_APP_VERSION_TARGET.get().compareTo(SPOOF_APP_VERSION_TARGET.defaultValue) < 0) { // or is spoofing to a version the same or newer than this app.
Logger.printInfo(() -> "Resetting spoof app version target"); 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_TARGET.resetToDefault();
SPOOF_APP_VERSION.resetToDefault();
} }
// RYD requires manually migrating old settings since the lack of // RYD requires manually migrating old settings since the lack of

View File

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

View File

@@ -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 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 final class app/revanced/patches/music/misc/extension/SharedExtensionPatchKt {
public static final fun getSharedExtensionPatch ()Lapp/revanced/patcher/patch/BytecodePatch; public static final fun getSharedExtensionPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
} }

View File

@@ -1,11 +1,11 @@
package app.revanced.patches.music.layout.navigationbar 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.patcher.fingerprint
import app.revanced.util.containsLiteralInstruction
import app.revanced.util.getReference import app.revanced.util.getReference
import app.revanced.util.indexOfFirstInstruction 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.Method
import com.android.tools.smali.dexlib2.iface.reference.MethodReference import com.android.tools.smali.dexlib2.iface.reference.MethodReference
@@ -23,9 +23,9 @@ internal val tabLayoutTextFingerprint = fingerprint {
Opcode.MOVE_RESULT Opcode.MOVE_RESULT
) )
strings("FEmusic_search") strings("FEmusic_search")
literal { text1 }
custom { method, _ -> custom { method, _ ->
indexOfGetVisibilityInstruction(method) >= 0 method.containsLiteralInstruction(text1)
&& indexOfGetVisibilityInstruction(method) >= 0
} }
} }

View File

@@ -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
)

View File

@@ -8,12 +8,16 @@ import app.revanced.patches.all.misc.resources.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch import app.revanced.patches.all.misc.resources.addResourcesPatch
import app.revanced.patches.music.misc.extension.sharedExtensionPatch import app.revanced.patches.music.misc.extension.sharedExtensionPatch
import app.revanced.patches.shared.misc.mapping.resourceMappingPatch 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
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.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 import com.android.tools.smali.dexlib2.util.MethodUtil
private const val BASE_ACTIVITY_HOOK_CLASS_DESCRIPTOR = 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 preferences = mutableSetOf<BasePreference>()
private val settingsResourcePatch = resourcePatch { private val settingsResourcePatch = resourcePatch {
dependsOn( dependsOn(
resourceMappingPatch, resourceMappingPatch,
@@ -87,27 +90,6 @@ val settingsPatch = bytecodePatch(
addResources("music", "misc.settings.settingsPatch") addResources("music", "misc.settings.settingsPatch")
addResources("shared", "misc.debugging.enableDebuggingPatch") 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. // Add an "About" preference to the top.
preferences += NonInteractivePreference( preferences += NonInteractivePreference(
key = "revanced_settings_music_screen_0_about", key = "revanced_settings_music_screen_0_about",
@@ -154,19 +136,19 @@ fun newIntent(settingsName: String) = IntentPreference.Intent(
object PreferenceScreen : BasePreferenceScreen() { object PreferenceScreen : BasePreferenceScreen() {
val ADS = Screen( val ADS = Screen(
"revanced_settings_music_screen_1_ads", key = "revanced_settings_music_screen_1_ads",
summaryKey = null summaryKey = null
) )
val GENERAL = Screen( val GENERAL = Screen(
"revanced_settings_music_screen_2_general", key = "revanced_settings_music_screen_2_general",
summaryKey = null summaryKey = null
) )
val PLAYER = Screen( val PLAYER = Screen(
"revanced_settings_music_screen_3_player", key = "revanced_settings_music_screen_3_player",
summaryKey = null summaryKey = null
) )
val MISC = Screen( val MISC = Screen(
"revanced_settings_music_screen_4_misc", key = "revanced_settings_music_screen_4_misc",
summaryKey = null summaryKey = null
) )

View File

@@ -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.
}
}

View File

@@ -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;")
}

View File

@@ -1,9 +1,13 @@
package app.revanced.patches.shared.misc.spoof package app.revanced.patches.shared.misc.spoof
import app.revanced.patcher.fingerprint import app.revanced.patcher.fingerprint
import app.revanced.util.getReference
import app.revanced.util.indexOfFirstInstruction
import app.revanced.util.literal import app.revanced.util.literal
import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.Method
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
internal val buildInitPlaybackRequestFingerprint = fingerprint { internal val buildInitPlaybackRequestFingerprint = fingerprint {
returns("Lorg/chromium/net/UrlRequest\$Builder;") returns("Lorg/chromium/net/UrlRequest\$Builder;")
@@ -37,10 +41,6 @@ internal val buildRequestFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC) accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC)
returns("Lorg/chromium/net/UrlRequest") // UrlRequest; or UrlRequest$Builder; returns("Lorg/chromium/net/UrlRequest") // UrlRequest; or UrlRequest$Builder;
custom { methodDef, _ -> custom { methodDef, _ ->
if (indexOfNewUrlRequestBuilderInstruction(methodDef) < 0) {
return@custom false
}
// Different targets have slightly different parameters // Different targets have slightly different parameters
// Earlier targets have parameters: // Earlier targets have parameters:
@@ -74,10 +74,10 @@ internal val buildRequestFingerprint = fingerprint {
val parameterTypesSize = parameterTypes.size val parameterTypesSize = parameterTypes.size
(parameterTypesSize == 6 || parameterTypesSize == 7 || parameterTypesSize == 8) && (parameterTypesSize == 6 || parameterTypesSize == 7 || parameterTypesSize == 8) &&
parameterTypes[1] == "Ljava/util/Map;" // URL headers. parameterTypes[1] == "Ljava/util/Map;" // URL headers.
&& indexOfNewUrlRequestBuilderInstruction(methodDef) >= 0
} }
} }
internal val protobufClassParseByteBufferFingerprint = fingerprint { internal val protobufClassParseByteBufferFingerprint = fingerprint {
accessFlags(AccessFlags.PROTECTED, AccessFlags.STATIC) accessFlags(AccessFlags.PROTECTED, AccessFlags.STATIC)
returns("L") returns("L")
@@ -191,3 +191,13 @@ internal val playbackStartDescriptorFeatureFlagFingerprint = fingerprint {
returns("Z") returns("Z")
literal { PLAYBACK_START_CHECK_ENDPOINT_USED_FEATURE_FLAG } 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;"
}

View File

@@ -16,20 +16,17 @@ import app.revanced.patches.all.misc.resources.addResourcesPatch
import app.revanced.util.findFreeRegister import app.revanced.util.findFreeRegister
import app.revanced.util.findInstructionIndicesReversedOrThrow import app.revanced.util.findInstructionIndicesReversedOrThrow
import app.revanced.util.getReference import app.revanced.util.getReference
import app.revanced.util.indexOfFirstInstruction
import app.revanced.util.indexOfFirstInstructionOrThrow import app.revanced.util.indexOfFirstInstructionOrThrow
import app.revanced.util.insertLiteralOverride import app.revanced.util.insertLiteralOverride
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.builder.MutableMethodImplementation 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.FiveRegisterInstruction
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction 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.ReferenceInstruction
import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
import com.android.tools.smali.dexlib2.iface.reference.FieldReference import 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.ImmutableMethod
import com.android.tools.smali.dexlib2.immutable.ImmutableMethodParameter import com.android.tools.smali.dexlib2.immutable.ImmutableMethodParameter
@@ -337,12 +334,3 @@ fun spoofVideoStreamsPatch(
executeBlock() 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;"
}

View File

@@ -78,10 +78,9 @@ val hideAdsPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -27,10 +27,9 @@ val hideGetPremiumPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -25,10 +25,9 @@ val videoAdsPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -55,10 +55,9 @@ val copyVideoUrlPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -26,10 +26,9 @@ val removeViewerDiscretionDialogPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -29,8 +29,8 @@ val disableDoubleTapActionsPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -76,10 +76,9 @@ val downloadsPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -22,10 +22,9 @@ val seekbarPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )
} }

View File

@@ -90,10 +90,9 @@ val swipeControlsPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -26,10 +26,9 @@ val autoCaptionsPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -45,10 +45,9 @@ val customBrandingPatch = resourcePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -95,10 +95,9 @@ val changeHeaderPatch = resourcePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -24,10 +24,9 @@ val hideButtonsPatch = resourcePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )
@@ -41,6 +40,7 @@ val hideButtonsPatch = resourcePatch(
SwitchPreference("revanced_disable_like_subscribe_glow"), SwitchPreference("revanced_disable_like_subscribe_glow"),
SwitchPreference("revanced_hide_ask_button"), SwitchPreference("revanced_hide_ask_button"),
SwitchPreference("revanced_hide_clip_button"), SwitchPreference("revanced_hide_clip_button"),
SwitchPreference("revanced_hide_comments_button"),
SwitchPreference("revanced_hide_download_button"), SwitchPreference("revanced_hide_download_button"),
SwitchPreference("revanced_hide_hype_button"), SwitchPreference("revanced_hide_hype_button"),
SwitchPreference("revanced_hide_like_dislike_button"), SwitchPreference("revanced_hide_like_dislike_button"),

View File

@@ -42,10 +42,9 @@ val navigationButtonsPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -60,10 +60,9 @@ val hidePlayerOverlayButtonsPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -35,10 +35,9 @@ val changeFormFactorPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -61,10 +61,9 @@ val hideEndscreenCardsPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -33,10 +33,9 @@ val hideEndScreenSuggestedVideoPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -31,10 +31,9 @@ val disableFullscreenAmbientModePatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -128,10 +128,9 @@ val hideLayoutComponentsPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -59,10 +59,9 @@ val hideInfoCardsPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -26,10 +26,9 @@ val hidePlayerFlyoutMenuPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -50,10 +50,9 @@ val hideRelatedVideoOverlayPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -31,10 +31,9 @@ val disableRollingNumberAnimationPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -174,10 +174,9 @@ val hideShortsComponentsPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -33,10 +33,9 @@ val disableSignInToTvPopupPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -23,10 +23,9 @@ val hideTimestampPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -155,10 +155,9 @@ val miniplayerPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -23,10 +23,9 @@ val playerPopupPanelsPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -23,10 +23,9 @@ internal val exitFullscreenPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -25,10 +25,9 @@ val openVideosFullscreenPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -54,10 +54,9 @@ val customPlayerOverlayOpacityPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -63,10 +63,9 @@ val returnYouTubeDislikePatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -68,10 +68,9 @@ val wideSearchbarPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -46,10 +46,9 @@ val shortsAutoplayPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -66,10 +66,9 @@ val openShortsInRegularPlayerPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -128,10 +128,9 @@ val sponsorBlockPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -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.shared.misc.settings.preference.SwitchPreference
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch 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_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.playservice.versionCheckPatch
import app.revanced.patches.youtube.misc.settings.PreferenceScreen import app.revanced.patches.youtube.misc.settings.PreferenceScreen
import app.revanced.patches.youtube.misc.settings.settingsPatch import app.revanced.patches.youtube.misc.settings.settingsPatch
@@ -60,10 +61,9 @@ val spoofAppVersionPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )
@@ -79,17 +79,21 @@ val spoofAppVersionPatch = bytecodePatch(
tag = "app.revanced.extension.shared.settings.preference.NoTitlePreferenceCategory", tag = "app.revanced.extension.shared.settings.preference.NoTitlePreferenceCategory",
preferences = setOf( preferences = setOf(
SwitchPreference("revanced_spoof_app_version"), 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( ListPreference(
key = "revanced_spoof_app_version_target", 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 { } else {
ListPreference( ListPreference(
key = "revanced_spoof_app_version_target", key = "revanced_spoof_app_version_target",
summaryKey = null, summaryKey = null,
entriesKey = "revanced_spoof_app_version_target_legacy_entries", entriesKey = "revanced_spoof_app_version_target_legacy_19_34_entries",
entryValuesKey = "revanced_spoof_app_version_target_legacy_entry_values" entryValuesKey = "revanced_spoof_app_version_target_legacy_19_34_entry_values"
) )
} }
) )

View File

@@ -34,10 +34,9 @@ val changeStartPagePatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -36,10 +36,9 @@ val disableResumingShortsOnStartupPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -206,10 +206,9 @@ val themePatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -35,10 +35,9 @@ val alternativeThumbnailsPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -29,10 +29,9 @@ val bypassImageRegionRestrictionsPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -25,10 +25,9 @@ val announcementsPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -26,10 +26,9 @@ val autoRepeatPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -53,10 +53,9 @@ val backgroundPlaybackPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -1,144 +1,34 @@
package app.revanced.patches.youtube.misc.debugging 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.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch import app.revanced.patches.shared.misc.debugging.enableDebuggingPatch
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.preference.SwitchPreference
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch 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.PreferenceScreen
import app.revanced.patches.youtube.misc.settings.settingsPatch 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 = @Suppress("unused")
"Lapp/revanced/extension/youtube/patches/EnableDebuggingPatch;" val enableDebuggingPatch = enableDebuggingPatch(
block = {
// TODO: Refactor this into a shared patch that can be used by both YT and YT Music. dependsOn(
// Almost all of the feature flag hooks are the same between both apps. sharedExtensionPatch,
val enableDebuggingPatch = bytecodePatch( settingsPatch,
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",
) )
)
execute { compatibleWith(
addResources("shared", "misc.debugging.enableDebuggingPatch") "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") addResources("youtube", "misc.debugging.enableDebuggingPatch")
},
PreferenceScreen.MISC.addPreferences( hookStringFeatureFlag = true,
PreferenceScreenPreference( preferenceScreen = PreferenceScreen.MISC,
key = "revanced_debug_screen", additionalDebugPreferences = listOf(SwitchPreference("revanced_debug_protobuffer"))
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.
}
}

View File

@@ -26,10 +26,9 @@ val spoofDeviceDimensionsPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -23,10 +23,9 @@ val checkWatchHistoryDomainNameResolutionPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -1,8 +1,8 @@
package app.revanced.patches.youtube.misc.fix.backtoexitgesture 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 app.revanced.patcher.fingerprint
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
internal val scrollPositionFingerprint = fingerprint { internal val scrollPositionFingerprint = fingerprint {
accessFlags(AccessFlags.PROTECTED, AccessFlags.FINAL) accessFlags(AccessFlags.PROTECTED, AccessFlags.FINAL)
@@ -24,30 +24,18 @@ internal val recyclerViewTopScrollingFingerprint = fingerprint {
returns("V") returns("V")
parameters() parameters()
opcodes( 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.CHECK_CAST,
Opcode.CONST_4, Opcode.CONST_4,
Opcode.INVOKE_VIRTUAL, Opcode.INVOKE_VIRTUAL,
Opcode.GOTO, Opcode.GOTO,
Opcode.IGET_OBJECT, Opcode.IGET_OBJECT,
Opcode.INVOKE_INTERFACE, Opcode.INVOKE_INTERFACE
) )
} }
internal val recyclerViewTopScrollingParentFingerprint = fingerprint { internal val recyclerViewTopScrollingParentFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR) accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR)
parameters("L", "L", "Landroid/view/ViewGroup;", "Landroid/view/ViewGroup;")
opcodes( opcodes(
Opcode.INVOKE_DIRECT,
Opcode.IPUT_OBJECT, Opcode.IPUT_OBJECT,
Opcode.IPUT_OBJECT, Opcode.IPUT_OBJECT,
Opcode.IPUT_OBJECT, Opcode.IPUT_OBJECT,
@@ -55,5 +43,8 @@ internal val recyclerViewTopScrollingParentFingerprint = fingerprint {
Opcode.CONST_16, Opcode.CONST_16,
Opcode.INVOKE_VIRTUAL, Opcode.INVOKE_VIRTUAL,
Opcode.NEW_INSTANCE, Opcode.NEW_INSTANCE,
Opcode.INVOKE_DIRECT,
Opcode.IPUT_OBJECT,
Opcode.RETURN_VOID
) )
} }

View File

@@ -15,13 +15,14 @@ internal val fixBackToExitGesturePatch = bytecodePatch(
) { ) {
execute { execute {
recyclerViewTopScrollingFingerprint.match(recyclerViewTopScrollingParentFingerprint.originalClassDef) recyclerViewTopScrollingFingerprint.match(
.let { recyclerViewTopScrollingParentFingerprint.originalClassDef
it.method.addInstruction( ).let {
it.patternMatch!!.endIndex, it.method.addInstruction(
"invoke-static { }, $EXTENSION_CLASS_DESCRIPTOR->onTopView()V" it.patternMatch!!.endIndex,
) "invoke-static { }, $EXTENSION_CLASS_DESCRIPTOR->onTopView()V"
} )
}
scrollPositionFingerprint.let { scrollPositionFingerprint.let {
navigate(it.originalMethod) navigate(it.originalMethod)

View File

@@ -37,10 +37,9 @@ val gmsCoreSupportPatch = gmsCoreSupportPatch(
YOUTUBE_PACKAGE_NAME( YOUTUBE_PACKAGE_NAME(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )
} }

View File

@@ -28,10 +28,9 @@ val disableHapticFeedbackPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -34,10 +34,9 @@ val bypassURLRedirectsPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -43,10 +43,9 @@ val openLinksExternallyPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -32,10 +32,9 @@ val removeTrackingQueryParameterPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -24,10 +24,9 @@ val spoofVideoStreamsPatch = spoofVideoStreamsPatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -46,10 +46,9 @@ val forceOriginalAudioPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -56,10 +56,9 @@ val disableHdrPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -26,10 +26,9 @@ val videoQualityPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -30,10 +30,9 @@ val playbackSpeedPatch = bytecodePatch(
"com.google.android.youtube"( "com.google.android.youtube"(
"19.34.42", "19.34.42",
"19.43.41", "19.43.41",
"19.47.53",
"20.07.39", "20.07.39",
"20.12.46",
"20.13.41", "20.13.41",
"20.14.43",
) )
) )

View File

@@ -253,8 +253,17 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch"> <patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch> </patch>
<patch id="layout.castbutton.hideCastButton">
</patch>
<patch id="layout.compactheader.hideCategoryBar"> <patch id="layout.compactheader.hideCategoryBar">
</patch> </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 id="layout.premium.hideGetPremiumPatch">
</patch> </patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch"> <patch id="layout.upgradebutton.hideUpgradeButtonPatch">

View File

@@ -253,8 +253,17 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch"> <patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch> </patch>
<patch id="layout.castbutton.hideCastButton">
</patch>
<patch id="layout.compactheader.hideCategoryBar"> <patch id="layout.compactheader.hideCategoryBar">
</patch> </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 id="layout.premium.hideGetPremiumPatch">
</patch> </patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch"> <patch id="layout.upgradebutton.hideUpgradeButtonPatch">

View File

@@ -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_on">تم تمكين التكرار الدائم</string>
<string name="revanced_music_play_permanent_repeat_summary_off">تم تعطيل التكرار الدائم</string> <string name="revanced_music_play_permanent_repeat_summary_off">تم تعطيل التكرار الدائم</string>
</patch> </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"> <patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">إخفاء شريط الفئات</string> <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_on">شريط الفئات مخفي</string>
<string name="revanced_music_hide_category_bar_summary_off">شريط الفئات معروض</string> <string name="revanced_music_hide_category_bar_summary_off">شريط الفئات معروض</string>
</patch> </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"> <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_title">إخفاء تسمية \'الحصول على Music Premium\'</string>
<string name="revanced_music_hide_get_premium_label_summary_on">التسمية مخفية</string> <string name="revanced_music_hide_get_premium_label_summary_on">التسمية مخفية</string>

View File

@@ -255,8 +255,17 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch"> <patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch> </patch>
<patch id="layout.castbutton.hideCastButton">
</patch>
<patch id="layout.compactheader.hideCategoryBar"> <patch id="layout.compactheader.hideCategoryBar">
</patch> </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 id="layout.premium.hideGetPremiumPatch">
</patch> </patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch"> <patch id="layout.upgradebutton.hideUpgradeButtonPatch">

View File

@@ -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_on">Kəsintisiz təkrarlama aktivdir</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Kəsintisiz təkrarlama qapalıdır</string> <string name="revanced_music_play_permanent_repeat_summary_off">Kəsintisiz təkrarlama qapalıdır</string>
</patch> </patch>
<patch id="layout.castbutton.hideCastButton">
</patch>
<patch id="layout.compactheader.hideCategoryBar"> <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_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_on">Kateqoriya cizgisi gizlidir</string>
<string name="revanced_music_hide_category_bar_summary_off">Kateqoriya cizgisi görünür</string> <string name="revanced_music_hide_category_bar_summary_off">Kateqoriya cizgisi görünür</string>
</patch> </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 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_title"> \'Musiqi Premiumu Əldə et\' etiketini gizlət</string>
<string name="revanced_music_hide_get_premium_label_summary_on">Etiket gizlidir</string> <string name="revanced_music_hide_get_premium_label_summary_on">Etiket gizlidir</string>

View File

@@ -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_on">Пастаянны паўтор уключаны</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Пастаянны паўтор адключаны</string> <string name="revanced_music_play_permanent_repeat_summary_off">Пастаянны паўтор адключаны</string>
</patch> </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"> <patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Схаваць панэль катэгорый</string> <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_on">Панэль катэгорый схаваная</string>
<string name="revanced_music_hide_category_bar_summary_off">Панэль катэгорый паказаная</string> <string name="revanced_music_hide_category_bar_summary_off">Панэль катэгорый паказаная</string>
</patch> </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"> <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_title">Схаваць надпіс \"Атрымаць Music Premium\"</string>
<string name="revanced_music_hide_get_premium_label_summary_on">Надпіс схаваны</string> <string name="revanced_music_hide_get_premium_label_summary_on">Надпіс схаваны</string>

View File

@@ -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_on">Постоянното повтаряне е активирано</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Постоянното повтаряне е деактивирано</string> <string name="revanced_music_play_permanent_repeat_summary_off">Постоянното повтаряне е деактивирано</string>
</patch> </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"> <patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Скриване на лентата с категории</string> <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_on">Лентата с категории е скрита</string>
<string name="revanced_music_hide_category_bar_summary_off">Лентата с категории е показана</string> <string name="revanced_music_hide_category_bar_summary_off">Лентата с категории е показана</string>
</patch> </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"> <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_title">Скриване на етикета „Вземете Music Premium“</string>
<string name="revanced_music_hide_get_premium_label_summary_on">Етикетът е скрит</string> <string name="revanced_music_hide_get_premium_label_summary_on">Етикетът е скрит</string>

View File

@@ -1581,11 +1581,46 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট
<string name="revanced_music_play_permanent_repeat_summary_on">স্থায়ী পুনরাবৃত্তি সক্ষম করা হয়েছে</string> <string name="revanced_music_play_permanent_repeat_summary_on">স্থায়ী পুনরাবৃত্তি সক্ষম করা হয়েছে</string>
<string name="revanced_music_play_permanent_repeat_summary_off">স্থায়ী পুনরাবৃত্তি অক্ষম করা হয়েছে</string> <string name="revanced_music_play_permanent_repeat_summary_off">স্থায়ী পুনরাবৃত্তি অক্ষম করা হয়েছে</string>
</patch> </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"> <patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">ক্যাটাগরি বার লুকান</string> <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_on">ক্যাটাগরি বার লুকানো আছে</string>
<string name="revanced_music_hide_category_bar_summary_off">ক্যাটাগরি বার দেখানো আছে</string> <string name="revanced_music_hide_category_bar_summary_off">ক্যাটাগরি বার দেখানো আছে</string>
</patch> </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"> <patch id="layout.premium.hideGetPremiumPatch">
<string name="revanced_music_hide_get_premium_label_title">\'গেট মিউজিক প্রিমিয়াম\' লেবেল লুকান</string> <string name="revanced_music_hide_get_premium_label_title">\'গেট মিউজিক প্রিমিয়াম\' লেবেল লুকান</string>
<string name="revanced_music_hide_get_premium_label_summary_on">লেবেল লুকানো আছে</string> <string name="revanced_music_hide_get_premium_label_summary_on">লেবেল লুকানো আছে</string>

View File

@@ -253,8 +253,17 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch"> <patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch> </patch>
<patch id="layout.castbutton.hideCastButton">
</patch>
<patch id="layout.compactheader.hideCategoryBar"> <patch id="layout.compactheader.hideCategoryBar">
</patch> </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 id="layout.premium.hideGetPremiumPatch">
</patch> </patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch"> <patch id="layout.upgradebutton.hideUpgradeButtonPatch">

View File

@@ -253,8 +253,17 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch"> <patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch> </patch>
<patch id="layout.castbutton.hideCastButton">
</patch>
<patch id="layout.compactheader.hideCategoryBar"> <patch id="layout.compactheader.hideCategoryBar">
</patch> </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 id="layout.premium.hideGetPremiumPatch">
</patch> </patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch"> <patch id="layout.upgradebutton.hideUpgradeButtonPatch">

View File

@@ -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_on">Trvalé opakování je povoleno</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Trvalé opakování je zakázáno</string> <string name="revanced_music_play_permanent_repeat_summary_off">Trvalé opakování je zakázáno</string>
</patch> </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"> <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_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_on">Panel kategorií je skryt</string>
<string name="revanced_music_hide_category_bar_summary_off">Panel kategorií je zobrazen</string> <string name="revanced_music_hide_category_bar_summary_off">Panel kategorií je zobrazen</string>
</patch> </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"> <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_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> <string name="revanced_music_hide_get_premium_label_summary_on">Štítek je skryt</string>

View File

@@ -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_on">Permanent gentagelse er aktiveret</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Permanent gentagelse er deaktiveret</string> <string name="revanced_music_play_permanent_repeat_summary_off">Permanent gentagelse er deaktiveret</string>
</patch> </patch>
<patch id="layout.castbutton.hideCastButton">
<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"> <patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Skjul kategorilinje</string> <string name="revanced_music_hide_category_bar_title">Skjul kategorilinje</string>
<string name="revanced_music_hide_category_bar_summary_on">Kategorilinjen er skjult</string> <string name="revanced_music_hide_category_bar_summary_on">Kategorilinjen er skjult</string>
<string name="revanced_music_hide_category_bar_summary_off">Kategorilinjen vises</string> <string name="revanced_music_hide_category_bar_summary_off">Kategorilinjen vises</string>
</patch> </patch>
<patch id="layout.navigationbar.navigationBarPatch">
<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"> <patch id="layout.premium.hideGetPremiumPatch">
<string name="revanced_music_hide_get_premium_label_title">Skjul \'Få Music Premium\'-etiket</string> <string name="revanced_music_hide_get_premium_label_title">Skjul \'Få Music Premium\'-etiket</string>
<string name="revanced_music_hide_get_premium_label_summary_on">Etiketten er skjult</string> <string name="revanced_music_hide_get_premium_label_summary_on">Etiketten er skjult</string>

View File

@@ -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_on">Dauerwiederholung ist aktiviert</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Dauerwiederholung ist deaktiviert</string> <string name="revanced_music_play_permanent_repeat_summary_off">Dauerwiederholung ist deaktiviert</string>
</patch> </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"> <patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Kategorieleiste ausblenden</string> <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_on">Kategorieleiste ist ausgeblendet</string>
<string name="revanced_music_hide_category_bar_summary_off">Kategorieleiste wird angezeigt</string> <string name="revanced_music_hide_category_bar_summary_off">Kategorieleiste wird angezeigt</string>
</patch> </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"> <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_title">\"Music Premium holen\"-Label ausblenden</string>
<string name="revanced_music_hide_get_premium_label_summary_on">Label ist ausgeblendet</string> <string name="revanced_music_hide_get_premium_label_summary_on">Label ist ausgeblendet</string>

View File

@@ -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_on">Η μόνιμη επανάληψη είναι ενεργοποιημένη</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Η μόνιμη επανάληψη είναι απενεργοποιημένη</string> <string name="revanced_music_play_permanent_repeat_summary_off">Η μόνιμη επανάληψη είναι απενεργοποιημένη</string>
</patch> </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"> <patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Γραμμή κατηγοριών</string> <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_on">Κρυμμένη</string>
<string name="revanced_music_hide_category_bar_summary_off">Εμφανίζεται</string> <string name="revanced_music_hide_category_bar_summary_off">Εμφανίζεται</string>
</patch> </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"> <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_title">Ετικέτα «Αποκτήστε το Music Premium»</string>
<string name="revanced_music_hide_get_premium_label_summary_on">Κρυμμένη</string> <string name="revanced_music_hide_get_premium_label_summary_on">Κρυμμένη</string>

View File

@@ -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_on">La repetición permanente está habilitada</string>
<string name="revanced_music_play_permanent_repeat_summary_off">La repetición permanente está deshabilitada</string> <string name="revanced_music_play_permanent_repeat_summary_off">La repetición permanente está deshabilitada</string>
</patch> </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"> <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_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_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> <string name="revanced_music_hide_category_bar_summary_off">La barra de categorías es visible</string>
</patch> </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"> <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_title">Ocultar la etiqueta \'Obtener Music Premium\'</string>
<string name="revanced_music_hide_get_premium_label_summary_on">La etiqueta está oculta</string> <string name="revanced_music_hide_get_premium_label_summary_on">La etiqueta está oculta</string>

View File

@@ -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_on">Püsiv kordus on lubatud</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Püsiv kordus on keelatud</string> <string name="revanced_music_play_permanent_repeat_summary_off">Püsiv kordus on keelatud</string>
</patch> </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"> <patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Peida kategooriariba</string> <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_on">Kategooriariba on peidetud</string>
<string name="revanced_music_hide_category_bar_summary_off">Kategooriariba on nähtaval</string> <string name="revanced_music_hide_category_bar_summary_off">Kategooriariba on nähtaval</string>
</patch> </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"> <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_title">Peida sildike \"Hangi Music Premium\"</string>
<string name="revanced_music_hide_get_premium_label_summary_on">Silt on peidetud</string> <string name="revanced_music_hide_get_premium_label_summary_on">Silt on peidetud</string>

View File

@@ -253,8 +253,17 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch"> <patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch> </patch>
<patch id="layout.castbutton.hideCastButton">
</patch>
<patch id="layout.compactheader.hideCategoryBar"> <patch id="layout.compactheader.hideCategoryBar">
</patch> </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 id="layout.premium.hideGetPremiumPatch">
</patch> </patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch"> <patch id="layout.upgradebutton.hideUpgradeButtonPatch">

View File

@@ -303,8 +303,17 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch"> <patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch> </patch>
<patch id="layout.castbutton.hideCastButton">
</patch>
<patch id="layout.compactheader.hideCategoryBar"> <patch id="layout.compactheader.hideCategoryBar">
</patch> </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 id="layout.premium.hideGetPremiumPatch">
</patch> </patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch"> <patch id="layout.upgradebutton.hideUpgradeButtonPatch">

View File

@@ -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_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> <string name="revanced_music_play_permanent_repeat_summary_off">Pysyvä toisto on poissa käytöstä</string>
</patch> </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"> <patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Piilota kategoriapalkki</string> <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_on">Kategoriapalkki on piilotettu</string>
<string name="revanced_music_hide_category_bar_summary_off">Kategoriapalkki näytetään</string> <string name="revanced_music_hide_category_bar_summary_off">Kategoriapalkki näytetään</string>
</patch> </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"> <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_title">Piilota \"Hanki Music Premium\" -merkintä</string>
<string name="revanced_music_hide_get_premium_label_summary_on">Merkintä on piilotettu</string> <string name="revanced_music_hide_get_premium_label_summary_on">Merkintä on piilotettu</string>

View File

@@ -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_on">Pinagana ang permanenteng pag-ulit</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Hindi pinagana ang permanenteng pag-ulit</string> <string name="revanced_music_play_permanent_repeat_summary_off">Hindi pinagana ang permanenteng pag-ulit</string>
</patch> </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"> <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_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_on">Nakatago ang category bar</string>
<string name="revanced_music_hide_category_bar_summary_off">Ipinapakita ang category bar</string> <string name="revanced_music_hide_category_bar_summary_off">Ipinapakita ang category bar</string>
</patch> </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"> <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_title">Itago ang label na \'Kumuha ng Music Premium\'</string>
<string name="revanced_music_hide_get_premium_label_summary_on">Nakatago ang label</string> <string name="revanced_music_hide_get_premium_label_summary_on">Nakatago ang label</string>

View File

@@ -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_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> <string name="revanced_music_play_permanent_repeat_summary_off">La lecture en boucle permanente est désactivée</string>
</patch> </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"> <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_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_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> <string name="revanced_music_hide_category_bar_summary_off">La barre des catégories est affichée</string>
</patch> </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"> <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_title">Masquer le libellé \"S\'abonner à Music Premium\"</string>
<string name="revanced_music_hide_get_premium_label_summary_on">Le libellé est masqué</string> <string name="revanced_music_hide_get_premium_label_summary_on">Le libellé est masqué</string>

View File

@@ -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_on">Tá athdhéanamh buan cumasaithe</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Tá athdhéanamh buan díchumasaithe</string> <string name="revanced_music_play_permanent_repeat_summary_off">Tá athdhéanamh buan díchumasaithe</string>
</patch> </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"> <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_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_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> <string name="revanced_music_hide_category_bar_summary_off">Taispeántar an barra catagóirí</string>
</patch> </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"> <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_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> <string name="revanced_music_hide_get_premium_label_summary_on">Tá an lipéad i bhfolach</string>

View File

@@ -253,8 +253,17 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch"> <patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch> </patch>
<patch id="layout.castbutton.hideCastButton">
</patch>
<patch id="layout.compactheader.hideCategoryBar"> <patch id="layout.compactheader.hideCategoryBar">
</patch> </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 id="layout.premium.hideGetPremiumPatch">
</patch> </patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch"> <patch id="layout.upgradebutton.hideUpgradeButtonPatch">

View File

@@ -253,8 +253,17 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch"> <patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch> </patch>
<patch id="layout.castbutton.hideCastButton">
</patch>
<patch id="layout.compactheader.hideCategoryBar"> <patch id="layout.compactheader.hideCategoryBar">
</patch> </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 id="layout.premium.hideGetPremiumPatch">
</patch> </patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch"> <patch id="layout.upgradebutton.hideUpgradeButtonPatch">

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