mirror of
https://github.com/ReVanced/revanced-patches.git
synced 2026-01-17 08:13:56 +00:00
Compare commits
7 Commits
v5.34.0-de
...
v5.34.0-de
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c3ee6eca44 | ||
|
|
01a04c338c | ||
|
|
3130225d9d | ||
|
|
16b27fb872 | ||
|
|
bedabd3fa3 | ||
|
|
84f3c6f02d | ||
|
|
25470baeee |
14
CHANGELOG.md
14
CHANGELOG.md
@@ -1,3 +1,17 @@
|
||||
# [5.34.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v5.34.0-dev.11...v5.34.0-dev.12) (2025-08-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube:** Use correct fade out animation when tapping to dismiss the video overlay ([#5670](https://github.com/ReVanced/revanced-patches/issues/5670)) ([cce6737](https://github.com/ReVanced/revanced-patches/commit/cce6737f627fc7621bbde50a5653b6af14c6f31a))
|
||||
|
||||
# [5.34.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v5.34.0-dev.10...v5.34.0-dev.11) (2025-08-16)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - SponsorBlock:** Do not hide voting or create button when the video ends ([6aba4e2](https://github.com/ReVanced/revanced-patches/commit/6aba4e284de9bb94b49eea8be2baf2870eecbbcf))
|
||||
|
||||
# [5.34.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v5.34.0-dev.9...v5.34.0-dev.10) (2025-08-16)
|
||||
|
||||
|
||||
|
||||
@@ -57,11 +57,4 @@ public class PlayerControlsPatch {
|
||||
private static void fullscreenButtonVisibilityChanged(boolean isVisible) {
|
||||
// Code added during patching.
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
public static String getPlayerTopControlsLayoutResourceName(String original) {
|
||||
return "default";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
package app.revanced.extension.youtube.patches;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import app.revanced.extension.youtube.shared.PlayerControlsVisibility;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class PlayerControlsVisibilityHookPatch {
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
public static void setPlayerControlsVisibility(@Nullable Enum<?> youTubePlayerControlsVisibility) {
|
||||
if (youTubePlayerControlsVisibility == null) return;
|
||||
|
||||
PlayerControlsVisibility.setFromString(youTubePlayerControlsVisibility.name());
|
||||
}
|
||||
}
|
||||
@@ -9,7 +9,7 @@ public class SpoofAppVersionPatch {
|
||||
private static final String SPOOF_APP_VERSION_TARGET = Settings.SPOOF_APP_VERSION_TARGET.get();
|
||||
|
||||
/**
|
||||
* Injection point
|
||||
* injection point.
|
||||
*/
|
||||
public static String getYouTubeVersionOverride(String version) {
|
||||
if (SPOOF_APP_VERSION_ENABLED) return SPOOF_APP_VERSION_TARGET;
|
||||
|
||||
@@ -126,7 +126,7 @@ public final class SeekbarColorPatch {
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point
|
||||
* injection point.
|
||||
*/
|
||||
public static boolean useLotteLaunchSplashScreen(boolean original) {
|
||||
// This method is only used for development purposes to force the old style launch screen.
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
package app.revanced.extension.youtube.shared
|
||||
|
||||
import app.revanced.extension.shared.Logger
|
||||
import app.revanced.extension.youtube.Event
|
||||
|
||||
/**
|
||||
* PlayerControls visibility state.
|
||||
*/
|
||||
enum class PlayerControlsVisibility {
|
||||
PLAYER_CONTROLS_VISIBILITY_UNKNOWN,
|
||||
PLAYER_CONTROLS_VISIBILITY_WILL_HIDE,
|
||||
PLAYER_CONTROLS_VISIBILITY_HIDDEN,
|
||||
PLAYER_CONTROLS_VISIBILITY_WILL_SHOW,
|
||||
PLAYER_CONTROLS_VISIBILITY_SHOWN;
|
||||
|
||||
companion object {
|
||||
|
||||
private val nameToPlayerControlsVisibility = PlayerControlsVisibility.entries.associateBy { it.name }
|
||||
|
||||
@JvmStatic
|
||||
fun setFromString(enumName: String) {
|
||||
val newType = nameToPlayerControlsVisibility[enumName]
|
||||
if (newType == null) {
|
||||
Logger.printException { "Unknown PlayerControlsVisibility encountered: $enumName" }
|
||||
} else {
|
||||
current = newType
|
||||
}
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
var current
|
||||
get() = currentPlayerControlsVisibility
|
||||
private set(type) {
|
||||
if (currentPlayerControlsVisibility != type) {
|
||||
Logger.printDebug { "Changed to: $type" }
|
||||
|
||||
currentPlayerControlsVisibility = type
|
||||
onChange(type)
|
||||
}
|
||||
}
|
||||
|
||||
@Volatile // Read/write from different threads.
|
||||
private var currentPlayerControlsVisibility = PLAYER_CONTROLS_VISIBILITY_UNKNOWN
|
||||
|
||||
@JvmStatic
|
||||
val onChange = Event<PlayerControlsVisibility>()
|
||||
}
|
||||
}
|
||||
@@ -13,7 +13,6 @@ import android.graphics.Rect;
|
||||
import android.graphics.drawable.ShapeDrawable;
|
||||
import android.graphics.drawable.shapes.RoundRectShape;
|
||||
import android.text.TextUtils;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.util.Range;
|
||||
import android.view.Gravity;
|
||||
import android.view.ViewGroup;
|
||||
@@ -877,7 +876,7 @@ public class SegmentPlaybackController {
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point
|
||||
* injection point.
|
||||
*/
|
||||
@SuppressWarnings("unused")
|
||||
public static void setSponsorBarRect(Object self) {
|
||||
@@ -909,7 +908,7 @@ public class SegmentPlaybackController {
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point
|
||||
* injection point.
|
||||
*/
|
||||
@SuppressWarnings("unused")
|
||||
public static void setSponsorBarThickness(int thickness) {
|
||||
|
||||
@@ -5,10 +5,10 @@ import android.view.View;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import app.revanced.extension.shared.Logger;
|
||||
import app.revanced.extension.youtube.patches.VideoInformation;
|
||||
import app.revanced.extension.youtube.settings.Settings;
|
||||
import app.revanced.extension.youtube.videoplayer.PlayerControlButton;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class CreateSegmentButton {
|
||||
@Nullable
|
||||
private static PlayerControlButton instance;
|
||||
@@ -18,7 +18,7 @@ public class CreateSegmentButton {
|
||||
}
|
||||
|
||||
/**
|
||||
* injection point
|
||||
* injection point.
|
||||
*/
|
||||
public static void initialize(View controlsView) {
|
||||
try {
|
||||
@@ -37,21 +37,27 @@ public class CreateSegmentButton {
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point
|
||||
* injection point.
|
||||
*/
|
||||
public static void setVisibilityNegatedImmediate() {
|
||||
if (instance != null) instance.setVisibilityNegatedImmediate();
|
||||
}
|
||||
|
||||
/**
|
||||
* injection point.
|
||||
*/
|
||||
public static void setVisibilityImmediate(boolean visible) {
|
||||
if (instance != null) instance.setVisibilityImmediate(visible);
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point
|
||||
* injection point.
|
||||
*/
|
||||
public static void setVisibility(boolean visible, boolean animated) {
|
||||
if (instance != null) instance.setVisibility(visible, animated);
|
||||
}
|
||||
|
||||
private static boolean shouldBeShown() {
|
||||
return Settings.SB_ENABLED.get() && Settings.SB_CREATE_NEW_SEGMENT.get()
|
||||
&& !VideoInformation.isAtEndOfVideo();
|
||||
return Settings.SB_ENABLED.get() && Settings.SB_CREATE_NEW_SEGMENT.get();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@ import java.util.Objects;
|
||||
|
||||
import app.revanced.extension.shared.Logger;
|
||||
import app.revanced.extension.shared.Utils;
|
||||
import app.revanced.extension.youtube.settings.Settings;
|
||||
import app.revanced.extension.youtube.shared.PlayerType;
|
||||
import app.revanced.extension.youtube.sponsorblock.objects.SponsorSegment;
|
||||
import kotlin.Unit;
|
||||
@@ -227,22 +226,4 @@ public class SponsorBlockViewController {
|
||||
params.bottomMargin = fullScreen ? ctaBottomMargin : defaultBottomMargin;
|
||||
view.setLayoutParams(params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
public static void endOfVideoReached() {
|
||||
try {
|
||||
Logger.printDebug(() -> "endOfVideoReached");
|
||||
// the buttons automatically set themselves to visible when appropriate,
|
||||
// but if buttons are showing when the end of the video is reached then they need
|
||||
// to be forcefully hidden
|
||||
if (!Settings.AUTO_REPEAT.get()) {
|
||||
CreateSegmentButton.hideControls();
|
||||
VotingButton.hideControls();
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "endOfVideoReached failure", ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,12 +5,12 @@ import android.view.View;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import app.revanced.extension.shared.Logger;
|
||||
import app.revanced.extension.youtube.patches.VideoInformation;
|
||||
import app.revanced.extension.youtube.settings.Settings;
|
||||
import app.revanced.extension.youtube.sponsorblock.SegmentPlaybackController;
|
||||
import app.revanced.extension.youtube.sponsorblock.SponsorBlockUtils;
|
||||
import app.revanced.extension.youtube.videoplayer.PlayerControlButton;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class VotingButton {
|
||||
@Nullable
|
||||
private static PlayerControlButton instance;
|
||||
@@ -20,7 +20,7 @@ public class VotingButton {
|
||||
}
|
||||
|
||||
/**
|
||||
* injection point
|
||||
* injection point.
|
||||
*/
|
||||
public static void initialize(View controlsView) {
|
||||
try {
|
||||
@@ -39,14 +39,21 @@ public class VotingButton {
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point
|
||||
* injection point.
|
||||
*/
|
||||
public static void setVisibilityNegatedImmediate() {
|
||||
if (instance != null) instance.setVisibilityNegatedImmediate();
|
||||
}
|
||||
|
||||
/**
|
||||
* injection point.
|
||||
*/
|
||||
public static void setVisibilityImmediate(boolean visible) {
|
||||
if (instance != null) instance.setVisibilityImmediate(visible);
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point
|
||||
* injection point.
|
||||
*/
|
||||
public static void setVisibility(boolean visible, boolean animated) {
|
||||
if (instance != null) instance.setVisibility(visible, animated);
|
||||
@@ -54,6 +61,6 @@ public class VotingButton {
|
||||
|
||||
private static boolean shouldBeShown() {
|
||||
return Settings.SB_ENABLED.get() && Settings.SB_VOTING_BUTTON.get()
|
||||
&& SegmentPlaybackController.videoHasSegments() && !VideoInformation.isAtEndOfVideo();
|
||||
&& SegmentPlaybackController.videoHasSegments();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,15 +35,22 @@ public class CopyVideoUrlButton {
|
||||
}
|
||||
}
|
||||
|
||||
/**`
|
||||
* injection point.
|
||||
*/
|
||||
public static void setVisibilityNegatedImmediate() {
|
||||
if (instance != null) instance.setVisibilityNegatedImmediate();
|
||||
}
|
||||
|
||||
/**
|
||||
* injection point
|
||||
* injection point.
|
||||
*/
|
||||
public static void setVisibilityImmediate(boolean visible) {
|
||||
if (instance != null) instance.setVisibilityImmediate(visible);
|
||||
}
|
||||
|
||||
/**
|
||||
* injection point
|
||||
* injection point.
|
||||
*/
|
||||
public static void setVisibility(boolean visible, boolean animated) {
|
||||
if (instance != null) instance.setVisibility(visible, animated);
|
||||
|
||||
@@ -36,14 +36,21 @@ public class CopyVideoUrlTimestampButton {
|
||||
}
|
||||
|
||||
/**
|
||||
* injection point
|
||||
* injection point.
|
||||
*/
|
||||
public static void setVisibilityNegatedImmediate() {
|
||||
if (instance != null) instance.setVisibilityNegatedImmediate();
|
||||
}
|
||||
|
||||
/**
|
||||
* injection point.
|
||||
*/
|
||||
public static void setVisibilityImmediate(boolean visible) {
|
||||
if (instance != null) instance.setVisibilityImmediate(visible);
|
||||
}
|
||||
|
||||
/**
|
||||
* injection point
|
||||
* injection point.
|
||||
*/
|
||||
public static void setVisibility(boolean visible, boolean animated) {
|
||||
if (instance != null) instance.setVisibility(visible, animated);
|
||||
|
||||
@@ -34,14 +34,21 @@ public class ExternalDownloadButton {
|
||||
}
|
||||
|
||||
/**
|
||||
* injection point
|
||||
* injection point.
|
||||
*/
|
||||
public static void setVisibilityNegatedImmediate() {
|
||||
if (instance != null) instance.setVisibilityNegatedImmediate();
|
||||
}
|
||||
|
||||
/**
|
||||
* injection point.
|
||||
*/
|
||||
public static void setVisibilityImmediate(boolean visible) {
|
||||
if (instance != null) instance.setVisibilityImmediate(visible);
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point
|
||||
* injection point.
|
||||
*/
|
||||
public static void setVisibility(boolean visible, boolean animated) {
|
||||
if (instance != null) instance.setVisibility(visible, animated);
|
||||
|
||||
@@ -69,6 +69,13 @@ public class PlaybackSpeedDialogButton {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* injection point.
|
||||
*/
|
||||
public static void setVisibilityNegatedImmediate() {
|
||||
if (instance != null) instance.setVisibilityNegatedImmediate();
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
|
||||
@@ -11,6 +11,7 @@ import java.lang.ref.WeakReference;
|
||||
|
||||
import app.revanced.extension.shared.Logger;
|
||||
import app.revanced.extension.shared.Utils;
|
||||
import app.revanced.extension.youtube.shared.PlayerControlsVisibility;
|
||||
import app.revanced.extension.youtube.shared.PlayerType;
|
||||
import kotlin.Unit;
|
||||
|
||||
@@ -40,8 +41,6 @@ public class PlayerControlButton {
|
||||
fadeOutAnimation = Utils.getResourceAnimation("fade_out");
|
||||
fadeOutAnimation.setDuration(fadeOutDuration);
|
||||
|
||||
// Animation for the fast fade out after tapping the overlay.
|
||||
// Currently not used but should be.
|
||||
fadeOutImmediate = Utils.getResourceAnimation("abc_fade_out");
|
||||
fadeOutImmediate.setDuration(Utils.getResourceInteger("fade_duration_fast"));
|
||||
}
|
||||
@@ -114,6 +113,33 @@ public class PlayerControlButton {
|
||||
});
|
||||
}
|
||||
|
||||
public void setVisibilityNegatedImmediate() {
|
||||
if (PlayerControlsVisibility.getCurrent() != PlayerControlsVisibility.PLAYER_CONTROLS_VISIBILITY_HIDDEN) {
|
||||
return;
|
||||
}
|
||||
|
||||
final boolean buttonEnabled = enabledStatus.buttonEnabled();
|
||||
if (!buttonEnabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
View container = containerRef.get();
|
||||
if (container == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
isVisible = false;
|
||||
|
||||
container.clearAnimation();
|
||||
container.startAnimation(fadeOutImmediate);
|
||||
container.setVisibility(View.GONE);
|
||||
|
||||
View placeholder = placeHolderRef.get();
|
||||
if (placeholder != null) {
|
||||
container.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
public void setVisibilityImmediate(boolean visible) {
|
||||
if (visible) {
|
||||
// Fix button flickering, by pushing this call to the back of
|
||||
|
||||
@@ -116,6 +116,13 @@ public class VideoQualityDialogButton {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* injection point.
|
||||
*/
|
||||
public static void setVisibilityNegatedImmediate() {
|
||||
if (instance != null) instance.setVisibilityNegatedImmediate();
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
|
||||
@@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M
|
||||
org.gradle.parallel = true
|
||||
android.useAndroidX = true
|
||||
kotlin.code.style = official
|
||||
version = 5.34.0-dev.10
|
||||
version = 5.34.0-dev.12
|
||||
|
||||
@@ -1536,6 +1536,10 @@ public final class app/revanced/patches/youtube/misc/navigation/NavigationBarHoo
|
||||
public static final fun setHookNavigationButtonCreated (Lkotlin/jvm/functions/Function1;)V
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/youtube/misc/playercontrols/PlayerControlsOverlayVisibilityPatchKt {
|
||||
public static final fun getPlayerControlsOverlayVisibilityPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/youtube/misc/playercontrols/PlayerControlsPatchKt {
|
||||
public static final fun getAddBottomControl ()Lkotlin/jvm/functions/Function1;
|
||||
public static final fun getPlayerControlsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
|
||||
@@ -202,7 +202,7 @@ val sponsorBlockPatch = bytecodePatch(
|
||||
"""
|
||||
invoke-static { v$register }, $EXTENSION_SEGMENT_PLAYBACK_CONTROLLER_CLASS_DESCRIPTOR->appendTimeWithoutSegments(Ljava/lang/String;)Ljava/lang/String;
|
||||
move-result-object v$register
|
||||
""",
|
||||
"""
|
||||
)
|
||||
}
|
||||
|
||||
@@ -252,15 +252,5 @@ val sponsorBlockPatch = bytecodePatch(
|
||||
}
|
||||
} ?: throw PatchException("Could not find the method which contains the replaceMeWith* strings")
|
||||
}
|
||||
|
||||
// The vote and create segment buttons automatically change their visibility when appropriate,
|
||||
// but if buttons are showing when the end of the video is reached then they will not automatically hide.
|
||||
// Add a hook to forcefully hide when the end of the video is reached.
|
||||
autoRepeatFingerprint.match(autoRepeatParentFingerprint.originalClassDef).method.addInstruction(
|
||||
0,
|
||||
"invoke-static {}, $EXTENSION_SPONSORBLOCK_VIEW_CONTROLLER_CLASS_DESCRIPTOR->endOfVideoReached()V",
|
||||
)
|
||||
|
||||
// TODO: Channel whitelisting.
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,14 +2,63 @@ package app.revanced.patches.youtube.misc.playercontrols
|
||||
|
||||
import app.revanced.patcher.fingerprint
|
||||
import app.revanced.util.containsLiteralInstruction
|
||||
import app.revanced.util.getReference
|
||||
import app.revanced.util.indexOfFirstInstruction
|
||||
import app.revanced.util.indexOfFirstInstructionReversed
|
||||
import app.revanced.util.literal
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.iface.Method
|
||||
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||
|
||||
internal fun indexOfFocusableInTouchModeInstruction(method: Method) =
|
||||
method.indexOfFirstInstruction {
|
||||
getReference<MethodReference>()?.name == "setFocusableInTouchMode"
|
||||
}
|
||||
|
||||
internal fun indexOfTranslationInstruction(method: Method) =
|
||||
method.indexOfFirstInstructionReversed {
|
||||
getReference<MethodReference>()?.name == "setTranslationY"
|
||||
}
|
||||
|
||||
internal val playerControlsVisibilityEntityModelFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC)
|
||||
returns("L")
|
||||
parameters()
|
||||
opcodes(
|
||||
Opcode.IGET,
|
||||
Opcode.INVOKE_STATIC
|
||||
)
|
||||
custom { method, _ ->
|
||||
method.name == "getPlayerControlsVisibility"
|
||||
}
|
||||
}
|
||||
|
||||
internal val youtubeControlsOverlayFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PRIVATE, AccessFlags.FINAL)
|
||||
returns("V")
|
||||
parameters()
|
||||
custom { method, _ ->
|
||||
indexOfFocusableInTouchModeInstruction(method) >= 0 &&
|
||||
method.containsLiteralInstruction(inset_overlay_view_layout_id) &&
|
||||
method.containsLiteralInstruction(scrim_overlay_id)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
internal val motionEventFingerprint = fingerprint {
|
||||
returns("V")
|
||||
parameters("Landroid/view/MotionEvent;")
|
||||
custom { method, _ ->
|
||||
indexOfTranslationInstruction(method) >= 0
|
||||
}
|
||||
}
|
||||
|
||||
internal val playerTopControlsInflateFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||
returns("V")
|
||||
parameters()
|
||||
literal { controlsLayoutStub }
|
||||
literal { controls_layout_stub_id }
|
||||
}
|
||||
|
||||
internal val playerControlsExtensionHookListenersExistFingerprint = fingerprint {
|
||||
@@ -35,7 +84,7 @@ internal val playerControlsExtensionHookFingerprint = fingerprint {
|
||||
internal val playerBottomControlsInflateFingerprint = fingerprint {
|
||||
returns("Ljava/lang/Object;")
|
||||
parameters()
|
||||
literal { bottomUiContainerResourceId }
|
||||
literal { bottom_ui_container_stub_id }
|
||||
}
|
||||
|
||||
internal val overlayViewInflateFingerprint = fingerprint {
|
||||
@@ -43,8 +92,8 @@ internal val overlayViewInflateFingerprint = fingerprint {
|
||||
returns("V")
|
||||
parameters("Landroid/view/View;")
|
||||
custom { methodDef, _ ->
|
||||
methodDef.containsLiteralInstruction(fullscreenButton) &&
|
||||
methodDef.containsLiteralInstruction(heatseekerViewstub)
|
||||
methodDef.containsLiteralInstruction(fullscreen_button_id) &&
|
||||
methodDef.containsLiteralInstruction(heatseeker_viewstub_id)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
package app.revanced.patches.youtube.misc.playercontrols
|
||||
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
||||
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
|
||||
|
||||
private const val EXTENSION_PLAYER_CONTROLS_VISIBILITY_HOOK_CLASS_DESCRIPTOR =
|
||||
"Lapp/revanced/extension/youtube/patches/PlayerControlsVisibilityHookPatch;"
|
||||
|
||||
val PlayerControlsOverlayVisibilityPatch = bytecodePatch {
|
||||
dependsOn(sharedExtensionPatch)
|
||||
|
||||
execute {
|
||||
playerControlsVisibilityEntityModelFingerprint.let {
|
||||
it.method.apply {
|
||||
val startIndex = it.patternMatch!!.startIndex
|
||||
val iGetReference = getInstruction<ReferenceInstruction>(startIndex).reference
|
||||
val staticReference = getInstruction<ReferenceInstruction>(startIndex + 1).reference
|
||||
|
||||
it.classDef.methods.find { method -> method.name == "<init>" }?.apply {
|
||||
val targetIndex = indexOfFirstInstructionOrThrow(Opcode.IPUT_OBJECT)
|
||||
val targetRegister = getInstruction<TwoRegisterInstruction>(targetIndex).registerA
|
||||
|
||||
addInstructions(
|
||||
targetIndex + 1,
|
||||
"""
|
||||
iget v$targetRegister, v$targetRegister, $iGetReference
|
||||
invoke-static { v$targetRegister }, $staticReference
|
||||
move-result-object v$targetRegister
|
||||
invoke-static { v$targetRegister }, $EXTENSION_PLAYER_CONTROLS_VISIBILITY_HOOK_CLASS_DESCRIPTOR->setPlayerControlsVisibility(Ljava/lang/Enum;)V
|
||||
"""
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
package app.revanced.patches.youtube.misc.playercontrols
|
||||
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||
import app.revanced.patcher.patch.PatchException
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
@@ -40,13 +39,17 @@ internal lateinit var addTopControl: (String) -> Unit
|
||||
lateinit var addBottomControl: (String) -> Unit
|
||||
private set
|
||||
|
||||
internal var bottomUiContainerResourceId = -1L
|
||||
internal var bottom_ui_container_stub_id = -1L
|
||||
private set
|
||||
internal var controlsLayoutStub = -1L
|
||||
internal var controls_layout_stub_id = -1L
|
||||
private set
|
||||
internal var heatseekerViewstub = -1L
|
||||
internal var heatseeker_viewstub_id = -1L
|
||||
private set
|
||||
internal var fullscreenButton = -1L
|
||||
internal var fullscreen_button_id = -1L
|
||||
private set
|
||||
internal var inset_overlay_view_layout_id = -1L
|
||||
private set
|
||||
internal var scrim_overlay_id = -1L
|
||||
private set
|
||||
|
||||
val playerControlsResourcePatch = resourcePatch {
|
||||
@@ -65,10 +68,12 @@ val playerControlsResourcePatch = resourcePatch {
|
||||
execute {
|
||||
val targetResourceName = "youtube_controls_bottom_ui_container.xml"
|
||||
|
||||
bottomUiContainerResourceId = resourceMappings["id", "bottom_ui_container_stub"]
|
||||
controlsLayoutStub = resourceMappings["id", "controls_layout_stub"]
|
||||
heatseekerViewstub = resourceMappings["id", "heatseeker_viewstub"]
|
||||
fullscreenButton = resourceMappings["id", "fullscreen_button"]
|
||||
bottom_ui_container_stub_id = resourceMappings["id", "bottom_ui_container_stub"]
|
||||
controls_layout_stub_id = resourceMappings["id", "controls_layout_stub"]
|
||||
heatseeker_viewstub_id = resourceMappings["id", "heatseeker_viewstub"]
|
||||
fullscreen_button_id = resourceMappings["id", "fullscreen_button"]
|
||||
inset_overlay_view_layout_id = resourceMappings["id", "inset_overlay_view_layout"]
|
||||
scrim_overlay_id = resourceMappings["id", "scrim_overlay"]
|
||||
|
||||
bottomTargetDocument = document("res/layout/$targetResourceName")
|
||||
|
||||
@@ -198,6 +203,13 @@ fun injectVisibilityCheckCall(descriptor: String) {
|
||||
visibilityImmediateInsertIndex++,
|
||||
"invoke-static { p0 }, $descriptor->setVisibilityImmediate(Z)V",
|
||||
)
|
||||
|
||||
// Patch works without this hook, but it is needed to use the correct fade out animation
|
||||
// duration when tapping the overlay to dismiss.
|
||||
visibilityNegatedImmediateMethod.addInstruction(
|
||||
visibilityNegatedImmediateInsertIndex++,
|
||||
"invoke-static { }, $descriptor->setVisibilityNegatedImmediate()V",
|
||||
)
|
||||
}
|
||||
|
||||
internal const val EXTENSION_CLASS_DESCRIPTOR =
|
||||
@@ -220,12 +232,16 @@ private lateinit var visibilityImmediateCallbacksExistMethod : MutableMethod
|
||||
private lateinit var visibilityImmediateMethod: MutableMethod
|
||||
private var visibilityImmediateInsertIndex: Int = 0
|
||||
|
||||
private lateinit var visibilityNegatedImmediateMethod: MutableMethod
|
||||
private var visibilityNegatedImmediateInsertIndex: Int = 0
|
||||
|
||||
val playerControlsPatch = bytecodePatch(
|
||||
description = "Manages the code for the player controls of the YouTube player.",
|
||||
) {
|
||||
dependsOn(
|
||||
playerControlsResourcePatch,
|
||||
sharedExtensionPatch,
|
||||
PlayerControlsOverlayVisibilityPatch
|
||||
)
|
||||
|
||||
execute {
|
||||
@@ -258,7 +274,7 @@ val playerControlsPatch = bytecodePatch(
|
||||
// Hook the fullscreen close button. Used to fix visibility
|
||||
// when seeking and other situations.
|
||||
overlayViewInflateFingerprint.method.apply {
|
||||
val resourceIndex = indexOfFirstLiteralInstructionReversedOrThrow(fullscreenButton)
|
||||
val resourceIndex = indexOfFirstLiteralInstructionReversedOrThrow(fullscreen_button_id)
|
||||
|
||||
val index = indexOfFirstInstructionOrThrow(resourceIndex) {
|
||||
opcode == Opcode.CHECK_CAST &&
|
||||
@@ -277,6 +293,11 @@ val playerControlsPatch = bytecodePatch(
|
||||
visibilityImmediateCallbacksExistMethod = playerControlsExtensionHookListenersExistFingerprint.method
|
||||
visibilityImmediateMethod = playerControlsExtensionHookFingerprint.method
|
||||
|
||||
motionEventFingerprint.match(youtubeControlsOverlayFingerprint.originalClassDef).method.apply {
|
||||
visibilityNegatedImmediateMethod = this
|
||||
visibilityNegatedImmediateInsertIndex = indexOfTranslationInstruction(this) + 1
|
||||
}
|
||||
|
||||
// A/B test for a slightly different bottom overlay controls,
|
||||
// that uses layout file youtube_video_exploder_controls_bottom_ui_container.xml
|
||||
// The change to support this is simple and only requires adding buttons to both layout files,
|
||||
@@ -299,12 +320,9 @@ val playerControlsPatch = bytecodePatch(
|
||||
val index = indexOfFirstInstructionOrThrow(Opcode.MOVE_RESULT_OBJECT)
|
||||
val register = getInstruction<OneRegisterInstruction>(index).registerA
|
||||
|
||||
addInstructions(
|
||||
addInstruction(
|
||||
index + 1,
|
||||
"""
|
||||
invoke-static { v$register }, $EXTENSION_CLASS_DESCRIPTOR->getPlayerTopControlsLayoutResourceName(Ljava/lang/String;)Ljava/lang/String;
|
||||
move-result-object v$register
|
||||
""",
|
||||
"const-string v$register, \"default\""
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -582,7 +582,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_download_button_summary_off">يتم عرض زر التنزيل</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">إخفاء زر Hype</string>
|
||||
<string name="revanced_hide_hype_button_title">إخفاء الضجة</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">زر الضجة مخفي</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">يظهر زر الحماس</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
|
||||
@@ -582,7 +582,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_download_button_summary_off">Паказана кнопка загрузкі</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">Схаваць кнопку Hype</string>
|
||||
<string name="revanced_hide_hype_button_title">Схаваць хайп</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Кнопка Hype схаваная</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Кнопка хайпу паказана</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
|
||||
@@ -582,7 +582,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_download_button_summary_off">Бутона за изтегляне се показва</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">Скриване на бутона за хайп</string>
|
||||
<string name="revanced_hide_hype_button_title">Скрий хайпа</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Бутонът за хайп е скрит</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Бутонът за хайп е показан</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
|
||||
@@ -578,7 +578,7 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
||||
<string name="revanced_hide_download_button_summary_off">ডাউনলোড বোতাম দেখানো হয়েছে</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">হাইপ বোতাম লুকান</string>
|
||||
<string name="revanced_hide_hype_button_title">হাইপ লুকান</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">হাইপ বোতাম লুকানো আছে</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">হাইপ বাটন দেখানো হয়েছে</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
|
||||
@@ -582,7 +582,7 @@ Hlasitost se upravuje svislým přejetím po pravé straně obrazovky"</string>
|
||||
<string name="revanced_hide_download_button_summary_off">Tlačítko Stáhnout je zobrazeno</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">Skrýt tlačítko Hype</string>
|
||||
<string name="revanced_hide_hype_button_title">Skrýt Hype</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Tlačítko Hype je skryto</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Tlačítko Hype je zobrazeno</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
|
||||
@@ -582,7 +582,7 @@ Juster lydstyrken ved at swipe lodret i højre side af skærmen"</string>
|
||||
<string name="revanced_hide_download_button_summary_off">Download-knappen vises</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">Skjul Hype-knap</string>
|
||||
<string name="revanced_hide_hype_button_title">Skjul Hype</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Hype-knappen er skjult</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Hype-knappen vises</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
|
||||
@@ -150,9 +150,9 @@ Sie werden nicht über unerwartete Ereignisse informiert."</string>
|
||||
<string name="revanced_hide_chips_shelf_title">Chips ausblenden</string>
|
||||
<string name="revanced_hide_chips_shelf_summary_on">Chips sind ausgeblendet</string>
|
||||
<string name="revanced_hide_chips_shelf_summary_off">Chips werden angezeigt</string>
|
||||
<string name="revanced_hide_community_posts_title">Community-Beiträge ausblenden</string>
|
||||
<string name="revanced_hide_community_posts_summary_on">Community-Beiträge sind ausgeblendet</string>
|
||||
<string name="revanced_hide_community_posts_summary_off">Gemeinschaftsbeiträge werden angezeigt</string>
|
||||
<string name="revanced_hide_community_posts_title">Communitybeiträge ausblenden</string>
|
||||
<string name="revanced_hide_community_posts_summary_on">Communitybeiträge sind ausgeblendet</string>
|
||||
<string name="revanced_hide_community_posts_summary_off">Communitybeiträge werden angezeigt</string>
|
||||
<string name="revanced_hide_compact_banner_title">Kompakte Banner ausblenden</string>
|
||||
<string name="revanced_hide_compact_banner_summary_on">Kompakte Banner sind ausgeblendet</string>
|
||||
<string name="revanced_hide_compact_banner_summary_off">Kompakte Banner werden angezeigt</string>
|
||||
@@ -218,7 +218,7 @@ Wenn ein Doodle zurzeit in Ihrer Region angezeigt wird und diese Einstellung zum
|
||||
<string name="revanced_hide_channel_bar_title">Senderleiste ausblenden</string>
|
||||
<string name="revanced_hide_channel_bar_summary_on">Kanalleiste ist ausgeblendet</string>
|
||||
<string name="revanced_hide_channel_bar_summary_off">Kanalleiste wird angezeigt</string>
|
||||
<string name="revanced_hide_channel_watermark_title">Wasserzeichen ausblenden</string>
|
||||
<string name="revanced_hide_channel_watermark_title">Kanal-Wasserzeichen ausblenden</string>
|
||||
<string name="revanced_hide_channel_watermark_summary_on">Wasserzeichen ist ausgeblendet</string>
|
||||
<string name="revanced_hide_channel_watermark_summary_off">Wasserzeichen wird angezeigt</string>
|
||||
<string name="revanced_hide_emergency_box_title">Notfall-Boxen ausblenden</string>
|
||||
@@ -303,9 +303,9 @@ Wenn ein Doodle zurzeit in Ihrer Region angezeigt wird und diese Einstellung zum
|
||||
<string name="revanced_hide_members_shelf_summary_on">Mitglieder-Regal ist ausgeblendet</string>
|
||||
<string name="revanced_hide_members_shelf_summary_off">Mitglieder-Regal wird angezeigt</string>
|
||||
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
|
||||
<string name="revanced_hide_visit_community_button_title">Schaltfläche \'Community besuchen\' ausblenden</string>
|
||||
<string name="revanced_hide_visit_community_button_summary_on">Schaltfläche \'Community besuchen\' ist ausgeblendet</string>
|
||||
<string name="revanced_hide_visit_community_button_summary_off">Schaltfläche \"Community besuchen\" ist angezeigt</string>
|
||||
<string name="revanced_hide_visit_community_button_title">Schaltfläche \'Zur Community\' ausblenden</string>
|
||||
<string name="revanced_hide_visit_community_button_summary_on">Schaltfläche \'Zur Community\' ist ausgeblendet</string>
|
||||
<string name="revanced_hide_visit_community_button_summary_off">Schaltfläch \"Zur Community\" wird angezeigt</string>
|
||||
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
|
||||
<string name="revanced_hide_visit_store_button_title">Den \'Store besuchen\'-Button auf Kanalseiten ausblenden</string>
|
||||
<string name="revanced_hide_visit_store_button_summary_on">Schaltfläche \"Shop besuchen\" ist ausgeblendet</string>
|
||||
@@ -577,9 +577,9 @@ Passen Sie die Helligkeit an, indem Sie auf der linken Seite des Bildschirms ver
|
||||
<string name="revanced_hide_download_button_summary_off">Download-Button wird angezeigt</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">Hype-Button ausblenden</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Hype-Button ist ausgeblendet</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Hype-Button wird angezeigt</string>
|
||||
<string name="revanced_hide_hype_button_title">Hypen ausblenden</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Hypen-Button ist ausgeblendet</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Hypen-Button wird angezeigt</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
<string name="revanced_hide_promote_button_title">Werbung ausblenden</string>
|
||||
<string name="revanced_hide_promote_button_summary_on">Schaltfläche \"Promoten\" ist ausgeblendet</string>
|
||||
|
||||
@@ -584,9 +584,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_download_button_summary_off">Εμφανίζεται</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">Κουμπί «Χάιπ»</string>
|
||||
<string name="revanced_hide_hype_button_title">Κουμπί «Hype»</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Κρυμμένο</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Το κουμπί Hype εμφανίζεται</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Εμφανίζεται</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
<string name="revanced_hide_promote_button_title">Κουμπί «Προώθηση»</string>
|
||||
<string name="revanced_hide_promote_button_summary_on">Κρυμμένο</string>
|
||||
|
||||
@@ -582,7 +582,7 @@ Ajusta el volumen deslizando verticalmente en el lado derecho de la pantalla"</s
|
||||
<string name="revanced_hide_download_button_summary_off">Se muestra el botón de descarga</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">Ocultar botón de Hype</string>
|
||||
<string name="revanced_hide_hype_button_title">Ocultar Hype</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">El botón Hype está oculto</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">El botón de hype está visible</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
|
||||
@@ -582,7 +582,7 @@ Helitugevuse reguleerimiseks pühkige ekraani paremal küljel vertikaalselt"</st
|
||||
<string name="revanced_hide_download_button_summary_off">Laadi alla nupp on nähtav</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">Peida Haip nupp</string>
|
||||
<string name="revanced_hide_hype_button_title">Peida Hype</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Hype nupp on peidetud</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Hype\'i nupp on nähtav</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
|
||||
@@ -579,7 +579,13 @@ Säädä äänenvoimakkuutta pyyhkäisemällä pystysuoraan näytön oikealta pu
|
||||
<string name="revanced_hide_download_button_summary_off">Lataa-painike näytetään</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">Piilota Hypetä</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Hypetä-painike on piilotettu</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Hypetä-painike näytetään</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
<string name="revanced_hide_promote_button_title">Piilota Mainosta</string>
|
||||
<string name="revanced_hide_promote_button_summary_on">Mainosta-painike on piilotettu</string>
|
||||
<string name="revanced_hide_promote_button_summary_off">Mainosta-painike näytetään</string>
|
||||
<!-- 'Thanks' should be translated with the same localized wording that YouTube displays. -->
|
||||
<string name="revanced_hide_thanks_button_title">Piilota Kiitos</string>
|
||||
<string name="revanced_hide_thanks_button_summary_on">Kiitos-painike on piilotettu</string>
|
||||
|
||||
@@ -582,7 +582,7 @@ Ayusin ang volume sa pamamagitan ng pag-swipe nang patayo sa kanang bahagi ng sc
|
||||
<string name="revanced_hide_download_button_summary_off">Ang pindutan ng pag-download ay ipinapakita</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">Itago ang Hype button</string>
|
||||
<string name="revanced_hide_hype_button_title">Itago ang Ingay</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Nakatago ang hype button</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Ipinapakita ang Hype button</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
|
||||
@@ -582,7 +582,7 @@ Réglez le volume en balayant verticalement sur le côté droit de l'écran"</st
|
||||
<string name="revanced_hide_download_button_summary_off">Le bouton Télécharger est affiché</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">Masquer le bouton Hype</string>
|
||||
<string name="revanced_hide_hype_button_title">Masquer l\'Hype</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Le bouton Hype est masqué</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Le bouton Hype est affiché</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
|
||||
@@ -582,7 +582,7 @@ Coigeartaigh an toirt trí haisceartán go hingearach ar thaobh deas an scáile
|
||||
<string name="revanced_hide_download_button_summary_off">Taispeántar cnaipe íoslódáil</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">Folaigh Cnaipe Hype</string>
|
||||
<string name="revanced_hide_hype_button_title">Folaigh Borradh</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Tá cnaipe an Hype i bhfolach</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Tá an cnaipe Hype ar taispeáint</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
|
||||
@@ -582,7 +582,7 @@ A hangerő a képernyő jobb oldalán függőlegesen húzva állítható be"</st
|
||||
<string name="revanced_hide_download_button_summary_off">A letöltés gomb látható</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">Hype gomb elrejtése</string>
|
||||
<string name="revanced_hide_hype_button_title">Aktivitás elrejtése</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">A Hype gomb rejtett</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">A hype gomb látható</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
|
||||
@@ -582,7 +582,7 @@ MicroG-ի համար մարտկոցի օպտիմալացումը անջատել
|
||||
<string name="revanced_hide_download_button_summary_off">Download կոճակը ցուցադրվում է</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">Թաքցնել «Hype» կոճակը</string>
|
||||
<string name="revanced_hide_hype_button_title">Թաքցնել Հայփը</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Հայփ կոճակը թաքնված է</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Հայփ կոճակը ցուցադրվում է</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
|
||||
@@ -582,13 +582,13 @@ Menyesuaikan volume dengan mengusap secara vertikal di sisi kanan layar"</string
|
||||
<string name="revanced_hide_download_button_summary_off">Tombol unduh ditampilkan</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">Sembunyikan tombol Hype</string>
|
||||
<string name="revanced_hide_hype_button_title">Sembunyikan Hype</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Tombol Hype disembunyikan</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Tombol Hype ditampilkan</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
<string name="revanced_hide_promote_button_title">Sembunyikan Promosi</string>
|
||||
<string name="revanced_hide_promote_button_summary_on">Tombol Promote disembunyikan</string>
|
||||
<string name="revanced_hide_promote_button_summary_off">Tombol Promote ditampilkan</string>
|
||||
<string name="revanced_hide_promote_button_summary_on">Tombol Promosi disembunyikan</string>
|
||||
<string name="revanced_hide_promote_button_summary_off">Tombol Promosi ditampilkan</string>
|
||||
<!-- 'Thanks' should be translated with the same localized wording that YouTube displays. -->
|
||||
<string name="revanced_hide_thanks_button_title">Sembunyikan Terima kasih</string>
|
||||
<string name="revanced_hide_thanks_button_summary_on">Tombol terima kasih disembunyikan</string>
|
||||
|
||||
@@ -582,7 +582,7 @@ Regola il volume scorrendo verticalmente sul lato destro dello schermo"</string>
|
||||
<string name="revanced_hide_download_button_summary_off">Il pulsante Scarica è visibile</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">Nascondi pulsante Hype</string>
|
||||
<string name="revanced_hide_hype_button_title">Nascondi Hype</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Il pulsante Hype è nascosto</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Pulsante Hype è mostrato</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
|
||||
@@ -582,7 +582,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_download_button_summary_off">לחצן הורדה מוצג</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">הסתר כפתור הייפ</string>
|
||||
<string name="revanced_hide_hype_button_title">הסתר הייפ</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">כפתור הייפ מוסתר</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">כפתור ההייפ מוצג</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
|
||||
@@ -584,13 +584,13 @@ GmsCore の電池の最適化を無効にしても、バッテリーの使用に
|
||||
<string name="revanced_hide_download_button_summary_off">オフライン ボタンは表示されます</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">「盛り上げ」ボタンを非表示</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Hype ボタンは表示されません</string>
|
||||
<string name="revanced_hide_hype_button_title">ハイプボタンを非表示</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">ハイプボタンは表示されません</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">ハイプボタンは表示されます</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
<string name="revanced_hide_promote_button_title">「プロモーション」を非表示</string>
|
||||
<string name="revanced_hide_promote_button_summary_on">宣伝ボタンは表示されません</string>
|
||||
<string name="revanced_hide_promote_button_summary_off">宣伝ボタンは表示されます</string>
|
||||
<string name="revanced_hide_promote_button_title">プロモート ボタンを非表示</string>
|
||||
<string name="revanced_hide_promote_button_summary_on">プロモート ボタンは表示されません</string>
|
||||
<string name="revanced_hide_promote_button_summary_off">プロモート ボタンは表示されます</string>
|
||||
<!-- 'Thanks' should be translated with the same localized wording that YouTube displays. -->
|
||||
<string name="revanced_hide_thanks_button_title">Thanks ボタンを非表示</string>
|
||||
<string name="revanced_hide_thanks_button_summary_on">Thanks ボタンは表示されません</string>
|
||||
|
||||
@@ -580,9 +580,9 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
|
||||
<string name="revanced_hide_download_button_summary_off">오프라인 저장 버튼이 표시됩니다</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">하입 버튼 숨기기</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">하이프 버튼이 숨겨집니다</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">하이프 버튼이 표시됩니다</string>
|
||||
<string name="revanced_hide_hype_button_title">Hype 버튼 숨기기</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Hype 버튼이 숨겨집니다</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Hype 버튼이 표시됩니다</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
<string name="revanced_hide_promote_button_title">홍보 버튼 숨기기</string>
|
||||
<string name="revanced_hide_promote_button_summary_on">홍보 버튼이 숨겨집니다</string>
|
||||
|
||||
@@ -582,7 +582,7 @@ Reguliuokite garsumą braukdami vertikaliai dešinėje ekrano pusėje"</string>
|
||||
<string name="revanced_hide_download_button_summary_off">Atsisiuntimo mygtukas rodomas</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">Slėpti „Hype“ mygtuką</string>
|
||||
<string name="revanced_hide_hype_button_title">Slėpti Ažiotažą</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">„Hype“ mygtukas paslėptas</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Haipo mygtukas rodomas</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
|
||||
@@ -582,7 +582,7 @@ Regulējiet skaļumu, velkot vertikāli ekrāna labajā pusē"</string>
|
||||
<string name="revanced_hide_download_button_summary_off">Lejupielādēt poga ir redzama</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">Slēpt Hype pogu</string>
|
||||
<string name="revanced_hide_hype_button_title">Paslēpt ažiotāžu</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Poga \</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Hype poga tiek rādīta</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
|
||||
@@ -582,7 +582,7 @@ Pas het volume aan door verticaal over de rechterkant van het scherm te vegen"</
|
||||
<string name="revanced_hide_download_button_summary_off">Downloaden knop wordt weergegeven</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">Verberg Hype-knop</string>
|
||||
<string name="revanced_hide_hype_button_title">Verberg Hype</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Hype-knop is verborgen</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Hype-knop is zichtbaar</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
|
||||
@@ -578,7 +578,7 @@ Dostosuj głośność, przesuwając pionowo po prawej stronie ekranu"</string>
|
||||
<string name="revanced_hide_download_button_summary_off">Przycisk pobierania jest widoczny</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">Ukryj przycisk Hype</string>
|
||||
<string name="revanced_hide_hype_button_title">Ukryj Hype</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Przycisk Hype jest ukryty</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Przycisk Hype jest wyświetlony</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
|
||||
@@ -582,7 +582,7 @@ Ajuste o volume deslizando verticalmente no lado direito da tela"</string>
|
||||
<string name="revanced_hide_download_button_summary_off">O botão download é mostrado</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">Ocultar botão Hype</string>
|
||||
<string name="revanced_hide_hype_button_title">Ocultar Hype</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Botão Hype está oculto</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">O botão Hype é exibido</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
|
||||
@@ -582,7 +582,7 @@ Ajuste o volume deslizando verticalmente no lado direito da tela"</string>
|
||||
<string name="revanced_hide_download_button_summary_off">O botão transferir está visível</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">Ocultar botão Hype</string>
|
||||
<string name="revanced_hide_hype_button_title">Ocultar Hype</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">O botão Hype está oculto</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">O botão Hype está exibido</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
|
||||
@@ -582,7 +582,7 @@ Reglați volumul glisând vertical pe partea dreaptă a ecranului"</string>
|
||||
<string name="revanced_hide_download_button_summary_off">Butonul Descărcare este afișat</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">Ascunde butonul Hype</string>
|
||||
<string name="revanced_hide_hype_button_title">Ascunde Freamătul</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Butonul de Hype este ascuns</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Butonul Hype este afișat</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
|
||||
@@ -453,9 +453,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Данная опция не обходит возрастное ограничение. Она только принимает возрастное ограничение автоматически.</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
|
||||
<string name="revanced_disable_signin_to_tv_popup_title">Отключить всплывающее окно Вход на ТВ</string>
|
||||
<string name="revanced_disable_signin_to_tv_popup_summary_on">Всплывающее окно Вход на ТВ отключено</string>
|
||||
<string name="revanced_disable_signin_to_tv_popup_summary_off">Всплывающее окно Вход на ТВ включено</string>
|
||||
<string name="revanced_disable_signin_to_tv_popup_title">Отключить всплывающее окно \"Вход на ТВ\"</string>
|
||||
<string name="revanced_disable_signin_to_tv_popup_summary_on">Всплывающее окно \"Вход на ТВ\" отключено</string>
|
||||
<string name="revanced_disable_signin_to_tv_popup_summary_off">Всплывающее окно \"Вход на ТВ\" включено</string>
|
||||
</patch>
|
||||
<patch id="interaction.doubletap.disableDoubleTapActionsPatch">
|
||||
<string name="revanced_disable_chapter_skip_double_tap_title">Отключить пропуск главы по двойному касанию</string>
|
||||
@@ -582,13 +582,13 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_download_button_summary_off">Кнопка \"Скачать\" под плеером показана</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">Скрыть кнопку «Хайп»</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Кнопка Hype скрыта</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Кнопка хайпа показана</string>
|
||||
<string name="revanced_hide_hype_button_title">Скрыть кнопку \"Hype\"</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Кнопка \"Хайп\" скрыта</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Кнопка \"Хайп\" показана</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
<string name="revanced_hide_promote_button_title">Скрыть кнопку \</string>
|
||||
<string name="revanced_hide_promote_button_summary_on">Кнопка \"Продвигать\" скрыта</string>
|
||||
<string name="revanced_hide_promote_button_summary_off">Кнопка \"Продвигать\" показана</string>
|
||||
<string name="revanced_hide_promote_button_title">Скрыть кнопку \"Рекламировать\"</string>
|
||||
<string name="revanced_hide_promote_button_summary_on">Кнопка \"Рекламировать\" скрыта</string>
|
||||
<string name="revanced_hide_promote_button_summary_off">Кнопка \"Рекламировать\" показана</string>
|
||||
<!-- 'Thanks' should be translated with the same localized wording that YouTube displays. -->
|
||||
<string name="revanced_hide_thanks_button_title">Скрыть кнопку \"Спасибо\"</string>
|
||||
<string name="revanced_hide_thanks_button_summary_on">Кнопка \"Спасибо\" под плеером скрыта</string>
|
||||
|
||||
@@ -580,7 +580,7 @@ Upravte hlasitosť posúvaním vertikálne na pravej strane obrazovky"</string>
|
||||
<string name="revanced_hide_download_button_summary_off">Zobrazí sa tlačidlo Stiahnuť</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">Skryť tlačidlo Hype</string>
|
||||
<string name="revanced_hide_hype_button_title">Skryť Hype</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Tlačidlo Hype je skryté</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Tlačidlo Hype je zobrazené</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
|
||||
@@ -582,7 +582,7 @@ Prilagodite glasnost s potegom navpično na desni strani zaslona"</string>
|
||||
<string name="revanced_hide_download_button_summary_off">Gumb Prenesi je prikazan</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">Skrij gumb Hype</string>
|
||||
<string name="revanced_hide_hype_button_title">Skrij Hype</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Gumb Hype je skrit</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Gumb Hype je prikazan</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
|
||||
@@ -582,7 +582,7 @@ Përshtate shkëlqimin duke rrëshqitur vertikalisht në anën e majtë të ekra
|
||||
<string name="revanced_hide_download_button_summary_off">Butoni \"Shkarko\" është i dukshëm</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">Fshih butonin Hype</string>
|
||||
<string name="revanced_hide_hype_button_title">Fsheh Zhurmën</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Butoni Hype është i fshehur</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Butoni Hype është i shfaqur</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
|
||||
@@ -582,7 +582,7 @@ Podesite jačinu zvuka prevlačenjem vertikalno na desnoj strani ekrana"</string
|
||||
<string name="revanced_hide_download_button_summary_off">Dugme „Preuzmi” je prikazano</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">Sakrij dugme „Hajp”</string>
|
||||
<string name="revanced_hide_hype_button_title">Sakrij Hajp</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Dugme „Hajp” je skriveno</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Dugme „Haip” je prikazano</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
|
||||
@@ -582,7 +582,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_download_button_summary_off">Дугме „Преузми” је приказано</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">Сакриј дугме „Хајп”</string>
|
||||
<string name="revanced_hide_hype_button_title">Сакриј Хајп</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Дугме „Хајп” је скривено</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Дугме „Хајп” је приказано</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
|
||||
@@ -582,7 +582,7 @@ Justera volymen genom att svepa vertikalt till höger på skärmen"</string>
|
||||
<string name="revanced_hide_download_button_summary_off">Knappen Ladda ned visas</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">Dölj knappen Hype</string>
|
||||
<string name="revanced_hide_hype_button_title">Dölj Hajp</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Hype-knappen är dold</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Knappen Hype visas</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
|
||||
@@ -580,7 +580,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_download_button_summary_off">ปุ่มดาวน์โหลดถูกแสดง</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">ซ่อนปุ่ม Hype</string>
|
||||
<string name="revanced_hide_hype_button_title">ซ่อนกระแส</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">ปุ่ม Hype ถูกซ่อนอยู่</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">ปุ่ม Hype กำลังแสดง</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
|
||||
@@ -582,7 +582,7 @@ Ekranın sağ tarafında dikey olarak kaydırarak sesi ayarlayın"</string>
|
||||
<string name="revanced_hide_download_button_summary_off">İndir düğmesi görünür</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">Hype düğmesini gizle</string>
|
||||
<string name="revanced_hide_hype_button_title">Abartıyı Gizle</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Coşku düğmesi gizli</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Hype düğmesi görünür</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
|
||||
@@ -238,12 +238,12 @@ Nếu cài đặt này được bật và Doodle đang hiển thị tại khu v
|
||||
<string name="revanced_hide_medical_panels_title">Ẩn bảng thông tin y tế</string>
|
||||
<string name="revanced_hide_medical_panels_summary_on">Bảng thông tin y tế đã bị ẩn</string>
|
||||
<string name="revanced_hide_medical_panels_summary_off">Bảng thông tin y tế được hiển thị</string>
|
||||
<string name="revanced_hide_quick_actions_title">Ẩn tác vụ nhanh</string>
|
||||
<string name="revanced_hide_quick_actions_summary_on">Các tác vụ nhanh ở chế độ toàn màn hình đã bị ẩn</string>
|
||||
<string name="revanced_hide_quick_actions_summary_off">Các tác vụ nhanh ở chế độ toàn màn hình được hiển thị</string>
|
||||
<string name="revanced_hide_quick_actions_title">Ẩn bảng thao tác nhanh</string>
|
||||
<string name="revanced_hide_quick_actions_summary_on">Bảng thao tác nhanh ở chế độ toàn màn hình đã bị ẩn</string>
|
||||
<string name="revanced_hide_quick_actions_summary_off">Bảng thao tác nhanh ở chế độ toàn màn hình được hiển thị</string>
|
||||
<string name="revanced_hide_related_videos_title">Ẩn video liên quan</string>
|
||||
<string name="revanced_hide_related_videos_summary_on">Video liên quan trong tác vụ nhanh đã bị ẩn</string>
|
||||
<string name="revanced_hide_related_videos_summary_off">Video liên quan trong tác vụ nhanh được hiển thị</string>
|
||||
<string name="revanced_hide_related_videos_summary_on">Video liên quan trong bảng thao tác nhanh đã bị ẩn</string>
|
||||
<string name="revanced_hide_related_videos_summary_off">Video liên quan trong bảng thao tác nhanh được hiển thị</string>
|
||||
<string name="revanced_hide_subscribers_community_guidelines_title">Ẩn nguyên tắc cộng đồng cho người đăng ký</string>
|
||||
<string name="revanced_hide_subscribers_community_guidelines_summary_on">Nguyên tắc cộng đồng cho người đăng ký đã bị ẩn</string>
|
||||
<string name="revanced_hide_subscribers_community_guidelines_summary_off">Nguyên tắc cộng đồng dành cho người đăng ký được hiển thị</string>
|
||||
@@ -551,7 +551,7 @@ Vui lòng kiểm tra lại tên gói và đảm bảo ứng dụng đã được
|
||||
<string name="revanced_disable_auto_captions_summary_off">Phụ đề tự động đã bật</string>
|
||||
</patch>
|
||||
<patch id="layout.buttons.action.hideButtonsPatch">
|
||||
<string name="revanced_hide_buttons_screen_title">Nút tác vụ</string>
|
||||
<string name="revanced_hide_buttons_screen_title">Nút thao tác</string>
|
||||
<string name="revanced_hide_buttons_screen_summary">Ẩn hoặc hiển thị các nút bên dưới video</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_title">Tắt hiệu ứng phát sáng nút Thích và Đăng ký</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_on">Nút Thích và Đăng ký sẽ không phát sáng khi được tương tác</string>
|
||||
@@ -582,9 +582,9 @@ Vui lòng kiểm tra lại tên gói và đảm bảo ứng dụng đã được
|
||||
<string name="revanced_hide_download_button_summary_off">Nút tải xuống được hiển thị</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">Ẩn nút Khuấy động</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Nút Khuấy động đã bị ẩn</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Nút Khuấy động được hiển thị</string>
|
||||
<string name="revanced_hide_hype_button_title">Ẩn Khuấy động</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Nút khuấy động đã bị ẩn</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Nút khuấy động được hiển thị</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
<string name="revanced_hide_promote_button_title">Ẩn Quảng bá</string>
|
||||
<string name="revanced_hide_promote_button_summary_on">Nút Quảng bá đã bị ẩn</string>
|
||||
|
||||
@@ -582,7 +582,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_download_button_summary_off">下载按钮已显示</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">隐藏超级留言按钮</string>
|
||||
<string name="revanced_hide_hype_button_title">隐藏热度</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">浮夸按钮已隐藏</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">热度按钮已显示</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
|
||||
@@ -645,7 +645,7 @@ Adjust volume by swiping vertically on the right side of the screen"</string>
|
||||
<string name="revanced_hide_download_button_summary_off">Download button is shown</string>
|
||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||
This button only shows on videos uploaded by the logged in user. -->
|
||||
<string name="revanced_hide_hype_button_title">Hide Hype button</string>
|
||||
<string name="revanced_hide_hype_button_title">Hide Hype</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Hype button is hidden</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Hype button is shown</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
|
||||
Reference in New Issue
Block a user