mirror of
https://github.com/ReVanced/revanced-patches.git
synced 2026-01-17 08:13:56 +00:00
Compare commits
13 Commits
v5.34.0-de
...
v5.34.1-de
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
51237c177a | ||
|
|
23496c7c36 | ||
|
|
e6823d8924 | ||
|
|
43597dab21 | ||
|
|
c0824db142 | ||
|
|
1b7f84b7fa | ||
|
|
6d87c848d6 | ||
|
|
150bee2833 | ||
|
|
c3ee6eca44 | ||
|
|
01a04c338c | ||
|
|
3130225d9d | ||
|
|
16b27fb872 | ||
|
|
bedabd3fa3 |
55
CHANGELOG.md
55
CHANGELOG.md
@@ -1,3 +1,58 @@
|
||||
## [5.34.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.34.0...v5.34.1-dev.1) (2025-08-21)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Spotify - Unlock Premium:** Make compatible with latest versions again by fixing fingerprint ([#5684](https://github.com/ReVanced/revanced-patches/issues/5684)) ([30dcff1](https://github.com/ReVanced/revanced-patches/commit/30dcff13a56883efc499b71faadb403877cd1c67))
|
||||
|
||||
# [5.34.0](https://github.com/ReVanced/revanced-patches/compare/v5.33.0...v5.34.0) (2025-08-19)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Backdrops:** Remove broken patch that is no longer supported ([#5627](https://github.com/ReVanced/revanced-patches/issues/5627)) ([ebb8332](https://github.com/ReVanced/revanced-patches/commit/ebb83320838aa99dd4417d45a50333dd42c1218a))
|
||||
* **pixiv - Hide ads:** Constrain patch to last working app target ([d8ea56c](https://github.com/ReVanced/revanced-patches/commit/d8ea56ca4be47df1c43f96ec41b91c800f1d9daf))
|
||||
* **Twitch:** Constrain patches to last working app targets ([#5373](https://github.com/ReVanced/revanced-patches/issues/5373)) ([29a4748](https://github.com/ReVanced/revanced-patches/commit/29a47481c4efa209a3a53df60613b59a73adbe07))
|
||||
* **YouTube - Hide layout components:** Do not hide community posts on channel profiles ([#5634](https://github.com/ReVanced/revanced-patches/issues/5634)) ([9e3d5a2](https://github.com/ReVanced/revanced-patches/commit/9e3d5a2b36106479470f3f69920518b57e8c4dca))
|
||||
* **YouTube - Player Controls:** Fix chapter title overlapping the bottom buttons ([#5673](https://github.com/ReVanced/revanced-patches/issues/5673)) ([09ccee7](https://github.com/ReVanced/revanced-patches/commit/09ccee71384df338bbf8acc1097f619a372c4868))
|
||||
* **YouTube - SponsorBlock:** Do not hide voting or create button when the video ends ([6aba4e2](https://github.com/ReVanced/revanced-patches/commit/6aba4e284de9bb94b49eea8be2baf2870eecbbcf))
|
||||
* **YouTube - Video playback:** Disable HDR video does not disable Dolby Vision HDR ([#5661](https://github.com/ReVanced/revanced-patches/issues/5661)) ([6dab988](https://github.com/ReVanced/revanced-patches/commit/6dab98810645b96bd0387ba7d607e5d8ffb1b5bb))
|
||||
* **YouTube - Video quality:** Fix additional incorrect quality resolutions used by YouTube ([a2a1fbe](https://github.com/ReVanced/revanced-patches/commit/a2a1fbe2959be8334c54cfc3426c24a960c55c8f))
|
||||
* **YouTube - Video quality:** Show FHD+ icon for 1080p 60fps enhanced bitrate ([76bed37](https://github.com/ReVanced/revanced-patches/commit/76bed3734093713af24ef065d5ffc5b1cd83f29a))
|
||||
* **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))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **Instagram:** Support latest app version ([#5611](https://github.com/ReVanced/revanced-patches/issues/5611)) ([26fe690](https://github.com/ReVanced/revanced-patches/commit/26fe690dfbefe6c412c5f81f208a3b1d2fbd7a0a))
|
||||
* **NU.nl:** Support latest app version ([#5643](https://github.com/ReVanced/revanced-patches/issues/5643)) ([7338e4a](https://github.com/ReVanced/revanced-patches/commit/7338e4a5a99f913256120d0d58fede3aa4ee8922))
|
||||
* **YouTube - Hide player flyout menu items:** Add option to hide quality flyout menu ([eb55068](https://github.com/ReVanced/revanced-patches/commit/eb5506856a2eaf2a8585e598868ddba3e1429159))
|
||||
* **YouTube - Hide video action buttons:** Add "Hide Hype button" setting ([f13f377](https://github.com/ReVanced/revanced-patches/commit/f13f3770e7c4fd5bff8f3e224fb1b1ead50a3c18))
|
||||
* **YouTube - Hide video action buttons:** Add "Hide Promote button" setting ([1959396](https://github.com/ReVanced/revanced-patches/commit/1959396a53f4c07b94acddc5c0ee6cdf7ade7c7b))
|
||||
* **YouTube - Playback speed:** Show current playback speed on player speed dialog button ([#5607](https://github.com/ReVanced/revanced-patches/issues/5607)) ([279436a](https://github.com/ReVanced/revanced-patches/commit/279436a3657b50f98bb4cc64dc88dc14e422f204))
|
||||
* **YouTube:** Add `Disable sign in to TV popup` patch ([#5639](https://github.com/ReVanced/revanced-patches/issues/5639)) ([d0e5bd0](https://github.com/ReVanced/revanced-patches/commit/d0e5bd0479a8910b081c483ed2a6ab4d7134e3c3))
|
||||
|
||||
# [5.34.0-dev.13](https://github.com/ReVanced/revanced-patches/compare/v5.34.0-dev.12...v5.34.0-dev.13) (2025-08-19)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Player Controls:** Fix chapter title overlapping the bottom buttons ([#5673](https://github.com/ReVanced/revanced-patches/issues/5673)) ([09ccee7](https://github.com/ReVanced/revanced-patches/commit/09ccee71384df338bbf8acc1097f619a372c4868))
|
||||
|
||||
# [5.34.0-dev.13](https://github.com/ReVanced/revanced-patches/compare/v5.34.0-dev.12...v5.34.0-dev.13) (2025-08-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Player Controls:** Fix chapter title overlapping the bottom buttons ([#5673](https://github.com/ReVanced/revanced-patches/issues/5673)) ([09ccee7](https://github.com/ReVanced/revanced-patches/commit/09ccee71384df338bbf8acc1097f619a372c4868))
|
||||
|
||||
# [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)
|
||||
|
||||
|
||||
|
||||
@@ -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 {
|
||||
@@ -26,7 +26,6 @@ public class CreateSegmentButton {
|
||||
controlsView,
|
||||
"revanced_sb_create_segment_button",
|
||||
null,
|
||||
null,
|
||||
CreateSegmentButton::shouldBeShown,
|
||||
v -> SponsorBlockViewController.toggleNewSegmentLayoutVisibility(),
|
||||
null
|
||||
@@ -37,21 +36,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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
@@ -28,7 +28,6 @@ public class VotingButton {
|
||||
controlsView,
|
||||
"revanced_sb_voting_button",
|
||||
null,
|
||||
null,
|
||||
VotingButton::shouldBeShown,
|
||||
v -> SponsorBlockUtils.onVotingClicked(v.getContext()),
|
||||
null
|
||||
@@ -39,14 +38,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 +60,6 @@ public class VotingButton {
|
||||
|
||||
private static boolean shouldBeShown() {
|
||||
return Settings.SB_ENABLED.get() && Settings.SB_VOTING_BUTTON.get()
|
||||
&& SegmentPlaybackController.videoHasSegments() && !VideoInformation.isAtEndOfVideo();
|
||||
&& SegmentPlaybackController.videoHasSegments();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,7 +21,6 @@ public class CopyVideoUrlButton {
|
||||
instance = new PlayerControlButton(
|
||||
controlsView,
|
||||
"revanced_copy_video_url_button",
|
||||
"revanced_copy_video_url_button_placeholder",
|
||||
null,
|
||||
Settings.COPY_VIDEO_URL::get,
|
||||
view -> CopyVideoUrlPatch.copyUrl(false),
|
||||
@@ -35,15 +34,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);
|
||||
|
||||
@@ -21,7 +21,6 @@ public class CopyVideoUrlTimestampButton {
|
||||
instance = new PlayerControlButton(
|
||||
controlsView,
|
||||
"revanced_copy_video_url_timestamp_button",
|
||||
"revanced_copy_video_url_timestamp_button_placeholder",
|
||||
null,
|
||||
Settings.COPY_VIDEO_URL_TIMESTAMP::get,
|
||||
view -> CopyVideoUrlPatch.copyUrl(true),
|
||||
@@ -36,14 +35,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);
|
||||
|
||||
@@ -22,7 +22,6 @@ public class ExternalDownloadButton {
|
||||
instance = new PlayerControlButton(
|
||||
controlsView,
|
||||
"revanced_external_download_button",
|
||||
"revanced_external_download_button_placeholder",
|
||||
null,
|
||||
Settings.EXTERNAL_DOWNLOADER::get,
|
||||
ExternalDownloadButton::onDownloadClick,
|
||||
@@ -34,14 +33,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);
|
||||
|
||||
@@ -33,7 +33,6 @@ public class PlaybackSpeedDialogButton {
|
||||
controlsView,
|
||||
"revanced_playback_speed_dialog_button_container",
|
||||
"revanced_playback_speed_dialog_button",
|
||||
"revanced_playback_speed_dialog_button_placeholder",
|
||||
"revanced_playback_speed_dialog_button_text",
|
||||
Settings.PLAYBACK_SPEED_DIALOG_BUTTON::get,
|
||||
view -> {
|
||||
@@ -69,6 +68,13 @@ public class PlaybackSpeedDialogButton {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* injection point.
|
||||
*/
|
||||
public static void setVisibilityNegatedImmediate() {
|
||||
if (instance != null) instance.setVisibilityNegatedImmediate();
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package app.revanced.extension.youtube.videoplayer;
|
||||
|
||||
import android.view.View;
|
||||
import android.view.animation.Animation;
|
||||
import android.view.ViewPropertyAnimator;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -23,55 +24,29 @@ public class PlayerControlButton {
|
||||
boolean buttonEnabled();
|
||||
}
|
||||
|
||||
private static final int fadeInDuration;
|
||||
private static final int fadeOutDuration;
|
||||
|
||||
private static final Animation fadeInAnimation;
|
||||
private static final Animation fadeOutAnimation;
|
||||
private static final Animation fadeOutImmediate;
|
||||
|
||||
static {
|
||||
fadeInDuration = Utils.getResourceInteger("fade_duration_fast");
|
||||
fadeOutDuration = Utils.getResourceInteger("fade_duration_scheduled");
|
||||
|
||||
fadeInAnimation = Utils.getResourceAnimation("fade_in");
|
||||
fadeInAnimation.setDuration(fadeInDuration);
|
||||
|
||||
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"));
|
||||
}
|
||||
private static final int fadeInDuration = Utils.getResourceInteger("fade_duration_fast");
|
||||
private static final int fadeOutDuration = Utils.getResourceInteger("fade_duration_scheduled");
|
||||
|
||||
private final WeakReference<View> containerRef;
|
||||
private final WeakReference<View> buttonRef;
|
||||
/**
|
||||
* Empty view with the same layout size as the button. Used to fill empty space while the
|
||||
* fade out animation runs. Without this the chapter titles overlapping the button when fading out.
|
||||
*/
|
||||
private final WeakReference<View> placeHolderRef;
|
||||
private final WeakReference<TextView> textOverlayRef;
|
||||
private final PlayerControlButtonStatus enabledStatus;
|
||||
private boolean isVisible;
|
||||
private long lastTimeSetVisible;
|
||||
|
||||
public PlayerControlButton(View controlsViewGroup,
|
||||
String buttonId,
|
||||
@Nullable String placeholderId,
|
||||
@Nullable String textOverlayId,
|
||||
PlayerControlButtonStatus enabledStatus,
|
||||
View.OnClickListener onClickListener,
|
||||
@Nullable View.OnLongClickListener longClickListener) {
|
||||
this(controlsViewGroup, buttonId, buttonId, placeholderId, textOverlayId,
|
||||
this(controlsViewGroup, buttonId, buttonId, textOverlayId,
|
||||
enabledStatus, onClickListener, longClickListener);
|
||||
}
|
||||
|
||||
public PlayerControlButton(View controlsViewGroup,
|
||||
String viewToHide,
|
||||
String buttonId,
|
||||
@Nullable String placeholderId,
|
||||
@Nullable String textOverlayId,
|
||||
PlayerControlButtonStatus enabledStatus,
|
||||
View.OnClickListener onClickListener,
|
||||
@@ -87,13 +62,6 @@ public class PlayerControlButton {
|
||||
}
|
||||
buttonRef = new WeakReference<>(button);
|
||||
|
||||
View tempPlaceholder = null;
|
||||
if (placeholderId != null) {
|
||||
tempPlaceholder = Utils.getChildViewByResourceName(controlsViewGroup, placeholderId);
|
||||
tempPlaceholder.setVisibility(View.GONE);
|
||||
}
|
||||
placeHolderRef = new WeakReference<>(tempPlaceholder);
|
||||
|
||||
TextView tempTextOverlay = null;
|
||||
if (textOverlayId != null) {
|
||||
tempTextOverlay = Utils.getChildViewByResourceName(controlsViewGroup, textOverlayId);
|
||||
@@ -114,13 +82,55 @@ public class PlayerControlButton {
|
||||
});
|
||||
}
|
||||
|
||||
public void setVisibilityNegatedImmediate() {
|
||||
try {
|
||||
Utils.verifyOnMainThread();
|
||||
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;
|
||||
|
||||
ViewPropertyAnimator animate = container.animate();
|
||||
animate.cancel();
|
||||
|
||||
// If the overlay is tapped to display then immediately tapped to dismiss
|
||||
// before the fade in animation finishes, then the fade out animation is
|
||||
// the time between when the fade in started and now.
|
||||
final long animationDuration = Math.min(fadeInDuration,
|
||||
System.currentTimeMillis() - lastTimeSetVisible);
|
||||
if (animationDuration <= 0) {
|
||||
// Should never happen, but handle just in case.
|
||||
container.setVisibility(View.GONE);
|
||||
return;
|
||||
}
|
||||
|
||||
animate.alpha(0)
|
||||
.setDuration(animationDuration)
|
||||
.withEndAction(() -> container.setVisibility(View.GONE))
|
||||
.start();
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "setVisibilityNegatedImmediate failure", ex);
|
||||
}
|
||||
}
|
||||
|
||||
public void setVisibilityImmediate(boolean visible) {
|
||||
if (visible) {
|
||||
// Fix button flickering, by pushing this call to the back of
|
||||
// the main thread and letting other layout code run first.
|
||||
Utils.runOnMainThread(() -> private_setVisibility(true, false));
|
||||
Utils.runOnMainThread(() -> privateSetVisibility(true, false));
|
||||
} else {
|
||||
private_setVisibility(false, false);
|
||||
privateSetVisibility(false, false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -128,47 +138,53 @@ public class PlayerControlButton {
|
||||
// Ignore this call, otherwise with full screen thumbnails the buttons are visible while seeking.
|
||||
if (visible && !animated) return;
|
||||
|
||||
private_setVisibility(visible, animated);
|
||||
privateSetVisibility(visible, animated);
|
||||
}
|
||||
|
||||
private void private_setVisibility(boolean visible, boolean animated) {
|
||||
private void privateSetVisibility(boolean visible, boolean animated) {
|
||||
try {
|
||||
Utils.verifyOnMainThread();
|
||||
|
||||
if (isVisible == visible) return;
|
||||
isVisible = visible;
|
||||
|
||||
if (visible) {
|
||||
lastTimeSetVisible = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
View container = containerRef.get();
|
||||
if (container == null) return;
|
||||
if (container == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
View placeholder = placeHolderRef.get();
|
||||
final boolean buttonEnabled = enabledStatus.buttonEnabled();
|
||||
|
||||
if (visible && buttonEnabled) {
|
||||
container.clearAnimation();
|
||||
if (animated) {
|
||||
container.startAnimation(fadeInAnimation);
|
||||
}
|
||||
if (visible && enabledStatus.buttonEnabled()) {
|
||||
ViewPropertyAnimator animate = container.animate();
|
||||
animate.cancel();
|
||||
container.setVisibility(View.VISIBLE);
|
||||
|
||||
if (placeholder != null) {
|
||||
placeholder.setVisibility(View.GONE);
|
||||
}
|
||||
} else {
|
||||
if (container.getVisibility() == View.VISIBLE) {
|
||||
container.clearAnimation();
|
||||
if (animated) {
|
||||
container.startAnimation(fadeOutAnimation);
|
||||
}
|
||||
container.setVisibility(View.GONE);
|
||||
if (animated) {
|
||||
container.setAlpha(0);
|
||||
animate.alpha(1)
|
||||
.setDuration(fadeInDuration)
|
||||
.start();
|
||||
} else {
|
||||
container.setAlpha(1);
|
||||
}
|
||||
} else if (container.getVisibility() == View.VISIBLE) {
|
||||
ViewPropertyAnimator animate = container.animate();
|
||||
animate.cancel();
|
||||
|
||||
if (placeholder != null) {
|
||||
placeholder.setVisibility(buttonEnabled
|
||||
? View.VISIBLE
|
||||
: View.GONE);
|
||||
if (animated) {
|
||||
animate.alpha(0)
|
||||
.setDuration(fadeOutDuration)
|
||||
.withEndAction(() -> container.setVisibility(View.GONE))
|
||||
.start();
|
||||
} else {
|
||||
container.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "private_setVisibility failure", ex);
|
||||
Logger.printException(() -> "privateSetVisibility failure", ex);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -176,42 +192,36 @@ public class PlayerControlButton {
|
||||
* Synchronizes the button state after the player state changes.
|
||||
*/
|
||||
private void playerTypeChanged(PlayerType newType) {
|
||||
Utils.verifyOnMainThread();
|
||||
if (newType != PlayerType.WATCH_WHILE_MINIMIZED && !newType.isMaximizedOrFullscreen()) {
|
||||
return;
|
||||
}
|
||||
|
||||
View container = containerRef.get();
|
||||
if (container == null) return;
|
||||
if (container == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
container.clearAnimation();
|
||||
View placeholder = placeHolderRef.get();
|
||||
container.animate().cancel();
|
||||
|
||||
if (enabledStatus.buttonEnabled()) {
|
||||
if (isVisible) {
|
||||
container.setVisibility(View.VISIBLE);
|
||||
if (placeholder != null) placeholder.setVisibility(View.GONE);
|
||||
} else {
|
||||
container.setVisibility(View.GONE);
|
||||
if (placeholder != null) placeholder.setVisibility(View.VISIBLE);
|
||||
}
|
||||
if (isVisible && enabledStatus.buttonEnabled()) {
|
||||
container.setVisibility(View.VISIBLE);
|
||||
container.setAlpha(1);
|
||||
} else {
|
||||
container.setVisibility(View.GONE);
|
||||
if (placeholder != null) placeholder.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
public void hide() {
|
||||
Utils.verifyOnMainThread();
|
||||
if (!isVisible) return;
|
||||
if (!isVisible) {
|
||||
return;
|
||||
}
|
||||
isVisible = false;
|
||||
|
||||
View view = containerRef.get();
|
||||
if (view == null) return;
|
||||
view.setVisibility(View.GONE);
|
||||
|
||||
View placeHolder = placeHolderRef.get();
|
||||
if (placeHolder != null) view.setVisibility(View.GONE);
|
||||
|
||||
isVisible = false;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -219,6 +229,8 @@ public class PlayerControlButton {
|
||||
* @param resourceId Drawable identifier, or zero to hide the icon.
|
||||
*/
|
||||
public void setIcon(int resourceId) {
|
||||
Utils.verifyOnMainThread();
|
||||
|
||||
View button = buttonRef.get();
|
||||
if (button instanceof ImageView imageButton) {
|
||||
imageButton.setImageResource(resourceId);
|
||||
@@ -230,6 +242,8 @@ public class PlayerControlButton {
|
||||
* @param text The text to set on the overlay, or null to clear the text.
|
||||
*/
|
||||
public void setTextOverlay(CharSequence text) {
|
||||
Utils.verifyOnMainThread();
|
||||
|
||||
TextView textOverlay = textOverlayRef.get();
|
||||
if (textOverlay != null) {
|
||||
textOverlay.setText(text);
|
||||
|
||||
@@ -69,7 +69,6 @@ public class VideoQualityDialogButton {
|
||||
controlsView,
|
||||
"revanced_video_quality_dialog_button_container",
|
||||
"revanced_video_quality_dialog_button",
|
||||
"revanced_video_quality_dialog_button_placeholder",
|
||||
"revanced_video_quality_dialog_button_text",
|
||||
Settings.VIDEO_QUALITY_DIALOG_BUTTON::get,
|
||||
view -> {
|
||||
@@ -116,6 +115,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.11
|
||||
version = 5.34.1-dev.1
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -49,8 +49,8 @@ internal val contextMenuViewModelConstructorFingerprint = fingerprint {
|
||||
/**
|
||||
* Used to find the interface name of a context menu item.
|
||||
*/
|
||||
internal val removeAdsContextMenuItemClassFingerprint = fingerprint {
|
||||
strings("remove_ads_item", "ui_navigate")
|
||||
internal val removeItemFromPlaylistContextMenuItemClassFingerprint = fingerprint {
|
||||
strings("spotify:playlist:", "REMOVE_TRACK")
|
||||
}
|
||||
|
||||
internal const val CONTEXT_MENU_ITEM_CLASS_DESCRIPTOR_PLACEHOLDER = "Lapp/revanced/ContextMenuItemPlaceholder;"
|
||||
|
||||
@@ -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,13 @@ Ekranın sağ tərəfində düzünə sürüşdürərək səs səviyyəsini tənz
|
||||
<string name="revanced_hide_download_button_summary_off">Yükləmə düyməsi göstərilir</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">Coşqu Gizlət</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Coşqu düyməsi gizlidir</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Coşqu düyməsi görünür</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
<string name="revanced_hide_promote_button_title">Sponsor-u Gizlət</string>
|
||||
<string name="revanced_hide_promote_button_summary_on">Sponsor düyməsi gizlidir</string>
|
||||
<string name="revanced_hide_promote_button_summary_off"> Sponsor düyməsi görünür</string>
|
||||
<!-- 'Thanks' should be translated with the same localized wording that YouTube displays. -->
|
||||
<string name="revanced_hide_thanks_button_title">\"Təşəkkürlər\"i gizlət</string>
|
||||
<string name="revanced_hide_thanks_button_summary_on">Təşəkkür düyməsi gizlidir</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">Схаваць кнопку 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. -->
|
||||
|
||||
@@ -453,9 +453,9 @@ Cette fonctionnalité est disponible uniquement pour les appareils anciens"</str
|
||||
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Cette option ne contourne pas la vérification de l\'âge. Elle est juste confirmée automatiquement.</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
|
||||
<string name="revanced_disable_signin_to_tv_popup_title">Désactiver le pop-up \"Se connecter à la TV\"</string>
|
||||
<string name="revanced_disable_signin_to_tv_popup_summary_on">Le pop-up \"Se connecter à la TV\" est désactivé</string>
|
||||
<string name="revanced_disable_signin_to_tv_popup_summary_off">Le pop-up \"Se connecter à la TV\" est activé</string>
|
||||
<string name="revanced_disable_signin_to_tv_popup_title">Désactiver le pop-up \"Connectez-vous à la TV\"</string>
|
||||
<string name="revanced_disable_signin_to_tv_popup_summary_on">Le pop-up \"Connectez-vous à la TV\" est désactivé</string>
|
||||
<string name="revanced_disable_signin_to_tv_popup_summary_off">Le pop-up \"Connectez-vous à la TV\" est activé</string>
|
||||
</patch>
|
||||
<patch id="interaction.doubletap.disableDoubleTapActionsPatch">
|
||||
<string name="revanced_disable_chapter_skip_double_tap_title">Désactiver le double appui pour passer à un chapitre</string>
|
||||
@@ -582,11 +582,11 @@ 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_summary_on">Le bouton Hype est masqué</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Le bouton Hype est affiché</string>
|
||||
<string name="revanced_hide_hype_button_title">Masquer \"Booster\"</string>
|
||||
<string name="revanced_hide_hype_button_summary_on">Le bouton Booster est masqué</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Le bouton Booster est affiché</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
<string name="revanced_hide_promote_button_title">Masquer Promouvoir</string>
|
||||
<string name="revanced_hide_promote_button_title">Masquer \"Promouvoir\"</string>
|
||||
<string name="revanced_hide_promote_button_summary_on">Le bouton Promouvoir est masqué</string>
|
||||
<string name="revanced_hide_promote_button_summary_off">Le bouton Promouvoir est affiché</string>
|
||||
<!-- 'Thanks' 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. -->
|
||||
|
||||
@@ -258,7 +258,7 @@ GmsCore の電池の最適化を無効にしても、バッテリーの使用に
|
||||
<string name="revanced_hide_ask_section_title">質問セクションを非表示</string>
|
||||
<string name="revanced_hide_ask_section_summary_on">質問セクションは表示されません</string>
|
||||
<string name="revanced_hide_ask_section_summary_off">質問セクションは表示されます</string>
|
||||
<string name="revanced_hide_attributes_section_title">関連情報を非表示</string>
|
||||
<string name="revanced_hide_attributes_section_title">付随情報を非表示</string>
|
||||
<string name="revanced_hide_attributes_section_summary_on">注目の場所 / ゲーム / 音楽 / 言及されている人物セクションは表示されません</string>
|
||||
<string name="revanced_hide_attributes_section_summary_off">注目の場所 / ゲーム / 音楽 / 言及されている人物セクションは表示されます</string>
|
||||
<string name="revanced_hide_chapters_section_title">チャプター セクションを非表示</string>
|
||||
@@ -270,9 +270,9 @@ GmsCore の電池の最適化を無効にしても、バッテリーの使用に
|
||||
<string name="revanced_hide_podcast_section_title">「ポッドキャストを検索」を非表示</string>
|
||||
<string name="revanced_hide_podcast_section_summary_on">「ポッドキャストを検索」セクションは表示されません</string>
|
||||
<string name="revanced_hide_podcast_section_summary_off">「ポッドキャストを検索」セクションは表示されます</string>
|
||||
<string name="revanced_hide_info_cards_section_title">チャンネル情報を非表示</string>
|
||||
<string name="revanced_hide_info_cards_section_summary_on">チャンネル情報セクションは表示されません</string>
|
||||
<string name="revanced_hide_info_cards_section_summary_off">チャンネル情報セクションは表示されます</string>
|
||||
<string name="revanced_hide_info_cards_section_title">情報カード セクションを非表示</string>
|
||||
<string name="revanced_hide_info_cards_section_summary_on">情報カード セクションは表示されません</string>
|
||||
<string name="revanced_hide_info_cards_section_summary_off">情報カード セクションは表示されます</string>
|
||||
<string name="revanced_hide_key_concepts_section_title">「主な概念」を非表示</string>
|
||||
<string name="revanced_hide_key_concepts_section_summary_on">主な概念セクションは表示されません</string>
|
||||
<string name="revanced_hide_key_concepts_section_summary_off">主な概念セクションが表示されます</string>
|
||||
@@ -316,7 +316,7 @@ GmsCore の電池の最適化を無効にしても、バッテリーの使用に
|
||||
<string name="revanced_hide_visit_store_button_summary_on">「ストアに移動」ボタンは表示されません</string>
|
||||
<string name="revanced_hide_visit_store_button_summary_off">「ストアに移動」ボタンは表示されます</string>
|
||||
<string name="revanced_comments_screen_title">コメント</string>
|
||||
<string name="revanced_comments_screen_summary">コメント セクションの設定</string>
|
||||
<string name="revanced_comments_screen_summary">コメント セクションのコンポーネントを表示または非表示にします</string>
|
||||
<string name="revanced_hide_comments_ai_chat_summary_title">AI による「チャットの要約」を非表示</string>
|
||||
<string name="revanced_hide_comments_ai_chat_summary_summary_on">AI による「チャットの要約」は表示されません</string>
|
||||
<string name="revanced_hide_comments_ai_chat_summary_summary_off">AI による「チャットの要約」は表示されます</string>
|
||||
@@ -441,12 +441,12 @@ GmsCore の電池の最適化を無効にしても、バッテリーの使用に
|
||||
<patch id="interaction.copyvideourl.copyVideoUrlResourcePatch">
|
||||
<string name="revanced_share_copy_url_success">URL をクリップボードにコピーしました</string>
|
||||
<string name="revanced_share_copy_url_timestamp_success">タイムスタンプ付きの URL がコピーされました</string>
|
||||
<string name="revanced_copy_video_url_title">「動画の URL をコピー」ボタンを表示する</string>
|
||||
<string name="revanced_copy_video_url_summary_on">ボタンはオーバーレイに表示されます。タップすると動画の URL を、長押しするとタイムスタンプ付きの URL をそれぞれコピーできます</string>
|
||||
<string name="revanced_copy_video_url_summary_off">ボタンはオーバーレイに表示されません</string>
|
||||
<string name="revanced_copy_video_url_timestamp_title">「動画のタイムスタンプ付き URL をコピー」ボタンを表示する</string>
|
||||
<string name="revanced_copy_video_url_timestamp_summary_on">ボタンはオーバーレイに表示されます。タップするとタイムスタンプ付きの URL を、長押しするとタイムスタンプなしの URL をそれぞれコピーできます</string>
|
||||
<string name="revanced_copy_video_url_timestamp_summary_off">ボタンはオーバーレイに表示されません</string>
|
||||
<string name="revanced_copy_video_url_title">「動画の URL をコピー」ボタンを表示</string>
|
||||
<string name="revanced_copy_video_url_summary_on">ボタンがプレーヤー オーバーレイに表示されます。タップすると動画の URL が、長押しするとタイムスタンプ付きの URL がそれぞれコピーされます</string>
|
||||
<string name="revanced_copy_video_url_summary_off">ボタンはプレーヤー オーバーレイに表示されません</string>
|
||||
<string name="revanced_copy_video_url_timestamp_title">「動画のタイムスタンプ付き URL をコピー」ボタンを表示</string>
|
||||
<string name="revanced_copy_video_url_timestamp_summary_on">ボタンがプレーヤー オーバーレイに表示されます。タップするとタイムスタンプ付きの URL が、長押しするとタイムスタンプなしの URL がそれぞれコピーされます</string>
|
||||
<string name="revanced_copy_video_url_timestamp_summary_off">ボタンはプレーヤー オーバーレイに表示されません</string>
|
||||
</patch>
|
||||
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
|
||||
<string name="revanced_remove_viewer_discretion_dialog_title">「ご自身の責任」ダイアログを削除</string>
|
||||
@@ -467,11 +467,11 @@ GmsCore の電池の最適化を無効にしても、バッテリーの使用に
|
||||
<patch id="interaction.downloads.downloadsResourcePatch">
|
||||
<string name="revanced_external_downloader_screen_title">外部ダウンロード</string>
|
||||
<string name="revanced_external_downloader_screen_summary">外部ダウンローダーの設定</string>
|
||||
<string name="revanced_external_downloader_title">外部ダウンロード ボタンを表示する</string>
|
||||
<string name="revanced_external_downloader_summary_on">外部ダウンロード ボタンはオーバーレイに表示されます</string>
|
||||
<string name="revanced_external_downloader_summary_off">外部ダウンロード ボタンはオーバーレイに表示されません</string>
|
||||
<string name="revanced_external_downloader_title">外部ダウンロード ボタンを表示</string>
|
||||
<string name="revanced_external_downloader_summary_on">外部ダウンロード ボタンがプレーヤー オーバーレイに表示されます</string>
|
||||
<string name="revanced_external_downloader_summary_off">外部ダウンロード ボタンはプレーヤー オーバーレイに表示されません</string>
|
||||
<!-- 'Download action button' should be translated using the same wording as the translation of 'revanced_hide_download_button_title'. -->
|
||||
<string name="revanced_external_downloader_action_button_title">オフライン ボタンの動作を上書きする</string>
|
||||
<string name="revanced_external_downloader_action_button_title">オフライン ボタンの動作を上書き</string>
|
||||
<string name="revanced_external_downloader_action_button_summary_on">オフライン ボタンは外部ダウンローダーを呼び出します</string>
|
||||
<string name="revanced_external_downloader_action_button_summary_off">オフライン ボタンはアプリ内のダウンローダーを呼び出します</string>
|
||||
<string name="revanced_external_downloader_name_title">外部ダウンローダーのパッケージ名</string>
|
||||
@@ -549,13 +549,13 @@ GmsCore の電池の最適化を無効にしても、バッテリーの使用に
|
||||
</patch>
|
||||
<patch id="layout.autocaptions.autoCaptionsPatch">
|
||||
<string name="revanced_disable_auto_captions_title">自動字幕表示を無効化</string>
|
||||
<string name="revanced_disable_auto_captions_summary_on">動画を開いた際の自動字幕表示は無効です</string>
|
||||
<string name="revanced_disable_auto_captions_summary_off">動画を開いた際の自動字幕表示は有効です</string>
|
||||
<string name="revanced_disable_auto_captions_summary_on">自動字幕表示は無効です\n\n動画を開いた際にデフォルトで字幕は表示されません</string>
|
||||
<string name="revanced_disable_auto_captions_summary_off">自動字幕表示は有効です\n\n動画を開いた際にデフォルトで字幕が表示される場合があります</string>
|
||||
</patch>
|
||||
<patch id="layout.buttons.action.hideButtonsPatch">
|
||||
<string name="revanced_hide_buttons_screen_title">アクション ボタン</string>
|
||||
<string name="revanced_hide_buttons_screen_summary">プレーヤー画面下のボタンの設定</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_title">高評価とチャンネル登録のエフェクトを無効にする</string>
|
||||
<string name="revanced_hide_buttons_screen_summary">プレーヤー画面下のボタンを表示または非表示にします</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_title">高評価とチャンネル登録のエフェクトを無効化</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_on">高評価ボタンとチャンネル登録ボタンのエフェクトは無効です</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_off">高評価ボタンとチャンネル登録ボタンのエフェクトは有効です</string>
|
||||
<string name="revanced_hide_like_dislike_button_title">高評価ボタンと低評価ボタンを非表示</string>
|
||||
@@ -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>
|
||||
@@ -718,29 +718,29 @@ GmsCore の電池の最適化を無効にしても、バッテリーの使用に
|
||||
</patch>
|
||||
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
|
||||
<string name="revanced_hide_autoplay_button_title">自動再生ボタンを非表示</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">自動再生ボタンはオーバーレイに表示されません</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">自動再生ボタンはオーバーレイに表示されます</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">プレーヤー オーバーレイの自動再生ボタンは表示されません</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">プレーヤー オーバーレイの自動再生ボタンは表示されます</string>
|
||||
<!-- This button does not display any text, but 'Captions' should be translated using the same wording used as the translation of 'revanced_hide_player_flyout_captions_title'. -->
|
||||
<string name="revanced_hide_captions_button_title">字幕ボタンを非表示</string>
|
||||
<string name="revanced_hide_captions_button_summary_on">字幕ボタンはオーバーレイに表示されません</string>
|
||||
<string name="revanced_hide_captions_button_summary_off">字幕ボタンはオーバーレイに表示されます</string>
|
||||
<string name="revanced_hide_captions_button_summary_on">プレーヤー オーバーレイの字幕ボタンは表示されません</string>
|
||||
<string name="revanced_hide_captions_button_summary_off">プレーヤー オーバーレイの字幕ボタンは表示されます</string>
|
||||
<string name="revanced_hide_cast_button_title">キャストボタンを非表示</string>
|
||||
<string name="revanced_hide_cast_button_summary_on">キャストボタンはオーバーレイに表示されません</string>
|
||||
<string name="revanced_hide_cast_button_summary_off">キャストボタンはオーバーレイに表示されます</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_title">プレーヤーのコントロールの背景を非表示</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_on">プレーヤーのコントロールの背景は表示されません</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">プレーヤーのコントロールの背景は表示されます</string>
|
||||
<string name="revanced_hide_cast_button_summary_on">プレーヤー オーバーレイのキャストボタンは表示されません</string>
|
||||
<string name="revanced_hide_cast_button_summary_off">プレーヤー オーバーレイのキャストボタンは表示されます</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_title">プレーヤー コントロールの背景を非表示</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_on">プレーヤー コントロールの背景は表示されません</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">プレーヤー コントロールの背景は表示されます</string>
|
||||
<string name="revanced_hide_player_previous_next_buttons_title">前の動画ボタンと次の動画ボタンを非表示</string>
|
||||
<string name="revanced_hide_player_previous_next_buttons_summary_on">前の動画ボタンと次の動画ボタンは表示されません</string>
|
||||
<string name="revanced_hide_player_previous_next_buttons_summary_off">前の動画ボタンと次の動画ボタンは表示されます</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">動画の終了画面を非表示</string>
|
||||
<string name="revanced_hide_endscreen_cards_summary_on">動画の終了画面は表示されません</string>
|
||||
<string name="revanced_hide_endscreen_cards_summary_off">動画の終了画面は表示されます</string>
|
||||
<string name="revanced_hide_endscreen_cards_title">終了画面カードを非表示</string>
|
||||
<string name="revanced_hide_endscreen_cards_summary_on">終了画面カードは表示されません</string>
|
||||
<string name="revanced_hide_endscreen_cards_summary_off">終了画面カードは表示されます</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.fullscreenambientmode.disableFullscreenAmbientModePatch">
|
||||
<string name="revanced_disable_fullscreen_ambient_mode_title">全画面表示中のアンビエント モードを無効にする</string>
|
||||
<string name="revanced_disable_fullscreen_ambient_mode_title">全画面表示中のアンビエント モードを無効化</string>
|
||||
<string name="revanced_disable_fullscreen_ambient_mode_summary_on">全画面表示中のアンビエント モードは無効です</string>
|
||||
<string name="revanced_disable_fullscreen_ambient_mode_summary_off">全画面表示中のアンビエント モードは有効です</string>
|
||||
</patch>
|
||||
@@ -750,9 +750,9 @@ GmsCore の電池の最適化を無効にしても、バッテリーの使用に
|
||||
<string name="revanced_hide_info_cards_summary_off">情報カードはプレーヤー画面に表示されます</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.rollingnumber.disableRollingNumberAnimationPatch">
|
||||
<string name="revanced_disable_rolling_number_animations_title">数字のアニメーションを無効にする</string>
|
||||
<string name="revanced_disable_rolling_number_animations_summary_on">数字のアニメーションは無効です</string>
|
||||
<string name="revanced_disable_rolling_number_animations_summary_off">数字のアニメーションは有効です</string>
|
||||
<string name="revanced_disable_rolling_number_animations_title">数字の回転アニメーションを無効化</string>
|
||||
<string name="revanced_disable_rolling_number_animations_summary_on">数字の回転アニメーションは無効です</string>
|
||||
<string name="revanced_disable_rolling_number_animations_summary_off">数字の回転アニメーションは有効です</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.seekbar.hideSeekbarPatch">
|
||||
<string name="revanced_hide_seekbar_title">動画プレーヤーのシークバーを非表示</string>
|
||||
@@ -878,12 +878,12 @@ GmsCore の電池の最適化を無効にしても、バッテリーの使用に
|
||||
<string name="revanced_hide_shorts_navigation_bar_summary_off">ナビゲーション バーは表示されます</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
|
||||
<string name="revanced_end_screen_suggested_video_title">再生終了時の「関連動画」オーバーレイを非表示</string>
|
||||
<string name="revanced_end_screen_suggested_video_summary_on">"再生終了時に、「関連動画」オーバーレイはプレーヤー画面に表示されませんが、自動再生がオンの場合は次の動画が自動で再生されます
|
||||
<string name="revanced_end_screen_suggested_video_title">再生終了時の「関連動画」を非表示</string>
|
||||
<string name="revanced_end_screen_suggested_video_summary_on">"再生が終了したときに、「関連動画」はプレーヤー画面に表示されませんが、自動再生がオンの場合は次の動画が自動で再生されます
|
||||
|
||||
自動再生の設定は YouTube の設定で変更できます:
|
||||
設定 → 再生 → 次の動画を自動再生"</string>
|
||||
<string name="revanced_end_screen_suggested_video_summary_off">再生終了時に、「関連動画」オーバーレイがプレーヤー画面に表示されます</string>
|
||||
<string name="revanced_end_screen_suggested_video_summary_off">再生が終了したときに「関連動画」がプレーヤー画面に表示されます</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.relatedvideooverlay.hideRelatedVideoOverlayPatch">
|
||||
<string name="revanced_hide_related_videos_overlay_title">関連動画オーバーレイを非表示</string>
|
||||
@@ -897,11 +897,11 @@ GmsCore の電池の最適化を無効にしても、バッテリーの使用に
|
||||
</patch>
|
||||
<patch id="layout.panels.popup.playerPopupPanelsPatch">
|
||||
<string name="revanced_hide_player_popup_panels_title">プレーヤー ポップアップ パネルを非表示</string>
|
||||
<string name="revanced_hide_player_popup_panels_summary_on">動画を開いた際のプレイリストやチャット欄などのプレーヤー ポップアップ パネルは表示されません</string>
|
||||
<string name="revanced_hide_player_popup_panels_summary_off">動画を開いた際のプレイリストやチャット欄などのプレーヤー ポップアップ パネルは表示されます</string>
|
||||
<string name="revanced_hide_player_popup_panels_summary_on">プレーヤー ポップアップ パネルは表示されません\n\nプレイリストやチャット欄などを閉じた状態で動画を開きます</string>
|
||||
<string name="revanced_hide_player_popup_panels_summary_off">プレーヤー ポップアップ パネルは表示されます\n\nプレイリストやチャット欄などを展開した状態で動画を開きます</string>
|
||||
</patch>
|
||||
<patch id="layout.player.fullscreen.exitFullscreenPatch">
|
||||
<string name="revanced_exit_fullscreen_title">再生終了時に全画面表示を解除する</string>
|
||||
<string name="revanced_exit_fullscreen_title">再生終了時に全画面表示を解除</string>
|
||||
<string name="revanced_exit_fullscreen_entry_1">無効</string>
|
||||
<string name="revanced_exit_fullscreen_entry_2">縦画面</string>
|
||||
<string name="revanced_exit_fullscreen_entry_3">横画面</string>
|
||||
@@ -913,9 +913,9 @@ GmsCore の電池の最適化を無効にしても、バッテリーの使用に
|
||||
<string name="revanced_open_videos_fullscreen_portrait_summary_off">通常表示で動画を開きます</string>
|
||||
</patch>
|
||||
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
|
||||
<string name="revanced_player_overlay_opacity_title">オーバーレイの透明度</string>
|
||||
<string name="revanced_player_overlay_opacity_title">プレーヤー オーバーレイの透明度</string>
|
||||
<string name="revanced_player_overlay_opacity_summary">透明度の範囲は 0-100 で、0 が透明です</string>
|
||||
<string name="revanced_player_overlay_opacity_invalid_toast">動画プレーヤー: 透明度の範囲は 0-100 です</string>
|
||||
<string name="revanced_player_overlay_opacity_invalid_toast">プレーヤー: 透明度の範囲は 0-100 です</string>
|
||||
</patch>
|
||||
<patch id="layout.returnyoutubedislike.returnYouTubeDislikePatch">
|
||||
<!-- Toast shown if network connection times out. Translations of this should not be longer than the original English or the text can be clipped and not entirely shown. -->
|
||||
@@ -1282,24 +1282,24 @@ Automotive レイアウト
|
||||
<string name="revanced_miniplayer_type_entry_5">モダン 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">モダン 3</string>
|
||||
<string name="revanced_miniplayer_type_entry_7">モダン 4</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">角を丸くする</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">丸角を有効化</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">ミニプレーヤーの角は丸角です</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">ミニプレーヤーの角は直角です</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_title">「ダブルタップとピンチでサイズ変更」を有効にする</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_title">「ダブルタップとピンチでサイズ変更」を有効化</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_summary_on">"「ダブルタップとピンチでサイズ変更」は有効です
|
||||
|
||||
• ダブルタップすると、ミニプレーヤーのサイズが大きくなる
|
||||
• もう一度ダブルタップすると、元のサイズに戻る"</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_summary_off">「 ダブルタップとピンチでサイズ変更」は無効です</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_title">ドラッグ&ドロップを有効にする</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_title">ドラッグ&ドロップを有効化</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_summary_on">"ドラッグ&ドロップは有効です
|
||||
|
||||
ミニプレーヤーを画面の四隅に移動できます"</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_summary_off">ドラッグ&ドロップは無効です</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_title">横方向ドラッグ ジェスチャーを有効にする</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_title">横方向ドラッグ ジェスチャーを有効化</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_on">"横方向ドラッグ ジェスチャーは有効です
|
||||
|
||||
ミニプレーヤーを画面の左端または右端までドラッグすると最小化できます"</string>
|
||||
ミニプレーヤーを画面の左端または右端までドラッグすると最小化されます"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">横方向ドラッグ ジェスチャーは無効です</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">オーバーレイ ボタンを非表示</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">オーバーレイ ボタンは表示されません</string>
|
||||
@@ -1479,13 +1479,13 @@ Automotive レイアウト
|
||||
</patch>
|
||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||
<string name="revanced_playback_speed_dialog_button_title">再生速度設定ボタンを表示</string>
|
||||
<string name="revanced_playback_speed_dialog_button_summary_on">ボタンがオーバーレイに表示されます。長押しすると、再生速度がデフォルトの値にリセットされます</string>
|
||||
<string name="revanced_playback_speed_dialog_button_summary_off">ボタンはオーバーレイに表示されません</string>
|
||||
<string name="revanced_playback_speed_dialog_button_summary_on">ボタンがプレーヤー オーバーレイに表示されます。長押しすると、再生速度がデフォルトの値にリセットされます</string>
|
||||
<string name="revanced_playback_speed_dialog_button_summary_off">ボタンはプレーヤー オーバーレイに表示されません</string>
|
||||
</patch>
|
||||
<patch id="video.quality.button.videoQualityDialogButtonPatch">
|
||||
<string name="revanced_video_quality_dialog_button_title">画質設定ボタンを表示</string>
|
||||
<string name="revanced_video_quality_dialog_button_summary_on">ボタンがオーバーレイに表示されます。長押しすると、画質がデフォルトの値にリセットされます</string>
|
||||
<string name="revanced_video_quality_dialog_button_summary_off">ボタンはオーバーレイに表示されません</string>
|
||||
<string name="revanced_video_quality_dialog_button_summary_on">ボタンがプレーヤー オーバーレイに表示されます。長押しすると、画質がデフォルトの値にリセットされます</string>
|
||||
<string name="revanced_video_quality_dialog_button_summary_off">ボタンはプレーヤー オーバーレイに表示されません</string>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
<string name="revanced_custom_speed_menu_title">カスタム再生速度メニュー</string>
|
||||
|
||||
@@ -580,13 +580,13 @@ 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>
|
||||
<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>
|
||||
@@ -1193,7 +1193,7 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
|
||||
</patch>
|
||||
<patch id="layout.formfactor.changeFormFactorPatch">
|
||||
<string name="revanced_change_form_factor_title">레이아웃 폼 팩터 변경하기</string>
|
||||
<string name="revanced_change_form_factor_entry_1">기기 기본값 사용</string>
|
||||
<string name="revanced_change_form_factor_entry_1">기본값</string>
|
||||
<string name="revanced_change_form_factor_entry_2">폰</string>
|
||||
<string name="revanced_change_form_factor_entry_3">태블릿</string>
|
||||
<string name="revanced_change_form_factor_entry_4">오토모티브</string>
|
||||
@@ -1221,7 +1221,7 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
|
||||
</patch>
|
||||
<patch id="layout.startpage.changeStartPagePatch">
|
||||
<string name="revanced_change_start_page_title">앱 시작 페이지 변경하기</string>
|
||||
<string name="revanced_change_start_page_entry_default">홈 (기본값)</string>
|
||||
<string name="revanced_change_start_page_entry_default">기본값</string>
|
||||
<string name="revanced_change_start_page_entry_all_subscriptions">모든 구독 채널</string>
|
||||
<string name="revanced_change_start_page_entry_browse">채널 둘러보기</string>
|
||||
<string name="revanced_change_start_page_entry_courses">학습 프로그램</string>
|
||||
@@ -1276,7 +1276,7 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
|
||||
<string name="revanced_miniplayer_screen_summary">앱 내에서 최소화된 플레이어의 스타일을 변경할 수 있습니다</string>
|
||||
<string name="revanced_miniplayer_type_title">미니 플레이어 유형</string>
|
||||
<string name="revanced_miniplayer_type_entry_0">사용 안함</string>
|
||||
<string name="revanced_miniplayer_type_entry_1">기기 기본값 사용</string>
|
||||
<string name="revanced_miniplayer_type_entry_1">기본값</string>
|
||||
<string name="revanced_miniplayer_type_entry_2">최소화</string>
|
||||
<string name="revanced_miniplayer_type_entry_3">태블릿</string>
|
||||
<string name="revanced_miniplayer_type_entry_4">모던 스타일 1</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">Скрыть кнопку \"Хайп\"</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. -->
|
||||
|
||||
@@ -453,9 +453,9 @@ Ova funkcija je dostupna samo za starije uređaje"</string>
|
||||
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Ovo ne zaobilazi starosno ograničenje. Samo ga automatski prihvata.</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
|
||||
<string name="revanced_disable_signin_to_tv_popup_title">Onemogući iskačući prozor za prijavu na TV</string>
|
||||
<string name="revanced_disable_signin_to_tv_popup_summary_on">Iskačući prozor za prijavu na TV je onemogućen</string>
|
||||
<string name="revanced_disable_signin_to_tv_popup_summary_off">Iskačući prozor za prijavu na TV je omogućen</string>
|
||||
<string name="revanced_disable_signin_to_tv_popup_title">Onemogući iskačući prozor „Prijava na TV”</string>
|
||||
<string name="revanced_disable_signin_to_tv_popup_summary_on">Iskačući prozor „Prijava na TV” je onemogućen</string>
|
||||
<string name="revanced_disable_signin_to_tv_popup_summary_off">Iskačući prozor „Prijava na TV” je omogućen</string>
|
||||
</patch>
|
||||
<patch id="interaction.doubletap.disableDoubleTapActionsPatch">
|
||||
<string name="revanced_disable_chapter_skip_double_tap_title">Onemogući preskakanje poglavlja dvostrukim dodirom</string>
|
||||
@@ -584,9 +584,9 @@ Podesite jačinu zvuka prevlačenjem vertikalno na desnoj strani ekrana"</string
|
||||
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_summary_on">Dugme „Hajp” je skriveno</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Dugme „Haip” je prikazano</string>
|
||||
<string name="revanced_hide_hype_button_summary_off">Dugme „Hajp” je prikazano</string>
|
||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||
<string name="revanced_hide_promote_button_title">Sakrij Promoviši</string>
|
||||
<string name="revanced_hide_promote_button_title">Sakrij dugme „Promoviši”</string>
|
||||
<string name="revanced_hide_promote_button_summary_on">Dugme „Promoviši” je skriveno</string>
|
||||
<string name="revanced_hide_promote_button_summary_off">Dugme „Promoviši” je prikazano</string>
|
||||
<!-- 'Thanks' 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>
|
||||
@@ -586,7 +586,7 @@ Second \"item\" text"</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_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. -->
|
||||
|
||||
@@ -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. -->
|
||||
|
||||
@@ -18,14 +18,6 @@
|
||||
yt:layout_constraintBottom_toTopOf="@+id/quick_actions_container"
|
||||
yt:layout_constraintRight_toLeftOf="@+id/fullscreen_button" />
|
||||
|
||||
<View
|
||||
android:id="@+id/revanced_copy_video_url_button_placeholder"
|
||||
android:layout_width="48.0dip"
|
||||
android:layout_height="60.0dip"
|
||||
android:visibility="gone"
|
||||
yt:layout_constraintBottom_toTopOf="@+id/quick_actions_container"
|
||||
yt:layout_constraintRight_toLeftOf="@+id/fullscreen_button" />
|
||||
|
||||
<com.google.android.libraries.youtube.common.ui.TouchImageView
|
||||
android:id="@+id/revanced_copy_video_url_timestamp_button"
|
||||
style="@style/YouTubePlayerButton"
|
||||
@@ -37,12 +29,4 @@
|
||||
android:src="@drawable/revanced_yt_copy_timestamp"
|
||||
yt:layout_constraintBottom_toTopOf="@+id/quick_actions_container"
|
||||
yt:layout_constraintRight_toLeftOf="@+id/fullscreen_button" />
|
||||
|
||||
<View
|
||||
android:id="@+id/revanced_copy_video_url_timestamp_button_placeholder"
|
||||
android:layout_width="48.0dip"
|
||||
android:layout_height="60.0dip"
|
||||
android:visibility="gone"
|
||||
yt:layout_constraintBottom_toTopOf="@+id/quick_actions_container"
|
||||
yt:layout_constraintRight_toLeftOf="@+id/fullscreen_button" />
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
|
||||
@@ -18,12 +18,4 @@
|
||||
android:src="@drawable/revanced_yt_download_button"
|
||||
yt:layout_constraintBottom_toTopOf="@+id/quick_actions_container"
|
||||
yt:layout_constraintRight_toLeftOf="@+id/fullscreen_button" />
|
||||
|
||||
<View
|
||||
android:id="@+id/revanced_external_download_button_placeholder"
|
||||
android:layout_width="48.0dip"
|
||||
android:layout_height="60.0dip"
|
||||
android:visibility="gone"
|
||||
yt:layout_constraintBottom_toTopOf="@+id/quick_actions_container"
|
||||
yt:layout_constraintRight_toLeftOf="@+id/fullscreen_button" />
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
|
||||
@@ -33,11 +33,5 @@
|
||||
android:paddingTop="5.5dp"
|
||||
android:textColor="@android:color/white"
|
||||
android:textSize="10dp" />
|
||||
|
||||
<View
|
||||
android:id="@+id/revanced_video_quality_dialog_button_placeholder"
|
||||
android:layout_width="48.0dip"
|
||||
android:layout_height="60.0dip"
|
||||
android:visibility="gone" />
|
||||
</FrameLayout>
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
|
||||
@@ -33,11 +33,5 @@
|
||||
android:paddingTop="5.5dp"
|
||||
android:textColor="@android:color/white"
|
||||
android:textSize="10dp" />
|
||||
|
||||
<View
|
||||
android:id="@+id/revanced_playback_speed_dialog_button_placeholder"
|
||||
android:layout_width="48.0dip"
|
||||
android:layout_height="60.0dip"
|
||||
android:visibility="gone" />
|
||||
</FrameLayout>
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
|
||||
Reference in New Issue
Block a user