diff --git a/CHANGELOG.md b/CHANGELOG.md index 8fb450567..e0dd53456 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,87 @@ +# [5.21.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v5.21.0-dev.11...v5.21.0-dev.12) (2025-04-24) + + +### Bug Fixes + +* **YouTube - Hide video action buttons:** Add option to hide 'Ask' button ([#4852](https://github.com/ReVanced/revanced-patches/issues/4852)) ([43bcf5a](https://github.com/ReVanced/revanced-patches/commit/43bcf5a098c9008cc11dc7df9680437d5effbb32)) + +# [5.21.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v5.21.0-dev.10...v5.21.0-dev.11) (2025-04-24) + + +### Bug Fixes + +* **GmsCore Support:** Correct the description to refer to the app being patched ([2bbcf9d](https://github.com/ReVanced/revanced-patches/commit/2bbcf9d82ca2f442572a6aa886cc611b0d56ff0a)) + +# [5.21.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v5.21.0-dev.9...v5.21.0-dev.10) (2025-04-23) + + +### Features + +* **YouTube - Swipe controls:** Add option for vertical progress bar ([#4811](https://github.com/ReVanced/revanced-patches/issues/4811)) ([ebee07e](https://github.com/ReVanced/revanced-patches/commit/ebee07ec3aba6fd3adbd8e0af30390e197879d89)) + +# [5.21.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.21.0-dev.8...v5.21.0-dev.9) (2025-04-21) + + +### Bug Fixes + +* **YouTube - Hide video action buttons:** Hide A/B layout buttons ([4db5d3c](https://github.com/ReVanced/revanced-patches/commit/4db5d3c3d5ac04faf70cc07fb309b324d752e7e3)) + +# [5.21.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v5.21.0-dev.7...v5.21.0-dev.8) (2025-04-20) + + +### Bug Fixes + +* **Wide search bar:** Fix patching `19.16.39` ([433dbc3](https://github.com/ReVanced/revanced-patches/commit/433dbc3bf81823369e146035c954281e84d3a436)) + +# [5.21.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.21.0-dev.6...v5.21.0-dev.7) (2025-04-20) + + +### Bug Fixes + +* **YouTube - Change start page:** Add option to always override start page on app launch ([#4832](https://github.com/ReVanced/revanced-patches/issues/4832)) ([5062e24](https://github.com/ReVanced/revanced-patches/commit/5062e24433ba38eba397438e8fde32099109d3c3)) + +# [5.21.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.21.0-dev.5...v5.21.0-dev.6) (2025-04-19) + + +### Bug Fixes + +* **YouTube - Wide search bar:** Do not force phone layout for tablet devices ([#4827](https://github.com/ReVanced/revanced-patches/issues/4827)) ([0cb38f9](https://github.com/ReVanced/revanced-patches/commit/0cb38f9f367a7fe742d8ca336150049181d637b6)) + +# [5.21.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.21.0-dev.4...v5.21.0-dev.5) (2025-04-18) + + +### Bug Fixes + +* `Hide ADB status` patch ([#4814](https://github.com/ReVanced/revanced-patches/issues/4814)) ([dc89be0](https://github.com/ReVanced/revanced-patches/commit/dc89be0e94880733f862b250d95d4848f02c594d)) + +# [5.21.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.21.0-dev.3...v5.21.0-dev.4) (2025-04-17) + + +### Bug Fixes + +* **YouTube - Disable auto captions:** Correctly hide captions with YT 20.12 ([5ecbe82](https://github.com/ReVanced/revanced-patches/commit/5ecbe823ed5197533328cc37f1de5cd1f048a217)) + +# [5.21.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.21.0-dev.2...v5.21.0-dev.3) (2025-04-16) + + +### Features + +* **X / Twitter:** Support version `10.86.0-release.0` ([#4805](https://github.com/ReVanced/revanced-patches/issues/4805)) ([655b390](https://github.com/ReVanced/revanced-patches/commit/655b39043ad77efcb4380de67c3f603666e7bc49)) + +# [5.21.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.21.0-dev.1...v5.21.0-dev.2) (2025-04-16) + + +### Features + +* Add `Hide ADB status` patch ([#4585](https://github.com/ReVanced/revanced-patches/issues/4585)) ([1ea8047](https://github.com/ReVanced/revanced-patches/commit/1ea8047aefdaa358e9af8038923ac54d68a39176)) + +# [5.21.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.20.1...v5.21.0-dev.1) (2025-04-16) + + +### Features + +* **YouTube:** Support version `20.12.46` ([#4779](https://github.com/ReVanced/revanced-patches/issues/4779)) ([703359f](https://github.com/ReVanced/revanced-patches/commit/703359f0c16b613c204cf16cf42227b628f664fa)) + ## [5.20.1](https://github.com/ReVanced/revanced-patches/compare/v5.20.0...v5.20.1) (2025-04-15) diff --git a/extensions/all/misc/adb/hide-adb/build.gradle.kts b/extensions/all/misc/adb/hide-adb/build.gradle.kts new file mode 100644 index 000000000..18568df5c --- /dev/null +++ b/extensions/all/misc/adb/hide-adb/build.gradle.kts @@ -0,0 +1,16 @@ +android { + namespace = "app.revanced.extension" + + defaultConfig { + minSdk = 21 + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } +} + +dependencies { + compileOnly(libs.annotation) +} diff --git a/extensions/all/misc/adb/hide-adb/src/main/AndroidManifest.xml b/extensions/all/misc/adb/hide-adb/src/main/AndroidManifest.xml new file mode 100644 index 000000000..15e7c2ae6 --- /dev/null +++ b/extensions/all/misc/adb/hide-adb/src/main/AndroidManifest.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/extensions/all/misc/adb/hide-adb/src/main/java/app/revanced/extension/all/misc/hide/adb/HideAdbPatch.java b/extensions/all/misc/adb/hide-adb/src/main/java/app/revanced/extension/all/misc/hide/adb/HideAdbPatch.java new file mode 100644 index 000000000..f0b4f458b --- /dev/null +++ b/extensions/all/misc/adb/hide-adb/src/main/java/app/revanced/extension/all/misc/hide/adb/HideAdbPatch.java @@ -0,0 +1,28 @@ +package app.revanced.extension.all.misc.hide.adb; + +import android.content.ContentResolver; +import android.provider.Settings; + +import java.util.Arrays; +import java.util.List; + +@SuppressWarnings("unused") +public final class HideAdbPatch { + private static final List SPOOF_SETTINGS = Arrays.asList("adb_enabled", "adb_wifi_enabled", "development_settings_enabled"); + + public static int getInt(ContentResolver cr, String name) throws Settings.SettingNotFoundException { + if (SPOOF_SETTINGS.contains(name)) { + return 0; + } + + return Settings.Global.getInt(cr, name); + } + + public static int getInt(ContentResolver cr, String name, int def) { + if (SPOOF_SETTINGS.contains(name)) { + return 0; + } + + return Settings.Global.getInt(cr, name, def); + } +} diff --git a/extensions/all/misc/connectivity/wifi/spoof/spoof-wifi/src/main/java/app/revanced/extension/all/connectivity/wifi/spoof/SpoofWifiPatch.java b/extensions/all/misc/connectivity/wifi/spoof/spoof-wifi/src/main/java/app/revanced/extension/all/misc/connectivity/wifi/spoof/SpoofWifiPatch.java similarity index 99% rename from extensions/all/misc/connectivity/wifi/spoof/spoof-wifi/src/main/java/app/revanced/extension/all/connectivity/wifi/spoof/SpoofWifiPatch.java rename to extensions/all/misc/connectivity/wifi/spoof/spoof-wifi/src/main/java/app/revanced/extension/all/misc/connectivity/wifi/spoof/SpoofWifiPatch.java index 71c625279..9c1702f1b 100644 --- a/extensions/all/misc/connectivity/wifi/spoof/spoof-wifi/src/main/java/app/revanced/extension/all/connectivity/wifi/spoof/SpoofWifiPatch.java +++ b/extensions/all/misc/connectivity/wifi/spoof/spoof-wifi/src/main/java/app/revanced/extension/all/misc/connectivity/wifi/spoof/SpoofWifiPatch.java @@ -1,4 +1,4 @@ -package app.revanced.extension.all.connectivity.wifi.spoof; +package app.revanced.extension.all.misc.connectivity.wifi.spoof; import android.app.PendingIntent; import android.content.Context; diff --git a/extensions/all/misc/screencapture/remove-screen-capture-restriction/src/main/java/app/revanced/extension/all/screencapture/removerestriction/RemoveScreenCaptureRestrictionPatch.java b/extensions/all/misc/screencapture/remove-screen-capture-restriction/src/main/java/app/revanced/extension/all/misc/screencapture/removerestriction/RemoveScreenCaptureRestrictionPatch.java similarity index 90% rename from extensions/all/misc/screencapture/remove-screen-capture-restriction/src/main/java/app/revanced/extension/all/screencapture/removerestriction/RemoveScreenCaptureRestrictionPatch.java rename to extensions/all/misc/screencapture/remove-screen-capture-restriction/src/main/java/app/revanced/extension/all/misc/screencapture/removerestriction/RemoveScreenCaptureRestrictionPatch.java index 25a3149b9..653d4d394 100644 --- a/extensions/all/misc/screencapture/remove-screen-capture-restriction/src/main/java/app/revanced/extension/all/screencapture/removerestriction/RemoveScreenCaptureRestrictionPatch.java +++ b/extensions/all/misc/screencapture/remove-screen-capture-restriction/src/main/java/app/revanced/extension/all/misc/screencapture/removerestriction/RemoveScreenCaptureRestrictionPatch.java @@ -1,4 +1,4 @@ -package app.revanced.extension.all.screencapture.removerestriction; +package app.revanced.extension.all.misc.screencapture.removerestriction; import android.media.AudioAttributes; import android.os.Build; diff --git a/extensions/all/misc/screenshot/remove-screenshot-restriction/src/main/java/app/revanced/extension/all/screenshot/removerestriction/RemoveScreenshotRestrictionPatch.java b/extensions/all/misc/screenshot/remove-screenshot-restriction/src/main/java/app/revanced/extension/all/misc/screenshot/removerestriction/RemoveScreenshotRestrictionPatch.java similarity index 87% rename from extensions/all/misc/screenshot/remove-screenshot-restriction/src/main/java/app/revanced/extension/all/screenshot/removerestriction/RemoveScreenshotRestrictionPatch.java rename to extensions/all/misc/screenshot/remove-screenshot-restriction/src/main/java/app/revanced/extension/all/misc/screenshot/removerestriction/RemoveScreenshotRestrictionPatch.java index 33905e870..22254f628 100644 --- a/extensions/all/misc/screenshot/remove-screenshot-restriction/src/main/java/app/revanced/extension/all/screenshot/removerestriction/RemoveScreenshotRestrictionPatch.java +++ b/extensions/all/misc/screenshot/remove-screenshot-restriction/src/main/java/app/revanced/extension/all/misc/screenshot/removerestriction/RemoveScreenshotRestrictionPatch.java @@ -1,4 +1,4 @@ -package app.revanced.extension.all.screenshot.removerestriction; +package app.revanced.extension.all.misc.screenshot.removerestriction; import android.view.Window; import android.view.WindowManager; diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/Setting.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/Setting.java index 2f6405d6b..8294fe423 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/Setting.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/Setting.java @@ -342,9 +342,12 @@ public abstract class Setting { /** * Identical to calling {@link #save(Object)} using {@link #defaultValue}. + * + * @return The newly saved default value. */ - public void resetToDefault() { + public T resetToDefault() { save(defaultValue); + return defaultValue; } /** diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/requests/StreamingDataRequest.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/requests/StreamingDataRequest.java index 339ed2185..eeab17d1f 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/requests/StreamingDataRequest.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/requests/StreamingDataRequest.java @@ -204,7 +204,7 @@ public class StreamingDataRequest { // but empty response body does. if (connection.getContentLength() == 0) { if (BaseSettings.DEBUG.get() && BaseSettings.DEBUG_TOAST_ON_ERROR.get()) { - Utils.showToastShort("Ignoring empty spoof stream client: " + clientType); + Utils.showToastShort("Debug: Ignoring empty spoof stream client " + clientType); } } else { try (InputStream inputStream = new BufferedInputStream(connection.getInputStream()); diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/ChangeStartPagePatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/ChangeStartPagePatch.java index 888c8deda..14872dcfc 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/ChangeStartPagePatch.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/ChangeStartPagePatch.java @@ -9,6 +9,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import app.revanced.extension.shared.Logger; +import app.revanced.extension.shared.settings.Setting; import app.revanced.extension.youtube.settings.Settings; @SuppressWarnings("unused") @@ -81,6 +82,13 @@ public final class ChangeStartPagePatch { } } + public static class ChangeStartPageTypeAvailability implements Setting.Availability { + @Override + public boolean isAvailable() { + return Settings.CHANGE_START_PAGE.get() != StartPage.DEFAULT; + } + } + /** * Intent action when YouTube is cold started from the launcher. *

@@ -93,6 +101,8 @@ public final class ChangeStartPagePatch { private static final StartPage START_PAGE = Settings.CHANGE_START_PAGE.get(); + private static final boolean CHANGE_START_PAGE_ALWAYS = Settings.CHANGE_START_PAGE_ALWAYS.get(); + /** * There is an issue where the back button on the toolbar doesn't work properly. * As a workaround for this issue, instead of overriding the browserId multiple times, just override it once. @@ -104,13 +114,13 @@ public final class ChangeStartPagePatch { return original; } - if (appLaunched) { + if (!CHANGE_START_PAGE_ALWAYS && appLaunched) { Logger.printDebug(() -> "Ignore override browseId as the app already launched"); return original; } appLaunched = true; - Logger.printDebug(() -> "Changing browseId to " + START_PAGE.id); + Logger.printDebug(() -> "Changing browseId to: " + START_PAGE.id); return START_PAGE.id; } @@ -125,14 +135,14 @@ public final class ChangeStartPagePatch { return; } - if (appLaunched) { + if (!CHANGE_START_PAGE_ALWAYS && appLaunched) { Logger.printDebug(() -> "Ignore override intent action as the app already launched"); return; } appLaunched = true; String intentAction = START_PAGE.id; - Logger.printDebug(() -> "Changing intent action to " + intentAction); + Logger.printDebug(() -> "Changing intent action to: " + intentAction); intent.setAction(intentAction); } } diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/CustomPlayerOverlayOpacityPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/CustomPlayerOverlayOpacityPatch.java index 4f13deaac..50133579d 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/CustomPlayerOverlayOpacityPatch.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/CustomPlayerOverlayOpacityPatch.java @@ -17,8 +17,7 @@ public class CustomPlayerOverlayOpacityPatch { if (opacity < 0 || opacity > 100) { Utils.showToastLong(str("revanced_player_overlay_opacity_invalid_toast")); - Settings.PLAYER_OVERLAY_OPACITY.resetToDefault(); - opacity = Settings.PLAYER_OVERLAY_OPACITY.defaultValue; + opacity = Settings.PLAYER_OVERLAY_OPACITY.resetToDefault(); } PLAYER_OVERLAY_OPACITY_LEVEL = (opacity * 255) / 100; diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/DisableAutoCaptionsPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/DisableAutoCaptionsPatch.java index 38cbf00a0..12fac4946 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/DisableAutoCaptionsPatch.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/DisableAutoCaptionsPatch.java @@ -1,20 +1,23 @@ package app.revanced.extension.youtube.patches; import app.revanced.extension.youtube.settings.Settings; -import app.revanced.extension.youtube.shared.ShortsPlayerState; @SuppressWarnings("unused") public class DisableAutoCaptionsPatch { - /** - * Used by injected code. Do not delete. - */ - public static boolean captionsButtonDisabled; + private static volatile boolean captionsButtonStatus; - public static boolean autoCaptionsEnabled() { - return Settings.AUTO_CAPTIONS.get() - // Do not use auto captions for Shorts. - && ShortsPlayerState.isOpen(); + /** + * Injection point. + */ + public static boolean disableAutoCaptions() { + return Settings.DISABLE_AUTO_CAPTIONS.get() && !captionsButtonStatus; } + /** + * Injection point. + */ + public static void setCaptionsButtonStatus(boolean status) { + captionsButtonStatus = status; + } } diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/MiniplayerPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/MiniplayerPatch.java index 1b41e44c6..7a7571162 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/MiniplayerPatch.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/MiniplayerPatch.java @@ -162,8 +162,7 @@ public final class MiniplayerPatch { if (opacity < 0 || opacity > 100) { Utils.showToastLong(str("revanced_miniplayer_opacity_invalid_toast")); - Settings.MINIPLAYER_OPACITY.resetToDefault(); - opacity = Settings.MINIPLAYER_OPACITY.defaultValue; + opacity = Settings.MINIPLAYER_OPACITY.resetToDefault(); } OPACITY_LEVEL = (opacity * 255) / 100; diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/WideSearchbarPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/WideSearchbarPatch.java index 57ec7442f..aeff4ac26 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/WideSearchbarPatch.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/WideSearchbarPatch.java @@ -1,11 +1,48 @@ package app.revanced.extension.youtube.patches; +import android.content.res.Resources; +import android.util.TypedValue; +import android.view.View; + +import app.revanced.extension.shared.Logger; +import app.revanced.extension.shared.Utils; import app.revanced.extension.youtube.settings.Settings; @SuppressWarnings("unused") public final class WideSearchbarPatch { + private static final Boolean WIDE_SEARCHBAR_ENABLED = Settings.WIDE_SEARCHBAR.get(); + + /** + * Injection point. + */ public static boolean enableWideSearchbar(boolean original) { - return Settings.WIDE_SEARCHBAR.get() || original; + return WIDE_SEARCHBAR_ENABLED || original; + } + + /** + * Injection point. + */ + public static void setActionBar(View view) { + try { + if (!WIDE_SEARCHBAR_ENABLED) return; + + View searchBarView = Utils.getChildViewByResourceName(view, "search_bar"); + + final int paddingLeft = searchBarView.getPaddingLeft(); + final int paddingRight = searchBarView.getPaddingRight(); + final int paddingTop = searchBarView.getPaddingTop(); + final int paddingBottom = searchBarView.getPaddingBottom(); + final int paddingStart = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, + 8, Resources.getSystem().getDisplayMetrics()); + + if (Utils.isRightToLeftTextLayout()) { + searchBarView.setPadding(paddingLeft, paddingTop, paddingStart, paddingBottom); + } else { + searchBarView.setPadding(paddingStart, paddingTop, paddingRight, paddingBottom); + } + } catch (Exception ex) { + Logger.printException(() -> "setActionBar failure", ex); + } } } diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ButtonsFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ButtonsFilter.java index ce8ac8474..308be8ce8 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ButtonsFilter.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ButtonsFilter.java @@ -31,7 +31,7 @@ final class ButtonsFilter extends Filter { bufferFilterPathGroup = new StringFilterGroup( null, - "|ContainerType|button.eml|" + "|ContainerType|button.eml" ); addPathCallbacks( @@ -43,7 +43,7 @@ final class ButtonsFilter extends Filter { ), new StringFilterGroup( Settings.HIDE_DOWNLOAD_BUTTON, - "|download_button.eml|" + "|download_button.eml" ), new StringFilterGroup( Settings.HIDE_PLAYLIST_BUTTON, @@ -51,7 +51,7 @@ final class ButtonsFilter extends Filter { ), new StringFilterGroup( Settings.HIDE_CLIP_BUTTON, - "|clip_button.eml|" + "|clip_button.eml" ) ); @@ -68,15 +68,19 @@ final class ButtonsFilter extends Filter { Settings.HIDE_REMIX_BUTTON, "yt_outline_youtube_shorts_plus" ), + new ByteArrayFilterGroup( + Settings.HIDE_THANKS_BUTTON, + "yt_outline_dollar_sign_heart" + ), + new ByteArrayFilterGroup( + Settings.HIDE_ASK_BUTTON, + "yt_fill_spark" + ), // Check for clip button both here and using a path filter, // as there's a chance the path is a generic action button and won't contain 'clip_button' new ByteArrayFilterGroup( Settings.HIDE_CLIP_BUTTON, "yt_outline_scissors" - ), - new ByteArrayFilterGroup( - Settings.HIDE_THANKS_BUTTON, - "yt_outline_dollar_sign_heart" ) ); } diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/LayoutComponentsFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/LayoutComponentsFilter.java index 4f6c1366c..a82459c28 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/LayoutComponentsFilter.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/LayoutComponentsFilter.java @@ -211,7 +211,7 @@ public final class LayoutComponentsFilter extends Filter { compactChannelBarInnerButton = new StringFilterGroup( null, - "|button.eml|" + "|button.eml" ); joinMembershipButton = new ByteArrayFilterGroup( diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/PlayerFlyoutMenuItemsFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/PlayerFlyoutMenuItemsFilter.java index b200017ab..d7c8e6caa 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/PlayerFlyoutMenuItemsFilter.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/PlayerFlyoutMenuItemsFilter.java @@ -40,7 +40,7 @@ public class PlayerFlyoutMenuItemsFilter extends Filter { addPathCallbacks( videoQualityMenuFooter, - new StringFilterGroup(null, "overflow_menu_item.eml|") + new StringFilterGroup(null, "overflow_menu_item.eml") ); flyoutFilterGroupList.addAll( diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/playback/speed/CustomPlaybackSpeedPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/playback/speed/CustomPlaybackSpeedPatch.java index ae2a09f92..8cde513bd 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/playback/speed/CustomPlaybackSpeedPatch.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/playback/speed/CustomPlaybackSpeedPatch.java @@ -54,12 +54,12 @@ public class CustomPlaybackSpeedPatch { static { final float holdSpeed = Settings.SPEED_TAP_AND_HOLD.get(); + if (holdSpeed > 0 && holdSpeed <= PLAYBACK_SPEED_MAXIMUM) { TAP_AND_HOLD_SPEED = holdSpeed; } else { showInvalidCustomSpeedToast(); - Settings.SPEED_TAP_AND_HOLD.resetToDefault(); - TAP_AND_HOLD_SPEED = Settings.SPEED_TAP_AND_HOLD.get(); + TAP_AND_HOLD_SPEED = Settings.SPEED_TAP_AND_HOLD.resetToDefault(); } loadCustomSpeeds(); diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java index dfc727bda..29debf67e 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java @@ -7,6 +7,7 @@ import static app.revanced.extension.shared.settings.Setting.migrateOldSettingTo import static app.revanced.extension.shared.settings.Setting.parent; import static app.revanced.extension.shared.settings.Setting.parentsAny; import static app.revanced.extension.youtube.patches.ChangeFormFactorPatch.FormFactor; +import static app.revanced.extension.youtube.patches.ChangeStartPagePatch.ChangeStartPageTypeAvailability; import static app.revanced.extension.youtube.patches.ChangeStartPagePatch.StartPage; import static app.revanced.extension.youtube.patches.ExitFullscreenPatch.FullscreenMode; import static app.revanced.extension.youtube.patches.ForceOriginalAudioPatch.ForceOriginalAudioAvailability; @@ -24,6 +25,7 @@ import static app.revanced.extension.youtube.sponsorblock.objects.CategoryBehavi import static app.revanced.extension.youtube.sponsorblock.objects.CategoryBehaviour.MANUAL_SKIP; import static app.revanced.extension.youtube.sponsorblock.objects.CategoryBehaviour.SKIP_AUTOMATICALLY; import static app.revanced.extension.youtube.sponsorblock.objects.CategoryBehaviour.SKIP_AUTOMATICALLY_ONCE; +import app.revanced.extension.youtube.swipecontrols.SwipeControlsConfigurationProvider.SwipeOverlayStyle; import android.graphics.Color; @@ -124,6 +126,7 @@ public class Settings extends BaseSettings { // Player public static final BooleanSetting COPY_VIDEO_URL = new BooleanSetting("revanced_copy_video_url", FALSE); public static final BooleanSetting COPY_VIDEO_URL_TIMESTAMP = new BooleanSetting("revanced_copy_video_url_timestamp", TRUE); + public static final BooleanSetting DISABLE_AUTO_CAPTIONS = new BooleanSetting("revanced_disable_auto_captions", FALSE, true); public static final BooleanSetting DISABLE_FULLSCREEN_AMBIENT_MODE = new BooleanSetting("revanced_disable_fullscreen_ambient_mode", TRUE, true); public static final BooleanSetting DISABLE_ROLLING_NUMBER_ANIMATIONS = new BooleanSetting("revanced_disable_rolling_number_animations", FALSE); public static final EnumSetting EXIT_FULLSCREEN = new EnumSetting<>("revanced_exit_fullscreen", FullscreenMode.DISABLED); @@ -196,6 +199,7 @@ public class Settings extends BaseSettings { public static final BooleanSetting HIDE_REPORT_BUTTON = new BooleanSetting("revanced_hide_report_button", FALSE); public static final BooleanSetting HIDE_SHARE_BUTTON = new BooleanSetting("revanced_hide_share_button", FALSE); public static final BooleanSetting HIDE_THANKS_BUTTON = new BooleanSetting("revanced_hide_thanks_button", TRUE); + public static final BooleanSetting HIDE_ASK_BUTTON = new BooleanSetting("revanced_hide_ask_button", FALSE); // Player flyout menu items public static final BooleanSetting HIDE_PLAYER_FLYOUT_ADDITIONAL_SETTINGS = new BooleanSetting("revanced_hide_player_flyout_additional_settings", FALSE); public static final BooleanSetting HIDE_PLAYER_FLYOUT_AMBIENT_MODE = new BooleanSetting("revanced_hide_player_flyout_ambient_mode", FALSE); @@ -221,6 +225,8 @@ public class Settings extends BaseSettings { public static final BooleanSetting SPOOF_APP_VERSION = new BooleanSetting("revanced_spoof_app_version", FALSE, true, "revanced_spoof_app_version_user_dialog_message"); public static final BooleanSetting WIDE_SEARCHBAR = new BooleanSetting("revanced_wide_searchbar", FALSE, true); public static final EnumSetting CHANGE_START_PAGE = new EnumSetting<>("revanced_change_start_page", StartPage.DEFAULT, true); + public static final BooleanSetting CHANGE_START_PAGE_ALWAYS = new BooleanSetting("revanced_change_start_page_always", FALSE, true, + new ChangeStartPageTypeAvailability()); public static final StringSetting SPOOF_APP_VERSION_TARGET = new StringSetting("revanced_spoof_app_version_target", "19.01.34", true, parent(SPOOF_APP_VERSION)); // Custom filter public static final BooleanSetting CUSTOM_FILTER = new BooleanSetting("revanced_custom_filter", FALSE); @@ -294,7 +300,6 @@ public class Settings extends BaseSettings { // Misc public static final BooleanSetting ANNOUNCEMENTS = new BooleanSetting("revanced_announcements", TRUE); public static final IntegerSetting ANNOUNCEMENT_LAST_ID = new IntegerSetting("revanced_announcement_last_id", -1, false, false); - public static final BooleanSetting AUTO_CAPTIONS = new BooleanSetting("revanced_auto_captions", FALSE); public static final BooleanSetting AUTO_REPEAT = new BooleanSetting("revanced_auto_repeat", FALSE); public static final BooleanSetting BYPASS_URL_REDIRECTS = new BooleanSetting("revanced_bypass_url_redirects", TRUE); public static final BooleanSetting CHECK_WATCH_HISTORY_DOMAIN_NAME = new BooleanSetting("revanced_check_watch_history_domain_name", TRUE, false, false); @@ -320,12 +325,14 @@ public class Settings extends BaseSettings { public static final IntegerSetting SWIPE_MAGNITUDE_THRESHOLD = new IntegerSetting("revanced_swipe_threshold", 30, true, parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME)); public static final IntegerSetting SWIPE_VOLUME_SENSITIVITY = new IntegerSetting("revanced_swipe_volume_sensitivity", 1, true, parent(SWIPE_VOLUME)); - public static final BooleanSetting SWIPE_SHOW_CIRCULAR_OVERLAY = new BooleanSetting("revanced_swipe_show_circular_overlay", FALSE, true, + public static final EnumSetting SWIPE_OVERLAY_STYLE = new EnumSetting<>("revanced_swipe_overlay_style", SwipeOverlayStyle.HORIZONTAL,true, parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME)); - public static final BooleanSetting SWIPE_OVERLAY_MINIMAL_STYLE = new BooleanSetting("revanced_swipe_overlay_minimal_style", FALSE, true, + public static final IntegerSetting SWIPE_OVERLAY_TEXT_SIZE = new IntegerSetting("revanced_swipe_text_overlay_size", 14, true, parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME)); public static final IntegerSetting SWIPE_OVERLAY_OPACITY = new IntegerSetting("revanced_swipe_overlay_background_opacity", 60, true, parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME)); + public static final StringSetting SWIPE_OVERLAY_PROGRESS_COLOR = new StringSetting("revanced_swipe_overlay_progress_color", "#FFFFFF", true, + parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME)); public static final LongSetting SWIPE_OVERLAY_TIMEOUT = new LongSetting("revanced_swipe_overlay_timeout", 500L, true, parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME)); public static final BooleanSetting SWIPE_SAVE_AND_RESTORE_BRIGHTNESS = new BooleanSetting("revanced_swipe_save_and_restore_brightness", TRUE, true, parent(SWIPE_BRIGHTNESS)); @@ -403,6 +410,7 @@ public class Settings extends BaseSettings { private static final StringSetting DEPRECATED_SEEKBAR_CUSTOM_COLOR_PRIMARY = new StringSetting("revanced_seekbar_custom_color_value", "#FF0033"); private static final BooleanSetting DEPRECATED_DISABLE_SUGGESTED_VIDEO_END_SCREEN = new BooleanSetting("revanced_disable_suggested_video_end_screen", FALSE); private static final BooleanSetting DEPRECATED_RESTORE_OLD_VIDEO_QUALITY_MENU = new BooleanSetting("revanced_restore_old_video_quality_menu", TRUE); + private static final BooleanSetting DEPRECATED_AUTO_CAPTIONS = new BooleanSetting("revanced_auto_captions", FALSE); static { // region Migration @@ -456,6 +464,11 @@ public class Settings extends BaseSettings { SPOOF_APP_VERSION_TARGET.resetToDefault(); } + if (!DEPRECATED_AUTO_CAPTIONS.isSetToDefault()) { + DISABLE_AUTO_CAPTIONS.save(true); + DEPRECATED_AUTO_CAPTIONS.resetToDefault(); + } + // endregion // region SB import/export callbacks diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/SwipeControlsConfigurationProvider.kt b/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/SwipeControlsConfigurationProvider.kt index 697926244..e8f181936 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/SwipeControlsConfigurationProvider.kt +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/SwipeControlsConfigurationProvider.kt @@ -1,95 +1,98 @@ package app.revanced.extension.youtube.swipecontrols +import android.annotation.SuppressLint import android.graphics.Color +import app.revanced.extension.shared.Logger import app.revanced.extension.shared.StringRef.str import app.revanced.extension.shared.Utils import app.revanced.extension.youtube.settings.Settings import app.revanced.extension.youtube.shared.PlayerType /** - * provider for configuration for volume and brightness swipe controls + * Provides configuration settings for volume and brightness swipe controls in the YouTube player. + * Manages enabling/disabling gestures, overlay appearance, and behavior preferences. */ class SwipeControlsConfigurationProvider { -//region swipe enable + //region swipe enable /** - * should swipe controls be enabled? (global setting) + * Indicates whether swipe controls are enabled globally. + * Returns true if either volume or brightness controls are enabled and the video is in fullscreen mode. */ val enableSwipeControls: Boolean get() = (enableVolumeControls || enableBrightnessControl) && isFullscreenVideo /** - * should swipe controls for volume be enabled? + * Indicates whether swipe controls for adjusting volume are enabled. */ val enableVolumeControls = Settings.SWIPE_VOLUME.get() /** - * should swipe controls for volume be enabled? + * Indicates whether swipe controls for adjusting brightness are enabled. */ val enableBrightnessControl = Settings.SWIPE_BRIGHTNESS.get() /** - * is the video player currently in fullscreen mode? + * Checks if the video player is currently in fullscreen mode. */ private val isFullscreenVideo: Boolean get() = PlayerType.current == PlayerType.WATCH_WHILE_FULLSCREEN -//endregion + //endregion -//region keys enable + //region keys enable /** - * should volume key controls be overwritten? (global setting) + * Indicates whether volume key controls should be overridden by swipe controls. + * Returns true if volume controls are enabled and the video is in fullscreen mode. */ val overwriteVolumeKeyControls: Boolean get() = enableVolumeControls && isFullscreenVideo -//endregion + //endregion -//region gesture adjustments + //region gesture adjustments /** - * should press-to-swipe be enabled? + * Indicates whether press-to-swipe mode is enabled, requiring a press before swiping to activate controls. */ val shouldEnablePressToSwipe: Boolean get() = Settings.SWIPE_PRESS_TO_ENGAGE.get() /** - * threshold for swipe detection - * this may be called rapidly in onScroll, so we have to load it once and then leave it constant + * The threshold for detecting swipe gestures, in pixels. + * Loaded once to ensure consistent behavior during rapid scroll events. */ val swipeMagnitudeThreshold: Int get() = Settings.SWIPE_MAGNITUDE_THRESHOLD.get() /** - * How much volume will change by single swipe. - * If it is set to 0, it will reset to the default value because 0 would disable swiping. - * */ + * The sensitivity of volume swipe gestures, determining how much volume changes per swipe. + * Resets to default if set to 0, as it would disable swiping. + */ val volumeSwipeSensitivity: Int get() { val sensitivity = Settings.SWIPE_VOLUME_SENSITIVITY.get() if (sensitivity < 1) { - Settings.SWIPE_VOLUME_SENSITIVITY.resetToDefault() - - return Settings.SWIPE_VOLUME_SENSITIVITY.get() + return Settings.SWIPE_VOLUME_SENSITIVITY.resetToDefault() } return sensitivity } -//endregion + //endregion -//region overlay adjustments + //region overlay adjustments /** - * should the overlay enable haptic feedback? + * Indicates whether haptic feedback should be enabled for swipe control interactions. */ val shouldEnableHapticFeedback: Boolean get() = Settings.SWIPE_HAPTIC_FEEDBACK.get() /** - * how long the overlay should be shown on changes + * The duration in milliseconds that the overlay should remain visible after a change. */ val overlayShowTimeoutMillis: Long get() = Settings.SWIPE_OVERLAY_TIMEOUT.get() /** - * Gets the opacity value (0-100%) is converted to an alpha value (0-255) for transparency. - * If the opacity value is out of range, it resets to the default and displays a warning message. + * The background opacity of the overlay, converted from a percentage (0-100) to an alpha value (0-255). + * Resets to default and shows a toast if the value is out of range. */ val overlayBackgroundOpacity: Int get() { @@ -97,8 +100,7 @@ class SwipeControlsConfigurationProvider { if (opacity < 0 || opacity > 100) { Utils.showToastLong(str("revanced_swipe_overlay_background_opacity_invalid_toast")) - Settings.SWIPE_OVERLAY_OPACITY.resetToDefault() - opacity = Settings.SWIPE_OVERLAY_OPACITY.get() + opacity = Settings.SWIPE_OVERLAY_OPACITY.resetToDefault() } opacity = opacity * 255 / 100 @@ -106,55 +108,125 @@ class SwipeControlsConfigurationProvider { } /** - * The color of the progress overlay. + * The color of the progress bar in the overlay. + * Resets to default and shows a toast if the color string is invalid or empty. */ val overlayProgressColor: Int - get() = 0xBFFFFFFF.toInt() + get() { + try { + @SuppressLint("UseKtx") + val color = Color.parseColor(Settings.SWIPE_OVERLAY_PROGRESS_COLOR.get()) + return (0xBF000000.toInt() or (color and 0xFFFFFF)) + } catch (ex: IllegalArgumentException) { + Logger.printDebug({ "Could not parse color" }, ex) + Utils.showToastLong(str("revanced_swipe_overlay_progress_color_invalid_toast")) + Settings.SWIPE_OVERLAY_PROGRESS_COLOR.resetToDefault() + return overlayProgressColor // Recursively return. + } + } /** - * The color used for the background of the progress overlay fill. + * The background color used for the filled portion of the progress bar in the overlay. */ val overlayFillBackgroundPaint: Int get() = 0x80D3D3D3.toInt() /** - * The color used for the text and icons in the overlay. + * The color used for text and icons in the overlay. */ val overlayTextColor: Int get() = Color.WHITE /** - * A flag that determines if the overlay should only show the icon. + * The text size in the overlay, in density-independent pixels (dp). + * Must be between 1 and 30 dp; resets to default and shows a toast if invalid. */ - val overlayShowOverlayMinimalStyle: Boolean - get() = Settings.SWIPE_OVERLAY_MINIMAL_STYLE.get() + val overlayTextSize: Int + get() { + val size = Settings.SWIPE_OVERLAY_TEXT_SIZE.get() + if (size < 1 || size > 30) { + Utils.showToastLong(str("revanced_swipe_text_overlay_size_invalid_toast")) + return Settings.SWIPE_OVERLAY_TEXT_SIZE.resetToDefault() + } + return size + } /** - * A flag that determines if the progress bar should be circular. + * Defines the style of the swipe controls overlay, determining its layout and appearance. + * + * @property isMinimal Indicates whether the style is minimalistic, omitting detailed progress indicators. + * @property isHorizontalMinimalCenter Indicates whether the style is a minimal horizontal bar centered vertically. + * @property isCircular Indicates whether the style uses a circular progress bar. + * @property isVertical Indicates whether the style uses a vertical progress bar. */ - val isCircularProgressBar: Boolean - get() = Settings.SWIPE_SHOW_CIRCULAR_OVERLAY.get() -//endregion + @Suppress("unused") + enum class SwipeOverlayStyle( + val isMinimal: Boolean = false, + val isHorizontalMinimalCenter: Boolean = false, + val isCircular: Boolean = false, + val isVertical: Boolean = false + ) { + /** + * A full horizontal progress bar with detailed indicators. + */ + HORIZONTAL, -//region behaviour + /** + * A minimal horizontal progress bar positioned at the top. + */ + HORIZONTAL_MINIMAL_TOP(isMinimal = true), + + /** + * A minimal horizontal progress bar centered vertically. + */ + HORIZONTAL_MINIMAL_CENTER(isMinimal = true, isHorizontalMinimalCenter = true), + + /** + * A full circular progress bar with detailed indicators. + */ + CIRCULAR(isCircular = true), + + /** + * A minimal circular progress bar. + */ + CIRCULAR_MINIMAL(isMinimal = true, isCircular = true), + + /** + * A full vertical progress bar with detailed indicators. + */ + VERTICAL(isVertical = true), + + /** + * A minimal vertical progress bar. + */ + VERTICAL_MINIMAL(isMinimal = true, isVertical = true) + } /** - * should the brightness be saved and restored when exiting or entering fullscreen + * The current style of the overlay, determining its layout and appearance. + */ + val overlayStyle: SwipeOverlayStyle + get() = Settings.SWIPE_OVERLAY_STYLE.get() + //endregion + + //region behaviour + /** + * Indicates whether the brightness level should be saved and restored when entering or exiting fullscreen mode. */ val shouldSaveAndRestoreBrightness: Boolean get() = Settings.SWIPE_SAVE_AND_RESTORE_BRIGHTNESS.get() /** - * should auto-brightness be enabled at the lowest value of the brightness gesture + * Indicates whether auto-brightness should be enabled when the brightness gesture reaches its lowest value. */ val shouldLowestValueEnableAutoBrightness: Boolean get() = Settings.SWIPE_LOWEST_VALUE_ENABLE_AUTO_BRIGHTNESS.get() /** - * variable that stores the brightness gesture value in the settings + * The saved brightness value for the swipe gesture, used to restore brightness in fullscreen mode. */ var savedScreenBrightnessValue: Float get() = Settings.SWIPE_BRIGHTNESS_VALUE.get() set(value) = Settings.SWIPE_BRIGHTNESS_VALUE.save(value) -//endregion -} + //endregion +} \ No newline at end of file diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/SwipeControlsHostActivity.kt b/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/SwipeControlsHostActivity.kt index 10b70ed95..7fafd83a7 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/SwipeControlsHostActivity.kt +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/SwipeControlsHostActivity.kt @@ -23,9 +23,7 @@ import java.lang.ref.WeakReference /** * The main controller for volume and brightness swipe controls. - * note that the superclass is overwritten to the superclass of the MainActivity at patch time - * - * @smali Lapp/revanced/extension/swipecontrols/SwipeControlsHostActivity; + * note that the superclass is overwritten to the superclass of the MainActivity at patch time. */ class SwipeControlsHostActivity : Activity() { /** diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/views/SwipeControlsOverlayLayout.kt b/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/views/SwipeControlsOverlayLayout.kt index 8df6aeeee..6a9044e85 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/views/SwipeControlsOverlayLayout.kt +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/views/SwipeControlsOverlayLayout.kt @@ -1,8 +1,11 @@ package app.revanced.extension.youtube.swipecontrols.views +import android.annotation.SuppressLint import android.content.Context +import android.content.res.Resources import android.graphics.Canvas import android.graphics.Paint +import android.graphics.Rect import android.graphics.RectF import android.graphics.drawable.Drawable import android.os.Handler @@ -11,14 +14,23 @@ import android.util.AttributeSet import android.view.HapticFeedbackConstants import android.view.View import android.widget.RelativeLayout +import app.revanced.extension.shared.StringRef.str import app.revanced.extension.shared.Utils import app.revanced.extension.youtube.swipecontrols.SwipeControlsConfigurationProvider import app.revanced.extension.youtube.swipecontrols.misc.SwipeControlsOverlay import kotlin.math.min +import kotlin.math.max import kotlin.math.round /** - * Main overlay layout for displaying volume and brightness level with both circular and horizontal progress bars. + * Convert dp to pixels based on system display density. + */ +fun Float.toDisplayPixels(): Float { + return this * Resources.getSystem().displayMetrics.density +} + +/** + * Main overlay layout for displaying volume and brightness level with circular, horizontal and vertical progress bars. */ class SwipeControlsOverlayLayout( context: Context, @@ -51,18 +63,21 @@ class SwipeControlsOverlayLayout( // Initialize progress bars private val circularProgressView: CircularProgressView private val horizontalProgressView: HorizontalProgressView + private val verticalBrightnessProgressView: VerticalProgressView + private val verticalVolumeProgressView: VerticalProgressView init { // Initialize circular progress bar circularProgressView = CircularProgressView( context, config.overlayBackgroundOpacity, - config.overlayShowOverlayMinimalStyle, + config.overlayStyle.isMinimal, config.overlayProgressColor, config.overlayFillBackgroundPaint, - config.overlayTextColor + config.overlayTextColor, + config.overlayTextSize ).apply { - layoutParams = LayoutParams(300, 300).apply { + layoutParams = LayoutParams(100f.toDisplayPixels().toInt(), 100f.toDisplayPixels().toInt()).apply { addRule(CENTER_IN_PARENT, TRUE) } visibility = GONE // Initially hidden @@ -71,22 +86,65 @@ class SwipeControlsOverlayLayout( // Initialize horizontal progress bar val screenWidth = resources.displayMetrics.widthPixels - val layoutWidth = (screenWidth * 2 / 3).toInt() // 2/3 of screen width + val layoutWidth = (screenWidth * 4 / 5).toInt() // Cap at ~360dp horizontalProgressView = HorizontalProgressView( context, config.overlayBackgroundOpacity, - config.overlayShowOverlayMinimalStyle, + config.overlayStyle.isMinimal, config.overlayProgressColor, config.overlayFillBackgroundPaint, - config.overlayTextColor + config.overlayTextColor, + config.overlayTextSize ).apply { - layoutParams = LayoutParams(layoutWidth, 100).apply { + layoutParams = LayoutParams(layoutWidth, 32f.toDisplayPixels().toInt()).apply { addRule(CENTER_HORIZONTAL) - topMargin = 40 // Top margin + if (config.overlayStyle.isHorizontalMinimalCenter) { + addRule(CENTER_VERTICAL) + } else { + topMargin = 20f.toDisplayPixels().toInt() + } } visibility = GONE // Initially hidden } addView(horizontalProgressView) + + // Initialize vertical progress bar for brightness (right side) + verticalBrightnessProgressView = VerticalProgressView( + context, + config.overlayBackgroundOpacity, + config.overlayStyle.isMinimal, + config.overlayProgressColor, + config.overlayFillBackgroundPaint, + config.overlayTextColor, + config.overlayTextSize + ).apply { + layoutParams = LayoutParams(40f.toDisplayPixels().toInt(), 150f.toDisplayPixels().toInt()).apply { + addRule(ALIGN_PARENT_RIGHT) + rightMargin = 40f.toDisplayPixels().toInt() + addRule(CENTER_VERTICAL) + } + visibility = GONE // Initially hidden + } + addView(verticalBrightnessProgressView) + + // Initialize vertical progress bar for volume (left side) + verticalVolumeProgressView = VerticalProgressView( + context, + config.overlayBackgroundOpacity, + config.overlayStyle.isMinimal, + config.overlayProgressColor, + config.overlayFillBackgroundPaint, + config.overlayTextColor, + config.overlayTextSize + ).apply { + layoutParams = LayoutParams(40f.toDisplayPixels().toInt(), 150f.toDisplayPixels().toInt()).apply { + addRule(ALIGN_PARENT_LEFT) + leftMargin = 40f.toDisplayPixels().toInt() + addRule(CENTER_VERTICAL) + } + visibility = GONE // Initially hidden + } + addView(verticalVolumeProgressView) } // Handler and callback for hiding progress bars @@ -94,6 +152,8 @@ class SwipeControlsOverlayLayout( private val feedbackHideCallback = Runnable { circularProgressView.visibility = GONE horizontalProgressView.visibility = GONE + verticalBrightnessProgressView.visibility = GONE + verticalVolumeProgressView.visibility = GONE } /** @@ -103,7 +163,11 @@ class SwipeControlsOverlayLayout( feedbackHideHandler.removeCallbacks(feedbackHideCallback) feedbackHideHandler.postDelayed(feedbackHideCallback, config.overlayShowTimeoutMillis) - val viewToShow = if (config.isCircularProgressBar) circularProgressView else horizontalProgressView + val viewToShow = when { + config.overlayStyle.isCircular -> circularProgressView + config.overlayStyle.isVertical -> if (isBrightness) verticalBrightnessProgressView else verticalVolumeProgressView + else -> horizontalProgressView + } viewToShow.apply { setProgress(progress, max, value, isBrightness) this.icon = icon @@ -126,7 +190,9 @@ class SwipeControlsOverlayLayout( // Handle brightness change override fun onBrightnessChanged(brightness: Double) { if (config.shouldLowestValueEnableAutoBrightness && brightness <= 0) { - showFeedbackView("Auto", 0, 100, autoBrightnessIcon, isBrightness = true) + val displayText = if (config.overlayStyle.isVertical) "А" + else str("revanced_swipe_lowest_value_enable_auto_brightness_overlay_text") + showFeedbackView(displayText, 0, 100, autoBrightnessIcon, isBrightness = true) } else { val brightnessValue = round(brightness).toInt() val icon = when { @@ -135,7 +201,8 @@ class SwipeControlsOverlayLayout( brightnessValue < 75 -> highBrightnessIcon else -> fullBrightnessIcon } - showFeedbackView("$brightnessValue%", brightnessValue, 100, icon, isBrightness = true) + val displayText = if (config.overlayStyle.isVertical) "$brightnessValue" else "$brightnessValue%" + showFeedbackView(displayText, brightnessValue, 100, icon, isBrightness = true) } } @@ -156,11 +223,12 @@ class SwipeControlsOverlayLayout( */ abstract class AbstractProgressView( context: Context, - protected val overlayBackgroundOpacity: Int, - protected val overlayShowOverlayMinimalStyle: Boolean, - protected val overlayProgressColor: Int, - protected val overlayFillBackgroundPaint: Int, - protected val overlayTextColor: Int, + overlayBackgroundOpacity: Int, + protected val isMinimalStyle: Boolean, + overlayProgressColor: Int, + overlayFillBackgroundPaint: Int, + private val overlayTextColor: Int, + protected val overlayTextSize: Int, attrs: AttributeSet? = null, defStyleAttr: Int = 0 ) : View(context, attrs, defStyleAttr) { @@ -174,26 +242,25 @@ abstract class AbstractProgressView( } // Initialize paints - public val backgroundPaint = createPaint(overlayBackgroundOpacity, style = Paint.Style.FILL) - public val progressPaint = createPaint(overlayProgressColor, style = Paint.Style.STROKE, strokeCap = Paint.Cap.ROUND, strokeWidth = 20f) - public val fillBackgroundPaint = createPaint(overlayFillBackgroundPaint, style = Paint.Style.FILL) - public val textPaint = Paint(Paint.ANTI_ALIAS_FLAG).apply { + val backgroundPaint = createPaint(overlayBackgroundOpacity, style = Paint.Style.FILL) + val progressPaint = createPaint(overlayProgressColor, style = Paint.Style.STROKE, strokeCap = Paint.Cap.ROUND, strokeWidth = 6f.toDisplayPixels()) + val fillBackgroundPaint = createPaint(overlayFillBackgroundPaint, style = Paint.Style.FILL) + val textPaint = Paint(Paint.ANTI_ALIAS_FLAG).apply { color = overlayTextColor textAlign = Paint.Align.CENTER - textSize = 40f // Can adjust based on need + textSize = overlayTextSize.toFloat().toDisplayPixels() } + // Rect for text measurement + protected val textBounds = Rect() + protected var progress = 0 protected var maxProgress = 100 protected var displayText: String = "0" protected var isBrightness = true - public var icon: Drawable? = null + var icon: Drawable? = null - init { - // Stroke widths are now set in createPaint for progressPaint and fillBackgroundPaint - } - - fun setProgress(value: Int, max: Int, text: String, isBrightnessMode: Boolean) { + open fun setProgress(value: Int, max: Int, text: String, isBrightnessMode: Boolean) { progress = value maxProgress = max displayText = text @@ -201,6 +268,11 @@ abstract class AbstractProgressView( invalidate() } + protected fun measureTextWidth(text: String, paint: Paint): Int { + paint.getTextBounds(text, 0, text.length, textBounds) + return textBounds.width() + } + override fun onDraw(canvas: Canvas) { // Base class implementation can be empty } @@ -209,34 +281,36 @@ abstract class AbstractProgressView( /** * Custom view for rendering a circular progress indicator with icons and text. */ +@SuppressLint("ViewConstructor") class CircularProgressView( context: Context, overlayBackgroundOpacity: Int, - overlayShowOverlayMinimalStyle: Boolean, + isMinimalStyle: Boolean, overlayProgressColor: Int, overlayFillBackgroundPaint: Int, overlayTextColor: Int, + overlayTextSize: Int, attrs: AttributeSet? = null, defStyleAttr: Int = 0 ) : AbstractProgressView( context, overlayBackgroundOpacity, - overlayShowOverlayMinimalStyle, + isMinimalStyle, overlayProgressColor, overlayFillBackgroundPaint, overlayTextColor, + overlayTextSize, attrs, defStyleAttr ) { private val rectF = RectF() init { - textPaint.textSize = 40f // Override default text size for circular view - progressPaint.strokeWidth = 20f - fillBackgroundPaint.strokeWidth = 20f - progressPaint.strokeCap = Paint.Cap.ROUND + progressPaint.strokeWidth = 6f.toDisplayPixels() + fillBackgroundPaint.strokeWidth = 6f.toDisplayPixels() + progressPaint.strokeCap = Paint.Cap.ROUND fillBackgroundPaint.strokeCap = Paint.Cap.BUTT - progressPaint.style = Paint.Style.STROKE + progressPaint.style = Paint.Style.STROKE fillBackgroundPaint.style = Paint.Style.STROKE } @@ -244,7 +318,8 @@ class CircularProgressView( super.onDraw(canvas) val size = min(width, height).toFloat() - rectF.set(20f, 20f, size - 20f, size - 20f) + val inset = 6f.toDisplayPixels() + rectF.set(inset, inset, size - inset, size - inset) canvas.drawOval(rectF, fillBackgroundPaint) // Draw the outer ring. canvas.drawCircle(width / 2f, height / 2f, size / 3, backgroundPaint) // Draw the inner circle. @@ -255,124 +330,307 @@ class CircularProgressView( // Draw the icon in the center. icon?.let { - val iconSize = if (overlayShowOverlayMinimalStyle) 100 else 80 + val iconSize = (if (isMinimalStyle) 36f else 24f).toDisplayPixels().toInt() val iconX = (width - iconSize) / 2 - val iconY = (height / 2) - if (overlayShowOverlayMinimalStyle) 50 else 80 + val iconY = if (isMinimalStyle) { + (height - iconSize) / 2 + } else { + (height / 2) - 24f.toDisplayPixels().toInt() + } it.setBounds(iconX, iconY, iconX + iconSize, iconY + iconSize) it.draw(canvas) } // If not a minimal style mode, draw the text inside the ring. - if (!overlayShowOverlayMinimalStyle) { - canvas.drawText(displayText, width / 2f, height / 2f + 60f, textPaint) + if (!isMinimalStyle) { + canvas.drawText(displayText, width / 2f, height / 2f + 20f.toDisplayPixels(), textPaint) } } + + override fun setProgress(value: Int, max: Int, text: String, isBrightnessMode: Boolean) { + super.setProgress(value, max, text, isBrightnessMode) + requestLayout() + } } /** * Custom view for rendering a rectangular progress bar with icons and text. */ +@SuppressLint("ViewConstructor") class HorizontalProgressView( context: Context, overlayBackgroundOpacity: Int, - overlayShowOverlayMinimalStyle: Boolean, + isMinimalStyle: Boolean, overlayProgressColor: Int, overlayFillBackgroundPaint: Int, overlayTextColor: Int, + overlayTextSize: Int, attrs: AttributeSet? = null, defStyleAttr: Int = 0 ) : AbstractProgressView( context, overlayBackgroundOpacity, - overlayShowOverlayMinimalStyle, + isMinimalStyle, overlayProgressColor, overlayFillBackgroundPaint, overlayTextColor, + overlayTextSize, attrs, defStyleAttr ) { - private val iconSize = 60f - private val padding = 40f + private val iconSize = 20f.toDisplayPixels() + private val padding = 12f.toDisplayPixels() + private var textWidth = 0f + private val progressBarHeight = 3f.toDisplayPixels() + private val progressBarWidth: Float = resources.displayMetrics.widthPixels / 4f init { - textPaint.textSize = 36f // Override default text size for horizontal view progressPaint.strokeWidth = 0f - progressPaint.strokeCap = Paint.Cap.BUTT - progressPaint.style = Paint.Style.FILL + progressPaint.strokeCap = Paint.Cap.BUTT + progressPaint.style = Paint.Style.FILL fillBackgroundPaint.style = Paint.Style.FILL } + /** + * Calculate required width based on content + * @return Required width to display all elements + */ + private fun calculateRequiredWidth(): Float { + textWidth = measureTextWidth(displayText, textPaint).toFloat() + + return if (!isMinimalStyle) { + padding + iconSize + padding + progressBarWidth + padding + textWidth + padding + } else { + padding + iconSize + padding + textWidth + padding + } + } + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec) + + val suggestedWidth = MeasureSpec.getSize(widthMeasureSpec) + val suggestedHeight = MeasureSpec.getSize(heightMeasureSpec) + + val height = suggestedHeight + val requiredWidth = calculateRequiredWidth().toInt() + val width = min(max(100, requiredWidth), suggestedWidth) + + setMeasuredDimension(width, height) + } + override fun onDraw(canvas: Canvas) { super.onDraw(canvas) - val width = width.toFloat() - val height = height.toFloat() + val viewWidth = width.toFloat() + val viewHeight = height.toFloat() + val viewHeightHalf = viewHeight / 2 - // Radius for rounded corners - val cornerRadius = min(width, height) / 2 + textWidth = measureTextWidth(displayText, textPaint).toFloat() - // Calculate the total width for the elements - val minimalElementWidth = 5 * padding + iconSize + val cornerRadius = viewHeightHalf - // Calculate the starting point (X) to center the elements - val minimalStartX = (width - minimalElementWidth) / 2 + val startX = padding + val iconEndX = startX + iconSize - // Draw the background - if (!overlayShowOverlayMinimalStyle) { - canvas.drawRoundRect(0f, 0f, width, height, cornerRadius, cornerRadius, backgroundPaint) - } else { - canvas.drawRoundRect(minimalStartX, 0f, minimalStartX + minimalElementWidth, height, cornerRadius, cornerRadius, backgroundPaint) - } + val textStartX = (viewWidth - 1.5f * padding - textWidth) - if (!overlayShowOverlayMinimalStyle) { - // Draw the fill background - val startX = 2 * padding + iconSize - val endX = width - 4 * padding - val fillWidth = endX - startX + canvas.drawRoundRect( + 0f, 0f, viewWidth, viewHeight, + cornerRadius, cornerRadius, backgroundPaint + ) - canvas.drawRoundRect( - startX, - height / 2 - 5f, - endX, - height / 2 + 5f, - 10f, 10f, - fillBackgroundPaint - ) - - // Draw the progress - val progressWidth = (progress.toFloat() / maxProgress) * fillWidth - canvas.drawRoundRect( - startX, - height / 2 - 5f, - startX + progressWidth, - height / 2 + 5f, - 10f, 10f, - progressPaint - ) - } - - // Draw the icon icon?.let { - val iconX = if (!overlayShowOverlayMinimalStyle) { - padding - } else { - padding + minimalStartX - } - val iconY = height / 2 - iconSize / 2 - it.setBounds(iconX.toInt(), iconY.toInt(), (iconX + iconSize).toInt(), (iconY + iconSize).toInt()) + val iconY = viewHeightHalf - iconSize / 2 + it.setBounds( + startX.toInt(), + iconY.toInt(), + (startX + iconSize).toInt(), + (iconY + iconSize).toInt() + ) it.draw(canvas) } - // Draw the text on the right - val textX = if (!overlayShowOverlayMinimalStyle) { - width - 2 * padding - } else { - minimalStartX + minimalElementWidth - 2 * padding - } - val textY = height / 2 + textPaint.textSize / 3 + val textY = viewHeightHalf + textPaint.textSize / 3 + textPaint.textAlign = Paint.Align.LEFT - // Draw the text - canvas.drawText(displayText, textX, textY, textPaint) + if (isMinimalStyle) { + canvas.drawText(displayText, textStartX, textY, textPaint) + } else { + val progressStartX = iconEndX + padding + val progressEndX = textStartX - padding + val progressWidth = progressEndX - progressStartX + + if (progressWidth > 50) { + val progressBarHeightHalf = progressBarHeight / 2.0f + val viewHeightHalfMinusProgressBarHeightHalf = viewHeightHalf - progressBarHeightHalf + val viewHeightHalfPlusProgressBarHeightHalf = viewHeightHalf + progressBarHeightHalf + + canvas.drawRoundRect( + progressStartX, + viewHeightHalfMinusProgressBarHeightHalf, + progressEndX, + viewHeightHalfPlusProgressBarHeightHalf, + progressBarHeightHalf, + progressBarHeightHalf, + fillBackgroundPaint + ) + + val progressValue = (progress.toFloat() / maxProgress) * progressWidth + canvas.drawRoundRect( + progressStartX, + viewHeightHalfMinusProgressBarHeightHalf, + progressStartX + progressValue, + viewHeightHalfPlusProgressBarHeightHalf, + progressBarHeightHalf, + progressBarHeightHalf, + progressPaint + ) + } + + canvas.drawText(displayText, textStartX, textY, textPaint) + } + } + + override fun setProgress(value: Int, max: Int, text: String, isBrightnessMode: Boolean) { + super.setProgress(value, max, text, isBrightnessMode) + requestLayout() } } + +/** + * Custom view for rendering a vertical progress bar with icons and text. + */ +@SuppressLint("ViewConstructor") +class VerticalProgressView( + context: Context, + overlayBackgroundOpacity: Int, + isMinimalStyle: Boolean, + overlayProgressColor: Int, + overlayFillBackgroundPaint: Int, + overlayTextColor: Int, + overlayTextSize: Int, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : AbstractProgressView( + context, + overlayBackgroundOpacity, + isMinimalStyle, + overlayProgressColor, + overlayFillBackgroundPaint, + overlayTextColor, + overlayTextSize, + attrs, + defStyleAttr +) { + + private val iconSize = 20f.toDisplayPixels() + private val padding = 12f.toDisplayPixels() + private val progressBarWidth = 3f.toDisplayPixels() + private val progressBarHeight: Float = resources.displayMetrics.widthPixels / 3f + + init { + progressPaint.strokeWidth = 0f + progressPaint.strokeCap = Paint.Cap.BUTT + progressPaint.style = Paint.Style.FILL + fillBackgroundPaint.style = Paint.Style.FILL + } + + /** + * Calculate required height based on content + * @return Required height to display all elements + */ + private fun calculateRequiredHeight(): Float { + return if (!isMinimalStyle) { + padding + iconSize + padding + progressBarHeight + padding + textPaint.textSize + padding + } else { + padding + iconSize + padding + textPaint.textSize + padding + } + } + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec) + + val suggestedWidth = MeasureSpec.getSize(widthMeasureSpec) + val suggestedHeight = MeasureSpec.getSize(heightMeasureSpec) + + val requiredHeight = calculateRequiredHeight().toInt() + val height = min(max(100, requiredHeight), suggestedHeight) + + setMeasuredDimension(suggestedWidth, height) + } + + override fun onDraw(canvas: Canvas) { + super.onDraw(canvas) + + val viewWidth = width.toFloat() + val viewHeight = height.toFloat() + val viewWidthHalf = viewWidth / 2 + val cornerRadius = viewWidthHalf + + val startY = padding + val iconEndY = startY + iconSize + + val textStartY = viewHeight - padding - textPaint.textSize / 2 + + canvas.drawRoundRect( + 0f, 0f, viewWidth, viewHeight, + cornerRadius, cornerRadius, backgroundPaint + ) + + icon?.let { + val iconX = viewWidthHalf - iconSize / 2 + it.setBounds( + iconX.toInt(), + startY.toInt(), + (iconX + iconSize).toInt(), + (startY + iconSize).toInt() + ) + it.draw(canvas) + } + + val textX = viewWidthHalf + textPaint.textAlign = Paint.Align.CENTER + + if (isMinimalStyle) { + canvas.drawText(displayText, textX, textStartY, textPaint) + } else { + val progressStartY = (iconEndY + padding).toFloat() + val progressEndY = textStartY - textPaint.textSize - padding + val progressHeight = progressEndY - progressStartY + + if (progressHeight > 50) { + val progressBarWidthHalf = progressBarWidth / 2 + val viewHeightHalfMinusProgressBarHeightHalf = viewWidthHalf - progressBarWidthHalf + val viewHeightHalfPlusProgressBarHeightHalf = viewWidthHalf + progressBarWidthHalf + + canvas.drawRoundRect( + viewHeightHalfMinusProgressBarHeightHalf, + progressStartY, + viewHeightHalfPlusProgressBarHeightHalf, + progressEndY, + progressBarWidthHalf, + progressBarWidthHalf, + fillBackgroundPaint + ) + + val progressValue = (progress.toFloat() / maxProgress) * progressHeight + canvas.drawRoundRect( + viewHeightHalfMinusProgressBarHeightHalf, + progressEndY - progressValue, + viewHeightHalfPlusProgressBarHeightHalf, + progressEndY, + progressBarWidthHalf, + progressBarWidthHalf, + progressPaint + ) + } + canvas.drawText(displayText, textX, textStartY, textPaint) + } + } + + override fun setProgress(value: Int, max: Int, text: String, isBrightnessMode: Boolean) { + super.setProgress(value, max, text, isBrightnessMode) + requestLayout() + } +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 47e8dd827..5fe9f69ce 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M org.gradle.parallel = true android.useAndroidX = true kotlin.code.style = official -version = 5.20.1 +version = 5.21.0-dev.12 diff --git a/patches/api/patches.api b/patches/api/patches.api index 711eccede..72c53e50a 100644 --- a/patches/api/patches.api +++ b/patches/api/patches.api @@ -2,6 +2,10 @@ public final class app/revanced/patches/all/misc/activity/exportall/ExportAllAct public static final fun getExportAllActivitiesPatch ()Lapp/revanced/patcher/patch/ResourcePatch; } +public final class app/revanced/patches/all/misc/adb/HideAdbPatchKt { + public static final fun getHideAdbStatusPatch ()Lapp/revanced/patcher/patch/BytecodePatch; +} + public final class app/revanced/patches/all/misc/build/BaseSpoofBuildInfoPatchKt { public static final fun baseSpoofBuildInfoPatch (Lkotlin/jvm/functions/Function0;)Lapp/revanced/patcher/patch/BytecodePatch; } @@ -1416,6 +1420,8 @@ public final class app/revanced/patches/youtube/misc/playservice/VersionCheckPat public static final fun is_20_07_or_greater ()Z public static final fun is_20_09_or_greater ()Z public static final fun is_20_10_or_greater ()Z + public static final fun is_20_14_or_greater ()Z + public static final fun is_20_15_or_greater ()Z } public final class app/revanced/patches/youtube/misc/privacy/RemoveTrackingQueryParameterPatchKt { diff --git a/patches/src/main/kotlin/app/revanced/patches/all/misc/adb/HideAdbPatch.kt b/patches/src/main/kotlin/app/revanced/patches/all/misc/adb/HideAdbPatch.kt new file mode 100644 index 000000000..7e05318df --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/all/misc/adb/HideAdbPatch.kt @@ -0,0 +1,75 @@ +package app.revanced.patches.all.misc.adb + +import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction +import app.revanced.patcher.patch.bytecodePatch +import app.revanced.patches.all.misc.transformation.transformInstructionsPatch +import app.revanced.util.getReference +import com.android.tools.smali.dexlib2.Opcode +import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction35c +import com.android.tools.smali.dexlib2.iface.reference.MethodReference +import com.android.tools.smali.dexlib2.immutable.reference.ImmutableMethodReference +import com.android.tools.smali.dexlib2.util.MethodUtil + +private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/all/misc/hide/adb/HideAdbPatch;" + +private val SETTINGS_GLOBAL_GET_INT_OR_THROW_METHOD_REFERENCE = ImmutableMethodReference( + "Landroid/provider/Settings\$Global;", + "getInt", + listOf("Landroid/content/ContentResolver;", "Ljava/lang/String;"), + "I" +) + +private val SETTINGS_GLOBAL_GET_INT_OR_DEFAULT_METHOD_REFERENCE = ImmutableMethodReference( + "Landroid/provider/Settings\$Global;", + "getInt", + listOf("Landroid/content/ContentResolver;", "Ljava/lang/String;", "I"), + "I" +) + +private fun MethodReference.anyMethodSignatureMatches(vararg anyOf: MethodReference): Boolean { + return anyOf.any { + MethodUtil.methodSignaturesMatch(it, this) + } +} + +@Suppress("unused") +val hideAdbStatusPatch = bytecodePatch( + name = "Hide ADB status", + description = "Hides enabled development settings and/or ADB.", + use = false, +) { + extendWith("extensions/all/misc/adb/hide-adb.rve") + + dependsOn( + transformInstructionsPatch( + filterMap = filterMap@{ classDef, method, instruction, instructionIndex -> + val reference = instruction + .takeIf { it.opcode == Opcode.INVOKE_STATIC } + ?.getReference() + ?.takeIf { + it.anyMethodSignatureMatches(it, + SETTINGS_GLOBAL_GET_INT_OR_THROW_METHOD_REFERENCE, + SETTINGS_GLOBAL_GET_INT_OR_DEFAULT_METHOD_REFERENCE + ) + } + ?: return@filterMap null + + Triple(instruction as Instruction35c, instructionIndex, reference.parameterTypes) + }, + transform = { method, entry -> + val (instruction, index, parameterTypes) = entry + val parameterString = parameterTypes.joinToString(separator = "") + + val registerString = when (parameterTypes.size) { + 2 -> "v${instruction.registerC}, v${instruction.registerD}" + else -> "v${instruction.registerC}, v${instruction.registerD}, v${instruction.registerE}" + } + + method.replaceInstruction( + index, + "invoke-static { $registerString }, $EXTENSION_CLASS_DESCRIPTOR->getInt($parameterString)I" + ) + } + ) + ) +} diff --git a/patches/src/main/kotlin/app/revanced/patches/all/misc/connectivity/wifi/spoof/SpoofWifiPatch.kt b/patches/src/main/kotlin/app/revanced/patches/all/misc/connectivity/wifi/spoof/SpoofWifiPatch.kt index f6b01cda2..7abf5a473 100644 --- a/patches/src/main/kotlin/app/revanced/patches/all/misc/connectivity/wifi/spoof/SpoofWifiPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/all/misc/connectivity/wifi/spoof/SpoofWifiPatch.kt @@ -6,7 +6,7 @@ import app.revanced.patches.all.misc.transformation.filterMapInstruction35c import app.revanced.patches.all.misc.transformation.transformInstructionsPatch private const val EXTENSION_CLASS_DESCRIPTOR_PREFIX = - "Lapp/revanced/extension/all/connectivity/wifi/spoof/SpoofWifiPatch" + "Lapp/revanced/extension/all/misc/connectivity/wifi/spoof/SpoofWifiPatch" private const val EXTENSION_CLASS_DESCRIPTOR = "$EXTENSION_CLASS_DESCRIPTOR_PREFIX;" diff --git a/patches/src/main/kotlin/app/revanced/patches/all/misc/screencapture/RemoveScreenCaptureRestrictionPatch.kt b/patches/src/main/kotlin/app/revanced/patches/all/misc/screencapture/RemoveScreenCaptureRestrictionPatch.kt index a65c19d6c..f11d27f53 100644 --- a/patches/src/main/kotlin/app/revanced/patches/all/misc/screencapture/RemoveScreenCaptureRestrictionPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/all/misc/screencapture/RemoveScreenCaptureRestrictionPatch.kt @@ -25,7 +25,7 @@ private val removeCaptureRestrictionResourcePatch = resourcePatch( } private const val EXTENSION_CLASS_DESCRIPTOR_PREFIX = - "Lapp/revanced/extension/all/screencapture/removerestriction/RemoveScreenCaptureRestrictionPatch" + "Lapp/revanced/extension/all/misc/screencapture/removerestriction/RemoveScreenCaptureRestrictionPatch" private const val EXTENSION_CLASS_DESCRIPTOR = "$EXTENSION_CLASS_DESCRIPTOR_PREFIX;" @Suppress("unused") diff --git a/patches/src/main/kotlin/app/revanced/patches/all/misc/screenshot/RemoveScreenshotRestrictionPatch.kt b/patches/src/main/kotlin/app/revanced/patches/all/misc/screenshot/RemoveScreenshotRestrictionPatch.kt index 19c4ba05f..807afb639 100644 --- a/patches/src/main/kotlin/app/revanced/patches/all/misc/screenshot/RemoveScreenshotRestrictionPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/all/misc/screenshot/RemoveScreenshotRestrictionPatch.kt @@ -10,7 +10,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction22c import com.android.tools.smali.dexlib2.iface.reference.FieldReference private const val EXTENSION_CLASS_DESCRIPTOR_PREFIX = - "Lapp/revanced/extension/all/screenshot/removerestriction/RemoveScreenshotRestrictionPatch" + "Lapp/revanced/extension/all/misc/screenshot/removerestriction/RemoveScreenshotRestrictionPatch" private const val EXTENSION_CLASS_DESCRIPTOR = "$EXTENSION_CLASS_DESCRIPTOR_PREFIX;" @Suppress("unused") diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/misc/gms/GmsCoreSupportPatch.kt b/patches/src/main/kotlin/app/revanced/patches/shared/misc/gms/GmsCoreSupportPatch.kt index 694d471f7..19e1bad96 100644 --- a/patches/src/main/kotlin/app/revanced/patches/shared/misc/gms/GmsCoreSupportPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/shared/misc/gms/GmsCoreSupportPatch.kt @@ -52,8 +52,8 @@ fun gmsCoreSupportPatch( block: BytecodePatchBuilder.() -> Unit = {}, ) = bytecodePatch( name = "GmsCore support", - description = "Allows patched Google apps to run without root and under a different package name " + - "by using GmsCore instead of Google Play Services.", + description = "Allows the app to work without root by using a different package name when patched " + + "using a GmsCore instead of Google Play Services.", ) { val gmsCoreVendorGroupIdOption = stringOption( key = "gmsCoreVendorGroupId", diff --git a/patches/src/main/kotlin/app/revanced/patches/twitter/misc/dynamiccolor/DynamicColorPatch.kt b/patches/src/main/kotlin/app/revanced/patches/twitter/misc/dynamiccolor/DynamicColorPatch.kt index b3a677d72..9d813b7ad 100644 --- a/patches/src/main/kotlin/app/revanced/patches/twitter/misc/dynamiccolor/DynamicColorPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/twitter/misc/dynamiccolor/DynamicColorPatch.kt @@ -12,7 +12,7 @@ val dynamicColorPatch = resourcePatch( ) { compatibleWith( "com.twitter.android"( - "10.84.0-release.0", + "10.86.0-release.0", "10.60.0-release.0", "10.48.0-release.0" ) diff --git a/patches/src/main/kotlin/app/revanced/patches/twitter/misc/hook/HookPatch.kt b/patches/src/main/kotlin/app/revanced/patches/twitter/misc/hook/HookPatch.kt index 053736786..80da4aecf 100644 --- a/patches/src/main/kotlin/app/revanced/patches/twitter/misc/hook/HookPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/twitter/misc/hook/HookPatch.kt @@ -13,8 +13,8 @@ fun hookPatch( compatibleWith( "com.twitter.android"( - // 10.85+ uses Pairip and requires additional changes to work. - "10.84.0-release.0", + // Only v10.85 uses Pairip and requires additional changes to work. + "10.86.0-release.0", // Confirmed to not show reply ads. Slightly newer versions may also work. "10.60.0-release.0", "10.48.0-release.0" diff --git a/patches/src/main/kotlin/app/revanced/patches/twitter/misc/links/ChangeLinkSharingDomainPatch.kt b/patches/src/main/kotlin/app/revanced/patches/twitter/misc/links/ChangeLinkSharingDomainPatch.kt index c13e866c8..bf3d9afd2 100644 --- a/patches/src/main/kotlin/app/revanced/patches/twitter/misc/links/ChangeLinkSharingDomainPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/twitter/misc/links/ChangeLinkSharingDomainPatch.kt @@ -39,7 +39,7 @@ val changeLinkSharingDomainPatch = bytecodePatch( compatibleWith( "com.twitter.android"( - "10.84.0-release.0", + "10.86.0-release.0", "10.60.0-release.0", "10.48.0-release.0" ) diff --git a/patches/src/main/kotlin/app/revanced/patches/twitter/misc/links/SanitizeSharingLinksPatch.kt b/patches/src/main/kotlin/app/revanced/patches/twitter/misc/links/SanitizeSharingLinksPatch.kt index 85392cece..d84cfb2ca 100644 --- a/patches/src/main/kotlin/app/revanced/patches/twitter/misc/links/SanitizeSharingLinksPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/twitter/misc/links/SanitizeSharingLinksPatch.kt @@ -10,7 +10,7 @@ val sanitizeSharingLinksPatch = bytecodePatch( ) { compatibleWith( "com.twitter.android"( - "10.84.0-release.0", + "10.86.0-release.0", "10.60.0-release.0", "10.48.0-release.0" ) diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/ad/general/HideAdsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/ad/general/HideAdsPatch.kt index 5e0ca3b6b..dc66e4bfe 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/ad/general/HideAdsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/ad/general/HideAdsPatch.kt @@ -84,7 +84,8 @@ val hideAdsPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/ad/getpremium/HideGetPremiumPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/ad/getpremium/HideGetPremiumPatch.kt index b98bebdc6..a3a00fb85 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/ad/getpremium/HideGetPremiumPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/ad/getpremium/HideGetPremiumPatch.kt @@ -31,7 +31,8 @@ val hideGetPremiumPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/ad/video/VideoAdsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/ad/video/VideoAdsPatch.kt index 285ac733c..d1e9b9c26 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/ad/video/VideoAdsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/ad/video/VideoAdsPatch.kt @@ -29,7 +29,8 @@ val videoAdsPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/copyvideourl/CopyVideoUrlPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/copyvideourl/CopyVideoUrlPatch.kt index 13f1a3128..209886017 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/copyvideourl/CopyVideoUrlPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/copyvideourl/CopyVideoUrlPatch.kt @@ -59,7 +59,8 @@ val copyVideoUrlPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/dialog/RemoveViewerDiscretionDialogPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/dialog/RemoveViewerDiscretionDialogPatch.kt index 28cae5018..79d373dc4 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/dialog/RemoveViewerDiscretionDialogPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/dialog/RemoveViewerDiscretionDialogPatch.kt @@ -30,7 +30,8 @@ val removeViewerDiscretionDialogPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) val extensionMethodDescriptor = diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/downloads/DownloadsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/downloads/DownloadsPatch.kt index ea7951222..202972f89 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/downloads/DownloadsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/downloads/DownloadsPatch.kt @@ -74,7 +74,8 @@ val downloadsPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/seekbar/EnableSeekbarTappingPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/seekbar/EnableSeekbarTappingPatch.kt index fadf2357f..162b69090 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/seekbar/EnableSeekbarTappingPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/seekbar/EnableSeekbarTappingPatch.kt @@ -10,10 +10,15 @@ import app.revanced.patches.shared.misc.settings.preference.SwitchPreference import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch import app.revanced.patches.youtube.misc.settings.PreferenceScreen import app.revanced.patches.youtube.misc.settings.settingsPatch +import app.revanced.util.findFreeRegister +import app.revanced.util.indexOfFirstInstructionOrThrow +import com.android.tools.smali.dexlib2.Opcode +import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction -import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction35c import com.android.tools.smali.dexlib2.iface.reference.MethodReference +private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/youtube/patches/SeekbarTappingPatch;" + val enableSeekbarTappingPatch = bytecodePatch( description = "Adds an option to enable tap to seek on the seekbar of the video player.", ) { @@ -31,39 +36,37 @@ val enableSeekbarTappingPatch = bytecodePatch( ) // Find the required methods to tap the seekbar. - val patternMatch = onTouchEventHandlerFingerprint.patternMatch!! + val seekbarTappingMethods = onTouchEventHandlerFingerprint.let { + fun getMethodReference(index: Int) = it.method.getInstruction(index) + .reference as MethodReference - fun getReference(index: Int) = onTouchEventHandlerFingerprint.method.getInstruction(index) - .reference as MethodReference - - val seekbarTappingMethods = buildMap { - put("N", getReference(patternMatch.startIndex)) - put("O", getReference(patternMatch.endIndex)) + listOf( + getMethodReference(it.patternMatch!!.startIndex), + getMethodReference(it.patternMatch!!.endIndex) + ) } - val insertIndex = seekbarTappingFingerprint.patternMatch!!.endIndex - 1 - seekbarTappingFingerprint.method.apply { - val thisInstanceRegister = getInstruction(insertIndex - 1).registerC + val pointIndex = indexOfNewPointInstruction(this) + val invokeIndex = indexOfFirstInstructionOrThrow(pointIndex, Opcode.INVOKE_VIRTUAL) + val insertIndex = invokeIndex + 1 - val freeRegister = 0 - val xAxisRegister = 2 + val thisInstanceRegister = getInstruction(invokeIndex).registerC + val xAxisRegister = this.getInstruction(pointIndex).registerD + val freeRegister = findFreeRegister(insertIndex, thisInstanceRegister, xAxisRegister) - val oMethod = seekbarTappingMethods["O"]!! - val nMethod = seekbarTappingMethods["N"]!! - - fun MethodReference.toInvokeInstructionString() = - "invoke-virtual { v$thisInstanceRegister, v$xAxisRegister }, $this" + val oMethod = seekbarTappingMethods[0] + val nMethod = seekbarTappingMethods[1] addInstructionsWithLabels( insertIndex, """ - invoke-static { }, Lapp/revanced/extension/youtube/patches/SeekbarTappingPatch;->seekbarTappingEnabled()Z - move-result v$freeRegister - if-eqz v$freeRegister, :disabled - ${oMethod.toInvokeInstructionString()} - ${nMethod.toInvokeInstructionString()} - """, + invoke-static { }, $EXTENSION_CLASS_DESCRIPTOR->seekbarTappingEnabled()Z + move-result v$freeRegister + if-eqz v$freeRegister, :disabled + invoke-virtual { v$thisInstanceRegister, v$xAxisRegister }, $oMethod + invoke-virtual { v$thisInstanceRegister, v$xAxisRegister }, $nMethod + """, ExternalLabel("disabled", getInstruction(insertIndex)), ) } diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/seekbar/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/seekbar/Fingerprints.kt index 968ba89db..37ad6f750 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/seekbar/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/seekbar/Fingerprints.kt @@ -1,11 +1,15 @@ package app.revanced.patches.youtube.interaction.seekbar 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 import com.android.tools.smali.dexlib2.iface.reference.StringReference internal val swipingUpGestureParentFingerprint = fingerprint { @@ -101,14 +105,17 @@ internal val seekbarTappingFingerprint = fingerprint { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returns("Z") parameters("L") - opcodes( - Opcode.IPUT_OBJECT, - Opcode.INVOKE_VIRTUAL, - // Insert seekbar tapping instructions here. - Opcode.RETURN, - Opcode.INVOKE_VIRTUAL, - ) - literal { Integer.MAX_VALUE.toLong() } + custom { method, _ -> + method.name == "onTouchEvent" + && method.containsLiteralInstruction(Integer.MAX_VALUE.toLong()) + && indexOfNewPointInstruction(method) >= 0 + } +} + +internal fun indexOfNewPointInstruction(method: Method) = method.indexOfFirstInstructionReversed { + val reference = getReference() + reference?.definingClass == "Landroid/graphics/Point;" + && reference.name == "" } internal val slideToSeekFingerprint = fingerprint { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/seekbar/SeekbarPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/seekbar/SeekbarPatch.kt index 7c053f5e4..c1456522f 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/seekbar/SeekbarPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/seekbar/SeekbarPatch.kt @@ -26,6 +26,7 @@ val seekbarPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", + "20.12.46", ) ) } diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/swipecontrols/SwipeControlsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/swipecontrols/SwipeControlsPatch.kt index d20ebf9a7..2c55658fb 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/swipecontrols/SwipeControlsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/swipecontrols/SwipeControlsPatch.kt @@ -6,6 +6,7 @@ import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMu import app.revanced.patches.all.misc.resources.addResources import app.revanced.patches.all.misc.resources.addResourcesPatch import app.revanced.patches.shared.misc.settings.preference.InputType +import app.revanced.patches.shared.misc.settings.preference.ListPreference import app.revanced.patches.shared.misc.settings.preference.SwitchPreference import app.revanced.patches.shared.misc.settings.preference.TextPreference import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch @@ -42,9 +43,13 @@ private val swipeControlsResourcePatch = resourcePatch { SwitchPreference("revanced_swipe_haptic_feedback"), SwitchPreference("revanced_swipe_save_and_restore_brightness"), SwitchPreference("revanced_swipe_lowest_value_enable_auto_brightness"), - SwitchPreference("revanced_swipe_show_circular_overlay"), - SwitchPreference("revanced_swipe_overlay_minimal_style"), + ListPreference( + "revanced_swipe_overlay_style", + summaryKey = null, + ), TextPreference("revanced_swipe_overlay_background_opacity", inputType = InputType.NUMBER), + TextPreference("revanced_swipe_overlay_progress_color", inputType = InputType.TEXT_CAP_CHARACTERS), + TextPreference("revanced_swipe_text_overlay_size", inputType = InputType.NUMBER), TextPreference("revanced_swipe_overlay_timeout", inputType = InputType.NUMBER), TextPreference("revanced_swipe_threshold", inputType = InputType.NUMBER), TextPreference("revanced_swipe_volume_sensitivity", inputType = InputType.NUMBER), @@ -87,7 +92,8 @@ val swipeControlsPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/autocaptions/AutoCaptionsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/autocaptions/AutoCaptionsPatch.kt index 4af370bc5..aa90102d8 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/autocaptions/AutoCaptionsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/autocaptions/AutoCaptionsPatch.kt @@ -8,7 +8,9 @@ import app.revanced.patches.shared.misc.settings.preference.SwitchPreference import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch import app.revanced.patches.youtube.misc.settings.PreferenceScreen import app.revanced.patches.youtube.misc.settings.settingsPatch -import app.revanced.patches.youtube.shared.subtitleButtonControllerFingerprint + +private const val EXTENSION_CLASS_DESCRIPTOR = + "Lapp/revanced/extension/youtube/patches/DisableAutoCaptionsPatch;" val autoCaptionsPatch = bytecodePatch( name = "Disable auto captions", @@ -28,42 +30,41 @@ val autoCaptionsPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { addResources("youtube", "layout.autocaptions.autoCaptionsPatch") PreferenceScreen.PLAYER.addPreferences( - SwitchPreference("revanced_auto_captions"), + SwitchPreference("revanced_disable_auto_captions"), + ) + + subtitleTrackFingerprint.method.addInstructions( + 0, + """ + invoke-static {}, $EXTENSION_CLASS_DESCRIPTOR->disableAutoCaptions()Z + move-result v0 + if-eqz v0, :auto_captions_enabled + const/4 v0, 0x1 + return v0 + :auto_captions_enabled + nop + """ ) mapOf( startVideoInformerFingerprint to 0, - subtitleButtonControllerFingerprint to 1, + storyboardRendererDecoderRecommendedLevelFingerprint to 1 ).forEach { (fingerprint, enabled) -> fingerprint.method.addInstructions( 0, """ const/4 v0, 0x$enabled - sput-boolean v0, Lapp/revanced/extension/youtube/patches/DisableAutoCaptionsPatch;->captionsButtonDisabled:Z - """, + invoke-static { v0 }, $EXTENSION_CLASS_DESCRIPTOR->setCaptionsButtonStatus(Z)V + """ ) } - - subtitleTrackFingerprint.method.addInstructions( - 0, - """ - invoke-static {}, Lapp/revanced/extension/youtube/patches/DisableAutoCaptionsPatch;->autoCaptionsEnabled()Z - move-result v0 - if-eqz v0, :auto_captions_enabled - sget-boolean v0, Lapp/revanced/extension/youtube/patches/DisableAutoCaptionsPatch;->captionsButtonDisabled:Z - if-nez v0, :auto_captions_enabled - const/4 v0, 0x1 - return v0 - :auto_captions_enabled - nop - """, - ) } } diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/autocaptions/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/autocaptions/Fingerprints.kt index 3e1c15629..c657b72ec 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/autocaptions/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/autocaptions/Fingerprints.kt @@ -14,6 +14,13 @@ internal val startVideoInformerFingerprint = fingerprint { strings("pc") } +internal val storyboardRendererDecoderRecommendedLevelFingerprint = fingerprint { + returns("V") + accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) + parameters("L") + strings("#-1#") +} + internal val subtitleTrackFingerprint = fingerprint { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returns("Z") @@ -28,6 +35,6 @@ internal val subtitleTrackFingerprint = fingerprint { ) strings("DISABLE_CAPTIONS_OPTION") custom { _, classDef -> - classDef.endsWith("SubtitleTrack;") + classDef.endsWith("/SubtitleTrack;") } } diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/branding/CustomBrandingPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/branding/CustomBrandingPatch.kt index 79a1f3c09..cfb87c9f8 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/branding/CustomBrandingPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/branding/CustomBrandingPatch.kt @@ -49,7 +49,8 @@ val customBrandingPatch = resourcePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) val appName by stringOption( diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/branding/header/ChangeHeaderPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/branding/header/ChangeHeaderPatch.kt index 1ff78cbe3..240c001d6 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/branding/header/ChangeHeaderPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/branding/header/ChangeHeaderPatch.kt @@ -47,6 +47,7 @@ val changeHeaderPatch = resourcePatch( "19.43.41", "19.47.53", "20.07.39", + "20.12.46", ) ) diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/buttons/action/HideButtonsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/buttons/action/HideButtonsPatch.kt index f6a8a0ff6..c6dcc9e2d 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/buttons/action/HideButtonsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/buttons/action/HideButtonsPatch.kt @@ -28,7 +28,8 @@ val hideButtonsPatch = resourcePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { @@ -45,10 +46,11 @@ val hideButtonsPatch = resourcePatch( SwitchPreference("revanced_hide_remix_button"), SwitchPreference("revanced_hide_download_button"), SwitchPreference("revanced_hide_thanks_button"), + SwitchPreference("revanced_hide_ask_button"), SwitchPreference("revanced_hide_clip_button"), SwitchPreference("revanced_hide_playlist_button"), - ), - ), + ) + ) ) addLithoFilter("Lapp/revanced/extension/youtube/patches/components/ButtonsFilter;") diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/buttons/navigation/NavigationButtonsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/buttons/navigation/NavigationButtonsPatch.kt index 3feee5b30..577f6cac0 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/buttons/navigation/NavigationButtonsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/buttons/navigation/NavigationButtonsPatch.kt @@ -46,7 +46,8 @@ val navigationButtonsPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/buttons/overlay/HidePlayerOverlayButtonsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/buttons/overlay/HidePlayerOverlayButtonsPatch.kt index 7ab7431b8..504fad256 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/buttons/overlay/HidePlayerOverlayButtonsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/buttons/overlay/HidePlayerOverlayButtonsPatch.kt @@ -60,7 +60,8 @@ val hidePlayerOverlayButtonsPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/formfactor/ChangeFormFactorPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/formfactor/ChangeFormFactorPatch.kt index 4c431fa52..97259dcbe 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/formfactor/ChangeFormFactorPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/formfactor/ChangeFormFactorPatch.kt @@ -39,7 +39,8 @@ val changeFormFactorPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/endscreencards/HideEndscreenCardsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/endscreencards/HideEndscreenCardsPatch.kt index 876238ee3..ce452111d 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/endscreencards/HideEndscreenCardsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/endscreencards/HideEndscreenCardsPatch.kt @@ -65,7 +65,8 @@ val hideEndscreenCardsPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/endscreensuggestion/HideEndScreenSuggestedVideoPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/endscreensuggestion/HideEndScreenSuggestedVideoPatch.kt index 5ebcc637b..221487c9c 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/endscreensuggestion/HideEndScreenSuggestedVideoPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/endscreensuggestion/HideEndScreenSuggestedVideoPatch.kt @@ -37,7 +37,8 @@ val hideEndScreenSuggestedVideoPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/fullscreenambientmode/DisableFullscreenAmbientModePatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/fullscreenambientmode/DisableFullscreenAmbientModePatch.kt index d7115ac81..664c966e5 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/fullscreenambientmode/DisableFullscreenAmbientModePatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/fullscreenambientmode/DisableFullscreenAmbientModePatch.kt @@ -35,7 +35,8 @@ val disableFullscreenAmbientModePatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/Fingerprints.kt index 5216ea89a..e83689607 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/Fingerprints.kt @@ -1,6 +1,7 @@ package app.revanced.patches.youtube.layout.hide.general import app.revanced.patcher.fingerprint +import app.revanced.patches.youtube.layout.searchbar.wideSearchbarLayoutFingerprint import app.revanced.util.literal import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode @@ -16,9 +17,22 @@ internal val hideShowMoreButtonFingerprint = fingerprint { } /** - * 20.07+ + * 20.12+ */ internal val parseElementFromBufferFingerprint = fingerprint { + parameters("L", "L", "[B", "L", "L") + opcodes( + Opcode.IGET_OBJECT, + Opcode.INVOKE_INTERFACE, + Opcode.MOVE_RESULT_OBJECT, + ) + strings("Failed to parse Element") // String is a partial match. +} + +/** + * 20.07+ + */ +internal val parseElementFromBufferLegacy2007Fingerprint = fingerprint { parameters("L", "L", "[B", "L", "L") opcodes( Opcode.IGET_OBJECT, @@ -29,7 +43,10 @@ internal val parseElementFromBufferFingerprint = fingerprint { strings("Failed to parse Element") // String is a partial match. } -internal val parseElementFromBufferLegacyFingerprint = fingerprint { +/** + * 19.01 - 20.06 + */ +internal val parseElementFromBufferLegacy1901Fingerprint = fingerprint { parameters("L", "L", "[B", "L", "L") opcodes( Opcode.IGET_OBJECT, @@ -51,6 +68,9 @@ internal val showWatermarkFingerprint = fingerprint { parameters("L", "L") } +/** + * Matches same method as [wideSearchbarLayoutFingerprint]. + */ internal val yoodlesImageViewFingerprint = fingerprint { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returns("Landroid/view/View;") diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/HideLayoutComponentsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/HideLayoutComponentsPatch.kt index d66202255..59d05ef5e 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/HideLayoutComponentsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/HideLayoutComponentsPatch.kt @@ -21,6 +21,7 @@ import app.revanced.patches.youtube.misc.litho.filter.addLithoFilter import app.revanced.patches.youtube.misc.litho.filter.lithoFilterPatch import app.revanced.patches.youtube.misc.navigation.navigationBarHookPatch import app.revanced.patches.youtube.misc.playservice.is_20_07_or_greater +import app.revanced.patches.youtube.misc.playservice.is_20_09_or_greater import app.revanced.patches.youtube.misc.settings.PreferenceScreen import app.revanced.patches.youtube.misc.settings.settingsPatch import app.revanced.util.findFreeRegister @@ -43,14 +44,12 @@ var crowdfundingBoxId = -1L private set var youTubeLogo = -1L private set - var filterBarHeightId = -1L private set var relatedChipCloudMarginId = -1L private set var barContainerHeightId = -1L private set - var fabButtonId = -1L private set @@ -132,7 +131,8 @@ val hideLayoutComponentsPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { @@ -247,8 +247,9 @@ val hideLayoutComponentsPatch = bytecodePatch( // region Mix playlists - (if (is_20_07_or_greater) parseElementFromBufferFingerprint - else parseElementFromBufferLegacyFingerprint).let { + (if (is_20_09_or_greater) parseElementFromBufferFingerprint + else if (is_20_07_or_greater) parseElementFromBufferLegacy2007Fingerprint + else parseElementFromBufferLegacy1901Fingerprint).let { it.method.apply { val byteArrayParameter = "p3" val startIndex = it.patternMatch!!.startIndex diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/infocards/HideInfoCardsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/infocards/HideInfoCardsPatch.kt index 883fa1f16..9c24618c9 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/infocards/HideInfoCardsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/infocards/HideInfoCardsPatch.kt @@ -63,7 +63,8 @@ val hideInfoCardsPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/player/flyoutmenupanel/HidePlayerFlyoutMenuPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/player/flyoutmenupanel/HidePlayerFlyoutMenuPatch.kt index cf104622e..b9555c8fe 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/player/flyoutmenupanel/HidePlayerFlyoutMenuPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/player/flyoutmenupanel/HidePlayerFlyoutMenuPatch.kt @@ -30,7 +30,8 @@ val hidePlayerFlyoutMenuPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/rollingnumber/DisableRollingNumberAnimationPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/rollingnumber/DisableRollingNumberAnimationPatch.kt index cf2b23464..dbfd90f61 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/rollingnumber/DisableRollingNumberAnimationPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/rollingnumber/DisableRollingNumberAnimationPatch.kt @@ -35,7 +35,8 @@ val disableRollingNumberAnimationPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/shorts/HideShortsComponentsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/shorts/HideShortsComponentsPatch.kt index 025f9a1d7..37fc633d5 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/shorts/HideShortsComponentsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/shorts/HideShortsComponentsPatch.kt @@ -178,7 +178,8 @@ val hideShortsComponentsPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) hideShortsAppShortcutOption() diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/time/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/time/Fingerprints.kt index d109c6455..1f1876dc3 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/time/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/time/Fingerprints.kt @@ -1,24 +1,16 @@ package app.revanced.patches.youtube.layout.hide.time +import app.revanced.patcher.fingerprint import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode -import app.revanced.patcher.fingerprint -internal val timeCounterFingerprint = fingerprint( - fuzzyPatternScanThreshold = 1, -) { - returns("V") +internal val timeCounterFingerprint = fingerprint { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) + returns("V") parameters() opcodes( Opcode.SUB_LONG_2ADDR, Opcode.IGET_WIDE, - Opcode.SUB_LONG_2ADDR, - Opcode.IGET_OBJECT, - Opcode.INVOKE_STATIC, - Opcode.MOVE_RESULT_OBJECT, - Opcode.IGET_WIDE, - Opcode.IGET_WIDE, Opcode.SUB_LONG_2ADDR ) } diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/time/HideTimestampPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/time/HideTimestampPatch.kt index e6d3f8768..fb84759c6 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/time/HideTimestampPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/time/HideTimestampPatch.kt @@ -27,7 +27,8 @@ val hideTimestampPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/miniplayer/MiniplayerPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/miniplayer/MiniplayerPatch.kt index 98640db4e..d21c3952e 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/miniplayer/MiniplayerPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/miniplayer/MiniplayerPatch.kt @@ -30,6 +30,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.NarrowLiteralInstructio import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction import com.android.tools.smali.dexlib2.iface.reference.FieldReference +import com.android.tools.smali.dexlib2.iface.reference.MethodReference import com.android.tools.smali.dexlib2.iface.reference.TypeReference import com.android.tools.smali.dexlib2.immutable.ImmutableMethod import com.android.tools.smali.dexlib2.immutable.ImmutableMethodParameter @@ -172,7 +173,8 @@ val miniplayerPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { @@ -346,7 +348,12 @@ val miniplayerPatch = bytecodePatch( // endregion // region Legacy tablet miniplayer hooks. - val appNameStringIndex = miniplayerOverrideFingerprint.stringMatches!!.first().index + 2 + val appNameStringIndex = miniplayerOverrideFingerprint.let { + it.method.indexOfFirstInstructionOrThrow(it.stringMatches!!.first().index) { + val reference = getReference() + reference?.parameterTypes?.firstOrNull() == "Landroid/content/Context;" + } + } navigate(miniplayerOverrideFingerprint.originalMethod).to(appNameStringIndex).stop().apply { findReturnIndicesReversed().forEach { index -> insertLegacyTabletMiniplayerOverride(index) } } diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/panels/popup/PlayerPopupPanelsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/panels/popup/PlayerPopupPanelsPatch.kt index ec30f3593..8e48c0918 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/panels/popup/PlayerPopupPanelsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/panels/popup/PlayerPopupPanelsPatch.kt @@ -27,7 +27,8 @@ val playerPopupPanelsPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/player/background/PlayerControlsBackgroundPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/player/background/PlayerControlsBackgroundPatch.kt index c2f3b5414..ca109ed20 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/player/background/PlayerControlsBackgroundPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/player/background/PlayerControlsBackgroundPatch.kt @@ -18,7 +18,8 @@ val playerControlsBackgroundPatch = resourcePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/player/fullscreen/ExitFullscreenPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/player/fullscreen/ExitFullscreenPatch.kt index 30daf219b..a546c0652 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/player/fullscreen/ExitFullscreenPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/player/fullscreen/ExitFullscreenPatch.kt @@ -27,6 +27,7 @@ internal val exitFullscreenPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", + "20.12.46", ) ) diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/player/fullscreen/OpenVideosFullscreenPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/player/fullscreen/OpenVideosFullscreenPatch.kt index 7e6166fd5..0735dbb1c 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/player/fullscreen/OpenVideosFullscreenPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/player/fullscreen/OpenVideosFullscreenPatch.kt @@ -27,6 +27,7 @@ val openVideosFullscreenPatch = bytecodePatch( "com.google.android.youtube"( "19.47.53", "20.07.39", + "20.12.46", ) ) diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/player/overlay/CustomPlayerOverlayOpacityPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/player/overlay/CustomPlayerOverlayOpacityPatch.kt index 1c1b5b87c..dd78257eb 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/player/overlay/CustomPlayerOverlayOpacityPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/player/overlay/CustomPlayerOverlayOpacityPatch.kt @@ -58,7 +58,8 @@ val customPlayerOverlayOpacityPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/returnyoutubedislike/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/returnyoutubedislike/Fingerprints.kt index 23abbd2b1..3943d58ca 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/returnyoutubedislike/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/returnyoutubedislike/Fingerprints.kt @@ -1,6 +1,7 @@ package app.revanced.patches.youtube.layout.returnyoutubedislike import app.revanced.patcher.fingerprint +import app.revanced.util.literal import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode @@ -121,3 +122,12 @@ internal val textComponentLookupFingerprint = fingerprint { parameters("L") strings("…") } + +internal const val LITHO_NEW_TEXT_COMPONENT_FEATURE_FLAG = 45675738L + +internal val textComponentFeatureFlagFingerprint = fingerprint { + accessFlags(AccessFlags.FINAL) + returns("Z") + parameters() + literal { LITHO_NEW_TEXT_COMPONENT_FEATURE_FLAG } +} diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/returnyoutubedislike/ReturnYouTubeDislikePatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/returnyoutubedislike/ReturnYouTubeDislikePatch.kt index 2d972d917..fc01bf804 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/returnyoutubedislike/ReturnYouTubeDislikePatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/returnyoutubedislike/ReturnYouTubeDislikePatch.kt @@ -12,6 +12,7 @@ import app.revanced.patches.youtube.misc.litho.filter.addLithoFilter import app.revanced.patches.youtube.misc.litho.filter.lithoFilterPatch import app.revanced.patches.youtube.misc.playertype.playerTypeHookPatch import app.revanced.patches.youtube.misc.playservice.is_19_33_or_greater +import app.revanced.patches.youtube.misc.playservice.is_20_07_or_greater import app.revanced.patches.youtube.misc.playservice.is_20_10_or_greater import app.revanced.patches.youtube.misc.playservice.versionCheckPatch import app.revanced.patches.youtube.misc.settings.addSettingPreference @@ -59,7 +60,8 @@ val returnYouTubeDislikePatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { @@ -174,6 +176,14 @@ val returnYouTubeDislikePatch = bytecodePatch( // Filter that parses the video id from the UI addLithoFilter(FILTER_CLASS_DESCRIPTOR) + if (is_20_07_or_greater) { + // Turn off a/b flag that enables new code for creating litho spans. + // If enabled then the litho text span hook is never called. + // Target code is very obfuscated and exactly what the code does is not clear. + // Return late so debug patch logs if the flag is enabled. + textComponentFeatureFlagFingerprint.method.returnLate(false) + } + // Player response video id is needed to search for the video ids in Shorts litho components. hookPlayerResponseVideoId("$FILTER_CLASS_DESCRIPTOR->newPlayerResponseVideoId(Ljava/lang/String;Z)V") diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/searchbar/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/searchbar/Fingerprints.kt index 69fc26dae..2dbff83a2 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/searchbar/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/searchbar/Fingerprints.kt @@ -1,31 +1,27 @@ package app.revanced.patches.youtube.layout.searchbar import app.revanced.patcher.fingerprint +import app.revanced.patches.youtube.layout.hide.general.yoodlesImageViewFingerprint +import app.revanced.util.containsLiteralInstruction +import app.revanced.util.literal import com.android.tools.smali.dexlib2.AccessFlags -import com.android.tools.smali.dexlib2.Opcode - -internal val createSearchSuggestionsFingerprint = fingerprint { - opcodes( - Opcode.INVOKE_STATIC, - Opcode.MOVE_RESULT, - Opcode.CONST_4, - ) - strings("ss_rds") -} internal val setWordmarkHeaderFingerprint = fingerprint { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returns("V") parameters("Landroid/widget/ImageView;") - opcodes( - Opcode.IGET_OBJECT, - Opcode.INVOKE_STATIC, - Opcode.MOVE_RESULT, - Opcode.IF_NEZ, - Opcode.IGET_BOOLEAN, - Opcode.IF_EQZ, - Opcode.IGET_OBJECT, - Opcode.CONST, - null, // invoke-static or invoke-virtual. - ) + custom { methodDef, _ -> + methodDef.containsLiteralInstruction(ytPremiumWordmarkHeaderId) && + methodDef.containsLiteralInstruction(ytWordmarkHeaderId) + } +} + +/** + * Matches the same method as [yoodlesImageViewFingerprint]. + */ +internal val wideSearchbarLayoutFingerprint = fingerprint { + accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) + returns("Landroid/view/View;") + parameters("L", "L") + literal { actionBarRingoId } } diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/searchbar/WideSearchbarPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/searchbar/WideSearchbarPatch.kt index 6bb9aad78..988bd0a30 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/searchbar/WideSearchbarPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/searchbar/WideSearchbarPatch.kt @@ -1,30 +1,67 @@ package app.revanced.patches.youtube.layout.searchbar -import app.revanced.patcher.Fingerprint -import app.revanced.patcher.extensions.InstructionExtensions.addInstructions +import app.revanced.patcher.extensions.InstructionExtensions.addInstruction import app.revanced.patcher.extensions.InstructionExtensions.getInstruction -import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.patch.bytecodePatch -import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod +import app.revanced.patcher.patch.resourcePatch import app.revanced.patches.all.misc.resources.addResources import app.revanced.patches.all.misc.resources.addResourcesPatch +import app.revanced.patches.shared.misc.mapping.get +import app.revanced.patches.shared.misc.mapping.resourceMappingPatch +import app.revanced.patches.shared.misc.mapping.resourceMappings import app.revanced.patches.shared.misc.settings.preference.SwitchPreference import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch import app.revanced.patches.youtube.misc.settings.PreferenceScreen import app.revanced.patches.youtube.misc.settings.settingsPatch +import app.revanced.util.addInstructionsAtControlFlowLabel +import app.revanced.util.findInstructionIndicesReversedOrThrow +import app.revanced.util.getReference +import app.revanced.util.indexOfFirstInstructionOrThrow +import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction +import com.android.tools.smali.dexlib2.iface.reference.MethodReference private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/youtube/patches/WideSearchbarPatch;" +internal var ytWordmarkHeaderId = -1L + private set +internal var ytPremiumWordmarkHeaderId = -1L + private set +internal var actionBarRingoId = -1L + private set + +private val wideSearchbarResourcePatch = resourcePatch { + dependsOn(resourceMappingPatch) + + execute { + ytWordmarkHeaderId = resourceMappings[ + "attr", + "ytWordmarkHeader", + ] + + ytPremiumWordmarkHeaderId = resourceMappings[ + "attr", + "ytPremiumWordmarkHeader", + ] + + actionBarRingoId = resourceMappings[ + "layout", + "action_bar_ringo", + ] + } +} + val wideSearchbarPatch = bytecodePatch( name = "Wide search bar", - description = "Adds an option to replace the search icon with a wide search bar. This will hide the YouTube logo when active.", + description = "Adds an option to replace the search icon with a wide search bar. " + + "This will hide the YouTube logo when active.", ) { dependsOn( sharedExtensionPatch, settingsPatch, addResourcesPatch, + wideSearchbarResourcePatch, ) compatibleWith( @@ -35,7 +72,8 @@ val wideSearchbarPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { @@ -45,37 +83,45 @@ val wideSearchbarPatch = bytecodePatch( SwitchPreference("revanced_wide_searchbar"), ) - /** - * Navigate a fingerprints method at a given index mutably. - * - * @param index The index to navigate to. - * @param from The fingerprint to navigate the method on. - * @return The [MutableMethod] which was navigated on. - */ - fun BytecodePatchContext.walkMutable(index: Int, from: Fingerprint) = - navigate(from.originalMethod).to(index).stop() + setWordmarkHeaderFingerprint.let { + // Navigate to the method that checks if the YT logo is shown beside the search bar. + val shouldShowLogoMethod = with(it.originalMethod) { + val invokeStaticIndex = indexOfFirstInstructionOrThrow { + opcode == Opcode.INVOKE_STATIC && + getReference()?.returnType == "Z" + } + navigate(this).to(invokeStaticIndex).stop() + } - /** - * Injects instructions required for certain methods. - */ - fun MutableMethod.injectSearchBarHook() { - val insertIndex = implementation!!.instructions.size - 1 - val insertRegister = getInstruction(insertIndex).registerA + shouldShowLogoMethod.apply { + findInstructionIndicesReversedOrThrow(Opcode.RETURN).forEach { index -> + val register = getInstruction(index).registerA - addInstructions( - insertIndex, - """ - invoke-static {v$insertRegister}, $EXTENSION_CLASS_DESCRIPTOR->enableWideSearchbar(Z)Z - move-result v$insertRegister - """, - ) + addInstructionsAtControlFlowLabel( + index, + """ + invoke-static { v$register }, $EXTENSION_CLASS_DESCRIPTOR->enableWideSearchbar(Z)Z + move-result v$register + """ + ) + } + } } - mapOf( - setWordmarkHeaderFingerprint to 1, - createSearchSuggestionsFingerprint to createSearchSuggestionsFingerprint.patternMatch!!.startIndex, - ).forEach { (fingerprint, callIndex) -> - walkMutable(callIndex, fingerprint).injectSearchBarHook() + // Fix missing left padding when using wide searchbar. + wideSearchbarLayoutFingerprint.method.apply { + findInstructionIndicesReversedOrThrow { + val reference = getReference() + reference?.definingClass == "Landroid/view/LayoutInflater;" + && reference.name == "inflate" + }.forEach { inflateIndex -> + val register = getInstruction(inflateIndex + 1).registerA + + addInstruction( + inflateIndex + 2, + "invoke-static { v$register }, $EXTENSION_CLASS_DESCRIPTOR->setActionBar(Landroid/view/View;)V" + ) + } } } } diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/shortsautoplay/ShortsAutoplayPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/shortsautoplay/ShortsAutoplayPatch.kt index 40a2c59d5..67bb3c159 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/shortsautoplay/ShortsAutoplayPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/shortsautoplay/ShortsAutoplayPatch.kt @@ -39,7 +39,8 @@ val shortsAutoplayPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/shortsplayer/OpenShortsInRegularPlayerPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/shortsplayer/OpenShortsInRegularPlayerPatch.kt index c9bf0043d..1198c4ce2 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/shortsplayer/OpenShortsInRegularPlayerPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/shortsplayer/OpenShortsInRegularPlayerPatch.kt @@ -47,7 +47,8 @@ val openShortsInRegularPlayerPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/sponsorblock/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/sponsorblock/Fingerprints.kt index 612ceb6c8..80eca0557 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/sponsorblock/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/sponsorblock/Fingerprints.kt @@ -20,12 +20,6 @@ internal val appendTimeFingerprint = fingerprint { Opcode.MOVE_RESULT_OBJECT, Opcode.INVOKE_STATIC, Opcode.MOVE_RESULT, - Opcode.IF_NEZ, - Opcode.IGET_OBJECT, - Opcode.IGET_OBJECT, - Opcode.CHECK_CAST, - Opcode.INVOKE_VIRTUAL, - Opcode.RETURN_VOID, ) } diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/sponsorblock/SponsorBlockPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/sponsorblock/SponsorBlockPatch.kt index e9f7e945c..832b70dcf 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/sponsorblock/SponsorBlockPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/sponsorblock/SponsorBlockPatch.kt @@ -114,7 +114,8 @@ val sponsorBlockPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/spoofappversion/SpoofAppVersionPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/spoofappversion/SpoofAppVersionPatch.kt index 9268ed086..486bb398d 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/spoofappversion/SpoofAppVersionPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/spoofappversion/SpoofAppVersionPatch.kt @@ -64,7 +64,8 @@ val spoofAppVersionPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/startpage/ChangeStartPagePatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/startpage/ChangeStartPagePatch.kt index 54106b5fc..7dda5c308 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/startpage/ChangeStartPagePatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/startpage/ChangeStartPagePatch.kt @@ -7,6 +7,9 @@ import app.revanced.patcher.patch.bytecodePatch import app.revanced.patches.all.misc.resources.addResources import app.revanced.patches.all.misc.resources.addResourcesPatch import app.revanced.patches.shared.misc.settings.preference.ListPreference +import app.revanced.patches.shared.misc.settings.preference.PreferenceCategory +import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference.Sorting +import app.revanced.patches.shared.misc.settings.preference.SwitchPreference import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch import app.revanced.patches.youtube.misc.settings.PreferenceScreen import app.revanced.patches.youtube.misc.settings.settingsPatch @@ -35,17 +38,26 @@ val changeStartPagePatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { addResources("youtube", "layout.startpage.changeStartPagePatch") PreferenceScreen.GENERAL_LAYOUT.addPreferences( - ListPreference( - key = "revanced_change_start_page", - summaryKey = null, - ), + PreferenceCategory( + titleKey = null, + sorting = Sorting.UNSORTED, + tag = "app.revanced.extension.shared.settings.preference.NoTitlePreferenceCategory", + preferences = setOf( + ListPreference( + key = "revanced_change_start_page", + summaryKey = null, + ), + SwitchPreference("revanced_change_start_page_always") + ) + ) ) // Hook browseId. diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/startupshortsreset/DisableResumingShortsOnStartupPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/startupshortsreset/DisableResumingShortsOnStartupPatch.kt index a8945a528..8c63cea88 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/startupshortsreset/DisableResumingShortsOnStartupPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/startupshortsreset/DisableResumingShortsOnStartupPatch.kt @@ -40,7 +40,8 @@ val disableResumingShortsOnStartupPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/theme/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/theme/Fingerprints.kt index 9ed098a1b..a793eaa3c 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/theme/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/theme/Fingerprints.kt @@ -10,13 +10,6 @@ internal val lithoThemeFingerprint = fingerprint { returns("V") parameters("Landroid/graphics/Rect;") opcodes( - Opcode.APUT, - Opcode.NEW_INSTANCE, - Opcode.INVOKE_DIRECT, - Opcode.IGET_OBJECT, - Opcode.SGET_OBJECT, - Opcode.INVOKE_VIRTUAL, - Opcode.IPUT_OBJECT, Opcode.IGET, Opcode.IF_EQZ, Opcode.INVOKE_VIRTUAL, diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/theme/ThemePatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/theme/ThemePatch.kt index da0f29fc8..73e84d659 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/theme/ThemePatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/theme/ThemePatch.kt @@ -223,7 +223,8 @@ val themePatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/AlternativeThumbnailsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/AlternativeThumbnailsPatch.kt index f86e19f38..805782f40 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/AlternativeThumbnailsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/AlternativeThumbnailsPatch.kt @@ -39,7 +39,8 @@ val alternativeThumbnailsPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/BypassImageRegionRestrictionsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/BypassImageRegionRestrictionsPatch.kt index f353b7811..2563461cb 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/BypassImageRegionRestrictionsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/BypassImageRegionRestrictionsPatch.kt @@ -33,7 +33,8 @@ val bypassImageRegionRestrictionsPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/announcements/AnnouncementsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/announcements/AnnouncementsPatch.kt index d3ff7c1cd..b701cbc36 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/announcements/AnnouncementsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/announcements/AnnouncementsPatch.kt @@ -29,7 +29,8 @@ val announcementsPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/autorepeat/AutoRepeatPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/autorepeat/AutoRepeatPatch.kt index e29154e63..79384582b 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/autorepeat/AutoRepeatPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/autorepeat/AutoRepeatPatch.kt @@ -30,7 +30,8 @@ val autoRepeatPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/backgroundplayback/BackgroundPlaybackPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/backgroundplayback/BackgroundPlaybackPatch.kt index 4826dc78b..45c2f061f 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/backgroundplayback/BackgroundPlaybackPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/backgroundplayback/BackgroundPlaybackPatch.kt @@ -57,7 +57,8 @@ val backgroundPlaybackPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/debugging/EnableDebuggingPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/debugging/EnableDebuggingPatch.kt index b244f0dc9..f4facb097 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/debugging/EnableDebuggingPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/debugging/EnableDebuggingPatch.kt @@ -40,7 +40,8 @@ val enableDebuggingPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/dimensions/spoof/SpoofDeviceDimensionsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/dimensions/spoof/SpoofDeviceDimensionsPatch.kt index 2f9a2602b..e5c7bb459 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/dimensions/spoof/SpoofDeviceDimensionsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/dimensions/spoof/SpoofDeviceDimensionsPatch.kt @@ -30,7 +30,8 @@ val spoofDeviceDimensionsPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/dns/CheckWatchHistoryDomainNameResolutionPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/dns/CheckWatchHistoryDomainNameResolutionPatch.kt index 558d67674..ac523b63e 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/dns/CheckWatchHistoryDomainNameResolutionPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/dns/CheckWatchHistoryDomainNameResolutionPatch.kt @@ -27,7 +27,8 @@ val checkWatchHistoryDomainNameResolutionPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/fix/backtoexitgesture/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/fix/backtoexitgesture/Fingerprints.kt index fe8f4684a..21dfd84f8 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/fix/backtoexitgesture/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/fix/backtoexitgesture/Fingerprints.kt @@ -9,9 +9,7 @@ internal val onBackPressedFingerprint = fingerprint { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) opcodes(Opcode.RETURN_VOID) custom { method, classDef -> - method.name == "onBackPressed" && - // Old versions of YouTube called this class "WatchWhileActivity" instead. - (classDef.endsWith("MainActivity;") || classDef.endsWith("WatchWhileActivity;")) + method.name == "onBackPressed" && classDef.endsWith("MainActivity;") } } @@ -27,6 +25,9 @@ internal val scrollPositionFingerprint = fingerprint { strings("scroll_position") } +/** + * Resolves using class found in [recyclerViewTopScrollingParentFingerprint]. + */ internal val recyclerViewTopScrollingFingerprint = fingerprint { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returns("V") diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/gms/GmsCoreSupportPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/gms/GmsCoreSupportPatch.kt index e80e804db..1c2246077 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/gms/GmsCoreSupportPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/gms/GmsCoreSupportPatch.kt @@ -41,7 +41,8 @@ val gmsCoreSupportPatch = gmsCoreSupportPatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) } diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/links/BypassURLRedirectsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/links/BypassURLRedirectsPatch.kt index fdb65ff27..cd60eb645 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/links/BypassURLRedirectsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/links/BypassURLRedirectsPatch.kt @@ -38,7 +38,8 @@ val bypassURLRedirectsPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/links/OpenLinksExternallyPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/links/OpenLinksExternallyPatch.kt index 7d3cc99f4..3beb329e2 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/links/OpenLinksExternallyPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/links/OpenLinksExternallyPatch.kt @@ -47,7 +47,8 @@ val openLinksExternallyPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/navigation/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/navigation/Fingerprints.kt index 9df0cda0c..8a0bc3348 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/navigation/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/navigation/Fingerprints.kt @@ -47,11 +47,7 @@ internal val mainActivityOnBackPressedFingerprint = fingerprint { returns("V") parameters() custom { method, classDef -> - val matchesClass = classDef.endsWith("MainActivity;") || - // Old versions of YouTube called this class "WatchWhileActivity" instead. - classDef.endsWith("WatchWhileActivity;") - - matchesClass && method.name == "onBackPressed" + method.name == "onBackPressed" && classDef.endsWith("MainActivity;") } } diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/playservice/VersionCheckPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/playservice/VersionCheckPatch.kt index 2d76094af..9cdd5dd48 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/playservice/VersionCheckPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/playservice/VersionCheckPatch.kt @@ -58,6 +58,10 @@ var is_20_09_or_greater = false private set var is_20_10_or_greater = false private set +var is_20_14_or_greater = false + private set +var is_20_15_or_greater = false + private set val versionCheckPatch = resourcePatch( description = "Uses the Play Store service version to find the major/minor version of the YouTube target app.", @@ -98,5 +102,7 @@ val versionCheckPatch = resourcePatch( is_20_07_or_greater = 250805000 <= playStoreServicesVersion is_20_09_or_greater = 251006000 <= playStoreServicesVersion is_20_10_or_greater = 251105000 <= playStoreServicesVersion + is_20_14_or_greater = 251505000 <= playStoreServicesVersion + is_20_15_or_greater = 251605000 <= playStoreServicesVersion } } diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/privacy/RemoveTrackingQueryParameterPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/privacy/RemoveTrackingQueryParameterPatch.kt index 95897a8ab..1eb287abc 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/privacy/RemoveTrackingQueryParameterPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/privacy/RemoveTrackingQueryParameterPatch.kt @@ -36,7 +36,8 @@ val removeTrackingQueryParameterPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/spoof/SpoofVideoStreamsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/spoof/SpoofVideoStreamsPatch.kt index 27ccc881d..f75eef328 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/spoof/SpoofVideoStreamsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/spoof/SpoofVideoStreamsPatch.kt @@ -9,6 +9,7 @@ import app.revanced.patches.shared.misc.spoof.spoofVideoStreamsPatch import app.revanced.patches.youtube.misc.playservice.is_19_34_or_greater import app.revanced.patches.youtube.misc.playservice.is_20_03_or_greater import app.revanced.patches.youtube.misc.playservice.is_20_10_or_greater +import app.revanced.patches.youtube.misc.playservice.is_20_14_or_greater import app.revanced.patches.youtube.misc.playservice.versionCheckPatch import app.revanced.patches.youtube.misc.settings.PreferenceScreen import app.revanced.patches.youtube.misc.settings.settingsPatch @@ -22,7 +23,8 @@ val spoofVideoStreamsPatch = spoofVideoStreamsPatch({ "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) dependsOn( @@ -33,7 +35,8 @@ val spoofVideoStreamsPatch = spoofVideoStreamsPatch({ }, { is_19_34_or_greater }, { - is_20_10_or_greater + // In 20.14 the flag was merged with 20.03 start playback flag. + is_20_10_or_greater && !is_20_14_or_greater }, { is_20_03_or_greater }, { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/zoomhaptics/ZoomHapticsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/zoomhaptics/ZoomHapticsPatch.kt index 23d9ced21..0e961dfeb 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/zoomhaptics/ZoomHapticsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/zoomhaptics/ZoomHapticsPatch.kt @@ -27,7 +27,8 @@ val zoomHapticsPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/shared/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/shared/Fingerprints.kt index a242d6fad..d0c7d30a2 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/shared/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/shared/Fingerprints.kt @@ -33,8 +33,7 @@ internal val mainActivityFingerprint = fingerprint { accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR) parameters() custom { _, classDef -> - // Old versions of YouTube called this class "WatchWhileActivity" instead. - classDef.endsWith("MainActivity;") || classDef.endsWith("WatchWhileActivity;") + classDef.endsWith("MainActivity;") } } @@ -42,12 +41,7 @@ internal val mainActivityOnCreateFingerprint = fingerprint { returns("V") parameters("Landroid/os/Bundle;") custom { method, classDef -> - method.name == "onCreate" && - ( - classDef.endsWith("MainActivity;") || - // Old versions of YouTube called this class "WatchWhileActivity" instead. - classDef.endsWith("WatchWhileActivity;") - ) + method.name == "onCreate" && classDef.endsWith("MainActivity;") } } diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/video/audio/ForceOriginalAudioPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/video/audio/ForceOriginalAudioPatch.kt index dcb83a963..461b8485a 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/video/audio/ForceOriginalAudioPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/video/audio/ForceOriginalAudioPatch.kt @@ -47,7 +47,8 @@ val forceOriginalAudioPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/video/hdr/DisableHdrPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/video/hdr/DisableHdrPatch.kt index 76f996738..d83fcaa8f 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/video/hdr/DisableHdrPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/video/hdr/DisableHdrPatch.kt @@ -34,7 +34,8 @@ val disableHdrPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", - ), + "20.12.46", + ) ) execute { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/video/information/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/video/information/Fingerprints.kt index d0c961c9d..349f7300b 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/video/information/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/video/information/Fingerprints.kt @@ -117,13 +117,6 @@ internal val playbackSpeedMenuSpeedChangedFingerprint = fingerprint { returns("L") parameters("L") opcodes( - Opcode.IGET_OBJECT, - Opcode.INVOKE_INTERFACE, - Opcode.MOVE_RESULT_OBJECT, - Opcode.IF_EQZ, - Opcode.IGET_OBJECT, - Opcode.INVOKE_INTERFACE, - Opcode.MOVE_RESULT_OBJECT, Opcode.IGET, Opcode.INVOKE_VIRTUAL, Opcode.SGET_OBJECT, diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/video/playerresponse/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/video/playerresponse/Fingerprints.kt index 562156fad..d958285b4 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/video/playerresponse/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/video/playerresponse/Fingerprints.kt @@ -5,9 +5,35 @@ import com.android.tools.smali.dexlib2.AccessFlags import org.stringtemplate.v4.compiler.Bytecode.instructions /** - * For targets 20.10 and later. + * For targets 20.15 and later. */ internal val playerParameterBuilderFingerprint = fingerprint { + accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) + returns("L") + parameters( + "Ljava/lang/String;", // VideoId. + "[B", + "Ljava/lang/String;", // Player parameters proto buffer. + "Ljava/lang/String;", + "I", + "Z", + "I", + "L", + "Ljava/util/Set;", + "Ljava/lang/String;", + "Ljava/lang/String;", + "L", + "Z", // Appears to indicate if the video id is being opened or is currently playing. + "Z", + "Z" + ) + strings("psps") +} + +/** + * For targets 20.10 to 20.14. + */ +internal val playerParameterBuilder2010Fingerprint = fingerprint { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returns("L") parameters( diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/video/playerresponse/PlayerResponseMethodHookPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/video/playerresponse/PlayerResponseMethodHookPatch.kt index 4b02324bc..898f40096 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/video/playerresponse/PlayerResponseMethodHookPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/video/playerresponse/PlayerResponseMethodHookPatch.kt @@ -9,6 +9,7 @@ import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch import app.revanced.patches.youtube.misc.playservice.is_19_23_or_greater import app.revanced.patches.youtube.misc.playservice.is_20_02_or_greater import app.revanced.patches.youtube.misc.playservice.is_20_10_or_greater +import app.revanced.patches.youtube.misc.playservice.is_20_15_or_greater import app.revanced.patches.youtube.misc.playservice.versionCheckPatch private val hooks = mutableSetOf() @@ -39,9 +40,12 @@ val playerResponseMethodHookPatch = bytecodePatch { execute { val fingerprint : Fingerprint - if (is_20_10_or_greater) { + if (is_20_15_or_greater) { parameterIsShortAndOpeningOrPlaying = 13 fingerprint = playerParameterBuilderFingerprint + } else if (is_20_10_or_greater) { + parameterIsShortAndOpeningOrPlaying = 13 + fingerprint = playerParameterBuilder2010Fingerprint } else if (is_20_02_or_greater) { parameterIsShortAndOpeningOrPlaying = 12 fingerprint = playerParameterBuilder2002Fingerprint diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/video/quality/VideoQualityPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/video/quality/VideoQualityPatch.kt index bf696a7ef..3e292250a 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/video/quality/VideoQualityPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/video/quality/VideoQualityPatch.kt @@ -29,6 +29,7 @@ val videoQualityPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", + "20.12.46", ) ) diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/video/speed/PlaybackSpeedPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/video/speed/PlaybackSpeedPatch.kt index d86cf49d6..2ea4ba0e8 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/video/speed/PlaybackSpeedPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/video/speed/PlaybackSpeedPatch.kt @@ -34,6 +34,7 @@ val playbackSpeedPatch = bytecodePatch( "19.43.41", "19.47.53", "20.07.39", + "20.12.46", ) ) diff --git a/patches/src/main/kotlin/app/revanced/util/BytecodeUtils.kt b/patches/src/main/kotlin/app/revanced/util/BytecodeUtils.kt index b0bd29fd7..c6de63c83 100644 --- a/patches/src/main/kotlin/app/revanced/util/BytecodeUtils.kt +++ b/patches/src/main/kotlin/app/revanced/util/BytecodeUtils.kt @@ -698,29 +698,54 @@ fun BytecodePatchContext.forEachLiteralValueInstruction( } /** - * Return the method early. + * Overrides the first instruction of a method with a constant return value. + * None of the method code will ever execute. */ -fun MutableMethod.returnEarly(bool: Boolean = false) { +fun MutableMethod.returnEarly(overrideValue: Boolean = false) = overrideReturnValue(overrideValue, false) + +/** + * Overrides all return statements with a constant value. + * All method code is executed the same as unpatched. + * + * @see returnEarly + */ +internal fun MutableMethod.returnLate(overrideValue: Boolean = false) = overrideReturnValue(overrideValue, true) + +private fun MutableMethod.overrideReturnValue(bool: Boolean, returnLate: Boolean) { val const = if (bool) "0x1" else "0x0" - val stringInstructions = when (returnType.first()) { - 'L' -> + val instructions = when (returnType.first()) { + 'L' -> { """ const/4 v0, $const return-object v0 """ + } - 'V' -> "return-void" - 'I', 'Z' -> + 'V' -> { + if (returnLate) throw IllegalArgumentException("Cannot return late for method of void type") + "return-void" + } + + 'I', 'Z' -> { """ const/4 v0, $const return v0 """ + } else -> throw Exception("Return type is not supported: $this") } - addInstructions(0, stringInstructions) + if (returnLate) { + findInstructionIndicesReversed { + opcode == RETURN || opcode == RETURN_OBJECT + }.forEach { index -> + addInstructionsAtControlFlowLabel(index, instructions) + } + } else { + addInstructions(0, instructions) + } } /** diff --git a/patches/src/main/resources/addresources/values-af-rZA/strings.xml b/patches/src/main/resources/addresources/values-af-rZA/strings.xml index c0d8f55c8..bc8bec158 100644 --- a/patches/src/main/resources/addresources/values-af-rZA/strings.xml +++ b/patches/src/main/resources/addresources/values-af-rZA/strings.xml @@ -84,6 +84,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-am-rET/strings.xml b/patches/src/main/resources/addresources/values-am-rET/strings.xml index c0d8f55c8..bc8bec158 100644 --- a/patches/src/main/resources/addresources/values-am-rET/strings.xml +++ b/patches/src/main/resources/addresources/values-am-rET/strings.xml @@ -84,6 +84,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-ar-rSA/strings.xml b/patches/src/main/resources/addresources/values-ar-rSA/strings.xml index b6befde99..66b260aa8 100644 --- a/patches/src/main/resources/addresources/values-ar-rSA/strings.xml +++ b/patches/src/main/resources/addresources/values-ar-rSA/strings.xml @@ -459,29 +459,38 @@ Second \"item\" text" تمكين إيماءة السطوع التلقائي التمرير لأسفل إلى أدنى قيمة للسطوع يمكّن السطوع التلقائي لا يؤدي التمرير لأسفل إلى أدنى قيمة إلى تمكين السطوع التلقائي + تلقائي مهلة واجهة التمرير مقدار الوقت الذي تظهر فيه واجهة التمرير بعد التغيير بجزء الثانية تعتيم خلفية واجهة التمرير السريع قيمة التعتيم بين 0-100 يجب أن يكون تعتيم التمرير السريع بين 0-100 + لون شريط تقدم واجهة التمرير + لون شريط التقدم لعناصر التحكم في مستوى الصوت والسطوع + لون شريط التقدم غير صالح + حجم نص واجهة التمرير + حجم النص لواجهة التمرير بين 1-30 + يجب أن يكون حجم النص بين 1-30 مقدار حد التمرير الحد الأدنى من التمرير قبل اكتشاف الإيماءة حساسية إيماءة تمرير مستوى الصوت مقدار تغير مستوى الصوت لكل تمريرة - عرض الواجهة الدائرية - يتم عرض التراكب الدائري - يتم عرض التراكب الأفقي - تمكين النمط الأدنى - تم تمكين النمط الواجهة الأدنى - تم تعطيل نمط الواجهة الأدنى + نمط واجهة التمرير + واجهة أفقية + واجهة أفقية (الأدنى - الأعلى) + واجهة أفقية (الأدنى - المنتصف) + واجهة دائرية + واجهة دائرية (الأدنى) + واجهة عمودية + واجهة عمودية (الأدنى) تمكين إيماءة التمرير لتغيير الفيديو سيؤدي التمرير في وضع ملء الشاشة إلى التغيير للفيديو التالي/السابق لن يؤدي التمرير في وضع ملء الشاشة إلى التغيير للفيديو التالي/السابق - تعطيل التَّرْجَمَة التلقائية - تم تعطيل التَّرْجَمَة التلقائية - تم تمكين التَّرْجَمَة التلقائية + تعطيل الترجمة التلقائية + تم تعطيل الترجمة التلقائية + تم تمكين الترجمة التلقائية أزرار الإجراء @@ -513,6 +522,11 @@ Second \"item\" text" إخفاء شكرًا تم إخفاء زر شكرًا يتم عرض زر شكرًا + + إخفاء \"Ask\" + تم إخفاء زر \"Ask\" + يتم عرض زر \"Ask\" إخفاء المقطع تم إخفاء زر إنشاء مقطع @@ -832,8 +846,8 @@ Second \"item\" text" زر أعجبني مصمم لأدنى عرض زر أعجبني مصمم لأفضل مظهر عرض الإعجابات المقدرة - يتم عرض الإعجابات المقدرة - تم إخفاء الإعجابات المقدرة + يتم عرض عدد تقديري للإعجابات في مقاطع الفيديو التي تم تعطيل الإعجابات فيها + لا يتم عرض عدد الإعجابات المقدرة عرض ملاحظة إذا كان API غير متاح يتم عرض الملاحظة في حالة عدم توفر Return YouTube Dislike لا يتم عرض الملاحظة في حالة عدم توفر Return YouTube Dislike @@ -1107,7 +1121,7 @@ Second \"item\" text" 19.01.34 - استعادة أيقونات التنقل القديمة - تعيين صفحة البداية + تغيير صفحة البداية الافتراضي كلّ الاشتراكات تصفح القنوات @@ -1132,6 +1146,11 @@ Second \"item\" text" الواقع الافتراضي شاهد لاحقًا فيديوهاتك + تغيير صفحة البداية دائمًا + "يتم تغيير صفحة البداية دائمًا + +القيد: قد لا يعمل استخدام زر الرجوع على شريط الأدوات" + يتم تغيير صفحة البداية فقط عند بدء تشغيل التطبيق تعطيل استئناف مشغل Shorts diff --git a/patches/src/main/resources/addresources/values-as-rIN/strings.xml b/patches/src/main/resources/addresources/values-as-rIN/strings.xml index d0d71ccc6..d179e15f4 100644 --- a/patches/src/main/resources/addresources/values-as-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-as-rIN/strings.xml @@ -84,6 +84,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-az-rAZ/strings.xml b/patches/src/main/resources/addresources/values-az-rAZ/strings.xml index 87a3e49a6..1f76324a6 100644 --- a/patches/src/main/resources/addresources/values-az-rAZ/strings.xml +++ b/patches/src/main/resources/addresources/values-az-rAZ/strings.xml @@ -136,7 +136,7 @@ Gözlənilməz hallardan xəbərdar olmayacaqsınız." • Son xəbərlər • İzləməyə davam et • Daha çox kanallar kəşf et -• Alış-veriş +• Mağaza • Təkrar izlə" Hissələr göstərilir - Kanalda \"Mağazaya ziyarət\" düyməsin gizlə + Kanalda \"Mağazaya baxın\" düyməsin gizlə Kanal səhifəsindəki düymə gizlidir Kanal səhifəsindəki düymə görünür Veb axtarış nəticələrini gizlət @@ -459,27 +459,38 @@ Ekranın sağ tərəfində düzünə sürüşdürərək səs səviyyəsini tənz Avto-parlaqlıq jestini aktivləşdir Parlaqlıq ən aşağı dəyərinə sürüşdürüləndə avto-parlaqlıq aktivləşir Parlaqlığı ən aşağı dəyərə sürüşdürəndə avto-parlaqlıq aktivləşmir + Avtomatik Sürüşdürmə örtüyü müddəti Örtüyün göründüyü millisaniyələrin sayı Sürüşdürmə cildi arxa plan qeyri-şəffaflığı 0-100 arası qeyri-şəffaflıq dəyəri Sürüşmə qeyri-şəffaflığı 0-100 arası olmalıdır + Sürüşdürmə örtüyü irəliləyiş cizgisi rəngi + Səs səviyyəsinə və parlaqlığa nəzarət üçün irəliləyiş cizgisi rəngi + Yanlış irəliləyiş cizgisi rəngi + Sürüşdürmə örtüyü mətn ölçüsü + Sürüşmə üçün mətn ölçüsü 1-30 arasındadır + Mətn ölçüsü 1-30 arası olmalıdır Sürüşdürmə böyüklük həddi Sürüşdürmənin icra edilməsi üçün son dəyər - Dairəvi örtüyü göstər - Dairəvi örtük göstərilir - Düzünə örtük göstərilir - Ən kiçik üslubu aktivləşdir - Ən kiçik örtük üslubu aktivləşdirilib - Ən kiçik örtük üslubu qapalıdır + Səs səviyyəsin sürüşdürmə təzyiqi + Hər sürüşdürmədə səs səviyyəsi nə qədər dəyişir + Sürüşmə örtüyü üslubu + Üfüqi örtük + Üfüqi örtük (ən kiçik- yüksək) + Üfüqi örtük (ən kiçik - mərkəz) + Dairəvi örtük + Dairəvi örtük (ən kiçik) + Şaquli örtük + Şaquli örtük (ən kiçik) Videoları ötürmək üçün sürüşdürməni aktiv et Tam ekran rejimində sürüşdürmə növbəti/əvvəlki videoya ötürəcək Tam ekran rejimində sürüşdürmə növbəti/əvvəlki videoya ötürməyəcək - Avtomatik titrləri qeyri-aktiv et - Avtomatik titrlər qeyri-aktivdir - Avtomatik titrlər aktivdir + Avtomatik titrləri qapat + Avtomatik titrlər qapalıdır + Avtomatik titrlər aktivdir Fəaliyyət düymələri @@ -511,6 +522,8 @@ Ekranın sağ tərəfində düzünə sürüşdürərək səs səviyyəsini tənz \"Təşəkkürlər\"i gizlət Təşəkkür düyməsi gizlidir Təşəkkür düyməsi göstərilir + Kəsmə/ gizlət Kəsmə düyməsi gizlidir @@ -829,8 +842,8 @@ Məhdudiyyət: Bəyənməmələr gizli rejimdə görünməyə bilər" Daha kiçik en üçün hazırlanmış Bəyən düyməsi Ən yaxşı görünüş üçün tərtib edilmiş Bəyən düyməsi Təxmini bəyənmələri göstər - Təxmini bəyənmələr göstərilir - Təxmini bəyənmələr gizlədilir + Bəyənmələri olmayan videolar təxmini bəyənmə sayını göstərir + Təxmini bəyənmələr göstərilmir API əlçatan deyilsə ani bildiriş göstər Return YouTube Dislike əlçatan deyilsə ani bildiriş göstər Return YouTube Dislike əlçatan deyilsə ani bildiriş göstərmə @@ -1104,7 +1117,7 @@ Sonradan qapadılarsa, UI səhvlərin önləmək üçün tətbiq məlumatların 19.01.34 - Köhnə fəaliyyət simvolların bərpa et - Başlanğıc səhifəsini təyin et + Başlatma səhifəsini dəyişdir İlkin Bütün abunəliklər Kanallara nəzər yetir @@ -1122,13 +1135,18 @@ Sonradan qapadılarsa, UI səhvlərin önləmək üçün tətbiq məlumatların Bildirişlər Pleylistlər Axtarış - Alış-Veriş + Mağaza İdman Abunəliklər Trendlər Faktiki Həyat Sonra izlə Klipləriniz + Başlatma səhifəsini həmişə dəyişdir + "Başlatma səhifəsi həmişə dəyişdirilir + +Məhdudiyyət: Alətlər cizgisindəki geri düyməsin istifadə işləməyə bilər" + Başlatma səhifəsi yalnız tətbiq işə salındıqda dəyişdirilir Shorts oynadıcı başladıcını qapat diff --git a/patches/src/main/resources/addresources/values-be-rBY/strings.xml b/patches/src/main/resources/addresources/values-be-rBY/strings.xml index 6df67c997..6a768754a 100644 --- a/patches/src/main/resources/addresources/values-be-rBY/strings.xml +++ b/patches/src/main/resources/addresources/values-be-rBY/strings.xml @@ -459,29 +459,38 @@ Second \"item\" text" Уключыць жэст аўтаматычнай яркасці Правядзіце пальцам уніз да самага нізкага значэння яркасці, каб уключыць аўтаматычную яркасць Правядзенне пальцам уніз да самага нізкага значэння не ўключае аўтаматычную яркасць + Аўто Тайм-аўт накладання пальцам Працягласць бачнага накладання ў мілісекундах Непразрыстасць фону накладкі пракруткі Значэнне непразрыстасці паміж 0-100 Непразрыстасць пракруткі павінна быць паміж 0-100 + Колер слупка прагрэсу накладкі правядзення + Колер слупка прагрэсу для рэгулявання гучнасці і яркасці + Несапраўдны колер слупка прагрэсу + Памер тэксту накладкі правядзення + Памер тэксту для накладкі правядзення ад 1 да 30 + Памер тэксту павінен быць у межах ад 1 да 30 Парог велічыні пальцам Велічыня парогавага значэння для правядзення пальцам Адчувальнасць правядзення для гучнасці Наколькі змяняецца гучнасць пры кожным правядзенні - Паказваць кругавое накладанне - Кругавое накладанне паказваецца - Гарызантальнае накладанне паказваецца - Уключыць мінімальны стыль - Уключаны мінімальны стыль накладання - Мінімальны стыль накладання выключаны + Стыль накладкі правядзення + Гарызантальная накладка + Гарызантальная накладка (мінімальная — зверху) + Гарызантальная накладка (мінімальная — па цэнтры) + Кругавая накладка + Кругавая накладка (мінімальная) + Вертыкальная накладка + Вертыкальная накладка (мінімальная) Уключыць зьмену відэа праз правядзенне пальцам Правядзенне пальцам у рэжыме поўнага экрана зьменіць відэа на наступнае/папярэдняе Правядзенне пальцам у рэжыме поўнага экрана не зьменіць відэа на наступнае/папярэдняе - Адключыць аўтаматычныя цітры - Аўтаматычныя цітры адключаны - Аўтаматычныя цітры ўключаны + Адключыць аўтаматычныя цітры + Аўтаматычныя субцітры адключаны + Аўтаматычныя субцітры ўключаны Кнопкі дзеянняў @@ -513,6 +522,11 @@ Second \"item\" text" Схаваць Дзякуй Кнопка падзякі схавана Паказана кнопка падзякі + + Схаваць кнопку «Запытацца» + Кнопка «Запытацца» схаваная + Кнопка «Запытацца» паказаная Схаваць кліп Кнопка кліпа схавана @@ -832,8 +846,8 @@ Second \"item\" text" Кнопка \"Падабаецца\" ў стылі мінімальнай шырыні Кнопка \"Падабаецца\", аформленая для лепшага выгляду Паказваць прыблізную колькасць падабаек - Паказана прыблізная колькасць падабаек - Прыблізная колькасць падабаек схавана + У відэа з адключанымі лайкамі паказваецца прыблізная колькасць лайкаў + Прыблізныя лайкі не паказваюцца Паказаць тост, калі API недаступны Тост паказваецца, калі функцыя \"Вярнуць не падабаецца YouTube\" недаступная Тост не паказваецца, калі функцыя \"Вярнуць не падабаецца YouTube\" недаступная @@ -1108,7 +1122,7 @@ Second \"item\" text" 19.01.34 - Аднаўленне старых значкоў навігацыі - Усталяваць стартавую старонку + Змяніць стартавую старонку Па змаўчанні Усе падпіскі Обзор каналов @@ -1133,6 +1147,11 @@ Second \"item\" text" Віртуальная рэальнасць Посмотреть позже Вашыя кліпы + Заўсёды змяняць стартавую старонку + "Стартавая старонка заўсёды зменена + +Абмежаванне: выкарыстанне кнопкі «Назад» на панэлі інструментаў можа не працаваць" + Стартавая старонка змяняецца толькі пры запуску праграмы Адключыць аднаўленне прайгравання Shorts diff --git a/patches/src/main/resources/addresources/values-bg-rBG/strings.xml b/patches/src/main/resources/addresources/values-bg-rBG/strings.xml index 43fdb2d37..0da563f7e 100644 --- a/patches/src/main/resources/addresources/values-bg-rBG/strings.xml +++ b/patches/src/main/resources/addresources/values-bg-rBG/strings.xml @@ -459,29 +459,38 @@ Second \"item\" text" Задаване на яркост чрез плъзгане Плъзгането надолу до най-ниската стойност на жеста за яркост, за да се активира автоматичната яркост Плъзгането надолу до най-ниската стойност на жеста за яркост, без дасе активира автоматичната яркост + Авто Задръжка на плъзгащата контрола за показване Време за което плъзгащата контрола е видима. Плъзгане на фона на наслагването непрозрачност Стойност на непрозрачността между 0-100 Непрозрачността на плъзгането трябва да е между 0-100 + Цвят на лентата за напредък при плъзгане + Цветът на лентата за напредък за контролите за сила на звука и яркост + Невалиден цвят на лентата за напредък + Размер на текста на наслагването при плъзгане + Размерът на текста за наслагването при плъзгане между 1-30 + Размерът на текста трябва да е между 1-30 Праг на величината на плъзгане Праг преди да се осъществи плъзгането Чувствителност при плъзгане за сила на звука Колко се променя силата на звука при всяко плъзгане - Показване на кръгъл овърлей - Показва се кръгъл овърлей - Показва се хоризонтален овърлей - Активиране на минимален стил - Минималният стил на наслагване е активиран - Минималният стил на овърлея е деактивиран + Стил на наслагване при плъзгане + Хоризонтално наслагване + Хоризонтално наслагване (минимално – отгоре) + Хоризонтално наслагване (минимално – център) + Кръгово наслагване + Кръгово наслагване (минимално) + Вертикално наслагване + Вертикално наслагване (минимално) Включване на превключване на видеото чрез плъзване Плъзването в режим на цял екран ще превключи към следващото/предишно видео Плъзването в режим на цял екран няма да превключи към следващото/предишно видео - Автоматични Субтитри - Автоматичните Субтитри са деактивирани - Автоматичните Субтитри са активирани + Автоматични Субтитри + Автоматичните надписи са деактивирани + Автоматичните надписи са активирани Бутони за действия @@ -513,6 +522,11 @@ Second \"item\" text" Бутон за благодарност Бутона за благодарност е скрит Бутона за благодарност се показва + + Скриване на \"Попитай\" + Бутонът \"Попитай\" е скрит + Бутонът \"Попитай\" е показан Бутон за създаване на клип Бутона за клип е скрит @@ -832,8 +846,8 @@ Second \"item\" text" Включен компактен бутон \"Харесва ми\" Най-добър изглед на бутона за харесване Показване на прогнозни харесвания - Показват се прогнозни харесвания - Прогнозните харесвания са скрити + Видеата с деактивирани харесвания показват прогнозен брой харесвания + Прогнозните харесвания не се показват Показване на известие, ако API не е наличен Показва известие, ако Return YouTube Dislike не е наличен Не се показва известие, ако ReturnYouTube Dislike не е наличен @@ -1107,7 +1121,7 @@ Second \"item\" text" 19.01.34 - Възстановяване на стари икони за навигация - Задай начална страница + Промяна на началната страница По подразбиране Всички абонаменти Разглеждане на канала @@ -1132,6 +1146,11 @@ Second \"item\" text" Виртуална реалност Гледай по-късно Вашите клипове + Винаги променяйте началната страница + "Началната страница винаги се променя + +Ограничение: Използването на бутона за връщане назад в лентата с инструменти може да не работи" + Началната страница се променя само при стартиране на приложението Скриване на Shorts плейъра при стартиране diff --git a/patches/src/main/resources/addresources/values-bn-rBD/strings.xml b/patches/src/main/resources/addresources/values-bn-rBD/strings.xml index ecedc09f2..9c61307ef 100644 --- a/patches/src/main/resources/addresources/values-bn-rBD/strings.xml +++ b/patches/src/main/resources/addresources/values-bn-rBD/strings.xml @@ -459,29 +459,38 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ স্বয়ংক্রিয়-উজ্জ্বলতার অঙ্গভঙ্গি সক্রিয় করুন উজ্জ্বলতার অঙ্গভঙ্গির সর্বনিম্ন মানে সোয়াইপ ডাউন করলে অটো-উজ্জ্বলতা সক্ষম হয় সর্বনিম্ন মানে সোয়াইপ ডাউন করলে অটো-উজ্জ্বলতা সক্ষম হয় না + স্বতস্ফূর্তভাবে ওভার-লে টাইম আউট কত মিলিসেকেন্ডের জন্য ওভারলে দৃশ্যমান হবে অস্বচ্ছতা 0-100 এর মধ্যে অস্বচ্ছতার মান সোয়াইপের অস্বচ্ছতা অবশ্যই 0-100 এর মধ্যে হতে হবে + সোয়াইপ ওভারলে প্রগ্রেস বার এর রং + ভলিউম এবং উজ্জ্বলতা নিয়ন্ত্রণের জন্য প্রগ্রেস বার এর রং + অবৈধ প্রগ্রেস বার রং + সোয়াইপ ওভারলে টেক্সট সাইজ + সোয়াইপ ওভারলে-এর জন্য টেক্সট সাইজ ১-৩০ এর মধ্যে + টেক্সট সাইজ অবশ্যই ১-৩০ এর মধ্যে হতে হবে সোয়াইপ থ্রেশহোল্ড এর মাত্রা সোয়াইপ করার থ্রেশহোল্ডের পরিমাণ ভলিউম সোয়াইপ সংবেদনশীলতা প্রতি সোয়াইপে ভলিউম কতটা পরিবর্তিত হয় - বৃত্তাকার ওভারলে দেখান - বৃত্তাকার ওভারলে দেখানো হয়েছে - অনুভূমিক ওভারলে দেখানো হয়েছে - ন্যূনতম শৈলী সক্ষম করুন - Minimal overlay style enabled করা হয়েছে - ন্যূনতম ওভারলে শৈলী নিষ্ক্রিয় করা হয়েছে + সোয়াইপ ওভারলে শৈলী + অনুভূমিক ওভারলে + অনুভূমিক ওভারলে (ন্যূনতম - উপরে) + অনুভূমিক ওভারলে (ন্যূনতম - কেন্দ্র) + বৃত্তাকার ওভারলে + বৃত্তাকার ওভারলে (ন্যূনতম) + উল্লম্ব ওভারলে + উল্লম্ব ওভারলে (ন্যূনতম) ভিডিও পরিবর্তন করতে সোয়াইপ করে সক্ষম করুন ফুলস্ক্রিন মোডে সোয়াইপ করলে পরবর্তী/পূর্ববর্তী ভিডিওতে পরিবর্তন হবে ফুলস্ক্রিন মোডে সোয়াইপ করলে পরবর্তী /পূর্ববর্তী ভিডিওতে পরিবর্তন হবে না - স্বয়ংক্রিয় ক্যাপশন বন্ধ করুন - অটো ক্যাপশন বন্ধ করা হয়েছে - অটো ক্যাপশন চালু করা হয়েছে + স্বয়ংক্রিয় ক্যাপশন বন্ধ করুন + অটো ক্যাপশনগুলি নিষ্ক্রিয় করা হয়েছে + অটো ক্যাপশনগুলি সক্রিয় করা হয়েছে অ্যাকশন বোতাম @@ -513,6 +522,11 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ ধন্যবাদ লুকান ধন্যবাদ বোতাম লুকানো আছে ধন্যবাদ বোতাম দেখানো হয় + + জিজ্ঞাসা লুকান + জিজ্ঞাসা বোতাম লুকানো আছে + জিজ্ঞাসা বোতাম দেখানো হয়েছে ক্লিপ লুকান ক্লিপ বোতাম লুকিয়ে রয়েছে @@ -832,8 +846,8 @@ YouTube সেটিংসে অটো প্লে পরিবর্তন পছন্দ বোতামটি ন্যূনতম প্রস্থের জন্য সাজানো হয়েছে পছন্দ বোতামটি সেরা চেহারার জন্য সাজানো হয়েছে অনুমানিত লাইক দেখান - অনুমানিত লাইক দেখানো হয়েছে - অনুমানিত লাইক লুকানো হয়েছে + পছন্দগুলি অক্ষম করা ভিডিওগুলি একটি আনুমানিক পছন্দের সংখ্যা দেখায় + আনুমানিক পছন্দগুলি দেখানো হয় না API উপলভ্য না থাকলে একটি টোস্ট দেখান Return YouTube Dislike উপলভ্য না থাকলে টোস্ট দেখানো হবে Return YouTube Dislike উপলভ্য না থাকলে টোস্ট দেখানো হবে না @@ -1107,7 +1121,7 @@ YouTube সেটিংসে অটো প্লে পরিবর্তন 19.01.34 - পুরনো নেভিগেশন আইকন পুনরুদ্ধার করুন - শুরুর পৃষ্ঠা সেট করুন + শুরুর পৃষ্ঠা পরিবর্তন করুন পূর্ব-নির্ধারিত অন্য়াসব রভর্বাশার চিয়ুট চ্যানেল ব্রাউজ করুন @@ -1132,6 +1146,11 @@ YouTube সেটিংসে অটো প্লে পরিবর্তন বির্চুভ্য়াল টিএলিটি পরে দেখুন আপ্নার কলিপ + সর্বদা শুরুর পৃষ্ঠা পরিবর্তন করুন + "শুরুর পৃষ্ঠা সবসময় পরিবর্তিত হয় + +সীমাবদ্ধতা: টুলবারে পিছনের বোতাম ব্যবহার করলে কাজ নাও করতে পারে" + অ্যাপ শুরু করার সময় শুধুমাত্র শুরুর পৃষ্ঠা পরিবর্তন করা হয় Shorts প্লেয়ার আবার চালানো নিষ্ক্রিয় করুন diff --git a/patches/src/main/resources/addresources/values-bs-rBA/strings.xml b/patches/src/main/resources/addresources/values-bs-rBA/strings.xml index c0d8f55c8..bc8bec158 100644 --- a/patches/src/main/resources/addresources/values-bs-rBA/strings.xml +++ b/patches/src/main/resources/addresources/values-bs-rBA/strings.xml @@ -84,6 +84,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-ca-rES/strings.xml b/patches/src/main/resources/addresources/values-ca-rES/strings.xml index bb13abb74..4da667615 100644 --- a/patches/src/main/resources/addresources/values-ca-rES/strings.xml +++ b/patches/src/main/resources/addresources/values-ca-rES/strings.xml @@ -459,29 +459,38 @@ Ajusteu el volum lliscant verticalment a la part dreta de la pantalla" Activa el gest de la brillantor automàtica Deslizar hacia abajo hasta el valor más bajo del gesto de brillo activa el brillo automático Deslizar hacia abajo hasta el valor más bajo no activa el brillo automático + Automàtic Temps límite de superposició de lliscament La quantitat de mil·lisegons que la superposició és visible Opacitat del fons de la superposició de lliscament Valor d\'opacitat entre 0 i 100 L\'opacitat de lliscament ha d\'estar entre 0 i 100 + Color de la barra de progrés de la superposició lliscant + El color de la barra de progrés per als controls de volum i brillantor + Color de barra de progrés no vàlid + Mida del text de la superposició lliscant + La mida del text per a la superposició lliscant entre 1 i 30 + La mida del text ha d\'estar entre 1 i 30 Llindar de magnitud de lliscament La quantitat de llindar per a què es produeixi el desplaçament Sensibilitat del lliscament de volum Quant canvia el volum per lliscament - Mostra la superposició circular - Es mostra la superposició circular - Es mostra la superposició horitzontal - Activa l\'estil minimalista - S\'ha activat l\'estil de superposició minimalista - L\'estil de superposició mínima està desactivat + Estil de superposició de lliscament + Superposició horitzontal + Superposició horitzontal (mínima - part superior) + Superposició horitzontal (mínima - centre) + Superposició circular + Superposició circular (mínima) + Superposició vertical + Superposició vertical (mínima) Activa la funció de lliscament per canviar vídeos Lliscar en mode de pantalla completa canviarà al vídeo següent/anterior Lliscar en mode de pantalla completa no canviarà al vídeo següent/anterior - Desactiva els subtítols automàtics - Els subtítols automàtics estan desactivats - Els subtítols automàtics estan activats + Desactiva els subtítols automàtics + Les subtítols Auto estan desactivats + Els subtítols Auto estan habilitats Botons d\'acció @@ -513,6 +522,11 @@ Ajusteu el volum lliscant verticalment a la part dreta de la pantalla" Amaga Gràcies S\'ha amagat el botó de gràcies El botó Gràcies es mostra + + Amaga la sol·licitud + El botó de sol·licitud està amagat + El botó de sol·licitud es mostra Amaga Clip El botó Clip s\'amaga @@ -832,8 +846,8 @@ Limitació: és possible que els \"no m'agrada\" no apareguin en mode d'incògni Botó \"m\'agrada\" estilitzat per a l\'amplada mínima Botó \"m\'agrada\" estilitzat per a la millor aparença Mostra els \"m\'agrada\" estimats - Es mostren els \"m\'agrada\" estimats - S\'han amagat els \"m\'agrada\" estimats + Els vídeos amb els \"m\'agrada\" desactivats mostren un recompte de \"m\'agrada\" estimat + No es mostren els \"m\'agrada\" estimats Mostrar una \"toast\" si l\'API no està disponible La \"toast\" es mostra si Return YouTube Dislike no està disponible La \"toast\" no es mostra si Return YouTube Dislike no està disponible @@ -1106,7 +1120,7 @@ Si després es desactiva, es recomana esborrar les dades de l'aplicació per evi 19.01.34 - Restaura les icones de navegació antigues - Defineix la pàgina d\'inici + Canvia la pàgina d\'inici Per defecte Totes les subscripcions Explora canals @@ -1131,6 +1145,11 @@ Si després es desactiva, es recomana esborrar les dades de l'aplicació per evi Realitat virtual Veure més tard Els teus clips + Canvia sempre la pàgina d\'inici + "La pàgina d'inici sempre es canvia + +Limitació: és possible que el botó Enrere de la barra d'eines no funcioni" + La pàgina d\'inici només es canvia en iniciar l\'aplicació Desactiva la represa del reproductor de Shorts diff --git a/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml b/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml index 378220b45..86908e41f 100644 --- a/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml +++ b/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml @@ -459,29 +459,38 @@ Hlasitost se upravuje svislým přejetím po pravé straně obrazovky" Povolit gesto pro automatický jas Přejetím dolů na nejnižší hodnotu gesta pro jas aktivujete automatický jas Přejetím dolů na nejnižší hodnotu neaktivujete automatický jas + Automaticky Timeout překrytí gesta Doba v milisekundách, po kterou je překrytí viditelné Průsvitnost pozadí překrytí tažením Hodnota průsvitnosti mezi 0-100 Průsvitnost tažení musí být mezi 0-100 + Barva ukazatele průběhu překrytí přejetím + Barva ukazatele průběhu pro ovládání hlasitosti a jasu + Neplatná barva ukazatele průběhu + Velikost textu překrytí přejetím + Velikost textu překrytí přejetím mezi 1–30 + Velikost textu musí být mezi 1–30 Práh vynucení gesta Velikost prahu pro provedení gesta Citlivost přejetí hlasitosti O kolik se změní hlasitost na jedno přejetí - Zobrazit kruhovou překryvnou vrstvu - Zobrazuje se kruhová překryvná vrstva - Zobrazuje se vodorovná překryvná vrstva - Povolit minimální styl - Minimální styl překrytí je povolen - Minimální styl překryvné vrstvy je zakázán + Styl překrytí přejetím + Vodorovné překrytí + Vodorovné překrytí (minimalistické – nahoře) + Vodorovné překrytí (minimalistické – uprostřed) + Kruhové překrytí + Kruhové překrytí (minimalistické) + Svislé překrytí + Svislé překrytí (minimalistické) Povolit přejetí prstem pro změnu videa Přejetí prstem v režimu celé obrazovky změní video na další/předchozí Přejetí prstem v režimu celé obrazovky nebude video měnit na další/předchozí - Zakázat automatické titulky - Automatické titulky jsou zakázány - Automatické titulky jsou povoleny + Zakázat automatické titulky + Automatické titulky jsou zakázány + Automatické titulky jsou povoleny Akční tlačítka @@ -513,6 +522,11 @@ Hlasitost se upravuje svislým přejetím po pravé straně obrazovky" Skrýt Poděkování Tlačítko Poděkování je skryto Tlačítko Poděkování je zobrazeno + + Skrýt Zeptat se + Tlačítko Zeptat se je skryté + Tlačítko Zeptat se je zobrazeno Skrýt Klip Tlačítko Klip je skryto @@ -832,8 +846,8 @@ Omezení: Počty „Nelíbí se mi“ se nemusí zobrazit v anonymním režimu"< Tlačítko lajku stylizované pro minimální šířku Tlačítko lajku stylizované pro nejlepší vzhled Zobrazit odhadované počty To se mi líbí - Zobrazují se odhadované počty To se mi líbí - Odhadované počty To se mi líbí jsou skryté + U videí s vypnutými hodnoceními se zobrazuje odhadovaný počet hodnocení + Odhadovaná hodnocení se nezobrazují Zobrazit toast, pokud API není dostupné Toast se zobrazí, pokud Return YouTube Dislike není dostupný Toast se nezobrazí, pokud Return YouTube Dislike není dostupný @@ -1106,7 +1120,7 @@ Pokud bude později vypnuta, doporučujeme vymazat data aplikace, aby se zabrán 19.01.34 – Obnovit staré ikony navigace - Nastavit úvodní stránku + Změnit úvodní stránku Výchozí Všechna předplatná Procházet kanály @@ -1131,6 +1145,11 @@ Pokud bude později vypnuta, doporučujeme vymazat data aplikace, aby se zabrán Virtuální realita Sledovat později Vaše klipy + Vždy změnit úvodní stránku + "Úvodní stránka je vždy změněna + +Omezení: Použití tlačítka zpět na panelu nástrojů nemusí fungovat" + Úvodní stránka se změní pouze při spuštění aplikace Zakázat obnovení přehrávače Shorts diff --git a/patches/src/main/resources/addresources/values-da-rDK/strings.xml b/patches/src/main/resources/addresources/values-da-rDK/strings.xml index 58f56d9c1..43360a485 100644 --- a/patches/src/main/resources/addresources/values-da-rDK/strings.xml +++ b/patches/src/main/resources/addresources/values-da-rDK/strings.xml @@ -423,29 +423,38 @@ Juster lydstyrken ved at swipe lodret i højre side af skærmen" Aktivér auto-lysstyrke-bevægelse Stryg ned til den laveste værdi af lysstyrke-bevægelsen aktiverer auto-lysstyrke Stryg ned til den laveste værdi aktiverer ikke auto-lysstyrke + Automatisk Stryg overlay timeout Mængden af millisekunder, overlayet er synlig Baggrundsgennemsigtighed for swipe-overlay Gennemsigtighedsværdi mellem 0-100 Gennemsigtighed for swipe skal være mellem 0-100 + Farve på statuslinje for strygeoverlejring + Farven på statuslinjen for lydstyrke- og lysstyrkeknapper + Ugyldig farve til statuslinjen + Tekststørrelse for strygeoverlejring + Tekststørrelsen for strygeoverlejring mellem 1-30 + Tekststørrelsen skal være mellem 1-30 Stryg størrelse tærskel Beløbet for tærskelværdi for stryg der skal ske Volumen strygefølsomhed Hvor meget lydstyrken ændres pr. strygning - Vis cirkulært overlejring - Cirkulært overlejring vises - Horisontalt overlejring vises - Aktiver minimal stil - Minimal overlay-stil er aktiveret - Minimal overlejringsstil er deaktiveret + Stil for stryge-overlay + Horisontalt overlay + Horisontalt overlay (minimal - top) + Horisontalt overlay (minimal - center) + Cirkulært overlay + Cirkulært overlay (minimal) + Vertikalt overlay + Vertikalt overlay (minimal) Aktivér swipe for at skifte videoer Strygning i fuldskærmstilstand vil ændre til den næste/forrige video Strygning i fuldskærmstilstand vil ikke ændre til den næste/forrige video - Deaktivér auto-billedtekster - Auto billedtekster er deaktiveret - Auto billedtekster er aktiveret + Deaktivér auto-billedtekster + Automatiske billedtekster er deaktiveret + Automatiske billedtekster er aktiveret Handlingsknapper @@ -476,6 +485,11 @@ Juster lydstyrken ved at swipe lodret i højre side af skærmen" Skjul Tak Tak knappen er skjult Tak knappen er vist + + Skjul Spørg + Spørg-knappen er skjult + Spørg-knappen vises Skjul klip Klip knappen er skjult @@ -788,8 +802,8 @@ Indstillinger → Afspilning → Afspil næste video automatisk" Lideknap stylet for mindste bredde Ligesom knap stylet for bedste udseende Vis anslåede Synes godt om - Anslåede Synes godt om vises - Anslåede Synes godt om er skjult + Videoer med deaktiverede Synes godt om viser et anslået antal Synes godt om + Anslåede Synes godt om vises ikke Vis en toast hvis API ikke er tilgængelig Toast vises, hvis Return YouTube Dislike ikke er tilgængelig Toast vises ikke, hvis Return YouTube Dislike ikke er tilgængelig @@ -1052,7 +1066,7 @@ Hvis det senere slås fra, anbefales det at rydde app-dataene for at forhindre U 19.35.36 - Gendan gamle Shorts player ikoner - Indstil startside + Skift startside Standard Alle abonnementer Gennemse kanaler @@ -1077,6 +1091,11 @@ Hvis det senere slås fra, anbefales det at rydde app-dataene for at forhindre U Virtual Reality Se senere Dine klip + Skift altid startside + "Startside ændres altid + +Begrænsning: Brug af tilbage-knappen på værktøjslinjen fungerer muligvis ikke" + Startsiden ændres kun ved appstart Deaktivér genoptagelse af Shorts spiller diff --git a/patches/src/main/resources/addresources/values-de-rDE/strings.xml b/patches/src/main/resources/addresources/values-de-rDE/strings.xml index 45b1790f2..71c63bf8d 100644 --- a/patches/src/main/resources/addresources/values-de-rDE/strings.xml +++ b/patches/src/main/resources/addresources/values-de-rDE/strings.xml @@ -452,29 +452,38 @@ Passen Sie die Helligkeit an, indem Sie auf der linken Seite des Bildschirms ver Auto-Helligkeit Geste aktivieren Wische runter auf den niedrigsten Wert der Helligkeitsgeste, um die automatische Helligkeit zu aktivieren Wenn man zum niedrigsten Wert wischt, aktiviert man die automatische Helligkeit nicht + Autom Wischüberlagerungs-Timeout Die Anzahl der Millisekunden, die das Overlay sichtbar ist Bildschirmüberlagerung Deckkraft Swipe Deckkraftwert zwischen 0-100 Die Wischdeckkraft muss zwischen 0 und 100 liegen + Farbe des Fortschrittsbalkens für die Wischgesten-Überlagerung + Die Farbe des Fortschrittsbalkens für Lautstärke- und Helligkeitsregler + Ungültige Farbe für den Fortschrittsbalken + Textgröße der Wischgesten-Überlagerung + Die Textgröße für die Wischgesten-Überlagerung zwischen 1 und 30 + Die Textgröße muss zwischen 1 und 30 liegen Wischgrößenschwelle Der Schwellenwert für Wischen Lautstärke-Wischgestenempfindlichkeit Wie stark sich die Lautstärke pro Wisch ändert - Kreisförmiges Overlay anzeigen - Kreisförmiges Overlay wird angezeigt - Horizontales Overlay wird angezeigt - Minimalen Stil aktivieren - Minimaler Overlay-Stil ist aktiviert - Minimaler Overlay-Stil ist deaktiviert + Design des Wisch-Overlays + Horizontales Overlay + Horizontales Overlay (minimal - oben) + Horizontales Overlay (minimal - Mitte) + Kreisförmiges Overlay + Kreisförmiges Overlay (minimal) + Vertikales Overlay + Vertikales Overlay (minimal) Mit Wischen wechseln Sie zu den Videos Im Vollbildmodus wischen, um zum nächsten/vorherigen Video zu wechseln Im Vollbildmodus wischen, um nicht zum nächsten/vorherigen Video zu wechseln - Autounterschriften deaktivieren - Autounterschriften sind deaktiviert - Automatische Beschriftungen sind aktiviert + Autounterschriften deaktivieren + Automatische Untertitel sind deaktiviert + Automatische Untertitel sind aktiviert Aktionstasten @@ -506,6 +515,11 @@ Passen Sie die Helligkeit an, indem Sie auf der linken Seite des Bildschirms ver Dank ausblenden Dankeschön-Taste ist ausgeblendet Dankeschön Button wird angezeigt + + Ask ausblenden + Ask-Button ist ausgeblendet + Ask-Button wird angezeigt Clip ausblenden Clip-Button ist ausgeblendet @@ -825,8 +839,8 @@ Einschränkung: Dislikes werden möglicherweise nicht im Inkognito-Modus angezei \"Gefällt mir\" Button für minimale Breite \"Gefällt mir\" Button für das beste Aussehen Geschätzte \"Gefällt mir\"-Angaben anzeigen - Geschätzte \"Gefällt mir\"-Angaben werden angezeigt - Geschätzte \"Gefällt mir\"-Angaben sind verborgen + Videos mit deaktivierten \"Gefällt mir\"-Angaben zeigen eine geschätzte Anzahl von \"Gefällt mir\"-Angaben + Geschätzte \"Gefällt mir\"-Angaben werden nicht angezeigt Einen Toast anzeigen, wenn die API nicht verfügbar ist Toast wird angezeigt, wenn YouTube-Ablehnung nicht verfügbar ist Toast wird nicht angezeigt, wenn YouTube-Dislike nicht verfügbar ist @@ -1100,7 +1114,7 @@ Wenn Sie die Funktion später deaktivieren, wird empfohlen, die App-Daten zu lö 19.01.34 - Alte Navigations-Symbole wiederherstellen - Startseite festlegen + Startseite ändern Standard Alle Abonnements Kanäle durchsuchen @@ -1125,6 +1139,11 @@ Wenn Sie die Funktion später deaktivieren, wird empfohlen, die App-Daten zu lö Virtuelle Realität Später ansehen Deine Clips + Startseite immer ändern + "Die Startseite wird immer geändert. + +Einschränkung: Die Verwendung der Zurück-Taste auf der Symbolleiste funktioniert möglicherweise nicht." + Die Startseite wird nur beim Start der App geändert Fortsetzen des Shorts Players deaktivieren diff --git a/patches/src/main/resources/addresources/values-el-rGR/strings.xml b/patches/src/main/resources/addresources/values-el-rGR/strings.xml index 437d387a4..1a0c0bcd5 100644 --- a/patches/src/main/resources/addresources/values-el-rGR/strings.xml +++ b/patches/src/main/resources/addresources/values-el-rGR/strings.xml @@ -461,29 +461,38 @@ Second \"item\" text" Ενεργοποίηση χειρονομίας αυτόματης φωτεινότητας Η σάρωση προς τα κάτω στη χαμηλότερη τιμή της χειρονομίας φωτεινότητας ενεργοποιεί την αυτόματη φωτεινότητα Η σάρωση προς τα κάτω στη χαμηλότερη τιμή δεν ενεργοποιεί την αυτόματη φωτεινότητα + Αυτόματη Χρονικό όριο εμφάνισης πλαισίου σάρωσης Το χρονικό διάστημα χιλιοστών του δευτερολέπτου που είναι ορατό το πλαίσιο σάρωσης Αδιαφάνεια φόντου σάρωσης Τιμή αδιαφάνειας μεταξύ 0-100 Η αδιαφάνεια σάρωσης πρέπει να είναι μεταξύ 0-100 + Χρώμα γραμμής προόδου σάρωσης + Το χρώμα της γραμμής προόδου για τα στοιχεία ελέγχου έντασης ήχου και φωτεινότητας + Μη έγκυρο χρώμα γραμμής προόδου + Μέγεθος κειμένου σάρωσης + Το μέγεθος κειμένου για τα στοιχεία ελέγχου σάρωσης μεταξύ 1-30 + Το μέγεθος κειμένου πρέπει να είναι μεταξύ 1-30 Κατώτατο όριο μεγέθους σάρωσης Η ελάχιστη απόσταση που θα διανύσετε με το δάκτυλο σας για να είναι αναγνωρίσιμη η χειρονομία σάρωσης Ευαισθησία σάρωσης έντασης ήχου Πόσο αλλάζει η ένταση ήχου ανά σάρωση - Εμφάνιση κυκλικής διάταξης - Η διάταξη των ελέγχων σάρωσης είναι κυκλική - Η διάταξη των ελέγχων σάρωσης είναι οριζόντια - Διάταξη μινιμαλιστικού στυλ - Το μινιμαλιστικό στυλ διάταξης των ελέγχων σάρωσης είναι ενεργοποιημένο - Το μινιμαλιστικό στυλ διάταξης των ελέγχων σάρωσης είναι απενεργοποιημένο + Στυλ διάταξης σάρωσης + Οριζόντια διάταξη + Οριζόντια διάταξη (ελάχιστη - κορυφή) + Οριζόντια διάταξη (ελάχιστη - κέντρο) + Κυκλική διάταξη + Κυκλική διάταξη (ελάχιστη) + Κάθετη διάταξη + Κάθετη διάταξη (ελάχιστη) Χειρονομία εναλλαγής βίντεο στην πλήρη οθόνη Σάρωση αριστερά/δεξιά κατά τη λειτουργία πλήρους οθόνης για αλλαγή σε επόμενο/προηγούμενο βίντεο Η χειρονομία αλλαγής βίντεο κατά τη λειτουργία πλήρους οθόνης είναι ανενεργή - Απενεργοποίηση αυτόματων υπότιτλων - Οι αυτόματοι υπότιτλοι είναι απενεργοποιημένοι - Οι αυτόματοι υπότιτλοι είναι ενεργοποιημένοι + Απενεργοποίηση αυτόματων υπότιτλων + Οι αυτόματοι υπότιτλοι είναι απενεργοποιημένοι + Οι αυτόματοι υπότιτλοι είναι ενεργοποιημένοι Κουμπιά ενεργειών @@ -515,6 +524,11 @@ Second \"item\" text" Κουμπί «Σας ευχαριστούμε» Κρυμμένο Εμφανίζεται + + Κουμπί «Ερώτηση» + Κρυμμένο + Εμφανίζεται Κουμπί «Κλιπ» Κρυμμένο @@ -834,7 +848,7 @@ Second \"item\" text" Το κουμπί «Μου αρέσει» είναι διαμορφωμένο για ελάχιστο μέγεθος Το κουμπί «Μου αρέσει» είναι διαμορφωμένο για καλύτερη εμφάνιση Εμφάνιση των εκτιμώμενων «Μου αρέσει» - Τα εκτιμώμενα «Μου αρέσει» εμφανίζονται + Τα βίντεο με απενεργοποιημένα «Μου αρέσει» εμφανίζουν έναν εκτιμώμενο αριθμό «Μου αρέσει» Τα εκτιμώμενα «Μου αρέσει» δεν εμφανίζονται Εμφάνιση μηνύματος αν το API δεν είναι διαθέσιμο Να εμφανίζεται μήνυμα στο κάτω μέρος της οθόνης αν το Return YouTube Dislike δεν είναι διαθέσιμο @@ -1108,7 +1122,7 @@ Second \"item\" text" 19.01.34 - Επαναφορά παλιών εικονιδίων γραμμής πλοήγησης - Αλλαγή της αρχικής σελίδας + Αλλαγή αρχικής σελίδας Προεπιλογή Όλες οι εγγραφές Περιήγηση καναλιών @@ -1133,6 +1147,11 @@ Second \"item\" text" Εικονική Πραγματικότητα Παρακολούθηση αργότερα Τα κλιπ σας + Να αλλάζει πάντα η αρχική σελίδα + "Η αρχική σελίδα αλλάζει πάντα + +Περιορισμός: Η χρήση του κουμπιού επιστροφής στη γραμμή εργαλείων ενδέχεται να μην λειτουργεί" + Η αρχική σελίδα αλλάζει μόνο κατά την εκκίνηση της εφαρμογής Απενεργοποίηση συνέχισης των Shorts diff --git a/patches/src/main/resources/addresources/values-es-rES/strings.xml b/patches/src/main/resources/addresources/values-es-rES/strings.xml index fe547ba7d..a32e47c12 100644 --- a/patches/src/main/resources/addresources/values-es-rES/strings.xml +++ b/patches/src/main/resources/addresources/values-es-rES/strings.xml @@ -456,29 +456,38 @@ Ajusta el volumen deslizando verticalmente en el lado derecho de la pantalla"Activar gesto de brillo automático Deslizar hacia abajo hasta el valor más bajo del gesto de brillo permite el brillo automático Deslizar hacia abajo hasta el valor más bajo no habilita el brillo automático + Automático Tiempo de espera del deslizado La cantidad de milisegundos que la superposición es visible Opacidad del fondo de la superposición de deslizamiento Valor de opacidad entre 0-100 La opacidad de la superposición de deslizamiento debe estar entre 0 y 100 + Color de la barra de progreso de la superposición de deslizamiento + El color de la barra de progreso para los controles de volumen y brillo + Color de barra de progreso no válido + Tamaño del texto de la superposición de deslizamiento + El tamaño del texto para la superposición de deslizamiento entre 1 y 30 + El tamaño del texto debe estar entre 1 y 30 Umbral de magnitud del deslizamiento La cantidad de umbral para que se desliza Sensibilidad del deslizamiento de volumen Cuánto cambia el volumen por deslizamiento - Mostrar superposición circular - Se muestra la superposición circular - Se muestra la superposición horizontal - Habilitar estilo minimalista - El estilo de superposición mínima está habilitado - El estilo de superposición mínima está desactivado + Estilo de superposición de deslizamiento + Superposición horizontal + Superposición horizontal (mínima - superior) + Superposición horizontal (mínima - centro) + Superposición circular + Superposición circular (mínima) + Superposición vertical + Superposición vertical (mínima) Habilita el deslizamiento para cambiar videos Deslizar en modo de pantalla completa cambiará al video siguiente/anterior Deslizar en modo de pantalla completa no cambiará al video siguiente/anterior - Desactivar auto subtítulos - Los títulos automáticos están desactivados - Los títulos automáticos están habilitados + Desactivar auto subtítulos + Los subtítulos Auto están desactivados + Los subtítulos Auto están activados Botones de acción @@ -510,6 +519,11 @@ Ajusta el volumen deslizando verticalmente en el lado derecho de la pantalla"Ocultar Gracias El botón de gracias está oculto Se muestra el botón de gracias + + Ocultar pregunta + El botón \"Preguntar\" está oculto + Se muestra el botón \"Preguntar\" Ocultar Recortar El botón del recortar está oculto @@ -829,8 +843,8 @@ Limitación: Es posible que los Dislikes no aparezcan en el modo de incógnito"< Botón \"Me gusta\" para el ancho mínimo Botón \"Me gusta\" para una mejor apariencia Mostrar estimación de \"me gusta\" - Se muestra la estimación de \"me gusta\" - Se oculta la estimación de \"me gusta\" + Los vídeos con \"me gusta\" desactivados muestran un recuento estimado de \"me gusta\" + No se muestran los \"me gusta\" estimados Mostrar un brindis si la API no está disponible Toast se muestra si Devolución de YouTube Dislike no está disponible Toast no se muestra si Devolución de YouTube Dislike no está disponible @@ -1095,7 +1109,7 @@ Si se desactiva posteriormente, se recomienda borrar los datos de la aplicación 19.01.34 - Restaurar iconos de navegación antiguos - Establecer página de inicio + Cambiar página de inicio Predeterminado Todas las suscripciones Navegar canales @@ -1120,6 +1134,11 @@ Si se desactiva posteriormente, se recomienda borrar los datos de la aplicación Realidad virtual Ver más tarde Tus clips + Cambiar siempre la página de inicio + "La página de inicio siempre se cambia + +Limitación: Es posible que el uso del botón de retroceso en la barra de herramientas no funcione" + La página de inicio se cambia solo al iniciar la aplicación Desactivar reanudación del reproductor de Shorts diff --git a/patches/src/main/resources/addresources/values-et-rEE/strings.xml b/patches/src/main/resources/addresources/values-et-rEE/strings.xml index fcb5560a0..f91b4284f 100644 --- a/patches/src/main/resources/addresources/values-et-rEE/strings.xml +++ b/patches/src/main/resources/addresources/values-et-rEE/strings.xml @@ -459,29 +459,38 @@ Helitugevuse reguleerimiseks pühkige ekraani paremal küljel vertikaalselt"Luba automaatse heleduse žest Pühkige alla heleduse žesti madalaima väärtuseni, et lubada automaatne heleduse Pühkimine alla madalaima väärtuseni ei luba automaatset heleduse + Auto Pühkimise katte aegumisaeg Katte näitamise millisekundite arv Pühkiva katte tausta läbipaistvus Läbipaistvuse väärtus vahemikus 0-100 Pühkiva katte läbipaistvus peab olema vahemikus 0-100 + Liigutamise ülekatte edenemisriba värv + Helitugevuse ja heleduse juhtnuppude edenemisriba värv + Vigane edenemisriba värv + Liigutamise ülekatte teksti suurus + Liigutamise ülekatte teksti suurus vahemikus 1–30 + Teksti suurus peab olema vahemikus 1–30 Pühkimise suuruse lävi Lävi väärtus pühkimise toimimiseks Helitugevuse libistamise tundlikkus Kui palju helitugevus ühe libistusega muutub - Kuva ümmargune ülekattekiht - Ümmargune ülekattekiht on nähtav - Horisontaalne ülekattekiht on nähtav - Luba minimaalne stiil - Minimaalne kattekihi stiil on lubatud - Minimaalne ülekattekihi stiil on keelatud + Nipsa ülekattestiil + Horisontaalne ülekate + Horisontaalne ülekate (minimaalne – üleval) + Horisontaalne ülekate (minimaalne – keskel) + Ümmargune ülekate + Ümmargune ülekate (minimaalne) + Vertikaalne ülekate + Vertikaalne ülekate (minimaalne) Luba pühkimine videote vahetamiseks Täisekraanrežiimis pühkimine vahetab järgmise/eelmise video Täisekraanrežiimis pühkimine ei vaheta järgmise/eelmise video - Keela automaatsed pealdised - Automaatsed pealdised on keelatud - Automaatsed pealdised on lubatud + Keela automaatsed pealdised + Automaatsed subtiitrid on keelatud + Automaatsed subtiitrid on lubatud Tegevuse nupud @@ -513,6 +522,11 @@ Helitugevuse reguleerimiseks pühkige ekraani paremal küljel vertikaalselt"Peida Tänan Tänan nupp on peidetud Tänan nupp on nähtav + + Peida küsi + Küsi nupp on peidetud + Küsi nupp on nähtav Peida Lõik Lõigu nupp on peidetud @@ -832,8 +846,8 @@ Piirang: Ei meeldimised ei pruugi inkognito režiimis kuvada" Meeldimise nupp on stiilitud minimaalse laiusena Meeldimise nupp on stiilitud parima välimusega Näita hinnangulisi meeldimisi - Hinnangulised meeldimised on näidatud - Hinnangulised meeldimised on peidetud + Videod, millel on keelatud meeldimised, näitavad meeldimiste arvu ligikaudset väärtust + Ligikaudsed meeldimised ei ole näidatud Näita teadet, kui API pole saadaval Teade näidatakse, kui Return YouTube Dislike pole saadaval Teadet ei näidata, kui Return YouTube Dislike pole saadaval @@ -1107,7 +1121,7 @@ Kui see hiljem välja lülitatakse, on soovitatav rakenduse andmed kustutada, et 19.01.34 – Taasta vanad navigeerimisikoonid - Määra algusleht + Muuda alguslehte Vaikimisi Kõik tellimused Sirvi kanaleid @@ -1132,6 +1146,11 @@ Kui see hiljem välja lülitatakse, on soovitatav rakenduse andmed kustutada, et Virtuaalne Reaalsus Vaata hiljem Teie klipid + Muuda alati avalehte + "Alguslehte muudetakse alati + +Piirang: tööriistaribal tagasinupp ei pruugi töötada" + Avalehte muudetakse ainult rakenduse käivitamisel Keela Shortsi esitaja jätkamine diff --git a/patches/src/main/resources/addresources/values-eu-rES/strings.xml b/patches/src/main/resources/addresources/values-eu-rES/strings.xml index c0d8f55c8..bc8bec158 100644 --- a/patches/src/main/resources/addresources/values-eu-rES/strings.xml +++ b/patches/src/main/resources/addresources/values-eu-rES/strings.xml @@ -84,6 +84,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-fa-rIR/strings.xml b/patches/src/main/resources/addresources/values-fa-rIR/strings.xml index b60e7ac04..62d44757f 100644 --- a/patches/src/main/resources/addresources/values-fa-rIR/strings.xml +++ b/patches/src/main/resources/addresources/values-fa-rIR/strings.xml @@ -104,6 +104,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-fi-rFI/strings.xml b/patches/src/main/resources/addresources/values-fi-rFI/strings.xml index b99fa4c6b..ae56e8edf 100644 --- a/patches/src/main/resources/addresources/values-fi-rFI/strings.xml +++ b/patches/src/main/resources/addresources/values-fi-rFI/strings.xml @@ -459,6 +459,7 @@ Säädä äänenvoimakkuutta pyyhkäisemällä pystysuoraan näytön oikealta pu Ota automaattisen kirkkauden ele käyttöön Automaattinen kirkkaus otetaan käyttöön pyyhkäisemällä alhaisimpaan arvoon Pienimpään arvoon alas pyyhkäiseminen ei ota käyttöön automaattista kirkkautta + Automaattinen Pyyhkäisyikkunan aikakatkaisu Kuinka monta millisekuntia ikkuna on näkyvissä Pyyhkäisypeittokuvan taustan läpinäkymättömyys @@ -468,20 +469,14 @@ Säädä äänenvoimakkuutta pyyhkäisemällä pystysuoraan näytön oikealta pu Pyyhkäisyä varten tarvittavan kynnyksen määrä Äänenvoimakkuuden pyyhkäisyn herkkyys Kuinka paljon äänenvoimakkuus muuttuu pyyhkäisyä kohden - Näytä pyöreä peittokuva - Pyöreä peittokuva näytetään - Vaakasuora peittokuva näytetään - Käytä minimaalista tyyliä - Minimaalinen peittokuva on käytössä - Minimaalinen peittokuva ei ole käytössä Ota videon vaihto pyyhkäisemällä käyttöön Pyyhkäisemällä kokoruututilassa siirrytään seuraavaan/edelliseen videoon Pyyhkäisemällä kokoruututilassa ei siirrytä seuraavaan/edelliseen videoon - Poista automaattiset tekstitykset käytöstä - Automaattiset tekstitykset eivät ole käytössä - Automaattiset tekstitykset ovat käytössä + Poista automaattiset tekstitykset käytöstä + Automaattiset tekstitykset eivät ole käytössä + Automaattiset tekstitykset ovat käytössä Toimintopainikkeet @@ -513,6 +508,8 @@ Säädä äänenvoimakkuutta pyyhkäisemällä pystysuoraan näytön oikealta pu Piilota Kiitos Kiitos-painike on piilotettu Kiitos-painike näytetään + Piilota Klippi Klippi-painike on piilotettu @@ -832,8 +829,8 @@ Rajoitus: Ei-tykkäykset eivät välttämättä näy incognito-tilassa" Tykkää-painike on muotoiltu mahdollisimman kapeaksi Tykkää-painike on muotoiltu parhaan näköiseksi Näytä arvioidut tykkäykset - Arvioidut tykkäykset näytetään - Arvioidut tykkäykset on piilotettu + Videot, joiden tykkäykset on poistettu käytöstä, näyttävät arvioidun tykkäysten määrän + Arvioituja tykkäyksiä ei näytetä Näytä ponnahdusilmoitus, jos API ei ole käytettävissä Ponnahdusilmoitus näytetään, jos Return YouTube Dislike ei ole käytettävissä Ponnahdusilmoitusta ei näytetä, jos Return YouTube Dislike ei ole käytettävissä @@ -1107,7 +1104,7 @@ Jos tämä poistetaan myöhemmin käytöstä, on suositeltavaa tyhjentää sovel 19.01.34 - Palauta vanhat navigointikuvakkeet - Aseta aloitussivu + Vaihda aloitussivua Oletus Kaikki tilaukset Selaa kanavia @@ -1132,6 +1129,11 @@ Jos tämä poistetaan myöhemmin käytöstä, on suositeltavaa tyhjentää sovel Virtuaalitodellisuus Katso myöhemmin Omat klipit + Vaihda aloitussivu aina + "Aloitussivu vaihdetaan aina + +Rajoitus: Työkalupalkin takaisin-painikkeen käyttäminen ei välttämättä toimi" + Aloitussivu vaihdetaan vain sovelluksen käynnistyessä Poista Shorts-soittimen jatkaminen käytöstä diff --git a/patches/src/main/resources/addresources/values-fil-rPH/strings.xml b/patches/src/main/resources/addresources/values-fil-rPH/strings.xml index 180303332..7fdcf0183 100644 --- a/patches/src/main/resources/addresources/values-fil-rPH/strings.xml +++ b/patches/src/main/resources/addresources/values-fil-rPH/strings.xml @@ -459,29 +459,38 @@ Ayusin ang volume sa pamamagitan ng pag-swipe nang patayo sa kanang bahagi ng sc I-enable ang galaw ng auto-brightness Ang pag-swipe pababa sa pinakamababang halaga ng brightness gesture ay nagbibigay-daan sa auto-brightness Ang pag-swipe pababa sa pinakamababang halaga ay hindi nagpapagana ng auto-brightness + Awtomatik Mag-swipe overlay timeout Ang dami ng millisecond na nakikita ang overlay Transparency ng background ng swipe overlay Halaga ng opacity sa pagitan ng 0-100 Ang opacity ng swipe ay dapat nasa pagitan ng 0-100 + Kulay ng progress bar ng swipe overlay + Ang kulay ng progress bar para sa mga kontrol ng volume at brightness + Hindi wasto ang kulay ng progress bar + Laki ng teksto ng swipe overlay + Ang laki ng teksto para sa swipe overlay sa pagitan ng 1-30 + Ang laki ng teksto ay dapat sa pagitan ng 1-30 I-swipe ang magnitude threshold Ang halaga ng threshold para sa pag-swipe na magaganap Pagkasensitibo sa pag-swipe ng volume Gaano karami ang pagbabago ng volume sa bawat swipe - Ipakita ang pabilog na overlay - Ipinapakita ang pabilog na overlay - Ipinapakita ang pahalang na overlay - I-enable ang minimal na istilo - Naka-enable ang minimal na istilo ng overlay - Hindi pinagana ang minimal na istilo ng overlay + Estilo ng swipe overlay + Pahalang na overlay + Pahalang na overlay (minimal - itaas) + Pahalang na overlay (minimal - gitna) + Pabilog na overlay + Pabilog na overlay (minimal) + Patayong overlay + Patayong overlay (minimal) I-enable ang swipe para magpalit ng mga video Ang pag-swipe sa full screen mode ay magpapalit sa susunod/nakaraang video Ang pag-swipe sa full screen ay hindi magpapalit sa susunod/nakaraang video - Huwag paganahin ang mga auto caption - Naka-disable ang mga auto caption - Ang mga auto caption ay pinagana + Huwag paganahin ang mga auto caption + Naka-disable ang mga Auto caption + Naka-enable ang mga Auto caption Mga pindutan ng pagkilos @@ -513,6 +522,11 @@ Ayusin ang volume sa pamamagitan ng pag-swipe nang patayo sa kanang bahagi ng sc Itago Salamat Nakatago ang buton ng salamat Ang pindutan ng salamat ay ipinapakita + + Itago ang Tanong + Nakatago ang button na Tanong + Ipinapakita ang button na Tanong Itago ang Clip Nakatago ang clip button @@ -830,8 +844,8 @@ Limitasyon: Maaaring hindi lumabas ang mga Dislike sa incognito mode" Like button na naka-istilong para sa minimum na lapad I-style na button para sa pinakamahusay na hitsura Ipakita ang tinantyang mga gusto - Ipinapakita ang tinantyang mga gusto - Nakatago ang tinantyang mga gusto + Ipinapakita ng mga video na naka-disable ang mga like ang tinatayang bilang ng mga like + Hindi ipinapakita ang mga tinatayang like Magpakita ng toast kung hindi available ang API Ipapakita ang toast kung hindi available ang Return YouTube Dislike Hindi ipinapakita ang toast kung hindi available ang Return YouTube Dislike @@ -1105,7 +1119,7 @@ Kung mamaya ay patayin, inirerekumenda na i-clear ang data ng app upang maiwasan 19.01.34 - Ibalik ang mga lumang icon ng navigation - Itakda ang panimulang pahina + Baguhin ang panimulang pahina Regular Lahat ng mga subscription Mag-browse ng mga channel @@ -1130,6 +1144,11 @@ Kung mamaya ay patayin, inirerekumenda na i-clear ang data ng app upang maiwasan Virtual Reality Panoorin mamaya Mga clip mo + Palaging baguhin ang panimulang pahina + "Palaging binabago ang panimulang pahina + +Limitasyon: Maaaring hindi gumana ang paggamit ng back button sa toolbar" + Binago ang panimulang pahina sa pagbukas lang ng app Huwag paganahin ang pagpapatuloy na manlalaro ng Shorts diff --git a/patches/src/main/resources/addresources/values-fr-rFR/strings.xml b/patches/src/main/resources/addresources/values-fr-rFR/strings.xml index 63d199406..3c60254c9 100644 --- a/patches/src/main/resources/addresources/values-fr-rFR/strings.xml +++ b/patches/src/main/resources/addresources/values-fr-rFR/strings.xml @@ -459,29 +459,38 @@ Réglez le volume en balayant verticalement sur le côté droit de l'écran"Activer le geste de luminosité automatique Balayer vers le bas jusqu\'à la valeur minimum du geste de contrôle de la luminosité active la luminosité automatique Balayer vers le bas jusqu\'à la valeur minimum n\'active pas la luminosité automatique + Automatique Délai avant disparition de l\'overlay des gestes La durée en millisecondes pendant laquelle l\'overlay est visible Opacité de l\'arrière-plan de l\'overlay des gestes Valeur de l\'opacité entre 0 et 100 L\'opacité doit être comprise entre 0 et 100 pour les gestes + Couleur de la barre de progression de l\'overlay des gestes + La couleur de la barre de progression pour les commandes de volume et de luminosité + Couleur de barre de progression invalide + Taille du texte de l\'overlay des gestes + La taille du texte de l\'overlay des gestes comprise entre 1 et 30 + La taille du texte doit être comprise entre 1 et 30 Seuil d\'intensité des balayages L\'intensité du mouvement à effectuer pour qu\'un balayage soit pris en compte Sensibilité du geste de contrôle du volume Quantité de modification du volume à chaque balayage - Afficher l\'overlay circulaire - L\'overlay circulaire est affiché - L\'overlay horizontal est affiché - Activer le style minimaliste - Le style minimaliste d\'overlay est activé - Le style minimaliste d\'overlay est désactivé + Style de l\'overlay des gestes + Overlay horizontal + Overlay horizontal (minimal, haut) + Overlay horizontal (minimal, centre) + Overlay circulaire + Overlay circulaire (minimal) + Overlay vertical + Overlay vertical (minimal) Activer Balayer pour changer de vidéo En mode plein écran, vous passerez à la vidéo précédente/suivante en balayant l\'écran En mode plein écran, vous ne changerez pas de vidéo en balayant l\'écran - Désactiver les sous-titres automatiques - Les sous-titres automatiques sont désactivés - Les sous-titres automatiques sont activés + Désactiver les sous-titres automatiques + Les sous-titres automatiques sont désactivés + Les sous-titres automatiques sont activés Boutons d\'action @@ -513,6 +522,11 @@ Réglez le volume en balayant verticalement sur le côté droit de l'écran"Masquer \"Merci\" Le bouton Merci est masqué Le bouton Merci est affiché + + Masquer Demander + Le bouton Demander est masqué + Le bouton Demander est affiché Masquer \"Clip\" Le bouton Clip est masqué @@ -832,8 +846,8 @@ Limitation : Il se peut que les \"Je n'aime pas\" n'apparaissent pas en mode na Bouton J\'aime optimisé pour minimiser la taille Bouton J\'aime optimisé pour l\'apparence Afficher les \"J\'aime\" estimés - Les \"J\'aime\" estimés sont affichés - Les \"J\'aime\" estimés sont masqués + Un nombre estimé de \"J\'aime\" est affiché sous les vidéos où les \"J\'aime\" sont désactivés + Les \"J\'aime\" estimés ne sont pas affichés Afficher un message toast si l\'API n\'est pas disponible Un message toast est affiché si Return YouTube Dislike n\'est pas disponible Aucun message toast affiché si Return YouTube Dislike n\'est pas disponible @@ -1106,7 +1120,7 @@ Si désactivé ultérieurement, il est recommandé d'effacer les données de l'a 19.01.34 - Restaurer les anciennes icônes de navigation - Définir la page ouverte au lancement + Modifier la page de démarrage Par défaut Tous les abonnements Parcourir les chaînes @@ -1131,6 +1145,11 @@ Si désactivé ultérieurement, il est recommandé d'effacer les données de l'a Réalité virtuelle À regarder plus tard Vos clips + Toujours modifier la page de démarrage + "La page de démarrage est toujours modifiée + +Limitation : Il se peut que le bouton Retour dans la barre d'outils ne fonctionne pas" + La page de démarrage est modifiée uniquement au démarrage de l\'application Désactiver la reprise du lecteur Shorts diff --git a/patches/src/main/resources/addresources/values-ga-rIE/strings.xml b/patches/src/main/resources/addresources/values-ga-rIE/strings.xml index 2f8693146..3ec2cb3dd 100644 --- a/patches/src/main/resources/addresources/values-ga-rIE/strings.xml +++ b/patches/src/main/resources/addresources/values-ga-rIE/strings.xml @@ -459,29 +459,38 @@ Coigeartaigh an toirt trí haisceartán go hingearach ar thaobh deas an scáile Cumasaigh gotha uathoibríoch Cumasaíonn scioradh síos go dtí an luach is ísle den chomhartha gile uathoibríoch Ní chumasaíonn uathoibríoch a tharraingt síos go dtí an luach is ísle + Uathoibríoch Amach forleagtha Swipe Tá méid na milleasoicind an forleagan le feiceáil Réabhlóid thrasláiteachta na gcúlra léaráidí Luach léaráidí idir 0-100 Caithfidh léaráidí traslaithe a bheith idir 0-100 + Dath an bharra dul chun cinn forleagain swipe + Dath an bharra dul chun cinn le haghaidh rialuithe toirte agus gile + Dath barra dul chun cinn neamhbhailí + Méid téacs an fhorleagain swipe + Méid téacs an fhorleagain swipe idir 1-30 + Caithfidh an méid téacs a bheith idir 1-30 Tairseach méid swipe Méid an tairseach le haghaidh sruthú tarlú Íogaireacht swipe toirte An méid a athraíonn an toirt in aghaidh gach swipe - Taispeáin forleagan ciorclach - Léirítear forleagan ciorclach - Taispeántar forleagan cothrománach - Cumasaigh stíl íosta - Tá stíl íosta forleagain cumasaithe - Tá an stíl fhorleagan íosta díchumasaithe + Stíl forleagain swipe + Forleagan cothrománach + Forleagan cothrománach (íosta - barr) + Forleagan cothrománach (íosta - lár) + Forleagan ciorclach + Forleagan ciorclach (íosta) + Forleagan ingearach + Forleagan ingearach (íosta) Cumasaigh swipe chun físeáin a athrú Achlaigh i mód lán-scáile chun athrú go dtí an físeán chéanna/arís Ní athróidh achlaigh i mód lán-scáile go dtí an físeán chéanna/arís - Díchumasaigh fotheidil uathoibríoch - Tá fotheidil uathoibríoch díchumasaithe - Tá fotheidil uathoibríoch cumasaithe + Díchumasaigh fotheidil uathoibríoch + Tá fotheidil uathoibríocha díchumasaithe + Tá fotheidil uathoibríocha cumasaithe Cnaipí gníomh @@ -513,6 +522,11 @@ Coigeartaigh an toirt trí haisceartán go hingearach ar thaobh deas an scáile Folaigh Go raibh maith agat Tá cnaipe buíochas i bhfolach Taispeántar cnaipe buíochas + + Folaigh Fiafraigh + Tá cnaipe Fiafraigh i bhfolach + Taispeántar cnaipe Fiafraigh Folaigh Gearrthóg Tá an cnaipe gearrthóg i bhfolach @@ -832,8 +846,8 @@ Srianadh: Bíodh easaontais gan teacht ar taispeáint sa mhodh incognito"Cosúil le cnaipe stíleáilte don leithead íosta Cosúil le cnaipe stíleáilte don chuma is fearr Taispeáin na rudaí is maith leis - Taispeántar cosúlachtaí measta - Tá a leithéidí measta i bhfolach + Taispeánann físeáin le maith díchumasaithe comhaireamh measta maith + Ní thaispeántar maith measta Taispeáin tósta mura bhfuil API ar fáil Taispeántar tósta mura bhfuil Return YouTube Dislike ar fáil Ní thaispeántar tóst mura bhfuil Return YouTube Dislike ar fáil @@ -1107,7 +1121,7 @@ Má dhiúltaítear é níos déanaí, moltar sonraí an aip a ghlanadh chun buga 19.01.34 - Athchóiriú Sean Icóin Treorach - Socraigh leathanach tosaigh + Athraigh an leathanach tosaigh Réamhshocraithe Uile shuibhscríbhinní Brabhsáil cainéil @@ -1132,6 +1146,11 @@ Má dhiúltaítear é níos déanaí, moltar sonraí an aip a ghlanadh chun buga Fíor-Rialtas Féach ar níos déanaí Do chlipbhoirt + Athraigh an leathanach tosaigh i gcónaí + "Athraítear an leathanach tosaigh i gcónaí + +Teorainn: Seans nach n-oibreoidh úsáid a bhaint as an gcnaipe cúil ar an mbarra uirlisí" + Ní athraítear an leathanach tosaigh ach amháin ar tosú an aip Díchumasaigh an t-imreoir Shorts atá ag tosú arís diff --git a/patches/src/main/resources/addresources/values-gl-rES/strings.xml b/patches/src/main/resources/addresources/values-gl-rES/strings.xml index c0d8f55c8..bc8bec158 100644 --- a/patches/src/main/resources/addresources/values-gl-rES/strings.xml +++ b/patches/src/main/resources/addresources/values-gl-rES/strings.xml @@ -84,6 +84,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-gu-rIN/strings.xml b/patches/src/main/resources/addresources/values-gu-rIN/strings.xml index c0d8f55c8..bc8bec158 100644 --- a/patches/src/main/resources/addresources/values-gu-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-gu-rIN/strings.xml @@ -84,6 +84,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-hi-rIN/strings.xml b/patches/src/main/resources/addresources/values-hi-rIN/strings.xml index c0d8f55c8..bc8bec158 100644 --- a/patches/src/main/resources/addresources/values-hi-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-hi-rIN/strings.xml @@ -84,6 +84,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-hr-rHR/strings.xml b/patches/src/main/resources/addresources/values-hr-rHR/strings.xml index c0d8f55c8..bc8bec158 100644 --- a/patches/src/main/resources/addresources/values-hr-rHR/strings.xml +++ b/patches/src/main/resources/addresources/values-hr-rHR/strings.xml @@ -84,6 +84,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-hu-rHU/strings.xml b/patches/src/main/resources/addresources/values-hu-rHU/strings.xml index 7cbcb428f..f72e24a06 100644 --- a/patches/src/main/resources/addresources/values-hu-rHU/strings.xml +++ b/patches/src/main/resources/addresources/values-hu-rHU/strings.xml @@ -459,29 +459,38 @@ A hangerő a képernyő jobb oldalán függőlegesen húzva állítható be"Auto fényerő gesztus engedélyezése A fényerő kézmozdulat legalacsonyabb értékig csúsztatása engedélyezi az auto fényerőt A legalacsonyabb értékig csúsztatás nem engedélyezi az auto fényerőt + Automatikus Csúsztatási átfedés időkorlátja Az átfedés láthatóságának időtartama ezredmásodpercben Az áthúzás átfedésének átlátszósága Az átlátszóság értéke 0-100 között legyen A csúsztatás átlátszóságának 0 és 100 között kell lennie + Áthúzás fedvény folyamatjelző sáv színe + A hangerő és fényerő szabályozók folyamatjelző sávjának színe + Érvénytelen folyamatjelző sávszín + Áthúzás fedvény szövegmérete + Az áthúzás fedvény szövegmérete 1-30 között + A szövegméretnek 1-30 között kell lennie A csúsztatás küszöbértéke A csúsztatáshoz szükséges küszöbérték Hangerő-görgetés érzékenysége Mennyit változzon a hangerő görgetésenként - Kör alakú fedvény megjelenítése - Kör alakú fedvény megjelenik - Vízszintes fedvény megjelenik - Minimál stílus engedélyezése - A minimál fedési stílus engedélyezve van - A minimalista fedvény stílus le van tiltva + Áthúzásos fedvény stílusa + Vízszintes fedvény + Vízszintes fedvény (minimalista – felül) + Vízszintes fedvény (minimalista – középen) + Körkörös fedvény + Körkörös fedvény (minimalista) + Függőleges fedvény + Függőleges fedvény (minimalista) Engedélyezze az ujjbegyújtással történő videóváltást Teljes képernyős módban történő ujjbegyújtás megváltoztatja a következő/előző videóra Teljes képernyős módban történő ujjbegyújtás nem változtatja meg a következő/előző videóra - Automatikus feliratok letiltása - Az automatikus feliratok le vannak tiltva - Az automatikus feliratok engedélyezve vannak + Automatikus feliratok letiltása + Az automatikus feliratok ki vannak kapcsolva + Az automatikus feliratok be vannak kapcsolva Művelet gombok @@ -513,6 +522,11 @@ A hangerő a képernyő jobb oldalán függőlegesen húzva állítható be"Köszönet elrejtése A köszönet gomb el van rejtve A köszönet gomb látható + + Ask elrejtése + Az Ask gomb el van rejtve + Az Ask gomb látható Vágás gomb elrejtése A klip gomb el van rejtve @@ -832,8 +846,8 @@ Korlátozás: A nem tetszések inkognitómódban nem jelenhetnek meg" A tetszik gomb minimális szélességre formázva A tetszik gomb a legjobb megjelenésre formázva Becsült kedvelések mutatása - A becsült kedvelések láthatók - A becsült kedvelések rejtve vannak + A letiltott kedvelésekkel rendelkező videók a becsült kedvelések számát mutatják + A becsült kedvelések nem jelennek meg Üzenet megjelenítése, ha az API nem elérhető Üzenet megjelenítése, ha a Return YouTube Dislike nem elérhető Nem jelenik meg üzenet, ha a Return YouTube Dislike nem elérhető @@ -1106,7 +1120,7 @@ Ha később kikapcsolja, akkor ajánlott az alkalmazás adatait törölni, hogy 19.01.34 - Állítsa vissza a régi navigációs ikonokat - Kezdőlap beállítása + Kezdőlap módosítása Alapértelmezett Összes feliratkozás Csatornák böngészése @@ -1131,6 +1145,9 @@ Ha később kikapcsolja, akkor ajánlott az alkalmazás adatait törölni, hogy Virtuális valóság Megnézem később A saját klipjeid + Mindig módosítsa a kezdőoldalt + "A kezdőlap mindig módosítva van\n\nKorlátozás: A visszalépés gomb a eszköztáron nem biztos, hogy működik" + A kezdőoldal csak az alkalmazás indításakor változik meg A Shorts lejátszás folytatásának kikapcsolása diff --git a/patches/src/main/resources/addresources/values-hy-rAM/strings.xml b/patches/src/main/resources/addresources/values-hy-rAM/strings.xml index 2425086db..4138f307c 100644 --- a/patches/src/main/resources/addresources/values-hy-rAM/strings.xml +++ b/patches/src/main/resources/addresources/values-hy-rAM/strings.xml @@ -459,29 +459,38 @@ MicroG-ի համար մարտկոցի օպտիմալացումը անջատել Միացնել ավտոմատ լուսավորության ժեստը Լուսավորության ժեստի ամենացածր արժեքին իջնելը միացնում է ավտոմատ լուսավորությունը Լուսավորության ժեստի ամենացածր արժեքին իջնելը չի միացնում ավտոմատ լուսավորությունը + Ավտո Սահմանման վերածումը հետաձգելու ժամանակը Վերածման ցուցադրման տևողությունը միլիվայրկյաններով Սողացման ծածկույթի ֆոնի անթափանցություն Անթափանցության արժեք 0-100 միջակայքում Սողալու անթափանցությունը պետք է լինի 0-100 միջակայքում + Սահեցրեք շերտի առաջընթացի սանդղակի գույնը + Ձայնի և պայծառության կառավարման համար նախատեսված առաջընթացի սանդղակի գույնը + Առաջընթացի սանդղակի անվավեր գույն + Սահեցրեք շերտի տեքստի չափը + Սահեցրեք շերտի տեքստի չափը 1-30 միջակայքում + Տեքստի չափը պետք է լինի 1-30 միջակայքում Սահմանման վերածման չափը Սահմանման վերածման չափը Ձայնի սահեցման զգայունություն Թե որքան է ձայնի բարձրությունը փոխվում մեկ սահեցմամբ - Ցույց տալ շրջանաձև ծածկույթը - Ցուցադրված է շրջանաձև ծածկույթ - Հորիզոնական ծածկույթը ցուցադրվում է - Միացնել նվազագույն ոճը - Միացված է նվազագույն վերադրման ոճը - Նվազագույն ծածկույթի ոճն անջատված է + Սահեցրեք էկրանի ծածկույթի ոճը + Հորիզոնական ծածկույթ + Հորիզոնական ծածկույթ (նվազագույն - վերևում) + Հորիզոնական ծածկույթ (նվազագույն - կենտրոնում) + Շրջանաձև ծածկույթ + Շրջանաձև ծածկույթ (նվազագույն) + Ուղղահայաց ծածկույթ + Ուղղահայաց ծածկույթ (նվազագույն) Վայրէջքով տեսանյութերը փոխելու ակտիվացում Լիարժեք ռեժիմով վայրէջքը կփոխվի հաջորդ / նախորդ տեսանյութին Լիարժեք ռեժիմով վայրէջքը չի փոխվի հաջորդ / նախորդ տեսանյութին - Անջատել ավտոմատ ենթագրերը - Ավտոմատ ենթագրերը անջատված են - Ավտոմատ ենթագրերը միացված են + Անջատել ավտոմատ ենթագրերը + Auto ենթագրերը անջատված են + Auto ենթագրերը միացված են Գործողության կոճակներ @@ -513,6 +522,11 @@ MicroG-ի համար մարտկոցի օպտիմալացումը անջատել Թաքցնել Thanks Thanks կոճակը թաքցված է Thanks կոճակը ցուցադրվում է + + Թաքցնել հարցումը + Հարցման կոճակը թաքցված է + Հարցման կոճակը երևում է Թաքցնել Clip Clip կոճակը թաքցված է @@ -832,8 +846,8 @@ MicroG-ի համար մարտկոցի օպտիմալացումը անջատել \"Like\" կոճակը ոճավորված է մինիմալ մեծության համար \"Like\" կոճակը ոճավորված է լավագույն հայացքի համար Ցույց տալ մոտավոր հավանումները - Ցուցադրվում են մոտավոր հավանումները - Մոտավոր հավանումները թաքցված են + «Հավանումներն» անջատված տեսանյութերը ցույց են տալիս հավանումների մոտավոր քանակը + Մոտավոր հավանումները չեն ցուցադրվում Ցուցադրել \"toast\", եթե API-ն հասանելի չէ \"Toast\"-ը ցուցադրվում է, եթե Return YouTube Dislike-ը հասանելի չէ \"Toast\"-ը չի ցուցադրվում, եթե Return YouTube Dislike-ը հասանելի չէ @@ -1107,7 +1121,7 @@ Seekbar thumbnails-ները կօգտագործեն նույն որակը, ինչ 19.01.34 - Վերականգնել հին նավիգացիոն պատկերակները - Սահմանել մեկնարկային էջ + Փոխել մեկնարկային էջը Ըստ լռելյայնի Բոլոր բաժանորդագրությունները Դիտել ալիքները @@ -1132,6 +1146,11 @@ Seekbar thumbnails-ները կօգտագործեն նույն որակը, ինչ Վիրտուալ իրականություն Դիտել հետո Your clips + Միշտ փոխել մեկնարկային էջը + "Մեկնարկային էջը միշտ փոխված է + +Սահմանափակում. գործիքագոտու վրա հետադարձ կոճակն օգտագործելը կարող է չաշխատել" + Մեկնարկային էջը փոխվում է միայն հավելվածի գործարկման ժամանակ Անջատել Shorts պլեյերի վերսկսումը diff --git a/patches/src/main/resources/addresources/values-in-rID/strings.xml b/patches/src/main/resources/addresources/values-in-rID/strings.xml index 0fc7c660a..9c7fafbae 100644 --- a/patches/src/main/resources/addresources/values-in-rID/strings.xml +++ b/patches/src/main/resources/addresources/values-in-rID/strings.xml @@ -459,29 +459,38 @@ Menyesuaikan volume dengan mengusap secara vertikal di sisi kanan layar"Aktifkan gerakan kecerahan otomatis Mengusap ke bawah ke nilai terendah dari gerakan kecerahan akan menyalakan kecerahan otomatis Mengusap ke bawah ke nilai terendah tidak mengaktifkan kecerahan otomatis + Otomatis Batas waktu hamparan usap Jumlah milidetik hamparan terlihat Opasitas latar belakang hamparan geser Nilai opasitas antara 0-100 Opasitas geser harus antara 0-100 + Warna bilah kemajuan lapisan usap + Warna bilah kemajuan untuk kontrol volume dan kecerahan + Warna bilah kemajuan tidak sah + Ukuran teks lapisan usap + Ukuran teks untuk lapisan usap antara 1-30 + Ukuran teks harus antara 1-30 Ambang batas magnitudo usap Jumlah ambang batas untuk terjadinya usapan - Sensitivitas gesek volume - Seberapa besar perubahan volume per gesekan - Tampilkan hamparan melingkar - Hamparan melingkar ditampilkan - Hamparan horizontal ditampilkan - Aktifkan gaya minimal - Gaya hamparan minimal diaktifkan - Gaya hamparan minimal dinonaktifkan + Sensitivitas volume usap + Seberapa besar perubahan volume per usapan + Gaya hamparan usap + Hamparan horizontal + Hamparan horizontal (minimal - atas) + Hamparan horizontal (minimal - tengah) + Hamparan melingkar + Hamparan melingkar (minimal) + Hamparan vertikal + Hamparan vertikal (minimal) Aktifkan usapan untuk beralih video Mengusap dalam mode layar penuh akan beralih ke video berikutnya/sebelumnya Mengusap dalam mode layar penuh tidak akan beralih ke video berikutnya/sebelumnya - Matikan teks otomatis - Teks otomatis dinonaktifkan - Teks otomatis diaktifkan + Matikan teks otomatis + Teks otomatis dinonaktifkan + Teks otomatis diaktifkan Tombol tindakan @@ -513,6 +522,11 @@ Menyesuaikan volume dengan mengusap secara vertikal di sisi kanan layar"Sembunyikan Terima kasih Tombol terima kasih disembunyikan Tombol terima kasih ditampilkan + + Sembunyikan Tanya + Tombol Tanya disembunyikan + Tombol Tanya ditampilkan Sembunyikan Klip Tombol klip disembunyikan @@ -832,8 +846,8 @@ Batasan: Dislike mungkin tidak muncul dalam mode penyamaran" Tombol suka ditata untuk lebar minimum Tombol suka ditata untuk tampilan terbaik Tampilkan perkiraan suka - Perkiraan suka ditampilkan - Perkiraan suka disembunyikan + Video dengan suka yang dinonaktifkan menampilkan perkiraan jumlah suka + Perkiraan jumlah suka tidak ditampilkan Tampilkan pesan timbul jika API tidak tersedia Pesan timbul tidak ditampilkan jika Return YouTube Dislike tidak tersedia Pesan timbul tidak ditampilkan jika Return YouTube Dislike tidak tersedia @@ -1106,7 +1120,7 @@ Jika kemudian dimatikan, disarankan untuk menghapus data aplikasi untuk mencegah 19.01.34 - Pulihkan ikon navigasi lama - Tetapkan halaman awal + Ubah halaman awal Bawaan Semua langganan Jelajahi saluran @@ -1131,6 +1145,11 @@ Jika kemudian dimatikan, disarankan untuk menghapus data aplikasi untuk mencegah Realitas Virtual Tonton nanti Klip Anda + Selalu ubah halaman awal + "Halaman awal selalu diubah + +Batasan: Menggunakan tombol kembali pada toolbar mungkin tidak berfungsi" + Halaman awal hanya diubah saat aplikasi dimulai Matikan melanjutkan pemutar video Shorts diff --git a/patches/src/main/resources/addresources/values-is-rIS/strings.xml b/patches/src/main/resources/addresources/values-is-rIS/strings.xml index c0d8f55c8..bc8bec158 100644 --- a/patches/src/main/resources/addresources/values-is-rIS/strings.xml +++ b/patches/src/main/resources/addresources/values-is-rIS/strings.xml @@ -84,6 +84,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-it-rIT/strings.xml b/patches/src/main/resources/addresources/values-it-rIT/strings.xml index a303d4813..46c57f818 100644 --- a/patches/src/main/resources/addresources/values-it-rIT/strings.xml +++ b/patches/src/main/resources/addresources/values-it-rIT/strings.xml @@ -459,29 +459,38 @@ Regola il volume scorrendo verticalmente sul lato destro dello schermo" Attiva il gesto della luminosità automatica Scorri verso il basso fino al valore più basso del gesto luminosità per abilitare la luminosità automatica Scorrendo verso il basso, il valore più basso non abilita la luminosità automatica + Automatico Timeout sovrapposizione dello scorrimento La visibilità in millisecondi della sovrapposizione Opacità di sfondo della sovrapposizione di scorrimento Valore di opacità tra 0-100 L\'opacità di scorrimento deve essere tra 0-100 + Colore della barra di avanzamento della sovrapposizione a scorrimento + Il colore della barra di avanzamento per i controlli di volume e luminosità + Colore della barra di avanzamento non valido + Dimensione del testo della sovrapposizione a scorrimento + La dimensione del testo per la sovrapposizione a scorrimento tra 1 e 30 + La dimensione del testo deve essere compresa tra 1 e 30 Ampiezza limite della soglia di scorrimento Il limite di ampiezza entro cui deve avvenire lo scorrimento Sensibilità allo scorrimento del volume La quantità di volume che cambia per scorrimento - Mostra sovrapposizione circolare - La sovrapposizione circolare viene mostrata - La sovrapposizione orizzontale viene mostrata - Abilita stile minimale - Lo stile di sovrapposizione minimale è abilitato - Lo stile di sovrapposizione minimale è disabilitato + Stile sovrapposizione a scorrimento + Sovrapposizione orizzontale + Sovrapposizione orizzontale (minima - in alto) + Sovrapposizione orizzontale (minima - al centro) + Sovrapposizione circolare + Sovrapposizione circolare (minima) + Sovrapposizione verticale + Sovrapposizione verticale (minima) Attiva il gesto per cambiare video Lo scorrimento in modalità a schermo intero passerà al video successivo/precedente Lo scorrimento in modalità schermo intero non cambierà al video successivo/precedente - Disabilita i sottotitoli automatici - I sottotitoli automatici sono disabilitati - I sottotitoli automatici sono abilitati + Disabilita i sottotitoli automatici + I sottotitoli Auto sono disabilitati + I sottotitoli Auto sono abilitati Pulsanti azione @@ -513,6 +522,11 @@ Regola il volume scorrendo verticalmente sul lato destro dello schermo" Nascondi Grazie Grazie pulsante è nascosto Il pulsante Grazie è visibile + + Nascondi richiesta + Il pulsante Richiedi è nascosto + Il pulsante Richiedi è visibile Nascondi Clip Il pulsante Clip è nascosto @@ -832,8 +846,8 @@ Limitazione: i \"Non mi piace\" potrebbero non apparire in modalità incognito"< Pulsante Mi Piace riadattato per una larghezza minima Pulsante Mi Piace riadattato per la migliore visualizzazione Mostra \"Mi piace\" stimati - Vengono mostrati i \"Mi piace\" stimati - I \"Mi piace\" stimati sono nascosti + I video con + I \"Mi piace\" stimati non sono mostrati Mostra un toast se l\'API non è disponibile Una notifica è mostrata se Return YouTube Dislike non è disponibile Nessuna notifica viene mostrata se Return YouTube Dislike non è disponibile @@ -1106,7 +1120,7 @@ Se in seguito verrà disattivato, si consiglia di cancellare i dati dell'app per 19.01.34 - Ripristina le vecchie icone di navigazione - Imposta pagina iniziale + Cambia pagina iniziale Predefinito Tutte le iscrizioni Sfoglia canali @@ -1131,6 +1145,11 @@ Se in seguito verrà disattivato, si consiglia di cancellare i dati dell'app per Realtà Virtuale Guarda più tardi Le tue clip + Cambia sempre la pagina iniziale + "La pagina iniziale viene sempre modificata + +Limitazione: l'utilizzo del pulsante Indietro sulla barra degli strumenti potrebbe non funzionare" + La pagina iniziale viene modificata solo all\'avvio dell\'app Disabilita la ripresa del player Shorts diff --git a/patches/src/main/resources/addresources/values-iw-rIL/strings.xml b/patches/src/main/resources/addresources/values-iw-rIL/strings.xml index 48dde42bc..790261fe0 100644 --- a/patches/src/main/resources/addresources/values-iw-rIL/strings.xml +++ b/patches/src/main/resources/addresources/values-iw-rIL/strings.xml @@ -42,6 +42,9 @@ Second \"item\" text" הגדרות ReVanced אופסו לברירת מחדל %d הגדרות יובאו ייבוא נכשל: %s + הצג סמלי הגדרות ReVanced + סמלי ההגדרות מוצגים + סמלי ההגדרות אינם מוצגים שפת ReVanced "תרגומים לשפות מסוימות עשויים להיות חסרים או לא שלמים. @@ -225,6 +228,9 @@ Second \"item\" text" הסתר כרטיסי אמן כרטיסי אמן מוסתרים כרטיסי אמן מוצגים + הסתר את \'סיכום הווידאו שנוצר על ידי בינה מלאכותית\' + מדור סיכום הסרטון מוסתר + מדור סיכום הסרטון מוצג הסתר מאפיינים המדורים \'מקומות שמככבים בסרטון\', \'משחקים\', \'מוזיקה\', ו\'אנשים שאוזכרו\' מוסתרים המדורים \'מקומות שמככבים בסרטון\', \'משחקים\', \'מוזיקה\', ו\'אנשים שאוזכרו\' מוצגים @@ -261,8 +267,12 @@ Second \"item\" text" מוצג בסרטונים קשורים תגובות הסתר או הצג רכיבי מדור תגובות + הסתר סיכום צ\'אט של בינה מלאכותית סיכום צ\'אט מוסתר סיכום צ\'אט מוצג + הסתר סיכום תגובות AI + סיכום תגובות מוסתר + סיכום התגובות מוצג הסתר כותרת \'תגובות של חברי מועדון\' כותרת \'תגובות של חברי מועדון\' מוסתרת כותרת \'תגובות של חברי מועדון\' מוצגת @@ -422,6 +432,9 @@ Second \"item\" text" מחווה מופעלת + הפעל הקשה כדי לדלג + הקשה כדי לדלג מופעלת + הקשה כדי לדלג מושבתת הפעל מחוות בהירות @@ -434,6 +447,9 @@ Second \"item\" text" כוונן את עוצמת הקול על ידי החלקה אנכית בצד הימני של המסך" החלקת עוצמת קול במסך מלא מושבתת + הפעל מחוות לחץ כדי להחליק + לחץ כדי להחליק מופעל + לחץ כדי להחליק מושבת הפעל משוב ברטט משוב ברטט מופעל משוב ברטט מושבת @@ -443,6 +459,7 @@ Second \"item\" text" הפעל מחוות בהירות אוטומטית החלקה למטה לערך הנמוך ביותר של מחוות הבהירות מפעילה בהירות אוטומטית החלקה למטה לערך הנמוך ביותר לא מפעילה בהירות אוטומטית + אוטומטי פסק זמן לשכבת-על של החלקה כמות אלפיות השניה ששכבת-העל גלויה אטימות רקע שכבת-על של החלקה @@ -450,20 +467,16 @@ Second \"item\" text" אטימות החלקה חייבת להיות בין 0 ל-100 סף גודל החלקה כמות הסף להתרחשות החלקה - הצג שכבת-על מעגלית - שכבת-על מעגלית מוצגת - שכבת-על אופקית מוצגת - הפעל סגנון מינמלי - סגנון שכבת-על מינמלי מופעל - סגנון שכבת-על מינמלי מושבת + רגישות החלקה בעוצמת הקול + כמה משתנה עוצמת השמע לכל החלקה הפעל החלקה כדי לשנות סרטונים החלקה במצב מסך מלא תשנה לסרטון הבא/הקודם החלקה במצב מסך מלא לא תשנה לסרטון הבא/הקודם - השבת כתוביות אוטומטיות - כתוביות אוטומטיות מופעלות - כתוביות אוטומטיות מושבתות + השבת כתוביות אוטומטיות + כתוביות אוטומטיות מופעלות + כתוביות אוטומטיות מושבתות פעולות לחצנים @@ -495,6 +508,8 @@ Second \"item\" text" הסתר תודה לחצן תודה מוסתר לחצן תודה מוצג + הסתר קליפ לחצן קליפ מוסתר @@ -541,6 +556,7 @@ Second \"item\" text" השבת שורת מצב שקופה שורת מצב אטומה שורת מצב אטומה או שקופה + בחלק מהמכשירים, הפעלת תכונה זו עשויה לשנות את סרגל הניווט של המערכת לשקוף. השבת סרגל בהיר שקוף סרגל ניווט במצב בהיר הוא אטום סרגל ניווט במצב בהיר הוא אטום או שקוף @@ -596,6 +612,9 @@ Second \"item\" text" תפריט טראק אודיו מוסתר תפריט טראק אודיו מוצג + "תפריט רצועת השמע מוסתר + +כדי להציג את תפריט רצועת השמע, שנה את 'זיוף זרמי וידאו' ל-iOS TV" הסתר \'צפה ב-VR\' תפריט \'צפה ב-VR\' מוסתר @@ -811,8 +830,8 @@ Second \"item\" text" לחצן אהבתי מעוצב לרוחב מינימלי לחצן אהבתי מעוצב למראה הטוב ביותר הצג סימוני \'אהבתי\' משוערים - סימוני \'אהבתי\' משוערים מוצגים - סימוני \'אהבתי\' משוערים מוסתרים + סרטונים עם סימני לייק מושבתים מציגים ספירת לייקים משוערת + סימוני \'אהבתי\' משוערים אינם מוצגים הצג הודעה קופצת אם ה-API אינו זמין הודעה קופצת מוצגת אם Return YouTube Dislike אינו זמין הודעה קופצת אינה מוצגת אם Return YouTube Dislike אינו זמין @@ -1085,7 +1104,7 @@ Second \"item\" text" 19.01.34 - שחזר סמלי ניווט ישנים - הגדר דף התחלה + שנה את דף ההתחלה ברירת מחדל כל המינויים עיין בערוצים @@ -1110,6 +1129,11 @@ Second \"item\" text" מציאות מדומה לצפייה בהמשך הקליפים שלך + לשנות תמיד את דף הפתיחה + "דף הפתיחה תמיד משתנה + +מגבלה: ייתכן שלחצן החזרה בסרגל הכלים לא יפעל" + דף הפתיחה משתנה רק בעת הפעלת האפליקציה השבת חידוש נגן Shorts @@ -1161,6 +1185,9 @@ Second \"item\" text" מיני-נגן ניתן לגרירה מחוץ למסך לשמאל או לימין" מחוות גרירה אופקית מושבתת + הסתר לחצני שכבת-על + לחצני שכבת-על מוסתרים + לחצני שכבת-על מוצגים הסתר לחצני סגירה והרחבה "הלחצנים מוסתרים diff --git a/patches/src/main/resources/addresources/values-ja-rJP/strings.xml b/patches/src/main/resources/addresources/values-ja-rJP/strings.xml index 53979f936..aabd7e4bb 100644 --- a/patches/src/main/resources/addresources/values-ja-rJP/strings.xml +++ b/patches/src/main/resources/addresources/values-ja-rJP/strings.xml @@ -24,7 +24,7 @@ Second \"item\" text" チェックに失敗しました 公式サイトを開く 無視する - <h5>このアプリは、あなたによってパッチが適用されていないようです。</h5><br>このアプリは正しく動作しない可能性があり、<b>有害または危険なものである可能性があります</b>。<br><br>以下の検査結果は、このアプリがパッチ済みAPKであるか、または他のユーザーから取得したものであることを示唆しています。<br><br><small>%1$s</small><br>検証済みで安全なアプリを確実に使用するために、<b>このアプリをアンインストールして、自分でパッチを適用する</b>ことを強くお勧めします。<p><br>無視した場合、この警告は2回だけ表示されます。 + <h5>このアプリは、あなたによってパッチが適用されていないようです。</h5><br>このアプリは正しく動作しない可能性があり、<b>有害または危険なものである可能性があります</b>。<br><br>以下の検査結果は、このアプリがパッチ済み APK であるか、または他のユーザーから取得したものであることを示唆しています。<br><br><small>%1$s</small><br>検証済みで安全なアプリを確実に使用するために、<b>このアプリをアンインストールして、自分でパッチを適用する</b>ことを強くお勧めします。<p><br>無視した場合、この警告は2回だけ表示されます。 別のデバイス上でパッチが適用されている ReVanced Manager によってインストールされていない 10 分以上前にパッチが適用されている @@ -74,7 +74,7 @@ Second \"item\" text" MicroG GmsCore に対する電池の最適化を無効にしても、バッテリーの使用に悪影響を及ぼすことはありません。 -続行ボタンをタップして電池の最適化の設定を変更してください。" +[続行] をタップして電池の最適化の設定を変更してください。" 続行 @@ -112,7 +112,7 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ stack trace を記録する デバッグ ログにstack trace が含まれます デバッグ ログにstack trace は含まれません - ReVanced エラーのトーストを表示 + ReVanced エラーのトーストを表示する エラー発生時にトースト ポップアップが表示されます エラーが発生してもトースト ポップアップは表示されません "この機能をオフにすると、すべてのReVanced エラー通知が非表示になります。 @@ -133,7 +133,8 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ チャンネルの透かしは表示されません チャンネルの透かしは表示されます 横スクロール欄を非表示 - "以下の項目は表示されません + "横スクロール欄は表示されません +例: • 緊急ニュース • 続きを見る • 他のチャンネルを探す @@ -147,9 +148,9 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ 「メンバーになる」ボタンは表示されません 「メンバーになる」ボタンは表示されます - チャンネル ページの「おすすめ」欄を非表示 - チャンネル ページに「おすすめ」欄は表示されません - チャンネル ページに「おすすめ」欄が表示されます + 「おすすめ」欄を非表示 + 「おすすめ」欄はチャンネル ページに表示されません + 「おすすめ」欄はチャンネル ページに表示されます 「通知を受け取る」ボタンを非表示 @@ -164,9 +165,9 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ 「もっと見る」ボタンを非表示 「もっと見る」ボタンは表示されません 「もっと見る」ボタンは表示されます - Timed Reactions を非表示 - Timed Reactions およびチャット欄のハートマーク アイコンは表示されません - Timed Reactions およびチャット欄のハートマー ク アイコンは表示されます + Timed Reaction を非表示 + Timed Reaction とチャット欄のハートマーク アイコンは表示されません + Timed Reaction とチャット欄のハートマー ク アイコンは表示されます 「このチャンネルのガイドライン」を非表示 「このチャンネルのガイドライン」は表示されません 「このチャンネルのガイドライン」は表示されます @@ -174,8 +175,8 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ チップ欄は表示されません チップ欄は表示されます 動画下の展開可能なバナーを非表示 - 動画下に展開可能なバナーは表示されません - 動画下に展開可能なバナーが表示されます + 動画下の展開可能なバナーは表示されません + 動画下の展開可能なバナーは表示されます コミュニティ投稿を非表示 コミュニティ投稿は表示されません コミュニティ投稿は表示されます @@ -183,8 +184,8 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ コンパクトなバナーは表示されません コンパクトなバナーは表示されます 映画セクションを非表示 - 検索結果や概要欄に映画セクションは表示されません - 検索結果や概要欄に映画セクションが表示されます + 映画セクションは表示されません + 映画セクションは表示されます フィードのアンケートを非表示 フィードのアンケートは表示されません フィードのアンケートは表示されます @@ -206,9 +207,9 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ 医療情報パネルを非表示 医療情報パネルは表示されません 医療情報パネルは表示されます - チャンネル バーを非表示 - チャンネル バーは表示されません - チャンネル バーは表示されます + チャンネルバーを非表示 + チャンネルバーは表示されません + チャンネルバーは表示されます ゲームを非表示 ゲームは表示されません ゲームは表示されます @@ -216,8 +217,8 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ 全画面表示のクイック アクションは表示されません 全画面表示のクイック アクションは表示されます クイック アクション内の関連動画を非表示 - クイック アクションに関連動画は表示されません - クイック アクションに関連動画が表示されます + 関連動画はクイック アクション内に表示されません + 関連動画はクイック アクション内に表示されます 検索結果の画像欄を非表示 検索結果の画像欄は表示されません 検索結果の画像欄は表示されます @@ -236,7 +237,7 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ 関連情報を非表示 注目の場所 / ゲーム / 音楽 / 言及された人物セクションは表示されません 注目の場所 / ゲーム / 音楽 / 言及された人物セクションは表示されます - チャプターを非表示 + チャプター セクションを非表示 チャプター セクションは表示されません チャプター セクションは表示されます 「このコンテンツの作成手段」を非表示 @@ -251,7 +252,7 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ 「主な概念」を非表示 主な概念セクションは表示されません 主な概念セクションが表示されます - 文字起こしを非表示 + 文字起こしセクションを非表示 文字起こしセクションは表示されません 文字起こしセクションは表示されます 概要欄 @@ -259,22 +260,22 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ カテゴリー バー フィード、検索結果、関連動画の上部にカテゴリーごとに表示されるバーの設定 フィードのカテゴリー バーを非表示 - フィードにカテゴリー バーは表示されません - フィードにカテゴリー バーが表示されます + カテゴリー バーはフィードに表示されません + カテゴリー バーはフィードに表示されます 検索結果のカテゴリー バーを非表示 - 検索結果にカテゴリー バーは表示されません - 検索結果にカテゴリー バーが表示されます + カテゴリー バーは検索結果に表示されません + カテゴリー バーは検索結果に表示されます 関連動画のカテゴリー バーを非表示 - 関連動画にカテゴリー バーは表示されません - 関連動画にカテゴリー バーが表示されます + カテゴリー バーは関連動画に表示されません + カテゴリー バーは検索結果に表示されます コメント コメント セクションの設定 「チャットの要約」を非表示 「チャットの要約」は表示されません 「チャットの要約」は表示されます コメント欄の「トピック」を非表示 - コメント欄のヘッダーに「トピック」は表示されません - コメント欄のヘッダーに「トピック」が表示されます + コメント欄の「トピック」は表示されません + コメント欄の「トピック」は表示されます 「メンバーによるコメント」ヘッダーを非表示 「メンバーによるコメント」ヘッダーは表示されません 「メンバーによるコメント」ヘッダーは表示されます @@ -294,26 +295,26 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ Thanks ボタンは表示されません Thanks ボタンは表示されます - YouTubeのDoodlesを隠す - 検索バーの落書きは非表示です - 検索バーの落書きが表示されます - "YouTube Doodles は毎年数日表示されます。 + YouTube Doodle を非表示 + Doodle は検索バーに表示されません + Doodle は検索バーに表示されます + "YouTube Doodle は、年に数日、祝日や記念日などの特別な日に表示されます。 -あなたの地域で Doodle が表示されている時に、この設定がオンになっている場合、検索結果にカテゴリー バーが表示されなくなります。" - カスタム フィルタ +あなたの地域で Doodle が表示されているとき、この設定をオンにすると検索結果にカテゴリー バーが表示されなくなります。" + カスタムフィルタ アプリ内に表示される component を非表示にするフィルタの設定 - カスタム フィルタを有効にする - カスタム フィルタは有効です - カスタム フィルタは無効です - カスタム フィルタ + カスタムフィルタを有効にする + カスタムフィルタは有効です + カスタムフィルタは無効です + カスタムフィルタ 非表示にしたい component の path builder string を改行区切りで入力します - 無効なカスタム フィルタ: %s + 無効なカスタムフィルタ: %s キーワード フィルタ フィード、検索結果、関連動画に表示される動画をキーワードで除外するフィルタの設定 - キーワードに合致する動画をホーム フィードから除外する - キーワードに合致する動画はホーム フィードに表示されません - ホーム フィードはキーワードでフィルタリングされません + キーワードに合致する動画をホームフィードから除外する + キーワードに合致する動画はホームフィードに表示されません + ホームフィードはキーワードでフィルタリングされません キーワードに合致する動画を検索結果から除外する キーワードに合致する動画は検索結果に表示されません 検索結果はキーワードでフィルタリングされません @@ -339,46 +340,46 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ キーワードを二重引用符で囲むことで、動画のタイトルやチャンネル名の単語の一部とキーワードが合致しないようにできます<br><br>例えば、<br><b>\"ai\"</b>は、次の動画を除外します:<b>How does AI work?</b><br>しかし、次の動画は除外しません:<b>What does fair use mean?</b> - キーワードを使用できません: %s - キーワードを二重引用符で囲む必要があります: %s - キーワードに矛盾する宣言があります: %s - キーワードが短すぎるため二重引用符で囲む必要があります: %s - キーワードはすべての動画を除外します: %s + 使用できないキーワード: %s + 二重引用符が必要なキーワード: %s + 矛盾する宣言があるキーワード: %s + 短すぎるキーワード: %s + 全ての動画を除外するキーワード: %s 一般的な広告を非表示 一般的な広告は表示されません 一般的な広告は表示されます 全画面広告を非表示 - "アプリ起動時に全画面広告は表示されません + "全画面広告は、アプリ起動時に表示されません -この機能は、古い端末でのみ利用できます" - アプリ起動時に全画面広告が表示されます +この機能は、古いデバイスでのみ利用できます" + 全画面広告は、アプリ起動時に表示されます ボタン付き広告を非表示 ボタン付き広告は表示されません ボタン付き広告は表示されます 「プロモーションを含みます」ボタンを非表示 - 動画上に「プロモーションを含みます」ボタンは表示されません - 動画上に「プロモーションを含みます」ボタンが表示されます - 自己スポンサーカードを非表示 - 自己スポンサーカードは表示されません + 「プロモーションを含みます」ボタンはプレーヤー画面に表示されません + 「プロモーションを含みます」ボタンはプレーヤー画面に表示されます + 自己スポンサー カードを非表示 + 自己スポンサー カードは表示されません 自己スポンサーカードは表示されます 「商品を表示」ボタンを非表示 - 動画上に「商品を表示」ボタンや商品ボタンは表示されません - 動画上に「商品を表示」ボタンや商品ボタンが表示されます - 終了画面のストア バナーを非表示 - 動画の終了画面にストア バナーは表示されません - 動画の終了画面にストア バナーが表示されます + 「商品を表示」ボタンや商品ボタンはプレーヤー画面に表示されません + 「商品を表示」ボタンや商品ボタンはプレーヤー画面に表示されます + 終了画面のストアバナーを非表示 + 終了画面のストアバナーは表示されません + 終了画面のストアバナーは表示されます ストア広告を非表示 ストア広告は表示されません ストア広告は表示されます - 概要欄の商品へのリンクを非表示 - 概要欄にタグ付けされた商品へのリンクは表示されません - 概要欄にタグ付けされた商品へのリンクが表示されます + 商品へのリンクを非表示 + タグ付けされた商品へのリンクは概要欄に表示されません + タグ付けされた商品へのリンクは概要欄に表示されます - チャンネルページの「ストアに移動」ボタンを非表示 - チャンネルページに「ストアに移動」ボタンは表示されません - チャンネルページに「ストアに移動」ボタンが表示されます + 「ストアに移動」ボタンを非表示 + 「ストアに移動」ボタンはチャンネル ページに表示されません + 「ストアに移動」ボタンはチャンネル ページに表示されます ウェブ検索結果を非表示 ウェブ検索結果は表示されません ウェブ検索結果は表示されます @@ -386,7 +387,7 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ 商品バナーは表示されません 商品バナーは表示されます - 全画面広告の非表示は、古い端末でのみ動作します + 全画面広告の非表示は古いデバイス専用です YouTube Premium の広告を非表示 @@ -402,36 +403,36 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ URL をクリップボードにコピーしました タイムスタンプ付きの URL がコピーされました 「動画の URL をコピー」ボタンを表示 - オーバーレイにボタンが表示されます。タップすると動画の URL を、長押しするとタイムスタンプ付きの URL をそれぞれコピーできます - オーバーレイにボタンは表示されません + ボタンはオーバーレイに表示されます。タップすると動画の URL を、長押しするとタイムスタンプ付きの URL をそれぞれコピーできます + ボタンはオーバーレイに表示されません 「動画のタイムスタンプ付き URL をコピー」ボタンを表示 - オーバーレイにボタンが表示されます。タップするとタイムスタンプ付きの URL を、長押しするとタイムスタンプなしの URL をそれぞれコピーできます - オーバーレイにボタンは表示されません + ボタンはオーバーレイに表示されます。タップするとタイムスタンプ付きの URL を、長押しするとタイムスタンプなしの URL をそれぞれコピーできます + ボタンはオーバーレイに表示されません 「ご自身の責任」ダイアログを削除 ダイアログは削除されます ダイアログは表示されます - この機能は年齢制限を回避するものではなく、自動的に承認するだけです。 + この機能によって年齢制限が回避される訳ではありません。自動的に承認するだけです。 外部ダウンロード 外部ダウンローダーの設定 - 外部ダウンロード ボタンを表示 - オーバーレイに外部ダウンロード ボタンが表示されます - オーバーレイに外部ダウンロード ボタンは表示されません + 外部ダウンロード ボタンを表示する + 外部ダウンロード ボタンはオーバーレイに表示されます + 外部ダウンロード ボタンはオーバーレイに表示されません オフライン ボタンの動作を上書きする オフライン ボタンは外部ダウンローダーを呼び出します - オフライン ボタンは内製のダウンローダーを呼び出します + オフライン ボタンはアプリ内のダウンローダーを呼び出します 外部ダウンローダーのパッケージ名 NewPipe や Seal など、インストール済みのダウンロード アプリのパッケージ名を入力します %s はインストールされていません。インストールしてください。 シーク ジェスチャーを無効にする - シークバーの上へのスワイプは無効です - シークバーの上へのスワイプは有効です + シークバーを上へスワイプしても、何も起こりません + シークバーを上へスワイプすると、再生位置を細かく調整できます タップによるシークを有効にする @@ -456,34 +457,43 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ 触覚フィードバックは有効です 触覚フィードバックは無効です 明るさを保存する - 全画面表示を開始、解除するとき、明るさを復元、保存します - 全画面表示を開始、解除するとき、明るさを復元、保存しません + 全画面表示を開始、解除するときに、明るさを復元、保存します + 全画面表示を開始、解除するときに、明るさを復元、保存しません 明るさジェスチャーの自動調節を有効にする ジェスチャーで明るさを最小値まで下げると、明るさが自動調節されます ジェスチャーで明るさを最小値まで下げても、明るさは自動調節されません - オーバーレイ表示のタイムアウト - オーバーレイが表示される時間(ミリ秒) + 自動 + オーバーレイのタイムアウト + スワイプ オーバーレイが表示される時間 (ミリ秒) オーバーレイの背景の透明度 - 透明度の値は 0-100 の範囲で、0 が透明です - スワイプ: 透明度の値は 0-100 でなければなりません + 透明度の範囲は 0-100 で、0 が透明です + スワイプ: 透明度の範囲は 0-100 です + オーバーレイのグラフの色 + スワイプ中の音量や明るさの現在値を視覚的に表示するグラフの色 + グラフの色の値が無効です + オーバーレイのテキストサイズ + スワイプ オーバーレイのテキストサイズ (1-30) + テキストサイズの範囲は 1-30 です スワイプのしきい値 - スワイプと判定される最小の距離 + スワイプと判定される最小のスワイプ距離 音量ジェスチャーのスワイプ感度 スワイプによる音量の変化量 - 円形のオーバーレイを使用する - 円形のオーバーレイが表示されます - 横長のオーバーレイが表示されます - オーバーレイを最小限化する - 最小限のオーバーレイが表示されます - 通常のオーバーレイが表示されます + オーバーレイのスタイル + 横長 + 横長 (最小限 - 画面上部) + 横長 (最小限 - 画面中央) + 円形 + 円形 (最小限) + 縦長 + 縦長 (最小限) スワイプして動画を切り替える 全画面表示でスワイプすると、次 / 前の動画に切り替わります - 全画面表示でスワイプしても、次 / 前の動画には切り替わりません + 全画面表示でスワイプしても、次 / 前の動画に切り替わりません - 自動字幕表示を無効にする - 自動字幕表示は無効です - 自動字幕表示は有効です + デフォルトの字幕表示を無効にする + デフォルトの字幕表示は無効です + デフォルトの字幕表示は有効です アクション ボタン @@ -515,10 +525,15 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ Thanks ボタンを非表示 Thanks ボタンは表示されません Thanks ボタンは表示されます + + 質問ボタンを非表示 + 質問ボタンは表示されません + 質問ボタンは表示されます - クリップ ボタンを非表示 - クリップ ボタンは表示されません - クリップ ボタンは表示されます + クリップボタンを非表示 + クリップボタンは表示されません + クリップボタンは表示されます 保存ボタンを非表示 保存ボタンは表示されません @@ -529,12 +544,12 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ 画面下部のナビゲーション バー上のボタンの設定 「ホーム」を非表示 - ホーム ボタンは表示されません - ホーム ボタンは表示されます + ホームボタンは表示されません + ホームボタンは表示されます 「ショート」を非表示 - ショート ボタンは表示されません - ショート ボタンは表示されます + ショートボタンは表示されません + ショートボタンは表示されます 「作成」を非表示 作成ボタンは非表示です @@ -629,19 +644,19 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ 画質設定メニューの脚注は表示されます - 前の動画 & 次の動画ボタンを非表示 + 前の動画ボタンと次の動画ボタンを非表示 前の動画ボタンと次の動画ボタンは表示されません 前の動画ボタンと次の動画ボタンは表示されます - キャスト ボタンを非表示 - オーバーレイにキャスト ボタンは表示されません - オーバーレイにキャスト ボタンが表示されます + キャストボタンを非表示 + キャストボタンはオーバーレイに表示されません + キャストボタンはオーバーレイに表示されます 字幕ボタンを非表示 - オーバーレイに字幕ボタンは表示されません - オーバーレイに字幕ボタンが表示されます + 字幕ボタンはオーバーレイに表示されません + 字幕ボタンはオーバーレイに表示されます 自動再生ボタンを非表示 - オーバーレイに自動再生ボタンは表示されません - オーバーレイに自動再生ボタンが表示されます + 自動再生ボタンはオーバーレイに表示されません + 自動再生ボタンはオーバーレイに表示されます 動画の終了画面を非表示 @@ -655,8 +670,8 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ 情報カードを非表示 - 動画上に情報カードは表示されません - 動画上に情報カードが表示されます + 情報カードはプレーヤー画面に表示されません + 情報カードはプレーヤー画面に表示されます 数字のアニメーションを無効にする @@ -675,19 +690,19 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ ショート動画プレーヤー ショート動画プレーヤーの設定 - ホーム フィードのショート動画を非表示 - ホーム フィードにショート動画は表示されません - ホーム フィードにショート動画が表示されます + ホームフィードのショート動画を非表示 + ショート動画はホームフィードや関連動画に表示されません + ショート動画はホームフィードや関連動画に表示されます 登録チャンネル フィードのショート動画を非表示 - 登録チャンネル フィードにショート動画は表示されません - 登録チャンネル フィードにショート動画が表示されます + ショート動画は登録チャンネル フィードに表示されません + ショート動画は登録チャンネル フィードに表示されます 検索結果のショート動画を非表示 - 検索結果にショート動画は表示されません - 検索結果にショート動画が表示されます + ショート動画は検索結果に表示されません + ショート動画は検索結果に表示されます 再生履歴のショート動画を非表示 - 再生履歴と関連動画にショート動画は表示されません - 再生履歴と関連動画にショート動画が表示されます + ショート動画は再生履歴に表示されません + ショート動画は再生履歴に表示されます 「メンバーになる」ボタンを非表示 「メンバーになる」ボタンは表示されません @@ -697,8 +712,8 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ チャンネル登録ボタンは表示されません チャンネル登録ボタンは表示されます 一時停止中のオーバーレイ上のボタンを非表示 - 一時停止中のオーバーレイにボタンは表示されません - 一時停止中のオーバーレイにボタンが表示されます + 一時停止中のオーバーレイ上のボタンは表示されません + 一時停止中のオーバーレイ上のボタンは表示されます ショップ ボタンを非表示 ショップ ボタンは表示されません ショップ ボタンは表示されます @@ -755,9 +770,9 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ 情報パネルを非表示 情報パネルは表示されません 情報パネルは表示されます - チャンネル バーを非表示 - チャンネル バーは表示されません - チャンネル バーは表示されます + チャンネルバーを非表示 + チャンネルバーは表示されません + チャンネルバーは表示されます 動画のタイトルを非表示 動画のタイトルは表示されません 動画のタイトルは表示されます @@ -775,12 +790,12 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ ナビゲーション バーは表示されます - 再生終了時に「関連動画」を表示しない - "再生終了時に「関連動画」は表示されませんが、自動再生がオンの場合は自動で再生されます + 再生終了時の「関連動画」を非表示 + "「関連動画」は、再生終了時にプレーヤー画面に表示されませんが、自動再生がオンの場合は自動で再生されます 自動再生の設定は YouTube の設定で変更できます: 設定 → 再生 → 次の動画を自動再生" - 再生終了時に「関連動画」が表示されます + 「関連動画」は、再生終了時にプレーヤー画面に表示されます タイムスタンプを非表示 @@ -806,8 +821,8 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ オーバーレイの透明度 - 透明度の値は 0-100 の範囲で、0 が透明です - プレーヤー: オーバーレイの透明度は 0-100 でなければなりません + 透明度の範囲は 0-100 で、0 が透明です + 動画プレーヤー: 透明度の範囲は 0-100 です @@ -834,8 +849,8 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ ボタンはコンパクトに表示されます ボタンは最適なサイズで表示されます 高評価の推定値を表示 - 高評価が非公開の動画で推定値が表示されます - 高評価が非公開の動画では数値は表示されません + 高評価が非公開の動画には、推定値が表示されます + 高評価の推定値は表示されません API 利用不可時にトーストを表示 Return YouTube Dislike が利用できない場合、トースト ポップアップが表示されます Return YouTube Dislike が利用できない場合でもトースト ポップアップは表示されません @@ -860,9 +875,9 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ %d ミリ秒前 - ワイド検索バーを有効にする - ワイド検索バーは有効です - ワイド検索バーは無効です + ワイド検索バーを使用する + ワイド検索バーが表示されます + 通常の検索バーが表示されます 高画質サムネイルを有効にする @@ -870,22 +885,22 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ シークバーのサムネイルは中画質です プレーヤー画面全体表示のサムネイルは高画質です プレーヤー画面全体表示のサムネイルは中画質です - "この機能を有効にすると、シークバー サムネイルがないライブストリームのサムネイルも復元されます。 + "この機能を有効にすると、シークバー サムネイルを保持していないライブ配信でもシークバー サムネイルが表示されるようになります。 -シークバー サムネイルは、現在の動画と同じ画質になります。 +シークバー サムネイルは、動画の再生中の画質と同じ画質になります。 -この機能は、動画の画質が 720p 以下で非常に高速なインターネット接続を使用している場合に最適です。" +この機能は、非常に高速なインターネット接続を使用して 720P 以下の画質で動画を視聴する場合に最適です。" シーク中のサムネイルを旧バージョンに戻す - シーク位置のサムネイルがシークバーの上に表示されます - シーク位置のサムネイルがプレーヤー画面全体に表示されます + シーク中のサムネイルはシークバーの上に表示されます + シーク中のサムネイルはプレーヤー画面全体に表示されます SponsorBlock を有効化 SponsorBlock はユーザーからの情報提供により YouTube 動画のわずらわしい部分をスキップする機能です 外観 投票ボタンを表示 - プレーヤー オーバーレイにセグメントへの投票ボタンが表示されます - プレーヤー オーバーレイにセグメントへの投票ボタンは表示されません + セグメントへの投票ボタンはプレーヤー オーバーレイに表示されます + セグメントへの投票ボタンはプレーヤー オーバーレイに表示されません 四角ボタンを使用する ボタンとコントロールの角は直角です ボタンとコントロールの角は丸角です @@ -898,17 +913,17 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ スキップボタンはセグメントの開始から終了まで表示されます スキップ時にトーストを表示 セグメントが自動的にスキップされたときにトースト ポップアップが表示されます。ここをタップするとサンプルが表示されます - トースト ポップアップは表示されません。例を見るにはここをタップしてください + トースト ポップアップは表示されません。ここをタップするとサンプルが表示されます セグメントを除いた再生時間を表示 セグメントを除いた再生時間が、動画全体の再生時間の横に括弧付きで表示されます 動画全体の再生時間のみが表示されます セグメントの作成 - 新しいセグメント作成ボタンを表示 - 新しいセグメントを作成するボタンが表示されます - 新しいセグメントを作成するボタンは表示されません + セグメント作成ボタンを表示する + セグメント作成ボタンは表示されます + セグメント作成ボタンは表示されません 新しいセグメントステップを調整する 新しいセグメントを作成する際の時間調節ボタンの移動時間 (単位: ミリ秒) - 値は正の数でなければなりません + 値は正の整数でなければなりません ガイドラインを見る ガイドラインには、新しいセグメントを作成するためのルールとヒントが含まれています ガイドラインに従ってください @@ -924,10 +939,10 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ スキップカウント追跡が有効になっていません 最小のセグメントの長さ 設定値 (単位: 秒) より短いセグメントはスキップされず、プレーヤーにも表示されません - 無効な時間の長さ - あなたのプライベート ユーザー ID - これは非公開にする必要があります。パスワードのようなもので誰とも共有するべきではありません。誰かがこれを持っている場合、あなたになりすますことができます - プライベートユーザーIDは30文字以上でなければなりません + セグメントのしきい値が無効です + 非公開ユーザー ID + この ID は公開すべきではありません。パスワードのようなものであり、誰とも共有すべきではありません。もし誰かがこの ID を手に入れた場合、あなたになりすますことができます + 非公開ユーザー ID は 30 文字以上必要です API の URL を変更 SponsorBlockのアドレスはサーバーへの呼び出しに使用されます API の URL をリセットしました @@ -935,21 +950,19 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ API の URL を変更しました 設定のインポート / エクスポート コピー - ReVanced や他の SponsorBlock プラットフォームにインポート / エクスポートできる SponsorBlock JSON 設定 - ReVanced や他の SponsorBlock プラットフォームにインポート / エクスポートできる SponsorBlock JSON 設定。 これにはプライベートなユーザー ID が含まれます。共有する際は十分注意してください + SponsorBlock の設定を JSON 形式のテキストでインポート / エクスポートします。この JSON テキストは他のプラットフォームでも利用可能です + SponsorBlock の設定を他のプラットフォームでも利用可能な JSON 形式のテキストでインポート / エクスポートします。この JSON テキストには非公開ユーザー ID が含まれています。共有する際は十分注意してください 設定が正常にインポートされました インポートに失敗しました: %s エクスポートに失敗しました: %s - "設定にプライベートな SponsorBlock ユーザー ID が含まれています。 - -ユーザー ID はパスワードのようなものであり、共有しないでください。" + "設定には、SponsorBlock の非公開ユーザー ID が含まれています。このユーザー ID はパスワードのようなものであり、決して共有すべきではありません。" 今後表示しない セグメントのスキップ スポンサー 有料の宣伝 、紹介、直接広告。自己宣伝や好みのクリエーター、ウェブサイト、製品、慈善活動などの無報酬の宣伝は含まれません 無報酬の宣伝 / 自己宣伝 無報酬または自己宣伝である、という点以外は「スポンサー」と同様です。商品、寄付、コラボ相手に関する宣伝を含みます - 視聴者への催促 (登録) + 視聴者への催促 (チャンネル登録) 動画中に差し込まれる視聴者への高評価、チャンネル登録、フォローなどの短時間の催促。時間的に長い、または何か具体的なものに関する催促は「視聴者への催促」ではなく「自己宣伝」に分類すべきです ハイライト 動画の中で最も興味を引く場面 @@ -999,7 +1012,7 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ スキップ ボタンを表示 シークバーに表示 無効 - セグメントを送信できません: %s + セグメント送信失敗: %s SponsorBlockは一時的にダウンしています セグメントを送信できませんでした (ステータス: %1$d %2$s) セグメントを送信できません。レート制限 (同じユーザーまたはIPからの送信が多すぎる) @@ -1044,7 +1057,7 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ セグメントをプレビューし、スムーズにスキップするようにします セグメントのタイミングを手動で編集 セグメントの開始または終了のタイミングを編集しますか? - 無効な時間の値です + 時間の値が無効です 統計 統計情報は一時的に利用できません (API がダウンしています) @@ -1059,7 +1072,7 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ 作成したセグメントを表示するには、ここをタップしてください SponsorBlock リーダーボード 合計で <b>%s</b> 個のセグメントから人々を救いました - グローバルの統計と上位の貢献者を表示するには、ここをタップしてください + ここをタップすると、全体の統計とセグメント作成者のランキングが表示されます 時間にして <b>%s</b> です。<br>ここをタップすると、リーダーボードが表示されます 合計で <b>%s</b> 個のセグメントをスキップしました 時間にして <b>%s</b> です @@ -1071,7 +1084,7 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ 色: 色を変更しました 色をリセット - 無効なカラーコード + 色の値が無効です 色をリセット リセット このアプリについて @@ -1083,14 +1096,14 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ スマートフォン タブレット Automotive - "変更点は以下のとおりです + "変更点は以下のとおりです: タブレット レイアウト -• コミュニティ投稿は表示されません +• コミュニティ投稿が表示されません Automotive レイアウト • ショート動画を通常のプレーヤーで開きます -• フィードはトピックとチャンネルで整理されています" +• フィードがトピックとチャンネルで分類されます" アプリのバージョンを偽装する @@ -1098,9 +1111,9 @@ Automotive レイアウト アプリのバージョンは偽装されていません "アプリのバージョンを YouTube の古いバージョンに偽装します。 -これによりアプリの外観と機能が変化しますが、予期せぬ副作用が発生する可能性があります。 +アプリの外観と機能が変化しますが、予期せぬ副作用が発生する可能性があります。 -有効にした後で無効にする場合は、UI のバグを防ぐためにアプリ データを消去することをお勧めします。" +再び無効にする場合には、UI のバグを防ぐためにアプリデータを消去することをお勧めします。" アプリバージョン @@ -1133,17 +1146,22 @@ Automotive レイアウト バーチャル リアリティ 後で見る 自分のクリップ + スタート画面の変更を常時適用する + "スタート画面の変更は常時適用されます + +制限事項: ツールバーの [戻る] ボタンが機能しない可能性があります" + スタート画面の変更はアプリ起動時にのみ適用されます ショート動画プレーヤーの再開を無効にする - アプリの起動時にショート動画プレーヤーが再開されます - アプリの起動時にショート動画プレーヤーは再開されません + ショート動画プレーヤーは、アプリ起動時に再開されます + ショート動画プレーヤーは、アプリの起動時に再開されません ショート動画を開くプレーヤー ショート動画プレーヤー 通常の動画プレーヤー - 通常の動画プレーヤー(全画面) + 通常の動画プレーヤー (全画面) ショート動画の自動再生 @@ -1155,8 +1173,8 @@ Automotive レイアウト ミニプレーヤー - アプリ内で最小化されたプレーヤーの設定 - ミニプレーヤー タイプ + 動画視聴中に [戻る] ボタンをタップ、または下にスワイプしたときに表示される小さなプレーヤーの設定 + ミニプレーヤーのタイプ 無効 デフォルト 横長 @@ -1166,23 +1184,23 @@ Automotive レイアウト モダン 3 モダン 4 角を丸くする - ミニプレーヤーの四角は丸角です - ミニプレーヤーの四角は直角です - ダブルタップとピンチでサイズ変更を有効にする - "ダブルタップとピンチでサイズ変更を有効にする + ミニプレーヤーの角は丸角です + ミニプレーヤーの角は直角です + 「ダブルタップとピンチでサイズ変更」を有効にする + "「ダブルタップとピンチでサイズ変更」は有効です • ダブルタップでミニプレーヤーのサイズを大きくします • もう一度ダブルタップすると、元のサイズに戻ります" - ダブルタップとピンチでサイズ変更は無効です + 「 ダブルタップとピンチでサイズ変更」は無効です ドラッグ&ドロップを有効にする - "ドラッグ&ドロップが有効になっています + "ドラッグ&ドロップは有効です ミニプレーヤーを画面の四隅に移動できます" ドラッグ&ドロップは無効です 横方向ドラッグ ジェスチャーを有効にする "横方向ドラッグ ジェスチャーは有効です -ミニプレーヤーを画面の左または右端で最小化できます" +ミニプレーヤーを画面の左端または右端までドラッグすると最小化できます" 横方向ドラッグ ジェスチャーは無効です オーバーレイ ボタンを非表示 オーバーレイ ボタンは表示されません @@ -1190,7 +1208,7 @@ Automotive レイアウト 拡大ボタンと閉じるボタンを非表示 "ボタンは表示されません -拡大する / 閉じるにはスワイプしてください" +拡大するまたは閉じるには、スワイプしてください" 拡大ボタンと閉じるボタンは表示されます サブテキストを非表示 サブテキストは表示されません @@ -1199,14 +1217,14 @@ Automotive レイアウト 早送りボタンと巻き戻しボタンは表示されません 早送りボタンと巻き戻しボタンは表示されます デフォルトのサイズ - 画面に表示される際の大きさ(ピクセル) - ピクセル サイズの値は %1$s と %2$s の間でなければなりません + 画面に表示される際の大きさ (ピクセル) + ピクセルサイズの範囲は %1$s-%2$s です オーバーレイの透明度 - 透明度の値は 0-100 の範囲で、0 が透明です - ミニプレーヤー: オーバーレイの透明度は 0-100 でなければなりません + 透明度の範囲は 0-100 で、0が透明です + ミニプレーヤー: 透明度の範囲は 0-100 です - グラデーション読み込み画面を有効にする + グラデーションの読み込み画面を使用する 画面読み込み時にグラデーションの背景が表示されます 画面読み込み時に通常の背景が表示されます 編集したシークバーの色を使用する @@ -1216,22 +1234,22 @@ Automotive レイアウト シークバーの色を編集します シークバーのアクセント カラー シークバーのアクセントカラーを編集します - 入力されたシークバーの色の値は無効です + シークバーの色の値が無効です 画像表示の地域制限を回避する yt4.ggpht.com から画像を取得します "オリジナルの画像ホストから画像を取得します -この機能を有効にすると、一部の地域でブロックされている画像が表示されない問題が解決する場合があります" +この機能を有効にすると、一部の地域でブロックされている画像が表示される可能性があります" - ホーム フィード + ホームタブ - 登録チャンネル フィード + 登録チャンネル タブ - マイページ + マイページ タブ プレイリスト、関連動画 検索結果 オリジナルのサムネイル @@ -1241,11 +1259,11 @@ Automotive レイアウト "DeArrow は、YouTube 動画のサムネイルをクラウドソーシングで提供する機能です。DeArrow のサムネイルは、YouTube が提供するサムネイルよりも適切なことが多いです。これを有効にすると、動画の URL が API サーバーに送信されますが、他のデータは送信されません。動画に DeArrow サムネイルがない場合は、オリジナルのサムネイルまたは静止画サムネイルが表示されます 詳細については、ここをタップしてください" - API が利用できない場合はトーストを表示する - DeArrow が利用できない場合はトースト ポップアップが表示されます - DeArrow が利用できない場合でもトースト ポップアップは表示されません + API 利用不可時にトーストを表示する + DeArrow が利用できない場合は、トースト ポップアップが表示されます + DeArrow が利用できない場合でも、トースト ポップアップは表示されません DeArrow API のエンドポイント - DeArrow からサムネイル キャッシュを取得するエンドポイントの URL + DeArrow がサムネイルのキャッシュを取得するエンドポイントの URL 静止画サムネイル 静止画は各動画の序盤 / 中盤 / 終盤から取得されます。これらの画像は YouTube に組み込まれており、外部 API は使用されません 高速な静止画サムネイルを使用する @@ -1261,11 +1279,11 @@ Automotive レイアウト ReVanced のお知らせを表示する - アプリの起動時にお知らせが表示されます - アプリの起動時にお知らせは表示されません - 起動時にお知らせを表示する - アナウンスプロバイダーへの接続に失敗しました - 無視 + アプリ起動時にお知らせが表示されます + アプリ起動時にお知らせは表示されません + アプリ起動時にお知らせを表示する + お知らせの取得に失敗しました + 閉じる 警告 @@ -1278,8 +1296,8 @@ Automotive レイアウト 自動ループ再生は無効です - 端末の画面サイズを偽装する - "端末の画面サイズは偽装されています + デバイスの画面サイズを偽装する + "デバイスの画面サイズは偽装されています より高画質な映像がアンロックされる可能性がありますが、動画のカクつき、バッテリー寿命の悪化、予期せぬ副作用が 発生するかもしれません" @@ -1313,9 +1331,9 @@ Automotive レイアウト ズームの触覚フィードバックは有効です - オリジナルの音声トラック (言語) を強制的に使用する - オリジナルの音声トラック (言語) が再生されます - デフォルトの音声トラック (言語) が再生されます + デフォルトの吹き替えを無効にする + デフォルトの吹き替えは無効です + デフォルトの吹き替えは有効です この機能を使用するには、「動画ストリームを偽装する」のクライアントを iOS TV に変更してください @@ -1339,8 +1357,8 @@ Automotive レイアウト 再生速度設定ボタンを非表示 - オーバーレイに再生速度設定ボタンが表示されます - オーバーレイに再生速度設定ボタンは表示されません + 再生速度設定ボタンはオーバーレイに表示されます + 再生速度設定ボタンはオーバーレイに表示されません カスタムした再生速度リストを使用する @@ -1348,8 +1366,8 @@ Automotive レイアウト デフォルトの再生速度リストが表示されます カスタム再生速度リスト 再生速度リストを編集します - 再生速度の値は %s 未満である必要があります - 入力された再生速度は無効です + 再生速度は %s 未満である必要があります + カスタム再生速度リストが無効です 自動 長押し倍速再生の速度 長押し倍速再生の速度の値は 0-8 の範囲で、0 および 8 は含まれません @@ -1367,7 +1385,7 @@ Automotive レイアウト HDR 動画は有効です - 画質の詳細設定メニューを表示する + 画質の詳細設定メニューを使用する 画質設定メニューとして詳細設定メニューが表示されます 通常の画質設定メニューが表示されます @@ -1383,25 +1401,25 @@ Automotive レイアウト 動画ストリームは偽装されます "動画ストリームは偽装されません -動画が再生できない可能性があります" - この設定をオフにすると、動画再生の問題が発生する可能性があります。 +動画が再生されない可能性があります" + この設定をオフにすると、動画が再生されなくなる可能性があります。 デフォルトのクライアント iOS クライアントで AVC (H.264) を強制的に使用する - iOS クライアントで AVC (H.264) を強制します + ビデオ コーデックは強制的に AVC (H.264) が使用されます ビデオコーデックは自動的に決定されます "この機能を有効にすると、バッテリー寿命が延び、動画のカクつきが改善される可能性があります。 AVC の最大解像度は 1080p であり、Opus オーディオ コーデックは使用できず、動画の再生時に VP9 や AV1 より多くの通信量を使用します。" iOS クライアントの副作用 "• 映画や有料動画が再生されない可能性があります -• 一定音量は利用できません +•「 一定音量」が利用できません • 動画が 1 秒早く終了します" Android クライアントの副作用 - "• 音声トラック メニューが表示されません -• 一定音量は利用できません -• 「オリジナルの音声トラック (言語) を強制的に使用する」は利用できません" - • AV1 コーデックは使用できません - • キッズ向け動画は、ログアウト時またはシークレット モード時には再生されない場合があります + "• 「音声トラック」がフライアウト メニューに表示されません +• 「一定音量」が利用できません +• 「デフォルトの吹き替えを無効にする」が利用できません" + • AV1 コーデックが利用できません + • ログアウト時またはシークレット モード時に、子ども向け動画が再生されない可能性があります 統計情報に表示する 現在のクライアントが統計情報に表示されます 現在のクライアントは統計情報に表示されません @@ -1441,9 +1459,9 @@ AVC の最大解像度は 1080p であり、Opus オーディオ コーデック - Twitch デバッグ モードを有効にする - Twitch デバッグ モードが有効になっています (非推奨) - Twitchデバッグ モードは無効です + Twitch デバッグモードを有効にする + Twitch デバッグモードは有効です (非推奨) + Twitch デバッグモードは無効です Revanced の設定 diff --git a/patches/src/main/resources/addresources/values-ka-rGE/strings.xml b/patches/src/main/resources/addresources/values-ka-rGE/strings.xml index c0d8f55c8..bc8bec158 100644 --- a/patches/src/main/resources/addresources/values-ka-rGE/strings.xml +++ b/patches/src/main/resources/addresources/values-ka-rGE/strings.xml @@ -84,6 +84,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-kk-rKZ/strings.xml b/patches/src/main/resources/addresources/values-kk-rKZ/strings.xml index c0d8f55c8..bc8bec158 100644 --- a/patches/src/main/resources/addresources/values-kk-rKZ/strings.xml +++ b/patches/src/main/resources/addresources/values-kk-rKZ/strings.xml @@ -84,6 +84,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-km-rKH/strings.xml b/patches/src/main/resources/addresources/values-km-rKH/strings.xml index c0d8f55c8..bc8bec158 100644 --- a/patches/src/main/resources/addresources/values-km-rKH/strings.xml +++ b/patches/src/main/resources/addresources/values-km-rKH/strings.xml @@ -84,6 +84,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-kn-rIN/strings.xml b/patches/src/main/resources/addresources/values-kn-rIN/strings.xml index c0d8f55c8..bc8bec158 100644 --- a/patches/src/main/resources/addresources/values-kn-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-kn-rIN/strings.xml @@ -84,6 +84,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-ko-rKR/strings.xml b/patches/src/main/resources/addresources/values-ko-rKR/strings.xml index d95d42ac1..7cddda58e 100644 --- a/patches/src/main/resources/addresources/values-ko-rKR/strings.xml +++ b/patches/src/main/resources/addresources/values-ko-rKR/strings.xml @@ -241,9 +241,9 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배 챕터 숨기기 챕터 섹션이 숨겨집니다 챕터 섹션이 표시됩니다 - 콘텐츠 생성 방식 섹션 숨기기 - 콘텐츠 생성 방식 섹션이 숨겨집니다 - 콘텐츠 생성 방식 섹션이 표시됩니다 + 이 콘텐츠가 제작된 방식 섹션 숨기기 + 이 콘텐츠가 제작된 방식 섹션이 숨겨집니다 + 이 콘텐츠가 제작된 방식 섹션이 표시됩니다 팟캐스트 살펴보기 섹션 숨기기 팟캐스트 살펴보기 섹션이 숨겨집니다 팟캐스트 살펴보기 섹션이 표시됩니다 @@ -458,29 +458,38 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배 스와이프 제스처로 자동 밝기 활성화하기 전체 화면에서 스와이프하여 밝기가 0이 되면 자동 밝기를 활성화합니다 전체 화면에서 스와이프하여 밝기가 0이 되더라도 자동 밝기를 활성화하지 않습니다 - 오버레이 타임아웃 + 자동 + 스와이프 오버레이 타임아웃 오버레이가 표시되는 시간을 지정할 수 있습니다 (밀리초) 스와이프 오버레이 배경 불투명도 스와이프 불투명도 값은 0-100 사이여야 합니다 스와이프 불투명도 값은 0-100 사이여야 합니다 + 스와이프 오버레이 진행바 색상 + 볼륨 및 밝기 조절 진행바 색상의 헥스 코드를 입력하세요 + 잘못된 진행바 헥스 코드입니다 + 스와이프 오버레이 텍스트 크기 + 스와이프 오버레이 텍스트 크기를 지정할 수 있습니다 (1-30) + 텍스트 크기는 1-30 사이여야 합니다 스와이프 한계치 제스처 인식을 위해 얼마나 스와이프를 해야 할지를 지정할 수 있으며, 원하지 않은 제스처 인식을 방지할 수 있습니다 볼륨 스와이프 민감도 스와이프할 때마다 볼륨이 얼마나 변경되는지를 지정할 수 있습니다 - 원형 오버레이 표시하기 - 원형 오버레이를 표시합니다 - 바형 오버레이를 표시합니다 - 최소화된 스타일 활성화하기 - 최소화된 오버레이 스타일을 활성화합니다 - 최소화된 오버레이 스타일을 비활성화합니다 + 스와이프 오버레이 스타일 + 바형 오버레이 + 가로 오버레이 (최소화 - 상단) + 가로 오버레이 (최소화 - 중앙) + 원형 오버레이 + 원형 오버레이 (최소화) + 세로 오버레이 + 세로 오버레이 (최소화) 스와이프 제스처로 동영상 전환 활성화하기 전체 화면 중앙에서 위로/아래로 스와이프하여 다음/이전 동영상으로 전환합니다 전체 화면 중앙에서 위로/아래로 스와이프하여 다음/이전 동영상으로 전환하지 않습니다 - 자동 자막 비활성화하기 - 자동 자막을 비활성화합니다 - 자동 자막을 활성화합니다 + 자동 자막 비활성화하기 + 자동 자막을 비활성화합니다 + 자동 자막을 활성화합니다 액션 버튼 @@ -512,6 +521,11 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배 Thanks 버튼 숨기기 Thanks 버튼이 숨겨집니다 Thanks 버튼이 표시됩니다 + + 요청 버튼 숨기기 + 요청 버튼이 숨겨집니다 + 요청 버튼이 표시됩니다 클립 버튼 숨기기 클립 버튼이 숨겨집니다 @@ -1132,6 +1146,12 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배 가상 현실 나중에 볼 동영상 내 클립 + 앱 시작 페이지 항상 변경하기 + "앱 시작 페이지를 항상 변경합니다 + +알려진 문제점: +• 툴바에서 '뒤로 가기' 버튼이 작동하지 않을 수 있습니다" + 앱 시작 페이지를 앱 시작 시에만 변경합니다 앱을 시작할 때, Shorts 플레이어 비활성화하기 @@ -1217,7 +1237,7 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배 사용하고 싶은 재생바 메인 색상의 헥스 코드를 입력하세요 사용자 정의 재생바 보조 색상 사용하고 싶은 재생바 보조 색상의 헥스 코드를 입력하세요 - 잘못된 재생바 색상값입니다 + 잘못된 재생바 헥스 코드입니다 이미지 표시 제한 국가 우회하기 diff --git a/patches/src/main/resources/addresources/values-ky-rKG/strings.xml b/patches/src/main/resources/addresources/values-ky-rKG/strings.xml index c0d8f55c8..bc8bec158 100644 --- a/patches/src/main/resources/addresources/values-ky-rKG/strings.xml +++ b/patches/src/main/resources/addresources/values-ky-rKG/strings.xml @@ -84,6 +84,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-lo-rLA/strings.xml b/patches/src/main/resources/addresources/values-lo-rLA/strings.xml index c0d8f55c8..bc8bec158 100644 --- a/patches/src/main/resources/addresources/values-lo-rLA/strings.xml +++ b/patches/src/main/resources/addresources/values-lo-rLA/strings.xml @@ -84,6 +84,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-lt-rLT/strings.xml b/patches/src/main/resources/addresources/values-lt-rLT/strings.xml index 64017bc9c..bc2033bf1 100644 --- a/patches/src/main/resources/addresources/values-lt-rLT/strings.xml +++ b/patches/src/main/resources/addresources/values-lt-rLT/strings.xml @@ -459,29 +459,38 @@ Reguliuokite garsumą braukdami vertikaliai dešinėje ekrano pusėje" Įjungti automatinio ryškumo gestą Slinkimas žemyn iki mažiausios ryškumo gesto vertės įjungia automatinį ryškumą Slinkimas žemyn iki mažiausios vertės neįjungia automatinio ryškumo + Automatinis Slinkties peržiūros išjungimo laikas Milisekundžių skaičius, kiek laiko peržiūra matoma Užšliaukite dangos nušveitimo fono permatinumas Permatnumo vertė nuo 0 iki 100 Slinkties permatnumas turi būti nuo 0 iki 100 + Perbraukimo perdangos eigos juostos spalva + Garso ir ryškumo valdiklių eigos juostos spalva + Netinkama eigos juostos spalva + Perbraukimo perdangos teksto dydis + Perbraukimo perdangos teksto dydis turi būti nuo 1 iki 30 + Teksto dydis turi būti nuo 1 iki 30 Slinkties dydžio slenkstis Slenkstis, reikalingas slinkčiai Slinkimo garsumo jautrumas Kiek garsumas pasikeičia per braukimą - Rodyti apskritą perdangą - Rodoma apskrita perdanga - Rodoma horizontali perdanga - Įgalinti minimalų stilių - Įjungtas minimalus perdangos stilius - Minimalus perdangos stilius išjungtas + Perbraukimo perdangos stilius + Horizontali perdanga + Horizontali perdanga (minimali – viršuje) + Horizontali perdanga (minimali – centre) + Apskrita perdanga + Apskrita perdanga (minimali) + Vertikali perdanga + Vertikali perdanga (minimali) Braukimas norint pakeisti vaizdo įrašus Braukimas viso ekrano režimu pakeis į kitą/ankstesnį vaizdo įrašą Braukimas viso ekrano režimu nepakeis į kitą/ankstesnį vaizdo įrašą - Išjungti automatinius antraštus - Automatiniai antraštės išjungti - Automatiniai antraštės įjungti + Išjungti automatinius antraštus + Automatiniai subtitrai išjungti + Automatiniai subtitrai įjungti Veiksmo mygtukai @@ -513,6 +522,11 @@ Reguliuokite garsumą braukdami vertikaliai dešinėje ekrano pusėje" Slėpti Ačiū Ačiū mygtukas paslėptas Ačiū mygtukas rodomas + + Slėpti klausimą + Klausimo mygtukas yra paslėptas + Klausimo mygtukas rodomas Slėpti Iškarpą Iškarpos mygtukas paslėptas @@ -830,8 +844,8 @@ Apribojimas: nepritarimai gali būti nerodomi inkognito režimu" \"Patinka\" mygtukas suformuotas minimaliam pločiui \"Patinka\" mygtukas suformuotas geriausiam vaizdui Rodyti numatomus patiktukus - Apytiksliai patiktukai rodomi - Apytiksliai patiktukai paslėpti + Vaizdo įrašuose, kuriuose išjungti „Patinka“, rodomas apytikslis „Patinka“ skaičius + Apytiksliai „Patinka“ nerodomi Rodyti pranešimą, jei API nepasiekiamas Pranešimas rodomas, jei „Return YouTube Dislike“ nepasiekiamas Pranešimas nerodomas, jei „Return YouTube Dislike“ nepasiekiamas @@ -1106,7 +1120,7 @@ Jei vėliau išjungta, rekomenduojama išvalyti programos duomenis, kad būtų i 19.01.34 – Atkurti senas naršymo piktogramas - Nustatyti pradinį puslapį + Keisti pradžios puslapį Numatytasis Visos Prenumeratos Naršyti kanalus @@ -1131,6 +1145,11 @@ Jei vėliau išjungta, rekomenduojama išvalyti programos duomenis, kad būtų i Virtualioji realybė Pažiūrėti vėliau Tavo klipai + Visada keisti pradžios puslapį + "Pradžios puslapis visada pakeičiamas + +Ribojimas: įrankių juostoje esantis atgal mygtukas gali neveikti." + Pradžios puslapis keičiamas tik paleidžiant programą Išjungti \"Shorts\" grotuvo atnaujinimą diff --git a/patches/src/main/resources/addresources/values-lv-rLV/strings.xml b/patches/src/main/resources/addresources/values-lv-rLV/strings.xml index 863676ed6..9d5ca8938 100644 --- a/patches/src/main/resources/addresources/values-lv-rLV/strings.xml +++ b/patches/src/main/resources/addresources/values-lv-rLV/strings.xml @@ -459,29 +459,38 @@ Regulējiet skaļumu, velkot vertikāli ekrāna labajā pusē" Ieslēgt automātiskā spilgtuma žestu Slīdot uz leju līdz spilgtuma žesta zemākajai vērtībai, tiek ieslēgts automātiskais spilgtums Slīdot uz leju līdz zemākajai vērtībai, netiek ieslēgts automātiskais spilgtums + Automātiski Slīdēšanas pārklājuma laika izbeigšanās Milisekundes, ko pārklājums ir redzams Pārvilkšanas pārklājuma fona necaurredzamība Necaurredzamības vērtība no 0 līdz 100 Pārvilkšanas necaurredzamībai jābūt no 0 līdz 100 + Pārvelciet pārklājuma progresa joslas krāsu + Skaļuma un spilgtuma vadīklu progresa joslas krāsa + Nederīga progresa joslas krāsa + Pārvelciet pārklājuma teksta lielumu + Pārvelciet pārklājuma teksta lielumu starp 1–30 + Teksta lielumam jābūt starp 1–30 Slīdēšanas lieluma slieksnis Slieksnis, lai slīdēšana varētu notikt Svilpes jutīgums skaļuma regulēšanai Cik daudz skaļums mainās ar katru vilkšanu - Rādīt apļveida pārklājumu - Apļveida pārklājums tiek rādīts - Horizontālais pārklājums tiek rādīts - Iespējot minimālo stilu - Minimālais pārklājuma stils ir iespējots - Minimālais pārklājuma stils ir atspējots + Pārvelciet pārklājuma stilu + Horizontāls pārklājums + Horizontāls pārklājums (minimāls – augšā) + Horizontāls pārklājums (minimāls – centrā) + Apļveida pārklājums + Apļveida pārklājums (minimāls) + Vertikāls pārklājums + Vertikāls pārklājums (minimāls) Iespējot pārvilkšanu, lai mainītu videoklipus Pārvelkot pilnekrāna režīmā, tiks mainīts nākamais/iepriekšējais videoklips Pārvelkot pilnekrāna režīmā, nākamais/iepriekšējais videoklips netiks mainīts - Atslēgt automātiskos titrus - Automātiskie titri ir atslēgti - Automātiskie titri ir ieslēgti + Atslēgt automātiskos titrus + Automātiskie subtitri ir atspējoti + Automātiskie subtitri ir iespējoti Darbības pogas @@ -513,6 +522,11 @@ Regulējiet skaļumu, velkot vertikāli ekrāna labajā pusē" Paslēpt Paldies Paldies poga ir paslēpta Paldies poga ir redzama + + Paslēpt jautājumu + Jautājuma poga ir paslēpta + Jautājuma poga ir redzama Paslēpt Izgriezt Izgriezt poga ir paslēpta @@ -832,8 +846,8 @@ Ierobežojums: Nepatīk var neparādīties inkognito režīmā" Patīk poga ir stilizēta minimālam platumam Patīk poga ir stilizēta labākam izskatam Rādīt aptuvenos \"Patīk\" - Aptuvenie \"Patīk\" tiek rādīti - Aptuvenie \"Patīk\" ir paslēpti + Videoklipi ar atspējotām atzīmēm Patīk rāda aptuveno atzīmju Patīk skaitu + Aptuvenais atzīmju Patīk skaits netiek rādīts Rādīt paziņojumu, ja API nav pieejama Paziņojums tiks rādīts, ja Return YouTube Dislike nav pieejams Paziņojums netiks rādīts, ja Return YouTube Dislike nav pieejams @@ -1106,7 +1120,7 @@ Ja vēlāk tiks izslēgts, ieteicams notīrīt lietotnes datus, lai novērstu li 19.01.34 - Atjaunot vecās navigācijas ikonas - Iestatīt sākotnējo lapu + Mainīt sākuma lapu Noklusētais Visi abonementi Pārlūkot kanālus @@ -1131,6 +1145,11 @@ Ja vēlāk tiks izslēgts, ieteicams notīrīt lietotnes datus, lai novērstu li Virtuālā realitāte Skaties vēlāk Tavi klipi + Vienmēr mainīt sākuma lapu + "Sākuma lapa vienmēr tiek mainīta + +Ierobežojums: Atpakaļpoga rīkjoslā var nedarboties" + Sākuma lapa tiek mainīta tikai lietotnes startēšanas reizē Atspējot Shorts atskaņotāja atsākšanu diff --git a/patches/src/main/resources/addresources/values-mk-rMK/strings.xml b/patches/src/main/resources/addresources/values-mk-rMK/strings.xml index c0d8f55c8..bc8bec158 100644 --- a/patches/src/main/resources/addresources/values-mk-rMK/strings.xml +++ b/patches/src/main/resources/addresources/values-mk-rMK/strings.xml @@ -84,6 +84,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-ml-rIN/strings.xml b/patches/src/main/resources/addresources/values-ml-rIN/strings.xml index c0d8f55c8..bc8bec158 100644 --- a/patches/src/main/resources/addresources/values-ml-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-ml-rIN/strings.xml @@ -84,6 +84,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-mn-rMN/strings.xml b/patches/src/main/resources/addresources/values-mn-rMN/strings.xml index c0d8f55c8..bc8bec158 100644 --- a/patches/src/main/resources/addresources/values-mn-rMN/strings.xml +++ b/patches/src/main/resources/addresources/values-mn-rMN/strings.xml @@ -84,6 +84,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-mr-rIN/strings.xml b/patches/src/main/resources/addresources/values-mr-rIN/strings.xml index c0d8f55c8..bc8bec158 100644 --- a/patches/src/main/resources/addresources/values-mr-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-mr-rIN/strings.xml @@ -84,6 +84,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-ms-rMY/strings.xml b/patches/src/main/resources/addresources/values-ms-rMY/strings.xml index c0d8f55c8..bc8bec158 100644 --- a/patches/src/main/resources/addresources/values-ms-rMY/strings.xml +++ b/patches/src/main/resources/addresources/values-ms-rMY/strings.xml @@ -84,6 +84,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-my-rMM/strings.xml b/patches/src/main/resources/addresources/values-my-rMM/strings.xml index c0d8f55c8..bc8bec158 100644 --- a/patches/src/main/resources/addresources/values-my-rMM/strings.xml +++ b/patches/src/main/resources/addresources/values-my-rMM/strings.xml @@ -84,6 +84,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-nb-rNO/strings.xml b/patches/src/main/resources/addresources/values-nb-rNO/strings.xml index c0d8f55c8..bc8bec158 100644 --- a/patches/src/main/resources/addresources/values-nb-rNO/strings.xml +++ b/patches/src/main/resources/addresources/values-nb-rNO/strings.xml @@ -84,6 +84,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-ne-rIN/strings.xml b/patches/src/main/resources/addresources/values-ne-rIN/strings.xml index c0d8f55c8..bc8bec158 100644 --- a/patches/src/main/resources/addresources/values-ne-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-ne-rIN/strings.xml @@ -84,6 +84,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-nl-rNL/strings.xml b/patches/src/main/resources/addresources/values-nl-rNL/strings.xml index 872c04b78..1b061e6b1 100644 --- a/patches/src/main/resources/addresources/values-nl-rNL/strings.xml +++ b/patches/src/main/resources/addresources/values-nl-rNL/strings.xml @@ -459,29 +459,38 @@ Pas het volume aan door verticaal over de rechterkant van het scherm te vegen"Automatische helderheidsbeweging inschakelen Omlaag swipen naar de laagste waarde van de helderheidsbeweging activeert automatische helderheid Omlaag swipen naar de laagste waarde activeert automatische helderheid niet + Automatisch Swipe-overlay time-out Het aantal milliseconden dat de overlay zichtbaar is Dekking van de Swipe overlay Dekking tussen 0-100 Dekking moet tussen 0-100 zijn + Kleur van voortgangsbalk voor swipe-overlay + De kleur van de voortgangsbalk voor volume- en helderheidsbediening + Ongeldige kleur voor de voortgangsbalk + Tekengrootte swipe-overlay + De tekstgrootte voor swipe-overlay tussen 1-30 + De tekstgrootte moet tussen 1-30 liggen Drempelwaarde swipe-sterkte De hoeveelheid drempelwaarde voor swipe om te gebeuren Gevoeligheid volumegest Hoeveel het volume verandert per swipe - Circulaire overlay weergeven - Circulaire overlay wordt weergegeven - Horizontale overlay wordt weergegeven - Minimale stijl inschakelen - Minimale overlay-stijl is ingeschakeld - Minimale overlay-stijl is uitgeschakeld + Swipe-overlaystijl + Horizontale overlay + Horizontale overlay (minimaal - boven) + Horizontale overlay (minimaal - midden) + Circulaire overlay + Circulaire overlay (minimaal) + Verticale overlay + Verticale overlay (minimaal) Schakel vegen in om te wisselen tussen video\'s Vegen in de modus volledig scherm weergegeven, verandert naar de volgende/vorige video Vegen in de modus volledig scherm weergegeven, verandert niet naar de volgende/vorige video - Automatische ondertitels uitschakelen - Automatische ondertitels zijn uitgeschakeld - Automatische ondertitels zijn ingeschakeld + Automatische ondertitels uitschakelen + Automatische ondertiteling is uitgeschakeld + Automatische ondertiteling is ingeschakeld Actieknoppen @@ -513,6 +522,11 @@ Pas het volume aan door verticaal over de rechterkant van het scherm te vegen"Bedankt verbergen Bedankt-knop is verborgen Bedankt-knop wordt weergegeven + + Vraag verbergen + Knop \"Vraag\" is verborgen + Knop \"Vraag\" wordt weergegeven Fragment verbergen Fragment knop is verborgen @@ -832,8 +846,8 @@ Beperking: Vind ik niet leuk verschijnen mogelijk niet in de incognitomodus"\"Like\" knop met minimale breedte \"Like\" knop met beste uiterlijk Geschatte likes weergeven - Geschatte likes worden weergegeven - Geschatte likes zijn verborgen + Video\'s met uitgeschakelde vind-ik-leuks tonen een geschat aantal vind-ik-leuks + Geschatte vind-ik-leuks worden niet getoond Toon een \"toast\" als de API niet beschikbaar is \"Toast\" wordt getoond als Return YouTube Dislike niet beschikbaar is \"Toast\" wordt niet getoond als Return YouTube Dislike niet beschikbaar is @@ -1107,7 +1121,7 @@ Als het later wordt uitgeschakeld, wordt aanbevolen om de app-gegevens te wissen 19.01.34 - Herstel oude navigatie-iconen - Startpagina instellen + Startpagina wijzigen Standaard Alle abonnementen Kanalen browsen @@ -1132,6 +1146,9 @@ Als het later wordt uitgeschakeld, wordt aanbevolen om de app-gegevens te wissen Virtuele realiteit Later bekijken Je clips + Startpagina altijd wijzigen + "De startpagina wordt altijd gewijzigd\n\nBeperking: Het gebruik van de terugknop op de werkbalk werkt mogelijk niet" + Startpagina wordt alleen gewijzigd bij het opstarten van de app Schakel het hervatten van Shorts-speler uit diff --git a/patches/src/main/resources/addresources/values-or-rIN/strings.xml b/patches/src/main/resources/addresources/values-or-rIN/strings.xml index c0d8f55c8..bc8bec158 100644 --- a/patches/src/main/resources/addresources/values-or-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-or-rIN/strings.xml @@ -84,6 +84,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-pa-rIN/strings.xml b/patches/src/main/resources/addresources/values-pa-rIN/strings.xml index c0d8f55c8..bc8bec158 100644 --- a/patches/src/main/resources/addresources/values-pa-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-pa-rIN/strings.xml @@ -84,6 +84,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-pl-rPL/strings.xml b/patches/src/main/resources/addresources/values-pl-rPL/strings.xml index 0996ca777..472077cd7 100644 --- a/patches/src/main/resources/addresources/values-pl-rPL/strings.xml +++ b/patches/src/main/resources/addresources/values-pl-rPL/strings.xml @@ -459,29 +459,38 @@ Dostosuj głośność, przesuwając pionowo po prawej stronie ekranu" Gest automatycznej jasności Przesunięcie w dół do najniższej wartości gestu jasności włącza automatyczną jasność Przesunięcie w dół do najniższej wartości nie włącza automatycznej jasności + Automatycznie Limit czasu widoczności nakładki Liczba milisekund, przez które nakładka jest widoczna Przejrzystość tła nakładki przesuwania Wartość przezroczystości od 0 do 100 Przezroczystość przesuwania musi być między 0 a 100 + Kolor paska postępu nakładki przesunięcia + Kolor paska postępu dla regulacji głośności i jasności + Nieprawidłowy kolor paska postępu + Rozmiar tekstu nakładki przesuwania + Rozmiar tekstu dla nakładki przesunięcia między 1-30 + Rozmiar tekstu musi mieścić się w przedziale 1-30 Minimalna długość przesunięcia Wartość wymagana do wykonania gestu przesunięcia Czułość przesunięcia głośności O ile zmienia się głośność na przesunięcie - Pokaż okrągłą nakładkę - Wyświetlana jest okrągła nakładka - Wyświetlana jest pozioma nakładka - Włącz minimalny styl - Minimalny styl nakładki jest włączony - Minimalny styl nakładki jest wyłączony + Styl nakładki przesuwania + Nakładka pozioma + Nakładka pozioma (minimalna - góra) + Nakładka pozioma (minimalna - środek) + Nakładka okrągła + Nakładka okrągła (minimalna) + Nakładka pionowa + Nakładka pionowa (minimalna) Włącz przesuwanie palcem, aby zmienić filmy Przesunięcie palcem w trybie pełnoekranowym spowoduje przejście do następnego lub poprzedniego filmu Przesunięcie palcem w trybie pełnoekranowym nie spowoduje przejścia do następnego lub poprzedniego filmu - Automatyczne napisy - Automatyczne napisy są wyłączone - Automatyczne napisy są włączone + Automatyczne napisy + Automatyczne podpisy są wyłączone + Automatyczne podpisy są włączone Przyciski akcji @@ -513,6 +522,11 @@ Dostosuj głośność, przesuwając pionowo po prawej stronie ekranu" Przycisk od dziękowania Przycisk od dziękowania jest ukryty Przycisk od dziękowania jest widoczny + + Ukryj Zapytaj + Przycisk Zapytaj jest ukryty + Przycisk Zapytaj jest widoczny Przycisk od klipów Przycisk tworzenia klipów jest ukryty @@ -832,8 +846,8 @@ Ograniczenie: Oceny negatywne mogą nie pojawiać się w trybie incognito"Przycisk łapki stylizowany dla minimalnej szerokości Przycisk łapki stylizowany dla najlepszego wyglądu Pokaż szacunkową liczbę polubień - Szacunkowa liczba polubień jest wyświetlana - Szacunkowa liczba polubień jest ukryta + Filmy z wyłączonymi polubieniami wyświetlają szacunkową liczbę polubień + Szacunkowa liczba polubień nie jest wyświetlana Komunikat o niedostępności API Komunikat jest wyświetlany, jeśli Return YouTube Dislike nie jest dostępny Komunikat nie jest wyświetlany, jeśli Return YouTube Dislike nie jest dostępny @@ -1107,7 +1121,7 @@ Jeśli później zostanie wyłączony, zaleca się wyczyszczenie danych aplikacj 19.01.34 – Przywróć stare ikony nawigacji - Strona startowa + Zmień stronę startową Domyślna Wszystkie subskrypcje Przeglądaj kanały @@ -1132,6 +1146,11 @@ Jeśli później zostanie wyłączony, zaleca się wyczyszczenie danych aplikacj Wirtualna rzeczywistość Do obejrzenia Twoje klipy + Zawsze zmieniaj stronę startową + "Strona startowa jest zawsze zmieniana + +Ograniczenie: użycie przycisku wstecz na pasku narzędzi może nie działać" + Strona startowa jest zmieniana tylko przy uruchomieniu aplikacji Wznawianie odtwarzacza Shortsów diff --git a/patches/src/main/resources/addresources/values-pt-rBR/strings.xml b/patches/src/main/resources/addresources/values-pt-rBR/strings.xml index 4a9c725a0..2eec894f2 100644 --- a/patches/src/main/resources/addresources/values-pt-rBR/strings.xml +++ b/patches/src/main/resources/addresources/values-pt-rBR/strings.xml @@ -457,29 +457,38 @@ Ajuste o volume deslizando verticalmente no lado direito da tela" Ativar gesto de brilho automático Deslizar para baixo até o menor valor do gesto de brilho, ativa o brilho automático Deslizar para baixo até o menor valor do gesto de brilho, não ativa o brilho automático + Automático Tempo limite da sobreposição no gesto A quantidade de milissegundos em que a sobreposição é visível Opacidade do plano de fundo de sobreposição de deslize Valor da opacidade entre 0-100 A opacidade do deslizar deve estar entre 0-100 + Cor da barra de progresso da sobreposição de deslize + A cor da barra de progresso para controles de volume e brilho + Cor da barra de progresso inválida + Tamanho do texto da sobreposição de deslize + O tamanho do texto para sobreposição de deslize entre 1 e 30 + O tamanho do texto deve estar entre 1 e 30 Limiar distância no gesto Quantidade limite que o gesto irá ocorrer Sensibilidade ao deslizar o volume O quanto o volume muda por deslize - Mostrar sobreposição circular - A sobreposição circular é mostrada - A sobreposição horizontal é mostrada - Ativar estilo mínimo - O estilo de sobreposição mínima está ativado - O estilo de sobreposição mínima está desativado + Estilo de sobreposição de deslize + Sobreposição horizontal + Sobreposição horizontal (mínima - superior) + Sobreposição horizontal (mínima - central) + Sobreposição circular + Sobreposição circular (mínima) + Sobreposição vertical + Sobreposição vertical (mínima) Ativar deslize para mudar os vídeos Deslizar no modo tela cheia mudará para o vídeo anterior/seguinte Deslizar no modo tela cheia não mudará para o próximo/vídeo anterior - Desativar legendas automáticas - Legendas automáticas estão desativadas - Legendas automáticas estão ativadas + Desativar legendas automáticas + Legendas automáticas estão desativadas + Legendas automáticas estão ativadas Botões de ação @@ -511,6 +520,11 @@ Ajuste o volume deslizando verticalmente no lado direito da tela" Ocultar Valeu Botão valeu está oculto O botão valeu é mostrado + + Ocultar \"Perguntar\" + Botão \"Perguntar\" oculto + O botão \"Perguntar\" é mostrado Ocultar Clipe Botão clipe está oculto @@ -830,8 +844,8 @@ Limitação: \"Não gostei\" podem não aparecer no modo anônimo" Botão gostei estilizado para largura mínima Botão gostei estilizado para melhor aparência Mostrar estimativa de \"gostei\" - A estimativa de \"gostei\" está visível - A estimativa de \"gostei\" está oculta + Vídeos com likes desativados mostram uma estimativa da contagem de likes + Likes estimados não são mostrados Exibir uma notificação flutuante se a API não estiver disponível Notificação flutuante vai ser exibida se o Return YouTube Dislike não estiver disponível Notificação flutuante não vai ser exibida se o Return YouTube Dislike não estiver disponível @@ -1104,7 +1118,7 @@ Se posteriormente desativado, é recomendável limpar os dados do aplicativo par 19.01.34 - Restaurar ícones de navegação antigos - Definir página inicial + Alterar página inicial Padrão Todas as inscrições Explorar canais @@ -1129,6 +1143,11 @@ Se posteriormente desativado, é recomendável limpar os dados do aplicativo par Realidade virtual Assistir mais tarde Seus clipes + Sempre alterar a página inicial + "A página inicial é sempre alterada + +Limitação: usar o botão Voltar na barra de ferramentas pode não funcionar" + A página inicial é alterada apenas na inicialização do aplicativo Desativar continuar a reproduzir Shorts diff --git a/patches/src/main/resources/addresources/values-pt-rPT/strings.xml b/patches/src/main/resources/addresources/values-pt-rPT/strings.xml index 42e70f2a0..a6a33310c 100644 --- a/patches/src/main/resources/addresources/values-pt-rPT/strings.xml +++ b/patches/src/main/resources/addresources/values-pt-rPT/strings.xml @@ -459,29 +459,38 @@ Ajuste o volume deslizando verticalmente no lado direito da tela" Ativar gesto de brilho automático Deslizando para baixo até o menor valor do gesto de brilho, habilite o brilho automático Deslizando para baixo até o menor valor não habilita o brilho automático + Automático Tempo limite de sobreposição A quantidade de milissegundos que a sobreposição é visível Opacidade do plano de fundo da sobreposição de deslizar Valor de opacidade entre 0-100 A opacidade do deslizar deve estar entre 0-100 + Cor da barra de progresso da sobreposição de deslize + A cor da barra de progresso para os controles de volume e brilho + Cor da barra de progresso inválida + Tamanho do texto da sobreposição de deslize + O tamanho do texto para a sobreposição de deslize entre 1 e 30 + O tamanho do texto deve estar entre 1 e 30 Limite de magnitude A quantidade limite para deslizar irá ocorrer Sensibilidade ao deslizar o volume O quanto o volume muda por deslize - Mostrar sobreposição circular - A sobreposição circular é mostrada - A sobreposição horizontal é mostrada - Ativar estilo mínimo - O estilo de sobreposição mínimo está ativado - O estilo de sobreposição mínima está desativado + Estilo de sobreposição de deslize + Sobreposição horizontal + Sobreposição horizontal (mínima - superior) + Sobreposição horizontal (mínima - centro) + Sobreposição circular + Sobreposição circular (mínima) + Sobreposição vertical + Sobreposição vertical (mínima) Ativar deslizar para mudar de vídeo Deslizar no modo de ecrã inteiro mudará para o vídeo seguinte/anterior Deslizar no modo de ecrã inteiro não mudará para o vídeo seguinte/anterior - Desativar legendas automáticas - Legendas automáticas desativadas - Legendas automáticas estão ativadas + Desativar legendas automáticas + As legendas automáticas estão desativadas + As legendas automáticas estão ativadas Botões de ação @@ -513,6 +522,11 @@ Ajuste o volume deslizando verticalmente no lado direito da tela" Esconder Obrigado O botão de agradecimento está escondido O botão Obrigado é visível + + Ocultar Perguntar + O botão Perguntar está oculto + O botão Perguntar está visível Esconder clipe O botão do clipe está escondido @@ -832,8 +846,8 @@ Limitação: As não gostos podem não aparecer no modo anônimo" Botão curtir estilizado para largura mínima Botão curtir estilizado para melhor aparência Mostrar estimativa de \"gostos\" - As estimativas de \"gostos\" são mostradas - As estimativas de \"gostos\" estão ocultas + Vídeos com likes desativados mostram uma estimativa da contagem de likes + Likes estimados não são mostrados Mostrar uma notificação flutuante se a API não estiver disponível Toast é exibida se Retornar o Youtube Dislike não estiver disponível Toast não é exibida se Retornar o YouTube Dislike não estiver disponível @@ -1107,7 +1121,7 @@ Nếu sau này tắt, bạn nên xóa dữ liệu ứng dụng để tránh lỗ 19.01.34 - Restaurar ícones antigos de navegação - Definir página inicial + Alterar página inicial Padrão Todas as assinaturas Procurar canais @@ -1132,6 +1146,11 @@ Nếu sau này tắt, bạn nên xóa dữ liệu ứng dụng để tránh lỗ Realidade virtual Assistir depois Seus clipes + Sempre alterar a página inicial + "A página inicial é sempre alterada + +Limitação: Usar o botão voltar na barra de ferramentas pode não funcionar" + A página inicial é alterada apenas na inicialização do aplicativo Desativar a retomada do player do Shorts diff --git a/patches/src/main/resources/addresources/values-ro-rRO/strings.xml b/patches/src/main/resources/addresources/values-ro-rRO/strings.xml index 7b7150228..67535280e 100644 --- a/patches/src/main/resources/addresources/values-ro-rRO/strings.xml +++ b/patches/src/main/resources/addresources/values-ro-rRO/strings.xml @@ -459,29 +459,38 @@ Reglați volumul glisând vertical pe partea dreaptă a ecranului" Activează gestul de luminozitate automată Glisați în jos până la cea mai mică valoare a gestului de luminozitate activând luminozitatea automată Glisarea în jos până la cea mai mică valoare nu activează luminozitatea automată + Automat Expirare suprapunere glisare Cantitatea de milisecunde suprapunerea este vizibilă Opacitate suprapunere glisare Valoare opacitate între 0-100 Opacitatea glisării trebuie să fie între 0-100 + Culoare bară de progres suprapunere glisare + Culoarea barei de progres pentru comenzile de volum și luminozitate + Culoare nevalidă a barei de progres + Dimensiune text suprapunere glisare + Dimensiunea textului pentru suprapunerea glisării între 1-30 + Dimensiunea textului trebuie să fie între 1-30 Pragul mărimii glisării Cantitatea de prag pentru a glisa Sensibilitate glisare volum Cât de mult se modifică volumul per glisare - Afișează suprapunerea circulară - Suprapunerea circulară este afișată - Suprapunerea orizontală este afișată - Activați stilul minimal - Stilul minimal de suprapunere este activat - Stilul minim de suprapunere este dezactivat + Stil suprapunere glisare + Suprapunere orizontală + Suprapunere orizontală (minimală - sus) + Suprapunere orizontală (minimală - centru) + Suprapunere circulară + Suprapunere circulară (minimală) + Suprapunere verticală + Suprapunere verticală (minimală) Activați glisarea pentru a schimba videoclipurile Glisarea în modul pe ecran complet va trece la următorul/anteriorul videoclip Glisarea în modul pe ecran complet nu va trece la următorul/anteriorul videoclip - Dezactivează subtitrările automate - Legendele automate sunt dezactivate - Legenda automată este activată + Dezactivează subtitrările automate + Subtitrările Auto sunt dezactivate + Subtitrările Auto sunt activate Butoane de acţiune @@ -513,6 +522,11 @@ Reglați volumul glisând vertical pe partea dreaptă a ecranului" Ascunde mulţumirile Butonul de multumire este ascuns Butonul de multumire este afisat + + Ascunde \"Întreabă\" + Butonul Întreabă este ascuns + Butonul Întreabă este afișat Ascunde Clip Butonul clip este ascuns @@ -832,8 +846,8 @@ Limitare: Este posibil ca aprecierile negative să nu apară în modul incognito Buton de stilizat pentru lățime minimă Buton asemănător pentru cel mai bun aspect Afișați aprecierile estimate - Aprecierile estimate sunt afișate - Aprecierile estimate sunt ascunse + Videoclipurile cu aprecieri dezactivate afișează un număr estimat de aprecieri + Aprecierile estimate nu sunt afișate Arată un toast dacă API-ul nu este disponibil Toast este afișat dacă Returnarea YouTube Dislike nu este disponibilă Toast nu este afișat dacă Returnarea YouTube Dislike nu este disponibilă @@ -1106,7 +1120,7 @@ Dacă este dezactivat ulterior, se recomandă să ștergeți datele aplicației 19.01.34 - Restaurați pictogramele de navigare vechi - Setaţi pagina de start + Schimbă pagina de start Implicit Toate abonamentele Navigare canale @@ -1131,6 +1145,11 @@ Dacă este dezactivat ulterior, se recomandă să ștergeți datele aplicației Realitate virtuală Urmărește mai târziu Clipurile tale + Schimbă întotdeauna pagina de pornire + "Pagina de start este întotdeauna schimbată + +Limitare: Utilizarea butonului Înapoi de pe bara de instrumente poate să nu funcționeze" + Pagina de pornire este schimbată doar la pornirea aplicației Dezactivează reluarea playerului Shorts diff --git a/patches/src/main/resources/addresources/values-ru-rRU/strings.xml b/patches/src/main/resources/addresources/values-ru-rRU/strings.xml index a99ceb838..f4cb37569 100644 --- a/patches/src/main/resources/addresources/values-ru-rRU/strings.xml +++ b/patches/src/main/resources/addresources/values-ru-rRU/strings.xml @@ -459,29 +459,38 @@ Second \"item\" text" Включить жест автояркости Активация автояркости жестом до самого низкого значения яркости включена Активация автояркости жестом до самого низкого значения яркости отключена + Авто Время показа панели жестов Количество миллисекунд для показа всплывающей панели при жестах Затемнение фона панели жестов Значение затемнения всплывающей панели при жестах от 0 до 100 Значение затемнения панели жестов должно быть от 0 до 100 + Цвет полосы прогресса при жестах + Цвет полосы прогресса при изменении громкости и яркости жестами + Недопустимый цвет полосы прогресса + Размер текста панели жестов + Размер текста панели жестов от 1 до 30 + Размер текста должен быть в диапазоне от 1 до 30 Порог величины жеста Минимальная амплитуда движения, распознаваемого как жест - Чувствительность свайпа для регулировки громкости - На сколько изменяется громкость при каждом свайпе - Показать круговой индикатор - Круговой индикатор показан - Горизонтальный индикатор показан - Включить минимальный стиль - Минимальный стиль индикатора включен - Минимальный стиль индикатора отключен + Чувствительность жеста регулировки громкости + Величина изменения громкости при регулировке жестом + Стиль панели жестов + Горизонтальный индикатор + Горизонтальный индикатор (минимальный - сверху) + Горизонтальный индикатор (минимальный - по центру) + Круговой индикатор + Круговой индикатор (минимальный) + Вертикальный индикатор + Вертикальный индикатор (минимальный) Включить переключение видео жестом Жест в полноэкранном режиме переключает на следующее/предыдущее видео Жест в полноэкранном режиме не переключает на следующее/предыдущее видео - Отключить автоматические субтитры - Автоматические субтитры отключены - Автоматические субтитры включены + Отключить автоматические субтитры + Автоматические субтитры отключены + Автоматические субтитры включены Кнопки действий @@ -513,6 +522,11 @@ Second \"item\" text" Скрыть кнопку \"Спасибо\" Кнопка \"Спасибо\" под плеером скрыта Кнопка \"Спасибо\" под плеером показана + + Скрыть кнопку \"Спросить\" + Кнопка \"Спросить\" скрыта + Кнопка \"Спросить\" показана Скрыть кнопку \"Создать клип\" Кнопка \"Создать клип\" под плеером скрыта @@ -832,7 +846,7 @@ Second \"item\" text" Кнопка \"Лайк\" стилизована для минимальной ширины Кнопка \"Лайк\" стилизована для лучшего внешнего вида Показать примерное количество лайков - Примерное количество лайков показано + Для видео с отключенными лайками показывается примерное количество лайков Примерное количество лайков скрыто Уведомление при недоступности API Всплывающее уведомление при недоступности Return YouTube Dislike показано @@ -1107,7 +1121,7 @@ Second \"item\" text" 19.01.34 - Восстановление старых иконок панели навигации - Начальная страница + Изменить начальную страницу По умолчанию Все подписки Просмотр каналов @@ -1132,6 +1146,11 @@ Second \"item\" text" Виртуальная реальность Смотреть позже Ваши клипы + Всегда изменять начальную страницу + "Начальная страница изменяется всегда + +Ограничение: использование кнопки \"Назад\" на панели инструментов может не работать" + Начальная страница изменяется только при запуске приложения Отключить возобновление плеера Shorts diff --git a/patches/src/main/resources/addresources/values-si-rLK/strings.xml b/patches/src/main/resources/addresources/values-si-rLK/strings.xml index c0d8f55c8..bc8bec158 100644 --- a/patches/src/main/resources/addresources/values-si-rLK/strings.xml +++ b/patches/src/main/resources/addresources/values-si-rLK/strings.xml @@ -84,6 +84,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-sk-rSK/strings.xml b/patches/src/main/resources/addresources/values-sk-rSK/strings.xml index e619f3a3b..254fae7c4 100644 --- a/patches/src/main/resources/addresources/values-sk-rSK/strings.xml +++ b/patches/src/main/resources/addresources/values-sk-rSK/strings.xml @@ -452,29 +452,38 @@ Upravte hlasitosť posúvaním vertikálne na pravej strane obrazovky" Povoliť gesto automatického jasu Potiahnutím nadol na najnižšiu hodnotu gesta jasu aktivujete automatický jas Potiahnutie prstom nadol na najnižšiu hodnotu nezapne automatický jas + Automaticky Časový limit prekrytia potiahnutím prstom vypršal Počet milisekúnd, počas ktorých je prekrytie viditeľné Priehľadnosť pozadia prekrytia potiahnutia Hodnota priehľadnosti medzi 0-100 Priehľadnosť prekrytia potiahnutia musí byť medzi 0-100 + Farba panela priebehu prekrytia posunutím + Farba panela priebehu pre ovládanie hlasitosti a jasu + Neplatná farba panela priebehu + Veľkosť textu prekrytia posunutím + Veľkosť textu pre prekrytie posunutím medzi 1 – 30 + Veľkosť textu musí byť medzi 1 – 30 Prahová hodnota potiahnutia Hodnota prahu, ktorý sa má vykonať potiahnutím prstom Citlivosť posúvania hlasitosti Ako veľmi sa mení hlasitosť na jedno posunutie - Zobraziť kruhovú vrstvu - Kruhová vrstva sa zobrazuje - Zobrazuje sa vodorovná vrstva - Povoliť minimalistický štýl - Je povolený minimalistický štýl prekrytia - Minimálny štýl prekrytia je zakázaný + Štýl prekrytia potiahnutím + Horizontálne prekrytie + Horizontálne prekrytie (minimálne – hore) + Horizontálne prekrytie (minimálne – v strede) + Kruhové prekrytie + Kruhové prekrytie (minimálne) + Vertikálne prekrytie + Vertikálne prekrytie (minimálne) Potiahnite prstom a zmeňte videá Potiahnutie prstom v režime celej obrazovky prepne na predchádzajúce/nasledujúce video Potiahnutie prstom v režime celej obrazovky neprepne na predchádzajúce/nasledujúce video - Zakázať automatické titulky - Automatické titulky sú vypnuté - Automatické titulky sú povolené + Zakázať automatické titulky + Automatické titulky sú vypnuté + Automatické titulky sú zapnuté Akčné tlačidlá @@ -506,6 +515,11 @@ Upravte hlasitosť posúvaním vertikálne na pravej strane obrazovky" Skryť Ďakujem Tlačidlo poďakovania je skryté Zobrazí sa tlačidlo Ďakujem + + Skryť možnosť Opýtať sa + Tlačidlo Opýtať sa je skryté + Zobrazí sa tlačidlo Opýtať sa Skryť klip Tlačidlo klipu je skryté @@ -825,8 +839,8 @@ Obmedzenie: Hodnotenia Nepáči sa mi to sa nemusia zobraziť v anonymnom režim Tlačidlo podobné štýlu pre minimálnu šírku Tlačidlo v štýle ako pre najlepší vzhľad Zobraziť odhadované počty označení Páči sa mi to - Zobrazujú sa odhadované počty označení Páči sa mi to - Odhadované počty označení Páči sa mi to sú skryté + Videá so zakázanými hodnoteniami Páči sa mi to zobrazujú odhadovaný počet hodnotení Páči sa mi to + Odhadované hodnotenia Páči sa mi to sa nezobrazujú Ukážte prípitok, ak API nie je k dispozícii Ak nie je k dispozícii možnosť Vrátiť Nepáči sa mi na YouTube, zobrazí sa toast Toast sa nezobrazuje, ak nie je k dispozícii možnosť Vrátiť Nepáči sa mi na YouTube @@ -1097,7 +1111,7 @@ Ak sa neskôr vypne, odporúča sa vymazať údaje aplikácie, aby sa zabránilo 19.01.34 – Obnoviť staré ikony navigácie - Nastaviť úvodnú stránku + Zmeniť úvodnú stránku Predvolené Všetky odbery Prehliadať kanály @@ -1122,6 +1136,11 @@ Ak sa neskôr vypne, odporúča sa vymazať údaje aplikácie, aby sa zabránilo Virtuálna realita Pozrieť neskôr Vaše klipy + Vždy zmeniť úvodnú stránku + "Úvodná stránka sa vždy zmení + +Obmedzenie: Používanie tlačidla Späť na paneli s nástrojmi nemusí fungovať" + Úvodná stránka sa zmení iba pri spustení aplikácie Zakázať obnovenie prehrávača Shorts diff --git a/patches/src/main/resources/addresources/values-sl-rSI/strings.xml b/patches/src/main/resources/addresources/values-sl-rSI/strings.xml index 8f3c4ffd0..459807740 100644 --- a/patches/src/main/resources/addresources/values-sl-rSI/strings.xml +++ b/patches/src/main/resources/addresources/values-sl-rSI/strings.xml @@ -459,29 +459,38 @@ Prilagodite glasnost s potegom navpično na desni strani zaslona" Omogoči samodejno svetlost z gretnjo Pomikanje navzdol do najnižje vrednosti kretnje za svetlost omogoči samodejno svetlost Pomikanje navzdol do najnižje vrednosti ne omogoči samodejne svetlosti + Samodejno Časovni zamik prekrivanja pomikanja Število milisekund, ko je prekrivanje vidno Prosojnost prekrivanja poteze Vrednost prosojnosti med 0 in 100 Prosojnost drsenja mora biti med 0 in 100 + Barva vrstice napredka prekrivnega drsenja + Barva vrstice napredka za upravljanje glasnosti in svetlosti + Neveljavna barva vrstice napredka + Velikost besedila prekrivnega drsenja + Velikost besedila za prekrivni sloj drsenja med 1 in 30 + Velikost besedila mora biti med 1 in 30 Prazg prag za pomikanje Vrednost praga za pomikanje Občutljivost drsenja za glasnost Koliko se spremeni glasnost na poteg - Pokaži krožni prekrivni element - Krožni prekrivni element je prikazan - Prikazan je vodoravni prekrivni element - Omogoči minimalen slog - Minimalen slog prekrivanja je omogočen - Minimalni slog prekrivnega elementa je onemogočen + Slog prekrivnega elementa za poteg + Vodoravni prekrivni element + Vodoravni prekrivni element (minimalno – zgoraj) + Vodoravni prekrivni element (minimalno – sredina) + Krožni prekrivni element + Krožni prekrivni element (minimalno) + Navpični prekrivni element + Navpični prekrivni element (minimalno) Omogoči menjavanje videoposnetkov z drsenjem Drsenje v celozaslonskem načinu bo prešlo na naslednji/prejšnji videoposnetek. Drsenje v celozaslonskem načinu ne bo prešlo na naslednji/prejšnji videoposnetek. - Onemogoči samodejne podnapise - Samodejni podnapisi so onemogočeni - Samodejni podnapisi so omogočeni + Onemogoči samodejne podnapise + Samodejni podnapisi so onemogočeni + Samodejni napisi so omogočeni Gumbi za dejanja @@ -513,6 +522,11 @@ Prilagodite glasnost s potegom navpično na desni strani zaslona" Skrij Hvala Gumb Hvala je skrit Gumb Hvala je prikazan + + Skrij Vprašaj + Gumb Vprašaj je skrit + Gumb Vprašaj je prikazan Skrij Izrezek Gumb Izrezek je skrit @@ -832,8 +846,8 @@ Omejitev: Število »Ni mi všeč« se morda ne bo prikazalo v načinu brez bele Gumb všečkov je oblikovan za minimalno širino Gumb všečkov je oblikovan za najboljši videz Pokaži ocenjeno število »všečkov« - Prikaže se ocenjeno število »všečkov« - Ocenjeno število »všečkov« je skrito + Videoposnetki z onemogočenimi všečki prikazujejo ocenjeno število všečkov + Ocenjeni všečki niso prikazani Pokaži obvestilo, če API ni na voljo Obvestilo se prikaže, če Return YouTube Dislike ni na voljo Obvestilo se ne prikaže, če Return YouTube Dislike ni na voljo @@ -1106,7 +1120,7 @@ To bo spremenilo videz in funkcije aplikacije, vendar se lahko pojavijo neznani 19.01.34 – Obnovi stare ikone za krmarjenje - Nastavi začetno stran + Spremeni začetno stran Privzeto Vse naročnine Brskaj po kanalih @@ -1131,6 +1145,11 @@ To bo spremenilo videz in funkcije aplikacije, vendar se lahko pojavijo neznani Virtualna resničnost Oglej si kasneje Vaši posnetki + Vedno spremeni začetno stran + "Začetna stran je vedno spremenjena + +Omejitev: uporaba gumba za nazaj v orodni vrstici morda ne bo delovala" + Začetna stran se spremeni samo ob zagonu aplikacije Onemogoči nadaljevanje predvajalnika Shorts diff --git a/patches/src/main/resources/addresources/values-sq-rAL/strings.xml b/patches/src/main/resources/addresources/values-sq-rAL/strings.xml index fa2fd0e2a..73ba09de3 100644 --- a/patches/src/main/resources/addresources/values-sq-rAL/strings.xml +++ b/patches/src/main/resources/addresources/values-sq-rAL/strings.xml @@ -459,29 +459,38 @@ Përshtate shkëlqimin duke rrëshqitur vertikalisht në anën e majtë të ekra Aktivizo lëvizjen \"ndriçim automatik\" Shërbimi \"ndriçim automatik\" aktivizohet duke shëruar poshtë në vlerën më të ulët të lëvizjes së ndriçimit Shërbimi \"ndriçim automatik\" nuk aktivizohet duke shëruar poshtë në vlerën më të ulët + Automatik Koha e daljes së mbivendosjes së shërbimit Sasia e milisekondave që mbivendosja është e dukshme Opasiteti i sfondit mbivendosës shtypëse Vlera e opacitetit midis 0-100 Opaciteti i shtypjes duhet të jetë midis 0-100 + Ngjyra e shiritit të progresit të mbivendosjes së rrëshqitjes + Ngjyra e shiritit të progresit për kontrollet e volumit dhe të ndriçimit + Ngjyrë e pavlefshme e shiritit të progresit + Madhësia e tekstit të mbivendosjes së rrëshqitjes + Madhësia e tekstit për mbivendosjen e rrëshqitjes midis 1-30 + Madhësia e tekstit duhet të jetë midis 1-30 Pragu i madhësisë së shërbimit Sasia e pragut për të ndodhur shërbimi Ndjeshmëria e rrëshqitjes së volumit Sa ndryshon volumi për rrëshqitje - Shfaq mbivendosjen rrethore - Mbivendosja rrethore është shfaqur - Mbivendosja horizontale është shfaqur - Aktivizo stilin minimal - Stili minimal i shtresës është aktivizuar - Stili minimal i mbivendosjes është çaktivizuar + Stili i mbivendosjes me rrëshqitje + Mbivendosje horizontale + Mbivendosje horizontale (minimale - lart) + Mbivendosje horizontale (minimale - qendër) + Mbivendosje rrethore + Mbivendosje rrethore (minimale) + Mbivendosje vertikale + Mbivendosje vertikale (minimale) Aktivizoni lëshimin për të ndryshuar videot Lëvizja në modalitetin në ekran të plotë do të ndryshojë në videon e ardhshme/të mëparshme Lëvizja në modalitetin në ekran të plotë nuk do të ndryshojë në videon e ardhshme/të mëparshme - Çaktivizo titrat automatikë - Titrat automatikë janë të çaktivizuar - Titrat automatikë janë të aktivizuar + Çaktivizo titrat automatikë + Titrat automatikë janë të çaktivizuar + Titrat Auto janë aktivizuar Butonat e veprimit @@ -513,6 +522,11 @@ Përshtate shkëlqimin duke rrëshqitur vertikalisht në anën e majtë të ekra Fsheh \"Faleminderit\" Butoni \"Faleminderit\" është i fshehur Butoni \"Faleminderit\" është i dukshëm + + Fshih Pyet + Butoni Pyet është i fshehur + Butoni Pyet shfaqet Fsheh \"Klip\" Butoni \"Klip\" është i fshehur @@ -832,8 +846,8 @@ Kufizimi: Mospëlqimet mund të mos shfaqen në modalitetin incognito" Butoni \"Pëlqen\" i stiluar për gjerësi minimale Butoni \"Pëlqen\" i stiluar për paraqitje më të mirë Shfaq pëlqimet e vlerësuara - Pëlqimet e vlerësuara shfaqen - Pëlqimet e vlerësuara janë fshehur + Videot me pëlqime të çaktivizuara tregojnë një numër të vlerësuar pëlqimesh + Pëlqimet e vlerësuara nuk shfaqen Shfaq një toast nëse API nuk është në dispozicion Toast shfaqet nëse Return YouTube Dislike nuk është në dispozicion Toast nuk shfaqet nëse Return YouTube Dislike nuk është në dispozicion @@ -1105,7 +1119,7 @@ Nëse më vonë është çaktivizuar, është e rekomanduar të fshiheni të dh 19.01.34 - Ristauro ikonave te vjetra te navigimit - Vendos faqen e fillimit + Ndrysho faqen e fillimit Paragjykja Të gjitha abonimet Shfleto kanalet @@ -1130,6 +1144,11 @@ Nëse më vonë është çaktivizuar, është e rekomanduar të fshiheni të dh Realiteti Virtual Shiko më vonë Klipët tuaj + Gjithmonë ndrysho faqen e fillimit + "Faqja e fillimit ndryshohet gjithmonë + +Kufizimi: Përdorimi i butonit të kthimit në shiritin e veglave mund të mos funksionojë" + Faqja e fillimit ndryshohet vetëm kur nis aplikacioni Fik rifillon lojtarin Shorts diff --git a/patches/src/main/resources/addresources/values-sr-rCS/strings.xml b/patches/src/main/resources/addresources/values-sr-rCS/strings.xml index 5bed5f3a1..863101a17 100644 --- a/patches/src/main/resources/addresources/values-sr-rCS/strings.xml +++ b/patches/src/main/resources/addresources/values-sr-rCS/strings.xml @@ -459,29 +459,38 @@ Podesite jačinu zvuka prevlačenjem vertikalno na desnoj strani ekrana"Omogući pokret za automatsku osvetljenost Prevlačenje nadole do najniže vrednosti pokreta za osvetljenost omogućava automatsku osvetljenost Prevlačenje nadole do najniže vrednosti pokreta za osvetljenost ne omogućava automatsku osvetljenost + Automatski Vremensko ograničenje pokreta prevlačenja Količina milisekundi u kojoj je pokret prevlačenja vidljiv Neprozirnost pozadine pokreta prevlačenja Vrednost neprozirnosti između 0 i 100 Neprozirnost pokreta prevlačenja mora biti između 0 i 100 + Boja trake napretka pokreta prevlačenja + Boja trake napretka za kontrolu jačine zvuka i osvetljenosti + Nevažeća boja trake napretka + Veličina teksta pokreta prevlačenja + Veličina teksta za pokret prevlačenja između 1 i 30 + Veličina teksta mora biti između 1 i 30 Prag trajanja prevlačenja Iznos praga trajanja prevlačenja Osetljivost prevlačenja za jačinu zvuka Koliko se jačina zvuka menja po prevlačenju - Prikaži kružni preklop - Prikazan je kružni preklop - Prikazan je horizontalni preklop - Omogući minimalni stil - Minimalni stil preklopa je omogućen - Minimalni stil preklopa je onemogućen + Stil preklopa pokreta prevlačenja + Horizontalni preklop + Horizontalni preklop (minimalni – odozgo) + Horizontalni preklop (minimalni – po centru) + Kružni preklop + Kružni preklop (minimalni) + Vertikalni preklop + Vertikalni preklop (minimalni) Omogući prevlačenje za promenu videa Prevlačenje u režimu celog ekrana će promeniti na sledeći/prethodni video Prevlačenje u režimu celog ekrana neće promeniti na sledeći/prethodni video - Onemogući automatske titlove - Automatski titlovi su onemogućeni - Automatična prevodioci su uključeni + Onemogući automatski titl + Automatski titl je onemogućen + Automatski titl je omogućen Dugmad radnji @@ -513,6 +522,11 @@ Podesite jačinu zvuka prevlačenjem vertikalno na desnoj strani ekrana"Sakrij dugme „Hvala” Dugme „Hvala” je skriveno Dugme „Hvala” je prikazano + + Sakrij „Pitaj” + Dugme „Pitaj” je skriveno + Dugme „Pitaj” je prikazano Sakrij dugme „Klip” Dugme „Klip” je skriveno @@ -832,8 +846,8 @@ Ograničenje: Nesviđanja se možda neće pojaviti u režimu bez arhiviranja"Dugme „Sviđanje” stilizovano za minimalnu širinu Dugme „Sviđanje” stilizovano za najbolji izgled Prikaži procenjeni broj sviđanja - Procenjeni broj sviđanja je prikazan - Procenjeni broj sviđanja je skriven + Videi sa onemogućenim sviđanjima prikazuju procenjeni broj sviđanja + Procenjeni broj sviđanja nije prikazan Prikaži iskačuće obaveštenje ako API nije dostupan Iskačuće obaveštenje je prikazano, ako Return YouTube Dislike nije dostupan Iskačuće obaveštenje nije prikazano, ako Return YouTube Dislike nije dostupan @@ -1106,7 +1120,7 @@ Ako se kasnije isključi, preporučuje se da izbrišete podatke aplikacije da bi 19.01.34 - Vraća stare ikonice navigacije - Polazna stranica + Promena polazne stranice Podrazumevana Sva praćenja Pretraga kanala @@ -1131,6 +1145,11 @@ Ako se kasnije isključi, preporučuje se da izbrišete podatke aplikacije da bi Virtuelna realnost Za kasnije Vaši klipovi + Uvek menjaj polaznu stranicu + "Polazna stranica se uvek menja + +Ograničenje: Korišćenje dugmeta „Nazad” na traci sa alatkama možda neće raditi" + Polazna stranica se menja samo pri pokretanju aplikacije Onemogući nastavak reprodukcije Shorts plejera diff --git a/patches/src/main/resources/addresources/values-sr-rSP/strings.xml b/patches/src/main/resources/addresources/values-sr-rSP/strings.xml index 381ee10ab..2d37d78ef 100644 --- a/patches/src/main/resources/addresources/values-sr-rSP/strings.xml +++ b/patches/src/main/resources/addresources/values-sr-rSP/strings.xml @@ -459,29 +459,38 @@ Second \"item\" text" Омогући покрет за аутоматску осветљеност Превлачење надоле до најниже вредности покрета за осветљеност омогућава аутоматску осветљеност Превлачење надоле до најниже вредности покрета за осветљеност не омогућава аутоматску осветљеност + Аутоматски Временско ограничење покрета превлачења Количина милисекунди у којој је покрет превлачења видљив Непрозирност позадине покрета превлачења Вредност непрозирности између 0 и 100 Непрозирност покрета превлачења мора бити између 0 и 100 + Боја траке напретка покрета превлачења + Боја траке напретка за контролу јачине звука и осветљености + Неважећа боја траке напретка + Величина текста покрета превлачења + Величина текста за покрет превлачења између 1 и 30 + Величина текста мора бити између 1 и 30 Праг трајања превлачења Износ прага трајања превлачења - Осетљивост покрета за јачину звука - Колико се јачина звука мења по покрету - Прикажи кружни преклоп - Приказан је кружни преклоп - Приказан је хоризонтални преклоп - Омогући минимални стил - Минимални стил преклопа је омогућен - Минимални стил преклопа је онемогућен + Осетљивост превлачења за јачину звука + Колико се јачина звука мења по превлачењу + Стил преклопа покрета превлачења + Хоризонтални преклоп + Хоризонтални преклоп (минимални – одозго) + Хоризонтални преклоп (минимални – по центру) + Кружни преклоп + Кружни преклоп (минимални) + Вертикални преклоп + Вертикални преклоп (минимални) Омогући превлачење за промену видеа Превлачење у режиму целог екрана ће променити на следећи/претходни видео Превлачење у режиму целог екрана неће променити на следећи/претходни видео - Онемогући аутоматске титлове - Аутоматски титлови су онемогућени - Аутоматски титлови су омогућени + Онемогући аутоматски титл + Аутоматски титл је онемогућен + Аутоматски титл је омогућен Дугмад радњи @@ -513,6 +522,11 @@ Second \"item\" text" Сакриј дугме „Хвала” Дугме „Хвала” је скривено Дугме „Хвала” је приказано + + Сакриј „Питај” + Дугме „Питај” је скривено + Дугме „Питај” је приказано Сакриј дугме „Клип” Дугме „Клип” је скривено @@ -832,8 +846,8 @@ Second \"item\" text" Дугме „Свиђање” стилизовано за минималну ширину Дугме „Свиђање” стилизовано за најбољи изглед Прикажи процењени број свиђања - Процењени број свиђања је приказан - Процењени број свиђања је скривен + Видеи са онемогућеним свиђањима приказују процењени број свиђања + Процењени број свиђања није приказан Прикажи искачуће обавештење ако API није доступан Искачуће обавештење је приказано, ако Return YouTube Dislike није доступан Искачуће обавештење није приказано, ако Return YouTube Dislike није доступан @@ -1106,7 +1120,7 @@ Second \"item\" text" 19.01.34 - Враћа старе иконице навигације - Полазна страница + Промена полазне странице Подразумевана Сва праћења Претрага канала @@ -1131,6 +1145,11 @@ Second \"item\" text" Виртуелна реалност За касније Ваши клипови + Увек мењај полазну страницу + "Полазна страница се увек мења + +Ограничење: Коришћење дугмета „Назад” на траци са алаткама можда неће радити" + Полазна страница се мења само при покретању апликације Онемогући наставак репродукције Shorts плејера diff --git a/patches/src/main/resources/addresources/values-sv-rSE/strings.xml b/patches/src/main/resources/addresources/values-sv-rSE/strings.xml index a1b358ee0..76e6039cf 100644 --- a/patches/src/main/resources/addresources/values-sv-rSE/strings.xml +++ b/patches/src/main/resources/addresources/values-sv-rSE/strings.xml @@ -459,29 +459,38 @@ Justera volymen genom att svepa vertikalt på höger sida av skärmen" Aktivera automatisk ljusstyrkegest Genom att svepa ner till det lägsta värdet av gesten för ljusstyrka aktiveras automatisk ljusstyrka Att svepa ner till det lägsta värdet aktiverar inte automatisk ljusstyrka + Automatiskt Tidsgräns för svepöverlagring Mängden millisekunder överlappningen är synlig Överlägg svepbakgrund opacitet Opacitetsvärde mellan 0-100 Överlagrad svepopacitet måste vara mellan 0-100 + Färg på förloppsindikatorn för svepöverlagring + Färgen på förloppsindikatorn för volym- och ljusstyrkekontroller + Ogiltig färg på förloppsindikatorn + Textstorlek för svepöverlagring + Textstorleken för svepöverlagring mellan 1 och 30 + Textstorleken måste vara mellan 1 och 30 Svep magnitud tröskel Mängden tröskel för att svepa ska uppstå Volym svepkänslighet Hur mycket volymen ändras per svep - Visa cirkelformad overlay - Cirkelformad overlay visas - Horisontell overlay visas - Aktivera minimal stil - Minimal överlagringsstil är aktiverad - Minimal overlay-stil är inaktiverad + Svep överläggningsstil + Horisontellt överlägg + Horisontellt överlägg (minimalt - överst) + Horisontellt överlägg (minimalt - mitten) + Cirkulärt överlägg + Cirkulärt överlägg (minimalt) + Vertikalt överlägg + Vertikalt överlägg (minimalt) Aktivera svepning för att byta video Svepning i helskärmsläge ändrar till följande/föregående video Svepning i helskärmsläge ändrar inte till följande/föregående video - Inaktivera automatisk bildtext - Auto-bildtexter är inaktiverade - Automatisk bildtext är aktiverad + Inaktivera automatisk bildtext + Auto bildtexter är inaktiverade + Automatisk bildtext är aktiverad Åtgärd knappar @@ -513,6 +522,11 @@ Justera volymen genom att svepa vertikalt på höger sida av skärmen" Dölj tack Tack-knappen är dold Tackknappen är synlig + + Dölj Fråga + Knappen Fråga är dold + Knappen Fråga är synlig Dölj klipp Klipp knappen är dold @@ -832,8 +846,8 @@ Begränsning: Ogillanden kanske inte visas i inkognitoläge" Gilla knappen stylad för minsta bredd Gilla knappen stylas för bästa utseende Visa uppskattade gillamarkeringar - Uppskattade gillamarkeringar visas - Uppskattade gillamarkeringar är dolda + Videor med inaktiverade gillanden visar ett uppskattat antal gillanden + Uppskattade gillanden visas inte Visa ett meddelande om API inte är tillgängligt Visa ett meddelande om Return YouTube Dislike inte är tillgängligt Visa inget meddelande om Return YouTube Dislike inte är tillgängligt @@ -1106,7 +1120,7 @@ Om det senare stängs av rekommenderas det att rensa appens data för att förhi 19.01.34 - Återställ gamla navigeringsikoner - Ställ in startsida + Ändra startsida Standard Alla prenumerationer Bläddra bland kanaler @@ -1131,6 +1145,11 @@ Om det senare stängs av rekommenderas det att rensa appens data för att förhi Virtual reality Titta senare Dina klipp + Ändra alltid startsida + "Startsidan ändras alltid + +Begränsning: Att använda bakåtknappen i verktygsfältet kanske inte fungerar" + Startsidan ändras endast vid appstart Inaktivera återupptagande av Shorts spelare diff --git a/patches/src/main/resources/addresources/values-sw-rKE/strings.xml b/patches/src/main/resources/addresources/values-sw-rKE/strings.xml index c0d8f55c8..bc8bec158 100644 --- a/patches/src/main/resources/addresources/values-sw-rKE/strings.xml +++ b/patches/src/main/resources/addresources/values-sw-rKE/strings.xml @@ -84,6 +84,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-ta-rIN/strings.xml b/patches/src/main/resources/addresources/values-ta-rIN/strings.xml index c0d8f55c8..bc8bec158 100644 --- a/patches/src/main/resources/addresources/values-ta-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-ta-rIN/strings.xml @@ -84,6 +84,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-te-rIN/strings.xml b/patches/src/main/resources/addresources/values-te-rIN/strings.xml index c0d8f55c8..bc8bec158 100644 --- a/patches/src/main/resources/addresources/values-te-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-te-rIN/strings.xml @@ -84,6 +84,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-th-rTH/strings.xml b/patches/src/main/resources/addresources/values-th-rTH/strings.xml index 82c4504cb..3a74e93bb 100644 --- a/patches/src/main/resources/addresources/values-th-rTH/strings.xml +++ b/patches/src/main/resources/addresources/values-th-rTH/strings.xml @@ -457,29 +457,38 @@ Second \"item\" text" เปิดใช้งานท่าทางความสว่างอัตโนมัติ การปัดลงไปที่ค่าต่ำสุดของท่าทางความสว่างจะเปิดใช้งานความสว่างอัตโนมัติ การปัดลงไปที่ค่าต่ำสุดจะไม่เปิดใช้งานความสว่างอัตโนมัติ + อัตโนมัติ เวลาหมดอายุของการแสดงทับการปัด จำนวนมิลลิวินาทีที่การแสดงทับจะมองเห็น ความทึบแสงพื้นหลังของสไลด์โอเวอร์เลย์ ค่าความทึบแสงระหว่าง 0-100 ค่าความทึบแสงของสไลด์ต้องอยู่ระหว่าง 0-100 + สีของแถบความคืบหน้าของการปัด + สีของแถบความคืบหน้าสำหรับการควบคุมระดับเสียงและความสว่าง + สีของแถบความคืบหน้าไม่ถูกต้อง + ขนาดข้อความของการปัด + ขนาดข้อความสำหรับการปัดระหว่าง 1-30 + ขนาดข้อความต้องอยู่ระหว่าง 1-30 เกณฑ์ขนาดของการปัด จำนวนเกณฑ์สำหรับการปัดที่จะเกิดขึ้น ความไวในการปัดปรับระดับเสียง ปริมาณการเปลี่ยนแปลงระดับเสียงต่อการปัดแต่ละครั้ง - แสดงภาพซ้อนทับแบบวงกลม - แสดงภาพซ้อนทับแบบวงกลม - แสดงภาพซ้อนทับแนวนอน - เปิดใช้งานรูปแบบมินิมอล - เปิดใช้งานรูปแบบโอเวอร์เลย์มินิมอล - ปิดใช้งานรูปแบบภาพซ้อนทับแบบมินิมอล + รูปแบบโอเวอร์เลย์การปัด + โอเวอร์เลย์แนวนอน + โอเวอร์เลย์แนวนอน (มินิมอล - ด้านบน) + โอเวอร์เลย์แนวนอน (มินิมอล - ตรงกลาง) + โอเวอร์เลย์แบบวงกลม + โอเวอร์เลย์แบบวงกลม (มินิมอล) + โอเวอร์เลย์แนวตั้ง + โอเวอร์เลย์แนวตั้ง (มินิมอล) เปิดใช้การปัดเพื่อเปลี่ยนวิดีโอ การปัดในโหมดเต็มหน้าจอจะเปลี่ยนไปเป็นวิดีโอถัดไป/ก่อนหน้า การปัดในโหมดเต็มหน้าจอจะไม่เปลี่ยนเป็นวิดีโอถัดไป/ก่อนหน้า - ปิดใช้งานคำบรรยายอัตโนมัติ - คำบรรยายอัตโนมัติถูกปิดใช้งาน - คำบรรยายอัตโนมัติถูกเปิดใช้งาน + ปิดใช้งานคำบรรยายอัตโนมัติ + คำบรรยาย\"Auto\"ถูกปิดใช้งาน + คำบรรยาย\"Auto\"ถูกเปิดใช้งาน ปุ่มการกระทำ @@ -511,6 +520,11 @@ Second \"item\" text" ซ่อนขอบคุณ ปุ่มขอบคุณถูกซ่อน ปุ่มขอบคุณถูกแสดง + + ซ่อนปุ่มถาม + ปุ่มถามถูกซ่อนอยู่ + ปุ่มถามแสดงอยู่ ซ่อนคลิป ปุ่มคลิปถูกซ่อน @@ -830,8 +844,8 @@ Second \"item\" text" ปุ่ม \"ถูกใจ\" ปรับให้มีขนาดเล็กที่สุด ปุ่ม \"ถูกใจ\" ปรับให้แสดงผลได้ดีที่สุด แสดงจำนวนถูกใจโดยประมาณ - แสดงจำนวนถูกใจโดยประมาณ - ซ่อนจำนวนถูกใจโดยประมาณ + วิดีโอที่ปิดการถูกใจจะแสดงจำนวนการถูกใจโดยประมาณ + ไม่แสดงจำนวนการถูกใจโดยประมาณ แสดงคำอวยพรถ้า API ไม่พร้อมใช้งาน ข้อความแจ้งเตือนแสดงขึ้น หาก Return YouTube Dislike ไม่พร้อมใช้งาน Toast ไม่ปรากฏขึ้นหาก ไม่สามารถใช้งาน Return YouTube Dislike @@ -1105,7 +1119,7 @@ User id ของคุณเหมือนกับรหัสผ่าน 19.01.34 - กู้คืนไอคอนการนำทางแบบเก่า - ตั้งค่าหน้าเริ่มต้น + เปลี่ยนหน้าเริ่มต้น ค่าเริ่มต้น สยงสนดการตเปนี เรียกดูช่อง @@ -1130,6 +1144,11 @@ User id ของคุณเหมือนกับรหัสผ่าน กทบทาคส์ชียอลัด ดูต่อภายหลัง คลิปของคุณ + เปลี่ยนหน้าเริ่มต้นเสมอ + "หน้าเริ่มต้นมีการเปลี่ยนแปลงเสมอ + +ข้อจำกัด: การใช้ปุ่มย้อนกลับบนแถบเครื่องมืออาจใช้ไม่ได้" + หน้าเริ่มต้นจะเปลี่ยนเมื่อเริ่มแอปเท่านั้น ปิดใช้งานการกลับมาทำงานต่อของเครื่องเล่น Shorts diff --git a/patches/src/main/resources/addresources/values-tr-rTR/strings.xml b/patches/src/main/resources/addresources/values-tr-rTR/strings.xml index b813cd458..74a49e751 100644 --- a/patches/src/main/resources/addresources/values-tr-rTR/strings.xml +++ b/patches/src/main/resources/addresources/values-tr-rTR/strings.xml @@ -459,29 +459,38 @@ Ekranın sağ tarafında dikey olarak kaydırarak sesi ayarlayın" Otomatik parlaklık hareketini etkinleştir Parlaklık hareketinin en düşük değerine kaydırma otomatik parlaklığı etkinleştirir Parlaklık hareketinin en düşük değerine kaydırma otomatik parlaklığı etkinleştirmez + Oto Kaydırma paneli zaman aşımı Panelin görünür olduğu milisaniye miktarı Kaydırma paneli arka plan opaklığı 0-100 arasında opaklık değeri Kaydırma opaklığı 0-100 arasında olmalıdır + Kaydırma katmanı ilerleme çubuğu rengi + Ses ve parlaklık kontrolleri için ilerleme çubuğunun rengi + Geçersiz ilerleme çubuğu rengi + Kaydırma katmanı metin boyutu + Kaydırma katmanı için 1-30 arası metin boyutu + Metin boyutu 1-30 arasında olmalıdır Kaydırma büyüklük eşiği Kaydırma işleminin gerçekleşmesi için eşik miktarı Ses kaydırma hassasiyeti Kaydırma başına sesin ne kadar değişeceği - Dairesel katmanı göster - Dairesel katman gösteriliyor - Yatay katman gösteriliyor - Minimal stili etkinleştir - Minimal katman stili etkin - Minimal katman stili devre dışı + Kaydırma katmanı stili + Yatay katman + Yatay katman (minimal - üst) + Yatay katman (minimal - orta) + Dairesel katman + Dairesel katman (minimal) + Dikey katman + Dikey katman (minimal) Kaydırarak video değiştirmeyi etkinleştir Tam ekran modunda kaydırma, bir sonraki/önceki videoya geçecektir Tam ekran modunda kaydırma, bir sonraki/önceki videoya geçmeyecektir - Otomatik altyazıları devre dışı bırak - Altyazılar kendiliğinden açılmaz - Altyazılar kendiliğinden açılabilir + Otomatik altyazıları devre dışı bırak + Otomatik altyazılar devre dışı + Otomatik altyazılar etkin Eylem düğmeleri @@ -513,6 +522,11 @@ Ekranın sağ tarafında dikey olarak kaydırarak sesi ayarlayın" Teşekkürler düğmesini gizle Teşekkürler düğmesi gizli Teşekkürler düğmesi görünür + + \'Sor\'u gizle + Sor düğmesi gizli + Sor düğmesi görünür Klip düğmesini gizle Klip düğmesi gizli @@ -832,8 +846,8 @@ Kısıtlama: Beğenilmeme sayıları gizli modda görünmeyebilir" Beğenme düğmesi en az genişlik için biçimlendirilir Beğenme düğmesi en iyi görünüm için biçimlendirilir Tahmini beğenileri göster - Tahmini beğeniler görünür - Tahmini beğeniler gizli + Beğenileri devre dışı bırakılan videolarda tahmini beğeni sayısı gösterilir + Tahmini beğeniler gösterilmez API kullanılamadığında bir uyarı göster Return YouTube Dislike kullanılamadığında uyarı gösterilir Return YouTube Dislike kullanılamadığında uyarı gösterilmez @@ -1107,7 +1121,7 @@ Daha sonra kapatılırsa, arayüz hatalarını önlemek için uygulama verilerin 19.01.34 - Eski gezinti simgelerini geri getir - Başlangıç sayfasını ayarla + Başlangıç sayfasını değiştir Varsayılan Tüm abonelikler Kanallara göz at @@ -1132,6 +1146,11 @@ Daha sonra kapatılırsa, arayüz hatalarını önlemek için uygulama verilerin Sanal Gerçeklik Daha sonra izle Sizin klipleriniz + Başlangıç sayfasını her zaman değiştir + "Başlangıç sayfası her zaman değiştirilir + +Kısıtlama: Araç çubuğundaki geri düğmesini kullanmak işe yaramayabilir" + Başlangıç sayfası yalnızca uygulama başlatılırken değiştirilir Shorts oynatıcıya devam edilmesini devre dışı bırak diff --git a/patches/src/main/resources/addresources/values-uk-rUA/strings.xml b/patches/src/main/resources/addresources/values-uk-rUA/strings.xml index 25f93b4f9..4c7145f4c 100644 --- a/patches/src/main/resources/addresources/values-uk-rUA/strings.xml +++ b/patches/src/main/resources/addresources/values-uk-rUA/strings.xml @@ -459,29 +459,38 @@ Second \"item\" text" Жест автояскравості Проведення вниз до найнижчого значення яскравості вмикає автоматичну яскравість Проведення вниз до найнижчого значення не вмикає автоматичну яскравість + Авто Час показу панелі жесту Скільки мілісекунд спливаюча панель при жесті буде показуватися Затемнення фону панелі жесту Значення затемнення від 0 до 100 Значення затемнення панелі жесту має бути в межах від 0 до 100 + Колір смуги прогресу панелі жесту + Колір смуги прогресу під час регулювання гучності та яскравості + Недійсний колір смуги прогресу + Розмір тексту панелі жесту + Розмір тексту панелі жесту від 1 до 30 + Розмір тексту має бути від 1 до 30 Поріг величини жесту Мінімальна амплітуда руху, що розпізнається як жест - Чутливість гортання гучності - На скільки змінюється гучність за одне гортання - Показувати круговий індикатор - Показується круговий індикатор - Показується горизонтальний індикатор - Увімкнути мінімалістичний стиль - Мінімалістичний стиль індикатора увімкнено - Мінімалістичний стиль індикатора вимкнено + Чутливість жесту гучності + Наскільки змінюється гучність проводячи пальцем по екрану + Стиль панелі жесту + Горизонтальний індикатор + Горизонтальний індикатор (мінімальний - зверху) + Горизонтальний індикатор (мінімальний - по центру) + Круговий індикатор + Круговий індикатор (мінімальний) + Вертикальний індикатор + Вертикальний індикатор (мінімальний) Увімкнути зміну відео проведенням Проведення пальцем у повноекранному режимі перейде до наступного/попереднього відео Проведення пальцем у повноекранному режимі не перейде до наступного/попереднього відео - Вимкнути автоматичні субтитри - Автоматичні субтитри вимкнено - Автоматичні субтитри ввімкнено + Вимкнути автоматичні субтитри + Автоматичні субтитри вимкнено + Автоматичні субтитри ввімкнено Кнопки дій @@ -513,6 +522,11 @@ Second \"item\" text" Приховати \"Дякую\" Кнопку \"Дякую\" приховано Кнопка \"Дякую\" показується + + Приховати \"Запитати\" + Кнопку \"Запитати\" приховано + Кнопка \"Запитати\" показується Приховати \"Створити кліп\" Кнопку \"Створити кліп\" приховано @@ -832,8 +846,8 @@ Second \"item\" text" Кнопку \"Подобається\" стилізовано під мінімальну ширину Кнопку \"Подобається\" стилізовано для кращого вигляду Показувати приблизну кількість вподобань - Приблизна кількість вподобань показується - Приблизну кількість вподобань приховано + На відео з вимкненими відмітками \"Подобається\" показується приблизна кількість вподобань + Приблизна кількість вподобань не показується Показувати тост, якщо API не доступний Тост показується, якщо Return YouTube Dislike не доступний Тост не показується, якщо Return YouTube Dislike не доступний @@ -1106,7 +1120,7 @@ Second \"item\" text" 19.01.34 - Відновлення старих іконок панелі навігації - Початкова сторінка + Змінити початкову сторінку За замовчуванням Усі підписки Усі підписки @@ -1131,6 +1145,11 @@ Second \"item\" text" Віртуальна реальність Переглянути пізніше Ваші кліпи + Завжди змінювати початкову сторінку + "Початкова сторінка завжди змінюється + +Обмеження: Використання кнопки \"Назад\" на панелі інструментів може не працювати" + Початкова сторінка змінюється лише під час запуску програми Вимкнути відновлення плеєра Shorts diff --git a/patches/src/main/resources/addresources/values-ur-rIN/strings.xml b/patches/src/main/resources/addresources/values-ur-rIN/strings.xml index c0d8f55c8..bc8bec158 100644 --- a/patches/src/main/resources/addresources/values-ur-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-ur-rIN/strings.xml @@ -84,6 +84,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-uz-rUZ/strings.xml b/patches/src/main/resources/addresources/values-uz-rUZ/strings.xml index c0d8f55c8..bc8bec158 100644 --- a/patches/src/main/resources/addresources/values-uz-rUZ/strings.xml +++ b/patches/src/main/resources/addresources/values-uz-rUZ/strings.xml @@ -84,6 +84,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-vi-rVN/strings.xml b/patches/src/main/resources/addresources/values-vi-rVN/strings.xml index 1a03eb34f..9f8488e0c 100644 --- a/patches/src/main/resources/addresources/values-vi-rVN/strings.xml +++ b/patches/src/main/resources/addresources/values-vi-rVN/strings.xml @@ -23,8 +23,8 @@ Second \"item\" text" Kiểm tra thất bại Mở trang web chính thức - Phớt lờ - <h5>Ứng dụng này xem ra không được vá bởi bạn.</h5><br>Ứng dụng này có thể không hoạt động chính xác, <b>gây hại hoặc thậm chí nguy hiểm khi dùng</b>.<br><br>Những lần kiểm tra này ngụ ý rằng ứng dụng được vá trước hoặc được nhận được từ ai khác;<br><br><small>%1$s</small><br>Cực kỳ khuyến nghị <b>gỡ cài đặt ứng này và tự vá</b> để chắc chắn bạn dùng ứng dụng hợp lệ và an toàn.<p><br>Nếu phớt lờ, cảnh báo này sẽ chỉ hiện hai lần. + Bỏ qua + <h5>Ứng dụng này xem ra không phải do bạn tự vá.</h5><br>Ứng dụng này có thể không hoạt động chính xác, <b>tiềm ẩn rủi ro hoặc thậm chí gây nguy hiểm khi sử dụng</b>.<br><br>Những kiểm tra này ngụ ý rằng ứng dụng được vá sẵn hoặc lấy từ nguồn khác;<br><br><small>%1$s</small><br>Chúng tôi khuyến nghị bạn nên <b>gỡ cài đặt ứng này và tự vá lại</b> để đảm bảo bạn đang dùng một ứng dụng an toàn và hợp lệ.<p><br>Cảnh báo này sẽ chỉ hiện hai lần, hãy cân nhắc trước khi bỏ qua. Đã vá trên một thiết bị khác Không được cài đặt bởi ReVanced Manager Đã vá hơn 10 phút trước @@ -39,42 +39,42 @@ Second \"item\" text" Khởi động lại Nhập Sao chép - Khôi phục mặc định cài đặt ReVanced + Cài đặt ReVanced đặt lại thành mặc định Đã nhập cài đặt %d Nhập thất bại: %s Hiện biểu tượng cài đặt ReVanced - Các biểu tượng cài đặt được hiện - Các biểu tượng cài đặt không được hiện + Các biểu tượng cài đặt được hiển thị + Các biểu tượng cài đặt không được hiển thị Ngôn ngữ ReVanced - "Dịch cho một số ngôn ngữ có thể bị thiếu hoặc không đầy đủ. + "Một số ngôn ngữ có thể chưa được dịch đầy đủ hoặc bị thiếu. -Để dịch các ngôn ngữ mới, hãy truy cập translate.revanced.app" +Để đóng góp bản dịch các ngôn ngữ mới, hãy truy cập translate.revanced.app" Ngôn ngữ ứng dụng Nhập / Xuất Nhập / Xuất cài đặt ReVanced - Bạn đang dùng Bản vá ReVanced phiên bản <i>%s</i> + Bạn đang dùng ReVanced Patches phiên bản <i>%s</i> Lưu ý - Đây là phiên bản tiền phát hành và bạn có thể gặp phải sự cố không mong muốn + Đây là phiên bản phát hành trước và bạn có thể gặp phải sự cố không mong muốn Các liên kết chính thức - MicroG GmsCore chưa được cài đặt. Cài nó. + MicroG GmsCore chưa được cài đặt. Hãy cài đặt ngay. Hành động cần thiết - "MicroG GmsCore không có quyền chạy ngầm. + "MicroG GmsCore không có quyền chạy nền. -Hãy làm theo hướng dẫn \"Đừng tắt ứng dụng\" của điện thoại bạn và áp dụng các hướng dẫn cho cài đặt MicroG của bạn. +Hãy làm theo hướng dẫn \"Don't kill my app\" dành cho điện thoại của bạn và áp dụng các bước đó để cài đặt MicroG. -Điều này là cần thiết để ứng dụng hoạt động." +Việc cấp quyền chạy nền là bắt buộc để ứng dụng hoạt động." Mở trang web - "Tối ưu hóa pin MicroG GmsCore phải được tắt để tránh sự cố. + "Cần phải tắt tối ưu hóa pin cho MicroG GmsCore để tránh sự cố. -Tắt tối ưu hóa pin cho MicroG sẽ không ảnh hưởng tiêu cực đến việc sử dụng pin. +Tắt tối ưu hóa pin cho MicroG sẽ không ảnh hưởng đáng kể đến hiệu suất sử dụng pin. -Nhấn nút tiếp tục và cho phép thay đổi tối ưu hóa." +Nhấn nút tiếp tục và cho phép thay đổi lựa chọn tối ưu hóa." Tiếp tục @@ -91,13 +91,13 @@ Nhấn nút tiếp tục và cho phép thay đổi tối ưu hóa." Cài đặt khác Video Khôi phục trình đơn cài đặt cũ - Các trình đơn cài đặt cũ được hiện - Các trình đơn cài đặt cũ không được hiện + Các trình đơn cài đặt cũ được hiển thị + Các trình đơn cài đặt cũ không được hiển thị Tắt phát nền cho Shorts - Chạy nền cho Shorts được tắt - Chạy nền cho Shorts được bật + Phát nền cho Shorts đã tắt + Phát nền cho Shorts được bật Gỡ lỗi @@ -112,146 +112,146 @@ Nhấn nút tiếp tục và cho phép thay đổi tối ưu hóa." Nhật ký gỡ lỗi bao gồm truy vết stack Nhật ký gỡ lỗi không bao gồm truy vết stack Hiện thông báo nổi về lỗi ReVanced - Thông báo nổi được hiện nếu xảy ra lỗi - Thông báo nổi không được hiện nếu xảy ra lỗi + Thông báo nổi được hiển thị nếu xảy ra lỗi + Thông báo nổi không được hiển thị nếu xảy ra lỗi "Tắt thông báo lỗi sẽ ẩn tất cả thông báo lỗi của ReVanced. Bạn sẽ không được thông báo về bất kỳ sự kiện bất ngờ nào." Ẩn các thẻ album - Các thẻ album được ẩn - Các thẻ album được hiện + Các thẻ album bị ẩn + Các thẻ album được hiển thị Ẩn hộp chiến dịch gây quỹ - Hộp chiến dịch gây quỹ được ẩn - Hộp chiến dịch gây quỹ được hiện + Hộp chiến dịch gây quỹ bị ẩn + Hộp chiến dịch gây quỹ được hiển thị Ẩn nút micrô nổi - Nút micrô được ẩn - Nút micrô được hiện + Nút micrô bị ẩn + Nút micrô được hiển thị Ẩn hình mờ của kênh - Hình mờ được ẩn - Hình mờ được hiện + Hình mờ bị ẩn + Hình mờ được hiển thị Ẩn các kệ ngang - "Kệ bị ẩn chẳng hạn như: + "Kệ bị ẩn, chẳng hạn như: • Tin tức nóng • Tiếp tục xem • Khám phá thêm kênh • Mua sắm • Xem lại" - Kệ ngang được hiện + Kệ ngang được hiển thị Ẩn nút Tham gia - Nút được ẩn - Nút được hiện + Nút bị ẩn + Nút được hiển thị Ẩn kệ \'Dành cho bạn\' Kệ trên trang kênh bị ẩn - Kệ trên trang kênh được hiện + Kệ trên trang kênh được hiển thị - Ẩn nút Thông báo cho tôi - Nút được ẩn - Nút được hiện + Ẩn nút \'Thông báo cho tôi\' + Nút bị ẩn + Nút được hiển thị - Ẩn nhãn \"Mọi người cũng đã xem\" - Nhãn được ẩn - Nhãn được hiện + Ẩn nhãn \'Mọi người cũng đã xem\' + Nhãn bị ẩn + Nhãn được hiển thị Ẩn nút \'Hiện thêm\' - Nút được ẩn - Nút được hiện + Nút bị ẩn + Nút được hiển thị Ẩn phản ứng theo thời gian - Phản ứng theo thời gian được ẩn - Phản ứng theo thời gian được hiện + Phản ứng theo thời gian bị ẩn + Phản ứng theo thời gian được hiển thị Ẩn nguyên tắc của kênh - Nguyên tắc của kênh được ẩn - Nguyên tắc của kênh được hiện + Nguyên tắc của kênh bị ẩn + Nguyên tắc của kênh được hiển thị Ẩn kệ danh mục được đề xuất - Kệ danh mục được đề xuất được ẩn - Kệ danh mục được đề xuất được hiện + Kệ danh mục được đề xuất bị ẩn + Kệ danh mục được đề xuất được hiển thị Ẩn thẻ có thể mở rộng bên dưới video Thẻ có thể mở rộng bị ẩn - Thẻ có thể mở rộng được hiện + Thẻ có thể mở rộng được hiển thị Ẩn bài đăng cộng đồng - Bài đăng cộng đồng được ẩn - Bài đăng cộng đồng được hiện + Bài đăng cộng đồng bị ẩn + Bài đăng cộng đồng được hiển thị Ẩn biểu ngữ vắn tắt - Biểu ngữ vắn tắt được ẩn - Biểu ngữ vắn tắt được hiện + Biểu ngữ vắn tắt bị ẩn + Biểu ngữ vắn tắt được hiển thị Ẩn phần phim - Phần phim được ẩn - Phần phim được hiện + Phần phim bị ẩn + Phần phim được hiển thị Ẩn khảo sát ở bảng tin - Khảo sát ở bảng tin được ẩn - Khảo sát ở bảng tin được hiện + Khảo sát ở bảng tin bị ẩn + Khảo sát ở bảng tin được hiển thị Ẩn nguyên tắc cộng đồng - Nguyên tắc cộng đồng được ẩn + Nguyên tắc cộng đồng bị ẩn Nguyên tắc cộng đồng được hiện Ẩn nguyên tắc cộng đồng cho người đăng ký - Nguyên tắc cộng đồng cho người đăng ký được ẩn - Nguyên tắc cộng đồng dành cho người đăng ký được hiện + Nguyên tắc cộng đồng cho người đăng ký bị ẩn + Nguyên tắc cộng đồng dành cho người đăng ký được hiển thị Ẩn kệ hội viên kênh - Kệ hội viên kênh được ẩn - Kệ hội viên kênh được hiện + Kệ hội viên kênh bị ẩn + Kệ hội viên kênh được hiển thị Ẩn hộp khẩn cấp - Hộp khẩn cấp được được ẩn - Hộp khẩn cấp được hiện + Hộp khẩn cấp được bị ẩn + Hộp khẩn cấp được hiển thị Ẩn bảng thông tin - Bảng thông tin được ẩn - Bảng thông tin được hiện + Bảng thông tin bị ẩn + Bảng thông tin được hiển thị Ẩn bảng thông tin y tế - Bảng thông tin y tế được ẩn - Bảng thông tin y tế được hiện + Bảng thông tin y tế bị ẩn + Bảng thông tin y tế được hiển thị Ẩn nút kênh - Nút kênh được ẩn - Nút kênh được hiện - Ẩn phần phát được - Phần phát được ẩn - Phần phát được được hiện + Nút kênh bị ẩn + Nút kênh được hiển thị + Ẩn Playables + Playables bị ẩn + Playables được hiển thị Ẩn các hành động nhanh khi ở toàn màn hình - Hành động nhanh được ẩn - Hành động nhanh được hiện + Hành động nhanh bị ẩn + Hành động nhanh được hiển thị Ẩn các video liên quan trong hành động nhanh - Các video liên quan được ẩn - Các video liên quan được hiện + Các video liên quan bị ẩn + Các video liên quan được hiển thị Ẩn kệ hình ảnh từ kết quả tìm kiếm - Kệ hình ảnh được ẩn - Kệ hình ảnh được hiện + Kệ hình ảnh bị ẩn + Kệ hình ảnh được hiển thị Ẩn bài đăng mới nhất - Bài đăng mới nhất được ẩn - Bài đăng mới nhất được hiện + Bài đăng mới nhất bị ẩn + Bài đăng mới nhất được hiển thị Ẩn danh sách phát tổng hợp - Danh sách phát tổng hợp được ẩn - Danh sách phát tổng hợp được hiện + Danh sách phát tổng hợp bị ẩn + Danh sách phát tổng hợp được hiển thị Ẩn thẻ nghệ sĩ - Thẻ nghệ sĩ được ẩn - Thẻ nghệ sĩ được hiện - Ẩn \'Tóm tắt video do AI tạo\' - Phần tóm tắt video được ẩn - Phần tóm tắt video được hiện + Thẻ nghệ sĩ bị ẩn + Thẻ nghệ sĩ được hiển thị + Ẩn \'Bản tóm tắt video do AI tạo\' + Phần tóm tắt video bị ẩn + Phần tóm tắt video được hiển thị Ẩn Thuộc tính Phần Địa điểm nổi bật, Trò chơi, Âm nhạc và Người được đề cập bị ẩn - Phần Địa điểm nổi bật, Trò chơi, Âm nhạc và Người được đề cập được hiện + Phần Địa điểm nổi bật, Trò chơi, Âm nhạc và Người được đề cập được hiển thị Ẩn Chương - Phần chương được ẩn - Phần chương được hiện - Ẩn \'Nội dung này được tạo như thế nào\' - Phần Nội dung này được tạo như thế nào được ẩn - Phần Nội dung này được tạo như thế nào được hiện + Phần chương bị ẩn + Phần chương được hiển thị + Ẩn \'Cách nội dung này được tạo ra\' + Phần cách nội dung được tạo ra bị ẩn + Phần cách nội dung được tạo ra được hiển thị Ẩn \'Khám phá podcast\' - Phần Khám phá podcast được ẩn - Phần Khám phá podcast được hiện + Phần Khám phá podcast bị ẩn + Phần Khám phá podcast được hiển thị Ẩn thẻ Thông tin - Phần thẻ thông tin được ẩn + Phần thẻ thông tin bị ẩn Phần thẻ thông tin được hiện Ẩn \'Khái niệm chính\' - Phần Khái niệm chính được ẩn - Phần Khái niệm chính được hiện + Phần Khái niệm chính bị ẩn + Phần Khái niệm chính được hiển thị Ẩn Bản chép lời - Phần bản chép lời được ẩn - Phần bản chép lời được hiện + Phần bản chép lời bị ẩn + Phần bản chép lời được hiển thị Mô tả video Ẩn hoặc hiện các thành phần mô tả video Thanh bộ lọc @@ -260,46 +260,46 @@ Bạn sẽ không được thông báo về bất kỳ sự kiện bất ngờ n Đã ẩn trong bảng tin Đã hiện trong bảng tin Ẩn trong kết quả tìm kiếm - Bị ẩn trong kết quả tìm kiếm - Được hiện trong kết quả tìm kiếm + Đã ẩn trong kết quả tìm kiếm + Đã hiện trong kết quả tìm kiếm Ẩn trong video liên quan Đã ẩn trong video liên quan Đã hiện trong video liên quan Bình luận Ẩn hoặc hiện các thành phần bình luận Ẩn Tóm tắt Trò chuyện AI - Tóm tắt trò chuyện được ẩn - Tóm tắt trò chuyện được hiện + Tóm tắt trò chuyện bị ẩn + Tóm tắt trò chuyện được hiển thị Ẩn tóm tắt Bình luận AI - Tóm tắt bình luận được ẩn - Tóm tắt bình luận được hiện - Ẩn tiêu đề \'Bình luận bởi hội viên\' - Tiêu đề Bình luận bởi hội viên được ẩn - Tiêu đề Bình luận bởi hội viên được hiện + Tóm tắt bình luận bị ẩn + Tóm tắt bình luận được hiển thị + Ẩn tiêu đề \'Bình luận của hội viên\' + Tiêu đề bình luận của hội viên bị ẩn + Tiêu đề bình luận của hội viên được hiển thị Ẩn phần bình luận - Phần Bình luận được ẩn - Phần Bình luận được hiện + Phần Bình luận bị ẩn + Phần Bình luận được hiển thị Ẩn nút \'Tạo video ngắn\' - Nút Tạo video ngắn được ẩn - Nút Tạo video ngắn được hiện + Nút Tạo video ngắn bị ẩn + Nút Tạo video ngắn được hiển thị Ẩn nút biểu tượng cảm xúc và dấu thời gian - Nút biểu tượng cảm xúc và dấu thời gian được ẩn - Nút biểu tượng cảm xúc và dấu thời gian được hiện + Nút biểu tượng cảm xúc và dấu thời gian bị ẩn + Nút biểu tượng cảm xúc và dấu thời gian được hiển thị Ẩn xem trước bình luận - Xem trước bình luận được ẩn - Xem trước bình luận được hiện + Xem trước bình luận bị ẩn + Xem trước bình luận được hiển thị Ẩn nút Cảm ơn - Nút cảm ơn được ẩn - Nút cảm ơn được hiện + Nút cảm ơn bị ẩn + Nút cảm ơn được hiển thị Ẩn YouTube Doodles - Thanh tìm kiếm Doodles được ẩn - Thanh tìm kiếm Doodles được hiện - "YouTube Doodles được hiện vài ngày mỗi năm. + Thanh tìm kiếm Doodles bị ẩn + Thanh tìm kiếm Doodles được hiển thị + "YouTube Doodles chỉ xuất hiện vào một số ngày nhất định trong năm. -Nếu hiện đang hiển thị Doodle trong khu vực của bạn và cài đặt ẩn này được bật, thì thanh lọc bên dưới thanh tìm kiếm cũng sẽ bị ẩn." +Nếu cài đặt này được bật và Doodle đang hiển thị tại khu vực của bạn, thì thanh bộ lọc bên dưới thanh tìm kiếm cũng sẽ bị ẩn." Bộ lọc tùy chỉnh - Ẩn các thành phần dùng bộ lọc tùy chỉnh + Ẩn các thành phần bằng bộ lọc tùy chỉnh Bật bộ lọc tùy chỉnh Bộ lọc tùy chỉnh đã bật Bộ lọc tuỳ chỉnh đã tắt @@ -308,10 +308,10 @@ Nếu hiện đang hiển thị Doodle trong khu vực của bạn và cài đ Danh sách các chuỗi dựng đường dẫn thành phần để lọc được ngăn cách bởi dòng mới Bộ lọc tuỳ chỉnh không hợp lệ: %s Ẩn nội dung từ khóa - Ẩn video trong tìm kiếm và bảng tin dùng bộ lọc từ khóa - Ẩn video trang chính bằng từ khóa - Video ở thẻ trang chính đã được lọc bằng từ khóa - Video ở thẻ trang chính không được lọc bằng từ khóa + Ẩn video trong tìm kiếm và bảng tin bằng bộ lọc từ khóa + Ẩn video trang chủ bằng từ khóa + Video ở thẻ trang chủ đã được lọc bằng từ khóa + Video ở thẻ trang chủ không được lọc bằng từ khóa Ẩn kết quả tìm kiếm bằng từ khóa Kết quả tìm kiếm đã được lọc bằng từ khóa Kết quả tìm kiếm không được lọc bằng từ khóa @@ -321,9 +321,9 @@ Nếu hiện đang hiển thị Doodle trong khu vực của bạn và cài đ Từ khóa để ẩn - "Từ khóa và cụm từ cần ẩn, cách nhau bằng dòng mới + "Từ và cụm từ khóa để ẩn, cách nhau bằng dòng mới -Từ khóa có thể là tên kênh hoặc bất kỳ văn bản nào hiện trong tiêu đề video +Từ khóa có thể là tên kênh hoặc bất kỳ văn bản nào hiển thị trong tiêu đề video Từ có chữ in hoa ở giữa phải được nhập cùng với chữ viết hoa (ví dụ: iPhone, TikTok, LeBlanc)" Giới thiệu về bộ lọc từ khóa @@ -332,7 +332,7 @@ Từ có chữ in hoa ở giữa phải được nhập cùng với chữ viết Hạn chế • Video ngắn không thể bị ẩn theo tên kênh • Một số thành phần giao diện người dùng có thể không bị ẩn -• Tìm kiếm từ khóa có thể không hiện kết quả" +• Tìm kiếm từ khóa có thể không hiển thị kết quả" Khớp toàn bộ từ Việc đặt từ/cụm từ cần lọc trong dấu ngoặc kép sẽ ngăn chặn các kết quả chỉ trùng một phần với tiêu đề video và tên kênh<br><br>Ví dụ,<br><b>\"ai\"</b> sẽ ẩn video: <b>AI hoạt động ra sao?</b><br>nhưng sẽ không ẩn: <b>Hai lai nghĩa là gì?</b> @@ -434,7 +434,7 @@ Tính năng này chỉ khả dụng cho các thiết bị cũ hơn" Bật nhấn để tua Nhấn để tua được bật - Nhấn để tua được tắt + Nhấn để tua bị tắt Bật cử chỉ độ sáng @@ -448,8 +448,8 @@ Tính năng này chỉ khả dụng cho các thiết bị cũ hơn" Điều chỉnh âm lượng bằng cách vuốt dọc ở bên phải màn hình" Vuốt âm lượng được tắt Bật cử chỉ nhấn-để-vuốt - Nhấn-để-vuốt được bật - Nhấn-để-vuốt được tắt + Nhấn-để-vuốt đã bật + Nhấn-để-vuốt đã tắt Bật phản hồi xúc giác Phản hồi xúc giác đã bật Phản hồi xúc giác đã tắt @@ -459,29 +459,38 @@ Tính năng này chỉ khả dụng cho các thiết bị cũ hơn" Bật cử chỉ độ sáng tự động Vuốt xuống đến giá trị thấp nhất của cử chỉ độ sáng bật độ sáng tự động Vuốt xuống đến giá trị thấp nhất không bật độ sáng tự động + Tự động Thời gian chờ lớp phủ vuốt Số mili-giây mà lớp phủ hiển thị Độ mờ nền phủ vuốt Giá trị độ mờ từ 0-100 Độ mờ vuốt phải nằm trong khoảng từ 0-100 + Màu thanh tiến trình lớp phủ vuốt + Màu của thanh tiến trình cho các điều khiển âm lượng và độ sáng + Màu thanh tiến trình không hợp lệ + Kích thước văn bản lớp phủ vuốt + Kích thước văn bản cho lớp phủ vuốt từ 1-30 + Kích thước văn bản phải nằm trong khoảng 1-30 Độ rộng ngưỡng vuốt Độ rộng của ngưỡng vuốt để thực hiện cử chỉ vuốt Độ nhạy vuốt âm lượng Mức âm lượng thay đổi trên mỗi lần vuốt - Hiện lớp phủ hình tròn - Lớp phủ tròn được hiện - Lớp phủ ngang được hiện - Bật kiểu tối giản - Lớp phủ tối giản được bật - Lớp phủ tối giản được tắt + Kiểu lớp phủ vuốt + Lớp phủ ngang + Lớp phủ ngang (tối giản - trên cùng) + Lớp phủ ngang (tối giản - chính giữa) + Lớp phủ hình tròn + Lớp phủ tròn (tối giản) + Lớp phủ dọc + Lớp phủ dọc (tối giản) Bật vuốt để thay đổi video Vuốt trong chế độ toàn màn hình sẽ chuyển sang video tiếp theo/trước Vuốt trong chế độ toàn màn hình sẽ không chuyển sang video tiếp theo/trước - Tắt phụ đề tự động - Phụ đề tự động đã tắt - Phụ đề tự động đã bật + Tắt phụ đề tự động + Phụ đề tự động đã tắt + Phụ đề tự động đã bật Các nút hành động @@ -513,6 +522,11 @@ Tính năng này chỉ khả dụng cho các thiết bị cũ hơn" Ẩn Cảm ơn Nút cảm ơn được ẩn Nút cảm ơn được hiện + + Ẩn Hỏi + Nút Hỏi đã ẩn + Nút Hỏi đang hiện Ẩn Tạo đoạn video Nút tạo đoạn video được ẩn @@ -615,9 +629,9 @@ Nếu việc thay đổi cài đặt này không có hiệu lực, hãy thử ch Nút bản âm thanh được ẩn Nút bản âm thanh được hiện - "Menu theo dõi âm thanh bị ẩn + "Trình đơn bản âm thanh bị ẩn -Để hiển thị menu Theo dõi âm thanh, hãy thay đổi 'Giả mạo luồng video' thành iOS TV" +Để hiển thị Trình đơn bản âm thanh, hãy thay đổi 'Giả mạo luồng phát video trực tuyến' thành iOS TV" Ẩn Xem trong thực tế ảo Trình đơn xem trong thực tế ảo được ẩn @@ -647,7 +661,7 @@ Nếu việc thay đổi cài đặt này không có hiệu lực, hãy thử ch Thẻ kết thúc màn hình được hiện - Tắt chế độ Ambient khi toàn màn hình + Tắt chế độ môi trường khi toàn màn hình Chế độ môi trường được tắt Chế độ môi trường được bật @@ -832,8 +846,8 @@ Hạn chế: Số lượt không thích có thể không xuất hiện ở chế Nút thích được thiết kế để tối ưu độ rộng Nút thích được thiết kế để tối ưu ngoại hình tốt nhất Hiện lượt thích ước tính - Lượt thích ước tính được hiện - Đã ẩn lượt thích ước tính + Video có lượt thích bị tắt hiển thị số lượt thích ước tính + Không hiển thị lượt thích ước tính Hiện thông báo nổi nếu API không khả dụng Thông báo nổi được hiện nếu Return YouTube Dislike không khả dụng Thông báo nổi không được hiện nếu Return YouTube Dislike không khả dụng @@ -1106,7 +1120,7 @@ Nếu sau này tắt đi, bạn nên xóa dữ liệu ứng dụng để tránh 19.01.34 - Khôi phục biểu tượng điều hướng cũ - Đặt trang bắt đầu + Thay đổi trang bắt đầu Mặc định Tất cả đăng ký Duyệt kênh @@ -1131,6 +1145,11 @@ Nếu sau này tắt đi, bạn nên xóa dữ liệu ứng dụng để tránh Thực tế ảo Xem sau Clip của bạn + Luôn thay đổi trang bắt đầu + "Trang bắt đầu luôn được thay đổi + +Giới hạn: Sử dụng nút quay lại trên thanh công cụ có thể không hoạt động" + Trang bắt đầu chỉ được thay đổi khi khởi động ứng dụng Tắt tiếp tục trình phát Shorts @@ -1183,10 +1202,10 @@ Trình phát nhỏ có thể được kéo đến bất kỳ góc nào của mà Trình phát nhỏ có thể được kéo ra khỏi màn hình sang trái hoặc phải" Cử chỉ kéo ngang được tắt Ẩn các nút lớp phủ - Các nút lớp phủ được ẩn + Các nút lớp phủ bị ẩn Các nút lớp phủ được hiện Ẩn các nút mở rộng và đóng - "Nút được ẩn + "Các nút bị ẩn Vuốt để mở rộng hoặc đóng" Các nút mở rộng và đóng được hiện @@ -1392,18 +1411,18 @@ Phát lại video có thể không hoạt động" AVC có độ phân giải tối đa là 1080p, bộ giải mã âm thanh Opus không khả dụng và phát lại video sẽ sử dụng nhiều dữ liệu internet hơn VP9 hoặc AV1." Tác dụng phụ của việc giả mạo iOS - "• Phim hoặc video có trả phí không thể phát + "• Phim hoặc video có trả phí có thể không phát được • Âm lượng ổn định không khả dụng • Video có thể kết thúc sớm hơn 1 giây" Tác dụng phụ của việc giả mạo Android - "• Trình đơn âm thanh bị thiếu + "• Trình đơn bản âm thanh bị thiếu • Âm lượng ổn định không khả dụng • Tùy chọn âm thanh gốc không khả dụng" • Không có bộ giải mã video AV1 • Video dành cho trẻ em có thể không phát được khi đăng xuất hoặc ở chế độ ẩn danh - Hiện trong Stats for nerds - Loại máy khách được hiện trong Stats for nerds - Máy khách bị ẩn trong Stats for nerds + Hiển thị trong Thống kê chi tiết + Loại máy khách được hiện trong Thống kê chi tiết + Máy khách bị ẩn trong Thống kê chi tiết Ngôn ngữ âm thanh mặc định của VR diff --git a/patches/src/main/resources/addresources/values-zh-rCN/strings.xml b/patches/src/main/resources/addresources/values-zh-rCN/strings.xml index 36bd238b7..7ab529d24 100644 --- a/patches/src/main/resources/addresources/values-zh-rCN/strings.xml +++ b/patches/src/main/resources/addresources/values-zh-rCN/strings.xml @@ -459,29 +459,38 @@ Second \"item\" text" 启用自动亮度手势 滑动到最低亮度手势将启用自动亮度 滑动到最低亮度手势不启用自动亮度 + 自动 滑动提示层显示时长 滑动提示的显示时长(毫秒) 滑动提示层背景的不透明度 不透明度值介于 0-100 之间 滑动不透明度必须介于 0-100 之间 + 滑动提示层进度条颜色 + 音量和亮度控件的进度条颜色 + 无效的进度条颜色 + 滑动提示层文字大小 + 滑动提示层的文字大小,范围为 1-30 + 文字大小必须在 1-30 之间 滑动幅度阈值 防误触的滑动幅度阈值 音量滑动灵敏度 每次滑动音量变化的幅度 - 圆形的叠加层样式 - 提示层显示为圆形样式 - 提示层显示为水平样式 - 极简提示样式 - 极简样式已启用 - 极简样式已禁用 + 滑动提示层样式 + 水平提示层 + 水平提示层 (极简 - 顶部) + 水平提示层 (极简 - 中心) + 圆形提示层 + 圆形提示层 (极简) + 垂直提示层 + 垂直提示层 (极简) 启用滑动切换视频 在全屏模式下滑动将切换到下一个/上一个视频 在全屏模式下滑动将不会切换到下一个/上一个视频 - 禁用自动字幕 - 自动字幕已禁用 - 自动字幕已启用 + 禁用自动字幕 + 自动字幕已禁用 + 自动字幕已启用 操作按钮 @@ -513,6 +522,11 @@ Second \"item\" text" 隐藏「感谢」按钮 感谢按钮已隐藏 感谢按钮已显示 + + 隐藏“提问” + “提问”按钮已隐藏 + “提问”按钮已显示 隐藏「剪辑」按钮 剪辑按钮已隐藏 @@ -832,8 +846,8 @@ Second \"item\" text" 点赞按钮设置为最小宽度 点赞按钮设置为最佳外观 显示估计的点赞数 - 已显示估计的点赞数 - 已隐藏估计的点赞数 + 已禁用点赞的视频会显示估计的点赞数 + 不显示估计的点赞数 如果 API 不可用,则显示提示 如果 Return YouTube Dislike 不可用,则显示提示 如果 Return YouTube Dislike 不可用,则不显示提示 @@ -885,8 +899,8 @@ Second \"item\" text" 显示片段投票按钮 不显示片段投票按钮 使用方形控件 - 使用方形样式的按钮和控件 - 使用圆角样式的按钮和控件 + 按钮和控件已使用方形样式 + 按钮和控件已使用圆角样式 使用紧凑的跳过按钮 跳过按钮样式为最小宽度 @@ -1111,7 +1125,7 @@ Second \"item\" text" 19.01.34 - 还原旧的导航图标 - 设置起始页 + 更改起始页 默认 所有订阅频道 浏览频道 @@ -1136,6 +1150,11 @@ Second \"item\" text" 虚拟实境 稍后观看 你的剪辑 + 始终更改起始页 + "起始页始终已更改 + +限制:工具栏上的后退按钮可能无法使用" + 起始页仅在应用启动时更改 禁用恢复 Shorts 播放器 diff --git a/patches/src/main/resources/addresources/values-zh-rTW/strings.xml b/patches/src/main/resources/addresources/values-zh-rTW/strings.xml index c4b08d8d6..32994669f 100644 --- a/patches/src/main/resources/addresources/values-zh-rTW/strings.xml +++ b/patches/src/main/resources/addresources/values-zh-rTW/strings.xml @@ -459,6 +459,7 @@ Second \"item\" text" 啟用自動亮度手勢 亮度手勢滑到最底時,啟用自動亮度 亮度手勢滑到最底時,不啟用自動亮度 + 自動 滑動覆蓋顯示時間 覆蓋顯示的毫秒數 滑動覆蓋背景透明度 @@ -466,20 +467,16 @@ Second \"item\" text" 滑動透明度必須介於 0 到 100 之間 滑動幅度臨界點 滑動幅度臨界點 - 顯示圓形覆蓋 - 已顯示圓形覆蓋 - 已顯示水平覆蓋 - 啟用極簡風格 - 已啟用極簡覆蓋樣式 - 已停用極簡覆蓋樣式 + 音量滑動靈敏度 + 滑動一下音量調整的大小 啟用滑動切換影片 在全螢幕模式下滑動將切換到下一部/上一部影片 在全螢幕模式下滑動將不會切換到下一部/上一部影片 - 停用自動產生的字幕 - 已停用自動產生的字幕 - 已啟用自動產生的字幕 + 停用自動產生的字幕 + 已停用自動產生的字幕 + 已啟用自動產生的字幕 動作按鈕 @@ -511,6 +508,8 @@ Second \"item\" text" 隱藏感謝 已隱藏「感謝」按鈕 已顯示「感謝」按鈕 + 隱藏剪輯片段 已隱藏「剪輯片段」按鈕 @@ -628,7 +627,7 @@ Second \"item\" text" 隱藏「上一部」和「下一部」按鈕 已隱藏按鈕 已顯示按鈕 - 隱藏「投影」按鈕 + 隱藏「投放」按鈕 已隱藏「投放」按鈕 已顯示「投放」按鈕 @@ -830,8 +829,8 @@ Second \"item\" text" 「喜歡」按鈕樣式設為最小寬度 「喜歡」按鈕樣式設為最佳外觀 顯示預估喜歡人數 - 已顯示預估喜歡人數 - 已隱藏預估喜歡人數 + 已停用喜歡的影片會顯示預估的喜歡人數 + 未顯示預估喜歡人數 若 API 無法使用,顯示提示 如果 Return YouTube Dislike 無法使用,則顯示提示訊息 如果 Return YouTube Dislike 無法使用,則不會顯示提示訊息 @@ -1106,7 +1105,7 @@ Second \"item\" text" 19.01.34 - 還原舊版導覽圖示 - 設定起始頁面 + 變更起始頁面 預設 所有訂閱內容 瀏覽頻道 @@ -1131,6 +1130,8 @@ Second \"item\" text" 虛擬實境 稍後觀看 你的剪輯 + 一律變更起始頁面 + 起始頁面僅在應用程式啟動時變更 停用 Shorts 播放器接續播放功能 diff --git a/patches/src/main/resources/addresources/values-zu-rZA/strings.xml b/patches/src/main/resources/addresources/values-zu-rZA/strings.xml index c0d8f55c8..bc8bec158 100644 --- a/patches/src/main/resources/addresources/values-zu-rZA/strings.xml +++ b/patches/src/main/resources/addresources/values-zu-rZA/strings.xml @@ -84,6 +84,8 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values/arrays.xml b/patches/src/main/resources/addresources/values/arrays.xml index 1e11eb9a1..7889a05dd 100644 --- a/patches/src/main/resources/addresources/values/arrays.xml +++ b/patches/src/main/resources/addresources/values/arrays.xml @@ -135,6 +135,27 @@ IOS_UNPLUGGED + + + @string/revanced_swipe_overlay_style_entry_1 + @string/revanced_swipe_overlay_style_entry_2 + @string/revanced_swipe_overlay_style_entry_3 + @string/revanced_swipe_overlay_style_entry_4 + @string/revanced_swipe_overlay_style_entry_5 + @string/revanced_swipe_overlay_style_entry_6 + @string/revanced_swipe_overlay_style_entry_7 + + + + HORIZONTAL + HORIZONTAL_MINIMAL_TOP + HORIZONTAL_MINIMAL_CENTER + CIRCULAR + CIRCULAR_MINIMAL + VERTICAL + VERTICAL_MINIMAL + + @string/revanced_spoof_app_version_target_entry_1 diff --git a/patches/src/main/resources/addresources/values/strings.xml b/patches/src/main/resources/addresources/values/strings.xml index af43602b4..f99437d31 100644 --- a/patches/src/main/resources/addresources/values/strings.xml +++ b/patches/src/main/resources/addresources/values/strings.xml @@ -520,29 +520,38 @@ Adjust volume by swiping vertically on the right side of the screen" Enable auto-brightness gesture Swiping down to the lowest value of the brightness gesture enable auto-brightness Swiping down to the lowest value does not enable auto-brightness + Auto Swipe overlay timeout The amount of milliseconds the overlay is visible Swipe overlay background opacity Opacity value between 0-100 Swipe opacity must be between 0-100 + Swipe overlay progress bar color + The color of the progress bar for volume and brightness controls + Invalid progress bar color + Swipe overlay text size + The text size for swipe overlay between 1-30 + The text size must be between 1-30 Swipe magnitude threshold The amount of threshold for swipe to occur Volume swipe sensitivity How much the volume changes per swipe - Show circular overlay - Circular overlay is shown - Horizontal overlay is shown - Enable minimal style - Minimal overlay style is enabled - Minimal overlay style is disabled + Swipe overlay style + Horizontal overlay + Horizontal overlay (minimal - top) + Horizontal overlay (minimal - center) + Circular overlay + Circular overlay (minimal) + Vertical overlay + Vertical overlay (minimal) Enable swipe to change videos Swiping in fullscreen mode will change to the next/previous video Swiping in fullscreen mode will not change to the next/previous video - Disable auto captions - Auto captions are disabled - Auto captions are enabled + Disable auto captions + Auto captions are disabled + Auto captions are enabled Action buttons @@ -574,6 +583,11 @@ Adjust volume by swiping vertically on the right side of the screen" Hide Thanks Thanks button is hidden Thanks button is shown + + Hide Ask + Ask button is hidden + Ask button is shown Hide Clip Clip button is hidden @@ -895,8 +909,8 @@ Limitation: Dislikes may not appear in incognito mode" Like button styled for minimum width Like button styled for best appearance Show estimated likes - Estimated likes are shown - Estimated likes are hidden + Videos with disabled likes show an estimated likes count + Estimated likes are not shown Show a toast if API is not available Toast is shown if Return YouTube Dislike is not available Toast is not shown if Return YouTube Dislike is not available @@ -1173,7 +1187,7 @@ If later turned off, it is recommended to clear the app data to prevent UI bugs. 19.01.34 - Restore old navigation icons - Set start page + Change start page Default All subscriptions Browse channels @@ -1199,6 +1213,11 @@ If later turned off, it is recommended to clear the app data to prevent UI bugs. Virtual Reality Watch later Your clips + Always change start page + "Start page is always changed + +Limitation: Using the back button on the toolbar may not work" + Start page is changed only on app startup Disable resuming Shorts player