mirror of
https://github.com/revanced/revanced-patches.git
synced 2025-12-17 06:32:26 +01:00
Compare commits
13 Commits
v5.5.1-dev
...
v5.6.0-dev
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
19140e5918 | ||
|
|
1dde485013 | ||
|
|
5efcdd31c8 | ||
|
|
e6529837cb | ||
|
|
fe07033444 | ||
|
|
246333f3dc | ||
|
|
d82b02e4f5 | ||
|
|
44995a9f15 | ||
|
|
c87c788a26 | ||
|
|
4ef30618d1 | ||
|
|
b23e6c39fc | ||
|
|
de26766543 | ||
|
|
9168b5eaaf |
20
.github/workflows/pull_strings.yml
vendored
20
.github/workflows/pull_strings.yml
vendored
@@ -1,6 +1,8 @@
|
|||||||
name: Pull strings
|
name: Pull strings
|
||||||
|
|
||||||
on:
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: "0 */8 * * *"
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
@@ -21,16 +23,20 @@ jobs:
|
|||||||
uses: crowdin/github-action@v2
|
uses: crowdin/github-action@v2
|
||||||
with:
|
with:
|
||||||
config: crowdin.yml
|
config: crowdin.yml
|
||||||
|
upload_sources: false
|
||||||
download_translations: true
|
download_translations: true
|
||||||
localization_branch_name: feat/translations
|
localization_branch_name: feat/translations
|
||||||
create_pull_request: true
|
create_pull_request: false
|
||||||
pull_request_title: "chore: Sync translations"
|
|
||||||
pull_request_body: "Sync translations from [crowdin.com/project/revanced](https://crowdin.com/project/revanced)"
|
|
||||||
pull_request_base_branch_name: "dev"
|
|
||||||
commit_message: "chore: Sync translations"
|
|
||||||
github_user_name: revanced-bot
|
|
||||||
github_user_email: github@revanced.app
|
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
|
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
|
||||||
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
|
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
|
||||||
|
|
||||||
|
- name: Open pull request
|
||||||
|
if: github.event_name == 'workflow_dispatch'
|
||||||
|
uses: repo-sync/pull-request@v2
|
||||||
|
with:
|
||||||
|
source_branch: feat/translations
|
||||||
|
destination_branch: dev
|
||||||
|
pr_title: "chore: Sync translations"
|
||||||
|
pr_body: "Sync translations from [crowdin.com/project/revanced](https://crowdin.com/project/revanced)"
|
||||||
|
|||||||
29
CHANGELOG.md
29
CHANGELOG.md
@@ -1,3 +1,32 @@
|
|||||||
|
# [5.6.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.5.2-dev.2...v5.6.0-dev.1) (2024-12-19)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* **YouTube:** Add `Open Shorts in regular player` patch ([#4153](https://github.com/ReVanced/revanced-patches/issues/4153)) ([c7c5e5b](https://github.com/ReVanced/revanced-patches/commit/c7c5e5b2b9cf63d8225bb6bd5e735ddf945b6c29))
|
||||||
|
|
||||||
|
## [5.5.2-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.5.2-dev.1...v5.5.2-dev.2) (2024-12-17)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **YouTube - Hide layout components:** Hide new kind of community post ([#4155](https://github.com/ReVanced/revanced-patches/issues/4155)) ([08f68cb](https://github.com/ReVanced/revanced-patches/commit/08f68cb5d33f2cfe656d2f93d159c69981f31418))
|
||||||
|
|
||||||
|
## [5.5.2-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.5.1...v5.5.2-dev.1) (2024-12-17)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **YouTube - Miniplayer:** Use estimated maximum on screen size for devices with low density screens ([#4150](https://github.com/ReVanced/revanced-patches/issues/4150)) ([2694158](https://github.com/ReVanced/revanced-patches/commit/2694158c3c9935ede21c96832533222f850068df))
|
||||||
|
* **YouTube - SponsorBlock:** Show create new segment error messages using a dialog ([#4148](https://github.com/ReVanced/revanced-patches/issues/4148)) ([5870906](https://github.com/ReVanced/revanced-patches/commit/587090636dfff0b358b15026cf7d47c65a4296dc))
|
||||||
|
|
||||||
|
## [5.5.1](https://github.com/ReVanced/revanced-patches/compare/v5.5.0...v5.5.1) (2024-12-16)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **YouTube:** Fix string translations ([52e04d3](https://github.com/ReVanced/revanced-patches/commit/52e04d340c1a85f3d683c67a15ae96529432d5fe))
|
||||||
|
|
||||||
## [5.5.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.5.0...v5.5.1-dev.1) (2024-12-16)
|
## [5.5.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.5.0...v5.5.1-dev.1) (2024-12-16)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -82,7 +82,13 @@ public final class MiniplayerPatch {
|
|||||||
final int WIDTH_DIP_MIN = 170; // Seems to be the smallest that works.
|
final int WIDTH_DIP_MIN = 170; // Seems to be the smallest that works.
|
||||||
final int HORIZONTAL_PADDING_DIP = 15; // Estimated padding.
|
final int HORIZONTAL_PADDING_DIP = 15; // Estimated padding.
|
||||||
// Round down to the nearest 5 pixels, to keep any error toasts easier to read.
|
// Round down to the nearest 5 pixels, to keep any error toasts easier to read.
|
||||||
final int WIDTH_DIP_MAX = 5 * ((deviceDipWidth - HORIZONTAL_PADDING_DIP) / 5);
|
final int estimatedWidthDipMax = 5 * ((deviceDipWidth - HORIZONTAL_PADDING_DIP) / 5);
|
||||||
|
// On some ultra low end devices the pixel width and density are the same number,
|
||||||
|
// which causes the estimate to always give a value of 1.
|
||||||
|
// Fix this by using a fixed size of double the min width.
|
||||||
|
final int WIDTH_DIP_MAX = estimatedWidthDipMax <= WIDTH_DIP_MIN
|
||||||
|
? 2 * WIDTH_DIP_MIN
|
||||||
|
: estimatedWidthDipMax;
|
||||||
Logger.printDebug(() -> "Screen dip width: " + deviceDipWidth + " maxWidth: " + WIDTH_DIP_MAX);
|
Logger.printDebug(() -> "Screen dip width: " + deviceDipWidth + " maxWidth: " + WIDTH_DIP_MAX);
|
||||||
|
|
||||||
int dipWidth = Settings.MINIPLAYER_WIDTH_DIP.get();
|
int dipWidth = Settings.MINIPLAYER_WIDTH_DIP.get();
|
||||||
@@ -127,8 +133,10 @@ public final class MiniplayerPatch {
|
|||||||
private static final boolean HIDE_SUBTEXT_ENABLED =
|
private static final boolean HIDE_SUBTEXT_ENABLED =
|
||||||
(CURRENT_TYPE == MODERN_1 || CURRENT_TYPE == MODERN_3) && Settings.MINIPLAYER_HIDE_SUBTEXT.get();
|
(CURRENT_TYPE == MODERN_1 || CURRENT_TYPE == MODERN_3) && Settings.MINIPLAYER_HIDE_SUBTEXT.get();
|
||||||
|
|
||||||
private static final boolean HIDE_REWIND_FORWARD_ENABLED =
|
// 19.25 is last version that has forward/back buttons for phones,
|
||||||
CURRENT_TYPE == MODERN_1 && Settings.MINIPLAYER_HIDE_REWIND_FORWARD.get();
|
// but buttons still show for tablets/foldable devices and they don't work well so always hide.
|
||||||
|
private static final boolean HIDE_REWIND_FORWARD_ENABLED = CURRENT_TYPE == MODERN_1
|
||||||
|
&& (VersionCheckPatch.IS_19_34_OR_GREATER || Settings.MINIPLAYER_HIDE_REWIND_FORWARD.get());
|
||||||
|
|
||||||
private static final boolean MINIPLAYER_ROUNDED_CORNERS_ENABLED =
|
private static final boolean MINIPLAYER_ROUNDED_CORNERS_ENABLED =
|
||||||
Settings.MINIPLAYER_ROUNDED_CORNERS.get();
|
Settings.MINIPLAYER_ROUNDED_CORNERS.get();
|
||||||
@@ -145,6 +153,18 @@ public final class MiniplayerPatch {
|
|||||||
|
|
||||||
private static final int OPACITY_LEVEL;
|
private static final int OPACITY_LEVEL;
|
||||||
|
|
||||||
|
static {
|
||||||
|
int opacity = Settings.MINIPLAYER_OPACITY.get();
|
||||||
|
|
||||||
|
if (opacity < 0 || opacity > 100) {
|
||||||
|
Utils.showToastLong(str("revanced_miniplayer_opacity_invalid_toast"));
|
||||||
|
Settings.MINIPLAYER_OPACITY.resetToDefault();
|
||||||
|
opacity = Settings.MINIPLAYER_OPACITY.defaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
OPACITY_LEVEL = (opacity * 255) / 100;
|
||||||
|
}
|
||||||
|
|
||||||
public static final class MiniplayerHorizontalDragAvailability implements Setting.Availability {
|
public static final class MiniplayerHorizontalDragAvailability implements Setting.Availability {
|
||||||
@Override
|
@Override
|
||||||
public boolean isAvailable() {
|
public boolean isAvailable() {
|
||||||
@@ -163,18 +183,6 @@ public final class MiniplayerPatch {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static {
|
|
||||||
int opacity = Settings.MINIPLAYER_OPACITY.get();
|
|
||||||
|
|
||||||
if (opacity < 0 || opacity > 100) {
|
|
||||||
Utils.showToastLong(str("revanced_miniplayer_opacity_invalid_toast"));
|
|
||||||
Settings.MINIPLAYER_OPACITY.resetToDefault();
|
|
||||||
opacity = Settings.MINIPLAYER_OPACITY.defaultValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
OPACITY_LEVEL = (opacity * 255) / 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Injection point.
|
* Injection point.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -0,0 +1,94 @@
|
|||||||
|
package app.revanced.extension.youtube.patches;
|
||||||
|
|
||||||
|
import static app.revanced.extension.youtube.shared.NavigationBar.NavigationButton;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.net.Uri;
|
||||||
|
|
||||||
|
import java.lang.ref.WeakReference;
|
||||||
|
|
||||||
|
import app.revanced.extension.shared.Logger;
|
||||||
|
import app.revanced.extension.youtube.settings.Settings;
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
public class OpenShortsInRegularPlayerPatch {
|
||||||
|
|
||||||
|
public enum ShortsPlayerType {
|
||||||
|
SHORTS_PLAYER,
|
||||||
|
REGULAR_PLAYER,
|
||||||
|
REGULAR_PLAYER_FULLSCREEN
|
||||||
|
}
|
||||||
|
|
||||||
|
static {
|
||||||
|
if (!VersionCheckPatch.IS_19_46_OR_GREATER
|
||||||
|
&& Settings.SHORTS_PLAYER_TYPE.get() == ShortsPlayerType.REGULAR_PLAYER_FULLSCREEN) {
|
||||||
|
// User imported newer settings to an older app target.
|
||||||
|
Logger.printInfo(() -> "Resetting " + Settings.SHORTS_PLAYER_TYPE);
|
||||||
|
Settings.SHORTS_PLAYER_TYPE.resetToDefault();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static WeakReference<Activity> mainActivityRef = new WeakReference<>(null);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Injection point.
|
||||||
|
*/
|
||||||
|
public static void setMainActivity(Activity activity) {
|
||||||
|
mainActivityRef = new WeakReference<>(activity);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Injection point.
|
||||||
|
*/
|
||||||
|
public static boolean openShort(String videoID) {
|
||||||
|
try {
|
||||||
|
ShortsPlayerType type = Settings.SHORTS_PLAYER_TYPE.get();
|
||||||
|
if (type == ShortsPlayerType.SHORTS_PLAYER) {
|
||||||
|
return false; // Default unpatched behavior.
|
||||||
|
}
|
||||||
|
|
||||||
|
if (videoID.isEmpty()) {
|
||||||
|
// Shorts was opened using launcher app shortcut.
|
||||||
|
//
|
||||||
|
// This check will not detect if the Shorts app shortcut is used
|
||||||
|
// while the app is running in the background (instead the regular player is opened).
|
||||||
|
// To detect that the hooked method map parameter can be checked
|
||||||
|
// if integer key 'com.google.android.apps.youtube.app.endpoint.flags'
|
||||||
|
// has bitmask 16 set.
|
||||||
|
//
|
||||||
|
// This use case seems unlikely if the user has the Shorts
|
||||||
|
// set to open in the regular player, so it's ignored as
|
||||||
|
// checking the map makes the patch more complicated.
|
||||||
|
Logger.printDebug(() -> "Ignoring Short with no videoId");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (NavigationButton.getSelectedNavigationButton() == NavigationButton.SHORTS) {
|
||||||
|
return false; // Always use Shorts player for the Shorts nav button.
|
||||||
|
}
|
||||||
|
|
||||||
|
final boolean forceFullScreen = (type == ShortsPlayerType.REGULAR_PLAYER_FULLSCREEN);
|
||||||
|
OpenVideosFullscreenHookPatch.setOpenNextVideoFullscreen(forceFullScreen);
|
||||||
|
|
||||||
|
// Can use the application context and add intent flags of
|
||||||
|
// FLAG_ACTIVITY_NEW_TASK and FLAG_ACTIVITY_CLEAR_TOP
|
||||||
|
// But the activity context seems to fix random app crashes
|
||||||
|
// if Shorts urls are opened outside the app.
|
||||||
|
var context = mainActivityRef.get();
|
||||||
|
|
||||||
|
Intent videoPlayerIntent = new Intent(
|
||||||
|
Intent.ACTION_VIEW,
|
||||||
|
Uri.parse("https://youtube.com/watch?v=" + videoID)
|
||||||
|
);
|
||||||
|
videoPlayerIntent.setPackage(context.getPackageName());
|
||||||
|
|
||||||
|
context.startActivity(videoPlayerIntent);
|
||||||
|
return true;
|
||||||
|
} catch (Exception ex) {
|
||||||
|
OpenVideosFullscreenHookPatch.setOpenNextVideoFullscreen(null);
|
||||||
|
Logger.printException(() -> "openShort failure", ex);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
package app.revanced.extension.youtube.patches;
|
|
||||||
|
|
||||||
import app.revanced.extension.youtube.settings.Settings;
|
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
|
||||||
public class OpenVideosFullscreen {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Injection point.
|
|
||||||
*/
|
|
||||||
public static boolean openVideoFullscreenPortrait(boolean original) {
|
|
||||||
return Settings.OPEN_VIDEOS_FULLSCREEN_PORTRAIT.get();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
package app.revanced.extension.youtube.patches;
|
||||||
|
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
|
import app.revanced.extension.youtube.settings.Settings;
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
public class OpenVideosFullscreenHookPatch {
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
private static volatile Boolean openNextVideoFullscreen;
|
||||||
|
|
||||||
|
public static void setOpenNextVideoFullscreen(@Nullable Boolean forceFullScreen) {
|
||||||
|
openNextVideoFullscreen = forceFullScreen;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Changed during patching since this class is also
|
||||||
|
* used by {@link OpenVideosFullscreenHookPatch}.
|
||||||
|
*/
|
||||||
|
private static boolean isFullScreenPatchIncluded() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Injection point.
|
||||||
|
*/
|
||||||
|
public static boolean openVideoFullscreenPortrait(boolean original) {
|
||||||
|
Boolean openFullscreen = openNextVideoFullscreen;
|
||||||
|
if (openFullscreen != null) {
|
||||||
|
openNextVideoFullscreen = null;
|
||||||
|
return openFullscreen;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isFullScreenPatchIncluded()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Settings.OPEN_VIDEOS_FULLSCREEN_PORTRAIT.get();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -9,4 +9,5 @@ public class VersionCheckPatch {
|
|||||||
public static final boolean IS_19_26_OR_GREATER = Utils.getAppVersionName().compareTo("19.26.00") >= 0;
|
public static final boolean IS_19_26_OR_GREATER = Utils.getAppVersionName().compareTo("19.26.00") >= 0;
|
||||||
public static final boolean IS_19_29_OR_GREATER = Utils.getAppVersionName().compareTo("19.29.00") >= 0;
|
public static final boolean IS_19_29_OR_GREATER = Utils.getAppVersionName().compareTo("19.29.00") >= 0;
|
||||||
public static final boolean IS_19_34_OR_GREATER = Utils.getAppVersionName().compareTo("19.34.00") >= 0;
|
public static final boolean IS_19_34_OR_GREATER = Utils.getAppVersionName().compareTo("19.34.00") >= 0;
|
||||||
|
public static final boolean IS_19_46_OR_GREATER = Utils.getAppVersionName().compareTo("19.46.00") >= 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -73,13 +73,14 @@ public final class LayoutComponentsFilter extends Filter {
|
|||||||
|
|
||||||
final var communityPosts = new StringFilterGroup(
|
final var communityPosts = new StringFilterGroup(
|
||||||
Settings.HIDE_COMMUNITY_POSTS,
|
Settings.HIDE_COMMUNITY_POSTS,
|
||||||
"post_base_wrapper",
|
"post_base_wrapper", // may be obsolete and no longer needed.
|
||||||
"text_post_root.eml",
|
"text_post_root.eml",
|
||||||
"images_post_root.eml",
|
"images_post_root.eml",
|
||||||
"images_post_slim.eml",
|
"images_post_slim.eml", // may be obsolete and no longer needed.
|
||||||
"images_post_root_slim.eml",
|
"images_post_root_slim.eml",
|
||||||
"text_post_root_slim.eml",
|
"text_post_root_slim.eml",
|
||||||
"post_base_wrapper_slim.eml"
|
"post_base_wrapper_slim.eml",
|
||||||
|
"poll_post_root.eml"
|
||||||
);
|
);
|
||||||
|
|
||||||
final var communityGuidelines = new StringFilterGroup(
|
final var communityGuidelines = new StringFilterGroup(
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerT
|
|||||||
import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerType.MODERN_2;
|
import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerType.MODERN_2;
|
||||||
import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerType.MODERN_3;
|
import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerType.MODERN_3;
|
||||||
import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerType.MODERN_4;
|
import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerType.MODERN_4;
|
||||||
|
import static app.revanced.extension.youtube.patches.OpenShortsInRegularPlayerPatch.ShortsPlayerType;
|
||||||
import static app.revanced.extension.youtube.patches.SeekbarThumbnailsPatch.SeekbarThumbnailsHighQualityAvailability;
|
import static app.revanced.extension.youtube.patches.SeekbarThumbnailsPatch.SeekbarThumbnailsHighQualityAvailability;
|
||||||
import static app.revanced.extension.youtube.patches.VersionCheckPatch.IS_19_17_OR_GREATER;
|
import static app.revanced.extension.youtube.patches.VersionCheckPatch.IS_19_17_OR_GREATER;
|
||||||
import static app.revanced.extension.youtube.sponsorblock.objects.CategoryBehaviour.IGNORE;
|
import static app.revanced.extension.youtube.sponsorblock.objects.CategoryBehaviour.IGNORE;
|
||||||
@@ -149,7 +150,7 @@ public class Settings extends BaseSettings {
|
|||||||
public static final BooleanSetting MINIPLAYER_HORIZONTAL_DRAG = new BooleanSetting("revanced_miniplayer_horizontal_drag", FALSE, true, new MiniplayerHorizontalDragAvailability());
|
public static final BooleanSetting MINIPLAYER_HORIZONTAL_DRAG = new BooleanSetting("revanced_miniplayer_horizontal_drag", FALSE, true, new MiniplayerHorizontalDragAvailability());
|
||||||
public static final BooleanSetting MINIPLAYER_HIDE_EXPAND_CLOSE = new BooleanSetting("revanced_miniplayer_hide_expand_close", FALSE, true, new MiniplayerHideExpandCloseAvailability());
|
public static final BooleanSetting MINIPLAYER_HIDE_EXPAND_CLOSE = new BooleanSetting("revanced_miniplayer_hide_expand_close", FALSE, true, new MiniplayerHideExpandCloseAvailability());
|
||||||
public static final BooleanSetting MINIPLAYER_HIDE_SUBTEXT = new BooleanSetting("revanced_miniplayer_hide_subtext", FALSE, true, MINIPLAYER_TYPE.availability(MODERN_1, MODERN_3));
|
public static final BooleanSetting MINIPLAYER_HIDE_SUBTEXT = new BooleanSetting("revanced_miniplayer_hide_subtext", FALSE, true, MINIPLAYER_TYPE.availability(MODERN_1, MODERN_3));
|
||||||
public static final BooleanSetting MINIPLAYER_HIDE_REWIND_FORWARD = new BooleanSetting("revanced_miniplayer_hide_rewind_forward", FALSE, true, MINIPLAYER_TYPE.availability(MODERN_1));
|
public static final BooleanSetting MINIPLAYER_HIDE_REWIND_FORWARD = new BooleanSetting("revanced_miniplayer_hide_rewind_forward", TRUE, true, MINIPLAYER_TYPE.availability(MODERN_1));
|
||||||
public static final BooleanSetting MINIPLAYER_ROUNDED_CORNERS = new BooleanSetting("revanced_miniplayer_rounded_corners", TRUE, true, MINIPLAYER_ANY_MODERN);
|
public static final BooleanSetting MINIPLAYER_ROUNDED_CORNERS = new BooleanSetting("revanced_miniplayer_rounded_corners", TRUE, true, MINIPLAYER_ANY_MODERN);
|
||||||
public static final IntegerSetting MINIPLAYER_WIDTH_DIP = new IntegerSetting("revanced_miniplayer_width_dip", 192, true, MINIPLAYER_ANY_MODERN);
|
public static final IntegerSetting MINIPLAYER_WIDTH_DIP = new IntegerSetting("revanced_miniplayer_width_dip", 192, true, MINIPLAYER_ANY_MODERN);
|
||||||
public static final IntegerSetting MINIPLAYER_OPACITY = new IntegerSetting("revanced_miniplayer_opacity", 100, true, MINIPLAYER_TYPE.availability(MODERN_1));
|
public static final IntegerSetting MINIPLAYER_OPACITY = new IntegerSetting("revanced_miniplayer_opacity", 100, true, MINIPLAYER_TYPE.availability(MODERN_1));
|
||||||
@@ -224,6 +225,7 @@ public class Settings extends BaseSettings {
|
|||||||
// Shorts
|
// Shorts
|
||||||
public static final BooleanSetting DISABLE_RESUMING_SHORTS_PLAYER = new BooleanSetting("revanced_disable_resuming_shorts_player", FALSE);
|
public static final BooleanSetting DISABLE_RESUMING_SHORTS_PLAYER = new BooleanSetting("revanced_disable_resuming_shorts_player", FALSE);
|
||||||
public static final BooleanSetting DISABLE_SHORTS_BACKGROUND_PLAYBACK = new BooleanSetting("revanced_shorts_disable_background_playback", FALSE);
|
public static final BooleanSetting DISABLE_SHORTS_BACKGROUND_PLAYBACK = new BooleanSetting("revanced_shorts_disable_background_playback", FALSE);
|
||||||
|
public static final EnumSetting<ShortsPlayerType> SHORTS_PLAYER_TYPE = new EnumSetting<>("revanced_shorts_player_type", ShortsPlayerType.SHORTS_PLAYER);
|
||||||
public static final BooleanSetting HIDE_SHORTS_CHANNEL_BAR = new BooleanSetting("revanced_hide_shorts_channel_bar", FALSE);
|
public static final BooleanSetting HIDE_SHORTS_CHANNEL_BAR = new BooleanSetting("revanced_hide_shorts_channel_bar", FALSE);
|
||||||
public static final BooleanSetting HIDE_SHORTS_COMMENTS_BUTTON = new BooleanSetting("revanced_hide_shorts_comments_button", FALSE);
|
public static final BooleanSetting HIDE_SHORTS_COMMENTS_BUTTON = new BooleanSetting("revanced_hide_shorts_comments_button", FALSE);
|
||||||
public static final BooleanSetting HIDE_SHORTS_DISLIKE_BUTTON = new BooleanSetting("revanced_hide_shorts_dislike_button", FALSE);
|
public static final BooleanSetting HIDE_SHORTS_DISLIKE_BUTTON = new BooleanSetting("revanced_hide_shorts_dislike_button", FALSE);
|
||||||
|
|||||||
@@ -507,7 +507,7 @@ public class SponsorBlockPreferenceFragment extends PreferenceFragment {
|
|||||||
Utils.showToastLong(str("revanced_sb_stats_username_changed"));
|
Utils.showToastLong(str("revanced_sb_stats_username_changed"));
|
||||||
} else {
|
} else {
|
||||||
preference.setText(userName); // revert to previous
|
preference.setText(userName); // revert to previous
|
||||||
Utils.showToastLong(errorMessage);
|
SponsorBlockUtils.showErrorDialog(errorMessage);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -363,6 +363,16 @@ public class SponsorBlockUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void showErrorDialog(String dialogMessage) {
|
||||||
|
Utils.runOnMainThreadNowOrLater(() ->
|
||||||
|
new AlertDialog.Builder(SponsorBlockViewController.getOverLaysViewGroupContext())
|
||||||
|
.setMessage(dialogMessage)
|
||||||
|
.setPositiveButton(android.R.string.ok, null)
|
||||||
|
.setCancelable(false)
|
||||||
|
.show()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public static void onEditByHandClicked() {
|
public static void onEditByHandClicked() {
|
||||||
try {
|
try {
|
||||||
Utils.verifyOnMainThread();
|
Utils.verifyOnMainThread();
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import java.util.concurrent.TimeUnit;
|
|||||||
|
|
||||||
import app.revanced.extension.youtube.settings.Settings;
|
import app.revanced.extension.youtube.settings.Settings;
|
||||||
import app.revanced.extension.youtube.sponsorblock.SponsorBlockSettings;
|
import app.revanced.extension.youtube.sponsorblock.SponsorBlockSettings;
|
||||||
|
import app.revanced.extension.youtube.sponsorblock.SponsorBlockUtils;
|
||||||
import app.revanced.extension.youtube.sponsorblock.objects.SegmentCategory;
|
import app.revanced.extension.youtube.sponsorblock.objects.SegmentCategory;
|
||||||
import app.revanced.extension.youtube.sponsorblock.objects.SponsorSegment;
|
import app.revanced.extension.youtube.sponsorblock.objects.SponsorSegment;
|
||||||
import app.revanced.extension.youtube.sponsorblock.objects.SponsorSegment.SegmentVote;
|
import app.revanced.extension.youtube.sponsorblock.objects.SponsorSegment.SegmentVote;
|
||||||
@@ -142,6 +143,7 @@ public class SBRequester {
|
|||||||
public static void submitSegments(@NonNull String videoId, @NonNull String category,
|
public static void submitSegments(@NonNull String videoId, @NonNull String category,
|
||||||
long startTime, long endTime, long videoLength) {
|
long startTime, long endTime, long videoLength) {
|
||||||
Utils.verifyOffMainThread();
|
Utils.verifyOffMainThread();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
String privateUserId = SponsorBlockSettings.getSBPrivateUserID();
|
String privateUserId = SponsorBlockSettings.getSBPrivateUserID();
|
||||||
String start = String.format(Locale.US, TIME_TEMPLATE, startTime / 1000f);
|
String start = String.format(Locale.US, TIME_TEMPLATE, startTime / 1000f);
|
||||||
@@ -151,35 +153,29 @@ public class SBRequester {
|
|||||||
HttpURLConnection connection = getConnectionFromRoute(SBRoutes.SUBMIT_SEGMENTS, privateUserId, videoId, category, start, end, duration);
|
HttpURLConnection connection = getConnectionFromRoute(SBRoutes.SUBMIT_SEGMENTS, privateUserId, videoId, category, start, end, duration);
|
||||||
final int responseCode = connection.getResponseCode();
|
final int responseCode = connection.getResponseCode();
|
||||||
|
|
||||||
final String messageToToast;
|
String userMessage = switch (responseCode) {
|
||||||
switch (responseCode) {
|
case HTTP_STATUS_CODE_SUCCESS -> str("revanced_sb_submit_succeeded");
|
||||||
case HTTP_STATUS_CODE_SUCCESS:
|
case 409 -> str("revanced_sb_submit_failed_duplicate");
|
||||||
messageToToast = str("revanced_sb_submit_succeeded");
|
case 403 -> str("revanced_sb_submit_failed_forbidden",
|
||||||
break;
|
Requester.parseErrorStringAndDisconnect(connection));
|
||||||
case 409:
|
case 429 -> str("revanced_sb_submit_failed_rate_limit");
|
||||||
messageToToast = str("revanced_sb_submit_failed_duplicate");
|
case 400 -> str("revanced_sb_submit_failed_invalid",
|
||||||
break;
|
Requester.parseErrorStringAndDisconnect(connection));
|
||||||
case 403:
|
default -> str("revanced_sb_submit_failed_unknown_error",
|
||||||
messageToToast = str("revanced_sb_submit_failed_forbidden", Requester.parseErrorStringAndDisconnect(connection));
|
responseCode, connection.getResponseMessage());
|
||||||
break;
|
};
|
||||||
case 429:
|
|
||||||
messageToToast = str("revanced_sb_submit_failed_rate_limit");
|
// Message might be about the users account or an error too large to show in a toast.
|
||||||
break;
|
// Use a dialog instead.
|
||||||
case 400:
|
SponsorBlockUtils.showErrorDialog(userMessage);
|
||||||
messageToToast = str("revanced_sb_submit_failed_invalid", Requester.parseErrorStringAndDisconnect(connection));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
messageToToast = str("revanced_sb_submit_failed_unknown_error", responseCode, connection.getResponseMessage());
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
Utils.showToastLong(messageToToast);
|
|
||||||
} catch (SocketTimeoutException ex) {
|
} catch (SocketTimeoutException ex) {
|
||||||
// Always show, even if show connection toasts is turned off
|
Logger.printDebug(() -> "Timeout", ex);
|
||||||
Utils.showToastLong(str("revanced_sb_submit_failed_timeout"));
|
Utils.showToastLong(str("revanced_sb_submit_failed_timeout"));
|
||||||
} catch (IOException ex) {
|
} catch (IOException ex) {
|
||||||
|
Logger.printDebug(() -> "IOException", ex);
|
||||||
Utils.showToastLong(str("revanced_sb_submit_failed_unknown_error", 0, ex.getMessage()));
|
Utils.showToastLong(str("revanced_sb_submit_failed_unknown_error", 0, ex.getMessage()));
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
Logger.printException(() -> "failed to submit segments", ex);
|
Logger.printException(() -> "failed to submit segments", ex); // Should never happen.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -218,19 +214,22 @@ public class SBRequester {
|
|||||||
: getConnectionFromRoute(SBRoutes.VOTE_ON_SEGMENT_QUALITY, uuid, segmentUuid, String.valueOf(voteOption.apiVoteType));
|
: getConnectionFromRoute(SBRoutes.VOTE_ON_SEGMENT_QUALITY, uuid, segmentUuid, String.valueOf(voteOption.apiVoteType));
|
||||||
final int responseCode = connection.getResponseCode();
|
final int responseCode = connection.getResponseCode();
|
||||||
|
|
||||||
|
String userMessage;
|
||||||
switch (responseCode) {
|
switch (responseCode) {
|
||||||
case HTTP_STATUS_CODE_SUCCESS:
|
case HTTP_STATUS_CODE_SUCCESS:
|
||||||
Logger.printDebug(() -> "Vote success for segment: " + segment);
|
Logger.printDebug(() -> "Vote success for segment: " + segment);
|
||||||
break;
|
return;
|
||||||
case 403:
|
case 403:
|
||||||
Utils.showToastLong(
|
userMessage = str("revanced_sb_vote_failed_forbidden",
|
||||||
str("revanced_sb_vote_failed_forbidden", Requester.parseErrorStringAndDisconnect(connection)));
|
Requester.parseErrorStringAndDisconnect(connection));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
Utils.showToastLong(
|
userMessage = str("revanced_sb_vote_failed_unknown_error",
|
||||||
str("revanced_sb_vote_failed_unknown_error", responseCode, connection.getResponseMessage()));
|
responseCode, connection.getResponseMessage());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SponsorBlockUtils.showErrorDialog(userMessage);
|
||||||
} catch (SocketTimeoutException ex) {
|
} catch (SocketTimeoutException ex) {
|
||||||
Utils.showToastShort(str("revanced_sb_vote_failed_timeout"));
|
Utils.showToastShort(str("revanced_sb_vote_failed_timeout"));
|
||||||
} catch (IOException ex) {
|
} catch (IOException ex) {
|
||||||
|
|||||||
@@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M
|
|||||||
org.gradle.parallel = true
|
org.gradle.parallel = true
|
||||||
android.useAndroidX = true
|
android.useAndroidX = true
|
||||||
kotlin.code.style = official
|
kotlin.code.style = official
|
||||||
version = 5.5.1-dev.1
|
version = 5.6.0-dev.1
|
||||||
|
|||||||
@@ -1177,6 +1177,10 @@ public final class app/revanced/patches/youtube/layout/player/background/PlayerC
|
|||||||
}
|
}
|
||||||
|
|
||||||
public final class app/revanced/patches/youtube/layout/player/fullscreen/OpenVideosFullscreenKt {
|
public final class app/revanced/patches/youtube/layout/player/fullscreen/OpenVideosFullscreenKt {
|
||||||
|
public static final fun getOpenVideosFullscreen ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class app/revanced/patches/youtube/layout/player/fullscreen/OpenVideosFullscreenPatchKt {
|
||||||
public static final fun getOpenVideosFullscreenPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getOpenVideosFullscreenPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1210,6 +1214,10 @@ public final class app/revanced/patches/youtube/layout/shortsautoplay/ShortsAuto
|
|||||||
public static final fun getShortsAutoplayPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getShortsAutoplayPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final class app/revanced/patches/youtube/layout/shortsplayer/OpenShortsInRegularPlayerPatchKt {
|
||||||
|
public static final fun getOpenShortsInRegularPlayerPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
|
}
|
||||||
|
|
||||||
public final class app/revanced/patches/youtube/layout/sponsorblock/SponsorBlockPatchKt {
|
public final class app/revanced/patches/youtube/layout/sponsorblock/SponsorBlockPatchKt {
|
||||||
public static final fun getSponsorBlockPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getSponsorBlockPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package app.revanced.patches.shared.misc.checks
|
|||||||
|
|
||||||
import android.os.Build.*
|
import android.os.Build.*
|
||||||
import app.revanced.patcher.Fingerprint
|
import app.revanced.patcher.Fingerprint
|
||||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
|
||||||
import app.revanced.patcher.patch.Patch
|
import app.revanced.patcher.patch.Patch
|
||||||
import app.revanced.patcher.patch.bytecodePatch
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
import app.revanced.patcher.util.proxy.mutableTypes.encodedValue.MutableEncodedValue
|
import app.revanced.patcher.util.proxy.mutableTypes.encodedValue.MutableEncodedValue
|
||||||
@@ -82,7 +82,7 @@ fun checkEnvironmentPatch(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun invokeCheck() = mainActivityOnCreateFingerprint.method.addInstructions(
|
fun invokeCheck() = mainActivityOnCreateFingerprint.method.addInstruction(
|
||||||
0,
|
0,
|
||||||
"invoke-static/range { p0 .. p0 },$EXTENSION_CLASS_DESCRIPTOR->check(Landroid/app/Activity;)V",
|
"invoke-static/range { p0 .. p0 },$EXTENSION_CLASS_DESCRIPTOR->check(Landroid/app/Activity;)V",
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -14,3 +14,15 @@ internal val openVideosFullscreenPortraitFingerprint = fingerprint {
|
|||||||
OPEN_VIDEOS_FULLSCREEN_PORTRAIT_FEATURE_FLAG
|
OPEN_VIDEOS_FULLSCREEN_PORTRAIT_FEATURE_FLAG
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used to enable opening regular videos fullscreen.
|
||||||
|
*/
|
||||||
|
internal val openVideosFullscreenHookPatchExtensionFingerprint = fingerprint {
|
||||||
|
accessFlags(AccessFlags.PRIVATE, AccessFlags.STATIC)
|
||||||
|
returns("Z")
|
||||||
|
parameters()
|
||||||
|
custom { methodDef, classDef ->
|
||||||
|
methodDef.name == "isFullScreenPatchIncluded" && classDef.type == EXTENSION_CLASS_DESCRIPTOR
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,46 +1,9 @@
|
|||||||
package app.revanced.patches.youtube.layout.player.fullscreen
|
package app.revanced.patches.youtube.layout.player.fullscreen
|
||||||
|
|
||||||
import app.revanced.patcher.patch.bytecodePatch
|
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.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.insertFeatureFlagBooleanOverride
|
|
||||||
|
|
||||||
private const val EXTENSION_CLASS_DESCRIPTOR =
|
|
||||||
"Lapp/revanced/extension/youtube/patches/OpenVideosFullscreen;"
|
|
||||||
|
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
val openVideosFullscreenPatch = bytecodePatch(
|
@Deprecated("Renamed to openVideosFullscreenPatch", ReplaceWith("openVideosFullscreenPatch"))
|
||||||
name = "Open videos fullscreen",
|
val openVideosFullscreen = bytecodePatch{
|
||||||
description = "Adds an option to open videos in full screen portrait mode.",
|
dependsOn(openVideosFullscreenPatch)
|
||||||
) {
|
}
|
||||||
dependsOn(
|
|
||||||
sharedExtensionPatch,
|
|
||||||
settingsPatch,
|
|
||||||
addResourcesPatch,
|
|
||||||
)
|
|
||||||
|
|
||||||
compatibleWith(
|
|
||||||
"com.google.android.youtube"(
|
|
||||||
"19.46.42",
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
execute {
|
|
||||||
openVideosFullscreenPortraitFingerprint.method.insertFeatureFlagBooleanOverride(
|
|
||||||
OPEN_VIDEOS_FULLSCREEN_PORTRAIT_FEATURE_FLAG,
|
|
||||||
"$EXTENSION_CLASS_DESCRIPTOR->openVideoFullscreenPortrait(Z)Z"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Add resources and setting last, in case the user force patches an old incompatible version.
|
|
||||||
|
|
||||||
addResources("youtube", "layout.player.fullscreen.openVideosFullscreen")
|
|
||||||
|
|
||||||
PreferenceScreen.PLAYER.addPreferences(
|
|
||||||
SwitchPreference("revanced_open_videos_fullscreen_portrait")
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
package app.revanced.patches.youtube.layout.player.fullscreen
|
||||||
|
|
||||||
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
|
import app.revanced.patches.youtube.layout.shortsplayer.openShortsInRegularPlayerPatch
|
||||||
|
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
||||||
|
import app.revanced.patches.youtube.misc.playservice.is_19_46_or_greater
|
||||||
|
import app.revanced.patches.youtube.misc.playservice.versionCheckPatch
|
||||||
|
import app.revanced.util.insertFeatureFlagBooleanOverride
|
||||||
|
|
||||||
|
internal const val EXTENSION_CLASS_DESCRIPTOR =
|
||||||
|
"Lapp/revanced/extension/youtube/patches/OpenVideosFullscreenHookPatch;"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used by both [openVideosFullscreenPatch] and [openShortsInRegularPlayerPatch].
|
||||||
|
*/
|
||||||
|
internal val openVideosFullscreenHookPatch = bytecodePatch {
|
||||||
|
dependsOn(
|
||||||
|
sharedExtensionPatch,
|
||||||
|
versionCheckPatch
|
||||||
|
)
|
||||||
|
|
||||||
|
execute {
|
||||||
|
if (!is_19_46_or_greater) {
|
||||||
|
return@execute
|
||||||
|
}
|
||||||
|
|
||||||
|
openVideosFullscreenPortraitFingerprint.method.insertFeatureFlagBooleanOverride(
|
||||||
|
OPEN_VIDEOS_FULLSCREEN_PORTRAIT_FEATURE_FLAG,
|
||||||
|
"$EXTENSION_CLASS_DESCRIPTOR->openVideoFullscreenPortrait(Z)Z"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
package app.revanced.patches.youtube.layout.player.fullscreen
|
||||||
|
|
||||||
|
import app.revanced.patcher.patch.PatchException
|
||||||
|
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.SwitchPreference
|
||||||
|
import app.revanced.patches.youtube.misc.playservice.is_19_46_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
|
||||||
|
import app.revanced.util.returnEarly
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
val openVideosFullscreenPatch = bytecodePatch(
|
||||||
|
name = "Open videos fullscreen",
|
||||||
|
description = "Adds an option to open videos in full screen portrait mode.",
|
||||||
|
) {
|
||||||
|
dependsOn(
|
||||||
|
openVideosFullscreenHookPatch,
|
||||||
|
settingsPatch,
|
||||||
|
addResourcesPatch,
|
||||||
|
versionCheckPatch
|
||||||
|
)
|
||||||
|
|
||||||
|
compatibleWith(
|
||||||
|
"com.google.android.youtube"(
|
||||||
|
"19.46.42",
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
execute {
|
||||||
|
if (!is_19_46_or_greater) {
|
||||||
|
throw PatchException("'Open videos fullscreen' requires 19.46.42 or greater")
|
||||||
|
}
|
||||||
|
|
||||||
|
addResources("youtube", "layout.player.fullscreen.openVideosFullscreen")
|
||||||
|
|
||||||
|
PreferenceScreen.PLAYER.addPreferences(
|
||||||
|
SwitchPreference("revanced_open_videos_fullscreen_portrait")
|
||||||
|
)
|
||||||
|
|
||||||
|
// Enable the logic for the user Setting to open regular videos fullscreen.
|
||||||
|
openVideosFullscreenHookPatchExtensionFingerprint.method.returnEarly(true)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package app.revanced.patches.youtube.layout.shortsautoplay
|
package app.revanced.patches.youtube.layout.shortsautoplay
|
||||||
|
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
|
||||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||||
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||||
import app.revanced.patcher.patch.bytecodePatch
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
@@ -56,7 +57,7 @@ val shortsAutoplayPatch = bytecodePatch(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Main activity is used to check if app is in pip mode.
|
// Main activity is used to check if app is in pip mode.
|
||||||
mainActivityOnCreateFingerprint.method.addInstructions(
|
mainActivityOnCreateFingerprint.method.addInstruction(
|
||||||
1,
|
1,
|
||||||
"invoke-static/range { p0 .. p0 }, $EXTENSION_CLASS_DESCRIPTOR->" +
|
"invoke-static/range { p0 .. p0 }, $EXTENSION_CLASS_DESCRIPTOR->" +
|
||||||
"setMainActivity(Landroid/app/Activity;)V",
|
"setMainActivity(Landroid/app/Activity;)V",
|
||||||
|
|||||||
@@ -0,0 +1,56 @@
|
|||||||
|
package app.revanced.patches.youtube.layout.shortsplayer
|
||||||
|
|
||||||
|
import app.revanced.patcher.fingerprint
|
||||||
|
import app.revanced.util.literal
|
||||||
|
import com.android.tools.smali.dexlib2.AccessFlags
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Purpose of this method is not clear, and it's only used to identify
|
||||||
|
* the obfuscated name of the videoId() method in PlaybackStartDescriptor.
|
||||||
|
*/
|
||||||
|
internal val playbackStartFeatureFlagFingerprint = fingerprint {
|
||||||
|
returns("Z")
|
||||||
|
parameters(
|
||||||
|
"Lcom/google/android/libraries/youtube/player/model/PlaybackStartDescriptor;",
|
||||||
|
)
|
||||||
|
literal {
|
||||||
|
45380134L
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pre 19.25
|
||||||
|
internal val shortsPlaybackIntentLegacyFingerprint = fingerprint {
|
||||||
|
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||||
|
returns("V")
|
||||||
|
parameters(
|
||||||
|
"L",
|
||||||
|
"Ljava/util/Map;",
|
||||||
|
"J",
|
||||||
|
"Ljava/lang/String;",
|
||||||
|
"Z",
|
||||||
|
"Ljava/util/Map;"
|
||||||
|
)
|
||||||
|
strings(
|
||||||
|
// None of these strings are unique.
|
||||||
|
"com.google.android.apps.youtube.app.endpoint.flags",
|
||||||
|
"ReelWatchFragmentArgs",
|
||||||
|
"reels_fragment_descriptor"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
internal val shortsPlaybackIntentFingerprint = fingerprint {
|
||||||
|
accessFlags(AccessFlags.PROTECTED, AccessFlags.FINAL)
|
||||||
|
returns("V")
|
||||||
|
parameters(
|
||||||
|
"Lcom/google/android/libraries/youtube/player/model/PlaybackStartDescriptor;",
|
||||||
|
"Ljava/util/Map;",
|
||||||
|
"J",
|
||||||
|
"Ljava/lang/String;"
|
||||||
|
)
|
||||||
|
strings(
|
||||||
|
// None of these strings are unique.
|
||||||
|
"com.google.android.apps.youtube.app.endpoint.flags",
|
||||||
|
"ReelWatchFragmentArgs",
|
||||||
|
"reels_fragment_descriptor"
|
||||||
|
)
|
||||||
|
}
|
||||||
@@ -0,0 +1,131 @@
|
|||||||
|
package app.revanced.patches.youtube.layout.shortsplayer
|
||||||
|
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||||
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
|
import app.revanced.patches.all.misc.resources.addResources
|
||||||
|
import app.revanced.patches.all.misc.resources.addResourcesPatch
|
||||||
|
import app.revanced.patches.shared.misc.settings.preference.ListPreference
|
||||||
|
import app.revanced.patches.youtube.layout.player.fullscreen.openVideosFullscreenHookPatch
|
||||||
|
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
||||||
|
import app.revanced.patches.youtube.misc.navigation.navigationBarHookPatch
|
||||||
|
import app.revanced.patches.youtube.misc.playservice.is_19_25_or_greater
|
||||||
|
import app.revanced.patches.youtube.misc.playservice.is_19_46_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
|
||||||
|
import app.revanced.patches.youtube.shared.mainActivityOnCreateFingerprint
|
||||||
|
import app.revanced.util.getReference
|
||||||
|
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||||
|
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
|
||||||
|
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||||
|
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||||
|
|
||||||
|
private const val EXTENSION_CLASS_DESCRIPTOR =
|
||||||
|
"Lapp/revanced/extension/youtube/patches/OpenShortsInRegularPlayerPatch;"
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
val openShortsInRegularPlayerPatch = bytecodePatch(
|
||||||
|
name = "Open Shorts in regular player",
|
||||||
|
description = "Adds options to open Shorts in the regular video player.",
|
||||||
|
) {
|
||||||
|
dependsOn(
|
||||||
|
sharedExtensionPatch,
|
||||||
|
settingsPatch,
|
||||||
|
addResourcesPatch,
|
||||||
|
openVideosFullscreenHookPatch,
|
||||||
|
navigationBarHookPatch,
|
||||||
|
versionCheckPatch
|
||||||
|
)
|
||||||
|
|
||||||
|
compatibleWith(
|
||||||
|
"com.google.android.youtube"(
|
||||||
|
"18.38.44",
|
||||||
|
"18.49.37",
|
||||||
|
"19.16.39",
|
||||||
|
"19.25.37",
|
||||||
|
"19.34.42",
|
||||||
|
"19.43.41",
|
||||||
|
"19.45.38",
|
||||||
|
"19.46.42",
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
execute {
|
||||||
|
addResources("youtube", "layout.shortsplayer.shortsPlayerTypePatch")
|
||||||
|
|
||||||
|
PreferenceScreen.SHORTS.addPreferences(
|
||||||
|
if (is_19_46_or_greater) {
|
||||||
|
ListPreference(
|
||||||
|
key = "revanced_shorts_player_type",
|
||||||
|
summaryKey = null,
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
ListPreference(
|
||||||
|
key = "revanced_shorts_player_type",
|
||||||
|
summaryKey = null,
|
||||||
|
entriesKey = "revanced_shorts_player_type_legacy_entries",
|
||||||
|
entryValuesKey = "revanced_shorts_player_type_legacy_entry_values"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
// Activity is used as the context to launch an Intent.
|
||||||
|
mainActivityOnCreateFingerprint.method.addInstruction(
|
||||||
|
1,
|
||||||
|
"invoke-static/range { p0 .. p0 }, ${EXTENSION_CLASS_DESCRIPTOR}->" +
|
||||||
|
"setMainActivity(Landroid/app/Activity;)V",
|
||||||
|
)
|
||||||
|
|
||||||
|
// Find the obfuscated method name for PlaybackStartDescriptor.videoId()
|
||||||
|
val playbackStartVideoIdMethodName = playbackStartFeatureFlagFingerprint.method.let {
|
||||||
|
val stringMethodIndex = it.indexOfFirstInstructionOrThrow {
|
||||||
|
val reference = getReference<MethodReference>()
|
||||||
|
reference?.definingClass == "Lcom/google/android/libraries/youtube/player/model/PlaybackStartDescriptor;"
|
||||||
|
&& reference.returnType == "Ljava/lang/String;"
|
||||||
|
}
|
||||||
|
|
||||||
|
navigate(it).to(stringMethodIndex).stop().name
|
||||||
|
}
|
||||||
|
|
||||||
|
fun extensionInstructions(playbackStartRegister: Int, freeRegister: Int) =
|
||||||
|
"""
|
||||||
|
invoke-virtual { v$playbackStartRegister }, Lcom/google/android/libraries/youtube/player/model/PlaybackStartDescriptor;->$playbackStartVideoIdMethodName()Ljava/lang/String;
|
||||||
|
move-result-object v$freeRegister
|
||||||
|
invoke-static { v$freeRegister }, $EXTENSION_CLASS_DESCRIPTOR->openShort(Ljava/lang/String;)Z
|
||||||
|
move-result v$freeRegister
|
||||||
|
if-eqz v$freeRegister, :disabled
|
||||||
|
return-void
|
||||||
|
|
||||||
|
:disabled
|
||||||
|
nop
|
||||||
|
"""
|
||||||
|
|
||||||
|
if (!is_19_25_or_greater) {
|
||||||
|
shortsPlaybackIntentLegacyFingerprint.method.apply {
|
||||||
|
val index = indexOfFirstInstructionOrThrow {
|
||||||
|
getReference<MethodReference>()?.returnType ==
|
||||||
|
"Lcom/google/android/libraries/youtube/player/model/PlaybackStartDescriptor;"
|
||||||
|
}
|
||||||
|
val freeRegister = getInstruction<FiveRegisterInstruction>(index).registerC
|
||||||
|
val playbackStartRegister = getInstruction<OneRegisterInstruction>(index + 1).registerA
|
||||||
|
|
||||||
|
addInstructionsWithLabels(
|
||||||
|
index + 2,
|
||||||
|
extensionInstructions(playbackStartRegister, freeRegister)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
return@execute
|
||||||
|
}
|
||||||
|
|
||||||
|
shortsPlaybackIntentFingerprint.method.addInstructionsWithLabels(
|
||||||
|
0,
|
||||||
|
"""
|
||||||
|
move-object/from16 v0, p1
|
||||||
|
${extensionInstructions(0, 1)}
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package app.revanced.patches.youtube.misc.announcements
|
package app.revanced.patches.youtube.misc.announcements
|
||||||
|
|
||||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
|
||||||
import app.revanced.patcher.patch.bytecodePatch
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
import app.revanced.patches.all.misc.resources.addResources
|
import app.revanced.patches.all.misc.resources.addResources
|
||||||
import app.revanced.patches.all.misc.resources.addResourcesPatch
|
import app.revanced.patches.all.misc.resources.addResourcesPatch
|
||||||
@@ -41,7 +41,7 @@ val announcementsPatch = bytecodePatch(
|
|||||||
SwitchPreference("revanced_announcements"),
|
SwitchPreference("revanced_announcements"),
|
||||||
)
|
)
|
||||||
|
|
||||||
mainActivityOnCreateFingerprint.method.addInstructions(
|
mainActivityOnCreateFingerprint.method.addInstruction(
|
||||||
// Insert index must be greater than the insert index used by GmsCoreSupport,
|
// Insert index must be greater than the insert index used by GmsCoreSupport,
|
||||||
// as both patch the same method and GmsCore check should be first.
|
// as both patch the same method and GmsCore check should be first.
|
||||||
1,
|
1,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package app.revanced.patches.youtube.misc.dns
|
package app.revanced.patches.youtube.misc.dns
|
||||||
|
|
||||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
|
||||||
import app.revanced.patcher.patch.bytecodePatch
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
import app.revanced.patches.all.misc.resources.addResources
|
import app.revanced.patches.all.misc.resources.addResources
|
||||||
import app.revanced.patches.all.misc.resources.addResourcesPatch
|
import app.revanced.patches.all.misc.resources.addResourcesPatch
|
||||||
@@ -31,7 +31,7 @@ val checkWatchHistoryDomainNameResolutionPatch = bytecodePatch(
|
|||||||
execute {
|
execute {
|
||||||
addResources("youtube", "misc.dns.checkWatchHistoryDomainNameResolutionPatch")
|
addResources("youtube", "misc.dns.checkWatchHistoryDomainNameResolutionPatch")
|
||||||
|
|
||||||
mainActivityOnCreateFingerprint.method.addInstructions(
|
mainActivityOnCreateFingerprint.method.addInstruction(
|
||||||
// FIXME: Insert index must be greater than the insert index used by GmsCoreSupport,
|
// FIXME: Insert index must be greater than the insert index used by GmsCoreSupport,
|
||||||
// as both patch the same method and GmsCoreSupport check should be first,
|
// as both patch the same method and GmsCoreSupport check should be first,
|
||||||
// but the patch does not depend on GmsCoreSupport, so it should not be possible to enforce this
|
// but the patch does not depend on GmsCoreSupport, so it should not be possible to enforce this
|
||||||
|
|||||||
@@ -79,7 +79,6 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_settings_screen_03_feed_title">الموجز</string>
|
<string name="revanced_settings_screen_03_feed_title">الموجز</string>
|
||||||
<string name="revanced_settings_screen_04_player_title">المشغل</string>
|
<string name="revanced_settings_screen_04_player_title">المشغل</string>
|
||||||
<string name="revanced_settings_screen_05_general_title">التصميم العام</string>
|
<string name="revanced_settings_screen_05_general_title">التصميم العام</string>
|
||||||
<string name="revanced_settings_screen_06_shorts_title">Shorts</string>
|
|
||||||
<string name="revanced_settings_screen_07_seekbar_title">شريط تقدم الفيديو</string>
|
<string name="revanced_settings_screen_07_seekbar_title">شريط تقدم الفيديو</string>
|
||||||
<string name="revanced_settings_screen_08_swipe_controls_title">التحكم عن طريق إيماءة التمرير</string>
|
<string name="revanced_settings_screen_08_swipe_controls_title">التحكم عن طريق إيماءة التمرير</string>
|
||||||
<string name="revanced_settings_screen_11_misc_title">إعدادات متنوعة</string>
|
<string name="revanced_settings_screen_11_misc_title">إعدادات متنوعة</string>
|
||||||
|
|||||||
@@ -79,7 +79,6 @@ Davam düyməsinə toxunun və optimallaşdırma dəyişikliklərinə icazə ver
|
|||||||
<string name="revanced_settings_screen_03_feed_title">Axın</string>
|
<string name="revanced_settings_screen_03_feed_title">Axın</string>
|
||||||
<string name="revanced_settings_screen_04_player_title">Oynadıcı</string>
|
<string name="revanced_settings_screen_04_player_title">Oynadıcı</string>
|
||||||
<string name="revanced_settings_screen_05_general_title">Ümumi tərtibat</string>
|
<string name="revanced_settings_screen_05_general_title">Ümumi tərtibat</string>
|
||||||
<string name="revanced_settings_screen_06_shorts_title">\"Shorts\"</string>
|
|
||||||
<string name="revanced_settings_screen_07_seekbar_title">Axtarış çubuğu</string>
|
<string name="revanced_settings_screen_07_seekbar_title">Axtarış çubuğu</string>
|
||||||
<string name="revanced_settings_screen_08_swipe_controls_title">Sürüşdürmə nəzarətçiləri</string>
|
<string name="revanced_settings_screen_08_swipe_controls_title">Sürüşdürmə nəzarətçiləri</string>
|
||||||
<string name="revanced_settings_screen_11_misc_title">Müxtəlif</string>
|
<string name="revanced_settings_screen_11_misc_title">Müxtəlif</string>
|
||||||
|
|||||||
@@ -79,7 +79,6 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_settings_screen_03_feed_title">Поток</string>
|
<string name="revanced_settings_screen_03_feed_title">Поток</string>
|
||||||
<string name="revanced_settings_screen_04_player_title">Плейър</string>
|
<string name="revanced_settings_screen_04_player_title">Плейър</string>
|
||||||
<string name="revanced_settings_screen_05_general_title">Общо оформление</string>
|
<string name="revanced_settings_screen_05_general_title">Общо оформление</string>
|
||||||
<string name="revanced_settings_screen_06_shorts_title">Шорти</string>
|
|
||||||
<string name="revanced_settings_screen_07_seekbar_title">Лента за прогрес на видеото</string>
|
<string name="revanced_settings_screen_07_seekbar_title">Лента за прогрес на видеото</string>
|
||||||
<string name="revanced_settings_screen_08_swipe_controls_title">Контроли с плъзгане</string>
|
<string name="revanced_settings_screen_08_swipe_controls_title">Контроли с плъзгане</string>
|
||||||
<string name="revanced_settings_screen_11_misc_title">Разни</string>
|
<string name="revanced_settings_screen_11_misc_title">Разни</string>
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ Second \"item\" text"</string>
|
|||||||
<string name="gms_core_dialog_open_website_text">Άνοιγμα ιστοσελίδας</string>
|
<string name="gms_core_dialog_open_website_text">Άνοιγμα ιστοσελίδας</string>
|
||||||
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">"Οι βελτιστοποιήσεις μπαταρίας πρέπει να απενεργοποιηθούν για το MicroG GmsCore ώστε να αποφευχθούν προβλήματα.
|
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">"Οι βελτιστοποιήσεις μπαταρίας πρέπει να απενεργοποιηθούν για το MicroG GmsCore ώστε να αποφευχθούν προβλήματα.
|
||||||
|
|
||||||
Η απενεργοποίηση των βελτιστοποιήσεων μπαταρίας για το MicroG δεν θα επηρεάσει αρνητικά τη χρήση της μπαταρίας.
|
Η απενεργοποίηση των βελτιστοποιήσεων μπαταρίας για το MicroG δεν θα επηρεάσει αρνητικά την κατανάλωση ενέργειας.
|
||||||
|
|
||||||
Πατήστε το κουμπί «Συνέχεια» και επιτρέψτε τις αλλαγές βελτιστοποίησης."</string>
|
Πατήστε το κουμπί «Συνέχεια» και επιτρέψτε τις αλλαγές βελτιστοποίησης."</string>
|
||||||
<string name="gms_core_dialog_continue_text">Συνέχεια</string>
|
<string name="gms_core_dialog_continue_text">Συνέχεια</string>
|
||||||
@@ -519,14 +519,14 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_navigation_button_labels_summary_on">Κρυμμένες</string>
|
<string name="revanced_hide_navigation_button_labels_summary_on">Κρυμμένες</string>
|
||||||
<string name="revanced_hide_navigation_button_labels_summary_off">Εμφανίζονται</string>
|
<string name="revanced_hide_navigation_button_labels_summary_off">Εμφανίζονται</string>
|
||||||
<string name="revanced_disable_translucent_status_bar_title">Απενεργοποίηση διαφανούς γραμμής κατάστασης</string>
|
<string name="revanced_disable_translucent_status_bar_title">Απενεργοποίηση διαφανούς γραμμής κατάστασης</string>
|
||||||
<string name="revanced_disable_translucent_status_bar_summary_on">Η γραμμή κατάστασης είναι αδιαφανής</string>
|
<string name="revanced_disable_translucent_status_bar_summary_on">Η γραμμή κατάστασης δεν είναι διαφανής</string>
|
||||||
<string name="revanced_disable_translucent_status_bar_summary_off">Η γραμμή κατάστασης είναι αδιαφανής ή διαφανής</string>
|
<string name="revanced_disable_translucent_status_bar_summary_off">Η διαφάνεια της γραμμής κατάστασης ορίζεται αυτόματα</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_light_title">Απενεργοποίηση διαφανούς γραμμής στο φωτεινό θέμα</string>
|
<string name="revanced_disable_translucent_navigation_bar_light_title">Απενεργοποίηση διαφανούς γραμμής στο φωτεινό θέμα</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_on">Η γραμμή πλοήγησης στο φωτεινό θέμα είναι αδιαφανής</string>
|
<string name="revanced_disable_translucent_navigation_bar_light_summary_on">Η γραμμή πλοήγησης στο φωτεινό θέμα δεν είναι διαφανής</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_off">Η γραμμή πλοήγησης στο φωτεινό θέμα είναι αδιαφανής ή διαφανής</string>
|
<string name="revanced_disable_translucent_navigation_bar_light_summary_off">Η διαφάνεια της γραμμής πλοήγησης στο φωτεινό θέμα ορίζεται αυτόματα</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_dark_title">Απενεργοποίηση ημιδιαφανούς γραμμής στο σκούρο θέμα</string>
|
<string name="revanced_disable_translucent_navigation_bar_dark_title">Απενεργοποίηση ημιδιαφανούς γραμμής στο σκούρο θέμα</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_on">Η γραμμή πλοήγησης στο σκούρο θέμα είναι αδιαφανής</string>
|
<string name="revanced_disable_translucent_navigation_bar_dark_summary_on">Η γραμμή πλοήγησης στο σκούρο θέμα δεν είναι διαφανής</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_off">Η γραμμή πλοήγησης στο σκούρο θέμα είναι αδιαφανής ή διαφανής</string>
|
<string name="revanced_disable_translucent_navigation_bar_dark_summary_off">Η διαφάνεια της γραμμής πλοήγησης στο σκούρο θέμα ορίζεται αυτόματα</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.hide.player.flyoutmenupanel.hidePlayerFlyoutMenuPatch">
|
<patch id="layout.hide.player.flyoutmenupanel.hidePlayerFlyoutMenuPatch">
|
||||||
<string name="revanced_hide_player_flyout_title">Αναδυόμενο μενού ρυθμίσεων</string>
|
<string name="revanced_hide_player_flyout_title">Αναδυόμενο μενού ρυθμίσεων</string>
|
||||||
|
|||||||
@@ -79,7 +79,6 @@ Kattintson a folytatás gombra, és engedélyezze az optimalizálási módosít
|
|||||||
<string name="revanced_settings_screen_03_feed_title">Hírfolyam</string>
|
<string name="revanced_settings_screen_03_feed_title">Hírfolyam</string>
|
||||||
<string name="revanced_settings_screen_04_player_title">Lejátszó</string>
|
<string name="revanced_settings_screen_04_player_title">Lejátszó</string>
|
||||||
<string name="revanced_settings_screen_05_general_title">Általános elrendezés</string>
|
<string name="revanced_settings_screen_05_general_title">Általános elrendezés</string>
|
||||||
<string name="revanced_settings_screen_06_shorts_title">Shorts</string>
|
|
||||||
<string name="revanced_settings_screen_07_seekbar_title">Keresősáv</string>
|
<string name="revanced_settings_screen_07_seekbar_title">Keresősáv</string>
|
||||||
<string name="revanced_settings_screen_08_swipe_controls_title">Csúsztatási vezérlők</string>
|
<string name="revanced_settings_screen_08_swipe_controls_title">Csúsztatási vezérlők</string>
|
||||||
<string name="revanced_settings_screen_11_misc_title">Egyéb</string>
|
<string name="revanced_settings_screen_11_misc_title">Egyéb</string>
|
||||||
|
|||||||
@@ -79,7 +79,6 @@ Ketuk tombol lanjutkan dan izinkan perubahan pengoptimalan."</string>
|
|||||||
<string name="revanced_settings_screen_03_feed_title">Umpan</string>
|
<string name="revanced_settings_screen_03_feed_title">Umpan</string>
|
||||||
<string name="revanced_settings_screen_04_player_title">Pemutar</string>
|
<string name="revanced_settings_screen_04_player_title">Pemutar</string>
|
||||||
<string name="revanced_settings_screen_05_general_title">Layout umum</string>
|
<string name="revanced_settings_screen_05_general_title">Layout umum</string>
|
||||||
<string name="revanced_settings_screen_06_shorts_title">Shorts</string>
|
|
||||||
<string name="revanced_settings_screen_07_seekbar_title">Seekbar</string>
|
<string name="revanced_settings_screen_07_seekbar_title">Seekbar</string>
|
||||||
<string name="revanced_settings_screen_08_swipe_controls_title">Kontrol geser</string>
|
<string name="revanced_settings_screen_08_swipe_controls_title">Kontrol geser</string>
|
||||||
<string name="revanced_settings_screen_11_misc_title">Lain-lain</string>
|
<string name="revanced_settings_screen_11_misc_title">Lain-lain</string>
|
||||||
|
|||||||
@@ -79,7 +79,6 @@ Tocca il pulsante Continua e consenti le modifiche di ottimizzazione."</string>
|
|||||||
<string name="revanced_settings_screen_03_feed_title">Feed</string>
|
<string name="revanced_settings_screen_03_feed_title">Feed</string>
|
||||||
<string name="revanced_settings_screen_04_player_title">Lettore</string>
|
<string name="revanced_settings_screen_04_player_title">Lettore</string>
|
||||||
<string name="revanced_settings_screen_05_general_title">Interfaccia generale</string>
|
<string name="revanced_settings_screen_05_general_title">Interfaccia generale</string>
|
||||||
<string name="revanced_settings_screen_06_shorts_title">Shorts</string>
|
|
||||||
<string name="revanced_settings_screen_07_seekbar_title">Barra di avanzamento</string>
|
<string name="revanced_settings_screen_07_seekbar_title">Barra di avanzamento</string>
|
||||||
<string name="revanced_settings_screen_08_swipe_controls_title">Controlli a gesti</string>
|
<string name="revanced_settings_screen_08_swipe_controls_title">Controlli a gesti</string>
|
||||||
<string name="revanced_settings_screen_11_misc_title">Varie</string>
|
<string name="revanced_settings_screen_11_misc_title">Varie</string>
|
||||||
@@ -518,13 +517,13 @@ Nota: Abilitare questa opzione nasconde anche le pubblicità video"</string>
|
|||||||
<string name="revanced_hide_navigation_button_labels_summary_off">Le etichette sono visibili</string>
|
<string name="revanced_hide_navigation_button_labels_summary_off">Le etichette sono visibili</string>
|
||||||
<string name="revanced_disable_translucent_status_bar_title">Disabilita la barra di stato traslucida</string>
|
<string name="revanced_disable_translucent_status_bar_title">Disabilita la barra di stato traslucida</string>
|
||||||
<string name="revanced_disable_translucent_status_bar_summary_on">La barra di stato è opaca</string>
|
<string name="revanced_disable_translucent_status_bar_summary_on">La barra di stato è opaca</string>
|
||||||
<string name="revanced_disable_translucent_status_bar_summary_off">La barra di stato è opaca o translucida</string>
|
<string name="revanced_disable_translucent_status_bar_summary_off">La barra di stato è opaca o traslucida</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_light_title">Disabilita la barra traslucida chiara</string>
|
<string name="revanced_disable_translucent_navigation_bar_light_title">Disabilita la barra traslucida chiara</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_on">La barra di navigazione in modalità chiara è opaca</string>
|
<string name="revanced_disable_translucent_navigation_bar_light_summary_on">La barra di navigazione in modalità chiara è opaca</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_off">La barra di navigazione in modalità chiara è opaca o translucida</string>
|
<string name="revanced_disable_translucent_navigation_bar_light_summary_off">La barra di navigazione in modalità chiara è opaca o traslucida</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_dark_title">Disabilita la barra scura traslucida</string>
|
<string name="revanced_disable_translucent_navigation_bar_dark_title">Disabilita la barra traslucida scura</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_on">La barra di navigazione in modalità scura è opaca</string>
|
<string name="revanced_disable_translucent_navigation_bar_dark_summary_on">La barra di navigazione in modalità scura è opaca</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_off">La barra di navigazione in modalità scura è opaca o translucida</string>
|
<string name="revanced_disable_translucent_navigation_bar_dark_summary_off">La barra di navigazione in modalità scura è opaca o traslucida</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.hide.player.flyoutmenupanel.hidePlayerFlyoutMenuPatch">
|
<patch id="layout.hide.player.flyoutmenupanel.hidePlayerFlyoutMenuPatch">
|
||||||
<string name="revanced_hide_player_flyout_title">Menù a comparsa</string>
|
<string name="revanced_hide_player_flyout_title">Menù a comparsa</string>
|
||||||
@@ -1289,7 +1288,7 @@ La riproduzione video potrebbe non funzionare"</string>
|
|||||||
AVC ha una risoluzione massima di 1080p, il codec audio Opus non è disponibile e la riproduzione video utilizzerà più dati rispetto a VP9 o AV1."</string>
|
AVC ha una risoluzione massima di 1080p, il codec audio Opus non è disponibile e la riproduzione video utilizzerà più dati rispetto a VP9 o AV1."</string>
|
||||||
<string name="revanced_spoof_video_streams_about_ios_title">Effetti collaterali simulazione iOS</string>
|
<string name="revanced_spoof_video_streams_about_ios_title">Effetti collaterali simulazione iOS</string>
|
||||||
<string name="revanced_spoof_video_streams_about_ios_summary">"• I video per bambini privati potrebbero non essere riproducibili
|
<string name="revanced_spoof_video_streams_about_ios_summary">"• I video per bambini privati potrebbero non essere riproducibili
|
||||||
• I video terminano prima di 1 secondo"</string>
|
• I video terminano 1 secondo prima"</string>
|
||||||
<string name="revanced_spoof_video_streams_about_android_vr_title">Effetti collaterali simulazione Android VR</string>
|
<string name="revanced_spoof_video_streams_about_android_vr_title">Effetti collaterali simulazione Android VR</string>
|
||||||
<string name="revanced_spoof_video_streams_about_android_vr_summary">"• I video per bambini potrebbero non essere riprodotti
|
<string name="revanced_spoof_video_streams_about_android_vr_summary">"• I video per bambini potrebbero non essere riprodotti
|
||||||
• Le dirette iniziano dall'inizio
|
• Le dirette iniziano dall'inizio
|
||||||
|
|||||||
@@ -65,6 +65,8 @@ Second \"item\" text"</string>
|
|||||||
<string name="gms_core_dialog_open_website_text">웹사이트 열기</string>
|
<string name="gms_core_dialog_open_website_text">웹사이트 열기</string>
|
||||||
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">"MicroG GmsCore를 배터리 최적화 목록에서 제외하여 앱 문제를 방지할 수 있습니다
|
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">"MicroG GmsCore를 배터리 최적화 목록에서 제외하여 앱 문제를 방지할 수 있습니다
|
||||||
|
|
||||||
|
MicroG를 배터리 최적화 목록에서 제외하더라도, 배터리 사용량에 부정적인 영향을 미치지 않습니다
|
||||||
|
|
||||||
배터리 최적화 목록에서 제외하려면 '계속하기' 버튼을 누르세요"</string>
|
배터리 최적화 목록에서 제외하려면 '계속하기' 버튼을 누르세요"</string>
|
||||||
<string name="gms_core_dialog_continue_text">계속하기</string>
|
<string name="gms_core_dialog_continue_text">계속하기</string>
|
||||||
</patch>
|
</patch>
|
||||||
@@ -138,17 +140,17 @@ Second \"item\" text"</string>
|
|||||||
<!-- 'Join' should be translated using the same localized wording YouTube displays.
|
<!-- 'Join' should be translated using the same localized wording YouTube displays.
|
||||||
This appears in the video player for certain videos. -->
|
This appears in the video player for certain videos. -->
|
||||||
<string name="revanced_hide_join_membership_button_title">가입 버튼 숨기기</string>
|
<string name="revanced_hide_join_membership_button_title">가입 버튼 숨기기</string>
|
||||||
<string name="revanced_hide_join_membership_button_summary_on">버튼이 숨겨집니다</string>
|
<string name="revanced_hide_join_membership_button_summary_on">가입 버튼이 숨겨집니다</string>
|
||||||
<string name="revanced_hide_join_membership_button_summary_off">버튼이 표시됩니다</string>
|
<string name="revanced_hide_join_membership_button_summary_off">가입 버튼이 표시됩니다</string>
|
||||||
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
|
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
|
||||||
<string name="revanced_hide_for_you_shelf_title">채널 프로필에서 추천 선반 숨기기</string>
|
<string name="revanced_hide_for_you_shelf_title">채널 프로필에서 추천 선반 숨기기</string>
|
||||||
<string name="revanced_hide_for_you_shelf_summary_on">선반이 숨겨집니다</string>
|
<string name="revanced_hide_for_you_shelf_summary_on">추천 선반이 숨겨집니다</string>
|
||||||
<string name="revanced_hide_for_you_shelf_summary_off">선반이 표시됩니다</string>
|
<string name="revanced_hide_for_you_shelf_summary_off">추천 선반이 표시됩니다</string>
|
||||||
<!-- 'Notify me' should be translated using the same localized wording YouTube displays.
|
<!-- 'Notify me' should be translated using the same localized wording YouTube displays.
|
||||||
This item appear in the subscription feed for future livestreams or unreleased videos. -->
|
This item appear in the subscription feed for future livestreams or unreleased videos. -->
|
||||||
<string name="revanced_hide_notify_me_button_title">\'알림 받기\' 버튼 숨기기</string>
|
<string name="revanced_hide_notify_me_button_title">\'알림 받기\' 버튼 숨기기</string>
|
||||||
<string name="revanced_hide_notify_me_button_summary_on">버튼이 숨겨집니다</string>
|
<string name="revanced_hide_notify_me_button_summary_on">\'알림 받기\' 버튼이 숨겨집니다</string>
|
||||||
<string name="revanced_hide_notify_me_button_summary_off">버튼이 표시됩니다</string>
|
<string name="revanced_hide_notify_me_button_summary_off">\'알림 받기\' 버튼이 표시됩니다</string>
|
||||||
<!-- 'People also watch' should be translated using the same localized wording YouTube displays. -->
|
<!-- 'People also watch' should be translated using the same localized wording YouTube displays. -->
|
||||||
<string name="revanced_hide_search_result_recommendations_title">\'시청자가 이 동영상도 시청함\' 추천 숨기기</string>
|
<string name="revanced_hide_search_result_recommendations_title">\'시청자가 이 동영상도 시청함\' 추천 숨기기</string>
|
||||||
<string name="revanced_hide_search_result_recommendations_summary_on">추천이 숨겨집니다</string>
|
<string name="revanced_hide_search_result_recommendations_summary_on">추천이 숨겨집니다</string>
|
||||||
@@ -156,8 +158,8 @@ Second \"item\" text"</string>
|
|||||||
<!-- 'Show more' should be translated with the same localized wording that YouTube displays.
|
<!-- 'Show more' should be translated with the same localized wording that YouTube displays.
|
||||||
This button usually appears when searching for a YT creator. -->
|
This button usually appears when searching for a YT creator. -->
|
||||||
<string name="revanced_hide_show_more_button_title">\'자세히 보기\' 버튼 숨기기</string>
|
<string name="revanced_hide_show_more_button_title">\'자세히 보기\' 버튼 숨기기</string>
|
||||||
<string name="revanced_hide_show_more_button_summary_on">버튼이 숨겨집니다</string>
|
<string name="revanced_hide_show_more_button_summary_on">\'자세히 보기\' 버튼이 숨겨집니다</string>
|
||||||
<string name="revanced_hide_show_more_button_summary_off">버튼이 표시됩니다</string>
|
<string name="revanced_hide_show_more_button_summary_off">\'자세히 보기\' 버튼이 표시됩니다</string>
|
||||||
<string name="revanced_hide_timed_reactions_title">실시간 이모티콘 리액션 숨기기</string>
|
<string name="revanced_hide_timed_reactions_title">실시간 이모티콘 리액션 숨기기</string>
|
||||||
<string name="revanced_hide_timed_reactions_summary_on">실시간 이모티콘 리액션이 숨겨집니다</string>
|
<string name="revanced_hide_timed_reactions_summary_on">실시간 이모티콘 리액션이 숨겨집니다</string>
|
||||||
<string name="revanced_hide_timed_reactions_summary_off">실시간 이모티콘 리액션이 표시됩니다</string>
|
<string name="revanced_hide_timed_reactions_summary_off">실시간 이모티콘 리액션이 표시됩니다</string>
|
||||||
@@ -257,7 +259,7 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">플레이어 하단에 있는 관련 동영상에서 카테고리 바가 표시됩니다</string>
|
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">플레이어 하단에 있는 관련 동영상에서 카테고리 바가 표시됩니다</string>
|
||||||
<string name="revanced_comments_screen_title">댓글</string>
|
<string name="revanced_comments_screen_title">댓글</string>
|
||||||
<string name="revanced_comments_screen_summary">댓글 섹션에서 구성요소가 숨기거나 표시할 수 있습니다</string>
|
<string name="revanced_comments_screen_summary">댓글 섹션에서 구성요소가 숨기거나 표시할 수 있습니다</string>
|
||||||
<string name="revanced_hide_comments_chat_summary_title">\'채팅 요약\' 숨기기</string>
|
<string name="revanced_hide_comments_chat_summary_title">실시간 채팅에서 \'채팅 요약\' 숨기기</string>
|
||||||
<string name="revanced_hide_comments_chat_summary_summary_on">\'채팅 요약\'이 숨겨집니다</string>
|
<string name="revanced_hide_comments_chat_summary_summary_on">\'채팅 요약\'이 숨겨집니다</string>
|
||||||
<string name="revanced_hide_comments_chat_summary_summary_off">\'채팅 요약\'이 표시됩니다</string>
|
<string name="revanced_hide_comments_chat_summary_summary_off">\'채팅 요약\'이 표시됩니다</string>
|
||||||
<string name="revanced_hide_comments_by_members_header_title">\'회원별 댓글\' 헤더 숨기기</string>
|
<string name="revanced_hide_comments_by_members_header_title">\'회원별 댓글\' 헤더 숨기기</string>
|
||||||
@@ -677,7 +679,7 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">그린 스크린 버튼이 표시됩니다</string>
|
<string name="revanced_hide_shorts_green_screen_button_summary_off">그린 스크린 버튼이 표시됩니다</string>
|
||||||
<string name="revanced_hide_shorts_hashtag_button_title">해시태그 버튼 숨기기</string>
|
<string name="revanced_hide_shorts_hashtag_button_title">해시태그 버튼 숨기기</string>
|
||||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">해시태그 버튼이 숨겨집니다</string>
|
<string name="revanced_hide_shorts_hashtag_button_summary_on">해시태그 버튼이 숨겨집니다</string>
|
||||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">해시태그 벼튼이 표시됩니다</string>
|
<string name="revanced_hide_shorts_hashtag_button_summary_off">해시태그 버튼이 표시됩니다</string>
|
||||||
<string name="revanced_hide_shorts_search_suggestions_title">검색 추천 숨기기</string>
|
<string name="revanced_hide_shorts_search_suggestions_title">검색 추천 숨기기</string>
|
||||||
<string name="revanced_hide_shorts_search_suggestions_summary_on">검색 추천이 숨겨집니다</string>
|
<string name="revanced_hide_shorts_search_suggestions_summary_on">검색 추천이 숨겨집니다</string>
|
||||||
<string name="revanced_hide_shorts_search_suggestions_summary_off">검색 추천이 표시됩니다</string>
|
<string name="revanced_hide_shorts_search_suggestions_summary_off">검색 추천이 표시됩니다</string>
|
||||||
@@ -1145,13 +1147,13 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_alt_thumbnail_library_title">내 페이지 탭</string>
|
<string name="revanced_alt_thumbnail_library_title">내 페이지 탭</string>
|
||||||
<string name="revanced_alt_thumbnail_player_title">플레이어: 재생목록, 관련 동영상, etc.</string>
|
<string name="revanced_alt_thumbnail_player_title">플레이어: 재생목록, 관련 동영상, etc.</string>
|
||||||
<string name="revanced_alt_thumbnail_search_title">검색 결과</string>
|
<string name="revanced_alt_thumbnail_search_title">검색 결과</string>
|
||||||
<string name="revanced_alt_thumbnail_options_entry_1">기본 썸네일</string>
|
<string name="revanced_alt_thumbnail_options_entry_1">원본 썸네일</string>
|
||||||
<string name="revanced_alt_thumbnail_options_entry_2">DeArrow & 기본 썸네일</string>
|
<string name="revanced_alt_thumbnail_options_entry_2">DeArrow & 원본 썸네일</string>
|
||||||
<string name="revanced_alt_thumbnail_options_entry_3">DeArrow & 스틸 컷 썸네일</string>
|
<string name="revanced_alt_thumbnail_options_entry_3">DeArrow & 스틸 컷 썸네일</string>
|
||||||
<string name="revanced_alt_thumbnail_options_entry_4">스틸 컷 썸네일</string>
|
<string name="revanced_alt_thumbnail_options_entry_4">스틸 컷 썸네일</string>
|
||||||
<string name="revanced_alt_thumbnail_dearrow_about_summary">"DeArrow는 YouTube 동영상에 크라우드 소싱된 썸네일을 제공합니다. 이러한 썸네일은 YouTube에서 제공하는 썸네일보다 관련성이 높은 경우가 많습니다
|
<string name="revanced_alt_thumbnail_dearrow_about_summary">"DeArrow는 YouTube 동영상에 크라우드 소싱된 썸네일을 제공합니다. 이러한 썸네일은 YouTube에서 제공하는 썸네일보다 관련성이 높은 경우가 많습니다
|
||||||
|
|
||||||
이 설정을 활성화하면 동영상 URL이 API 서버로 전송되며, 다른 데이터는 전송되지 않습니다. 동영상에 DeArrow 썸네일이 없는 경우에는 기본 썸네일 또는 스틸 컷 썸네일이 표시됩니다
|
이 설정을 활성화하면 동영상 URL이 API 서버로 전송되며, 다른 데이터는 전송되지 않습니다. 동영상에 DeArrow 썸네일이 없는 경우에는 원본 썸네일 또는 스틸 컷 썸네일이 표시됩니다
|
||||||
|
|
||||||
DeArrow에 대해 자세히 알아보려면 여기를 누르세요"</string>
|
DeArrow에 대해 자세히 알아보려면 여기를 누르세요"</string>
|
||||||
<string name="revanced_alt_thumbnail_dearrow_connection_toast_title">API를 사용할 수 없을 때, 팝업 메시지 표시하기</string>
|
<string name="revanced_alt_thumbnail_dearrow_connection_toast_title">API를 사용할 수 없을 때, 팝업 메시지 표시하기</string>
|
||||||
@@ -1293,8 +1295,8 @@ AVC의 최대 화질 값은 1080p이며, OPUS 오디오 코덱을 사용할 수
|
|||||||
• 동영상이 1초 일찍 종료될 수 있습니다"</string>
|
• 동영상이 1초 일찍 종료될 수 있습니다"</string>
|
||||||
<string name="revanced_spoof_video_streams_about_android_vr_title">\'Android VR로 변경\'의 알려진 문제점</string>
|
<string name="revanced_spoof_video_streams_about_android_vr_title">\'Android VR로 변경\'의 알려진 문제점</string>
|
||||||
<string name="revanced_spoof_video_streams_about_android_vr_summary">"• Kids 동영상이 재생되지 않을 수 있습니다
|
<string name="revanced_spoof_video_streams_about_android_vr_summary">"• Kids 동영상이 재생되지 않을 수 있습니다
|
||||||
• 일부 라이브 스트림이 처음부터 재생될 수 있습니다
|
• 오디오 트랙 메뉴가 표시되지 않습니다
|
||||||
• 동영상이 1초 일찍 종료될 수 있습니다"</string>
|
• 안정적인 볼륨 메뉴가 비활성화된 채로 잠겨있습니다"</string>
|
||||||
<string name="revanced_spoof_video_streams_language_title">기본 오디오 트랙 언어</string>
|
<string name="revanced_spoof_video_streams_language_title">기본 오디오 트랙 언어</string>
|
||||||
<string name="revanced_spoof_video_streams_language_DEFAULT">앱 언어</string>
|
<string name="revanced_spoof_video_streams_language_DEFAULT">앱 언어</string>
|
||||||
<string name="revanced_spoof_video_streams_language_AR">아랍어</string>
|
<string name="revanced_spoof_video_streams_language_AR">아랍어</string>
|
||||||
|
|||||||
@@ -79,7 +79,6 @@ Palieskite mygtuką Tęsti ir leiskite optimizavimo pakeitimus."</string>
|
|||||||
<string name="revanced_settings_screen_03_feed_title">Naujienos</string>
|
<string name="revanced_settings_screen_03_feed_title">Naujienos</string>
|
||||||
<string name="revanced_settings_screen_04_player_title">Grotuvas</string>
|
<string name="revanced_settings_screen_04_player_title">Grotuvas</string>
|
||||||
<string name="revanced_settings_screen_05_general_title">Bendras išdėstymas</string>
|
<string name="revanced_settings_screen_05_general_title">Bendras išdėstymas</string>
|
||||||
<string name="revanced_settings_screen_06_shorts_title">Šortai</string>
|
|
||||||
<string name="revanced_settings_screen_07_seekbar_title">Paieškos juosta</string>
|
<string name="revanced_settings_screen_07_seekbar_title">Paieškos juosta</string>
|
||||||
<string name="revanced_settings_screen_08_swipe_controls_title">Braukimo valdikliai</string>
|
<string name="revanced_settings_screen_08_swipe_controls_title">Braukimo valdikliai</string>
|
||||||
<string name="revanced_settings_screen_11_misc_title">Įvairūs</string>
|
<string name="revanced_settings_screen_11_misc_title">Įvairūs</string>
|
||||||
|
|||||||
@@ -79,7 +79,6 @@ Nospiediet turpināt pogu un atļaujiet optimizācijas izmaiņas."</string>
|
|||||||
<string name="revanced_settings_screen_03_feed_title">Lente</string>
|
<string name="revanced_settings_screen_03_feed_title">Lente</string>
|
||||||
<string name="revanced_settings_screen_04_player_title">Atskaņotājs</string>
|
<string name="revanced_settings_screen_04_player_title">Atskaņotājs</string>
|
||||||
<string name="revanced_settings_screen_05_general_title">Vispārīga izkārtojums</string>
|
<string name="revanced_settings_screen_05_general_title">Vispārīga izkārtojums</string>
|
||||||
<string name="revanced_settings_screen_06_shorts_title">Šorti</string>
|
|
||||||
<string name="revanced_settings_screen_07_seekbar_title">Slīdņu skala</string>
|
<string name="revanced_settings_screen_07_seekbar_title">Slīdņu skala</string>
|
||||||
<string name="revanced_settings_screen_08_swipe_controls_title">Pārvelciet vadīklas</string>
|
<string name="revanced_settings_screen_08_swipe_controls_title">Pārvelciet vadīklas</string>
|
||||||
<string name="revanced_settings_screen_11_misc_title">Dažādi</string>
|
<string name="revanced_settings_screen_11_misc_title">Dažādi</string>
|
||||||
|
|||||||
@@ -79,7 +79,6 @@ Naciśnij przycisk Kontynuuj i zezwól na zmiany optymalizacji."</string>
|
|||||||
<string name="revanced_settings_screen_03_feed_title">Strona główna</string>
|
<string name="revanced_settings_screen_03_feed_title">Strona główna</string>
|
||||||
<string name="revanced_settings_screen_04_player_title">Odtwarzacz</string>
|
<string name="revanced_settings_screen_04_player_title">Odtwarzacz</string>
|
||||||
<string name="revanced_settings_screen_05_general_title">Ogólny układ</string>
|
<string name="revanced_settings_screen_05_general_title">Ogólny układ</string>
|
||||||
<string name="revanced_settings_screen_06_shorts_title">Shorts</string>
|
|
||||||
<string name="revanced_settings_screen_07_seekbar_title">Pasek postępu filmu</string>
|
<string name="revanced_settings_screen_07_seekbar_title">Pasek postępu filmu</string>
|
||||||
<string name="revanced_settings_screen_08_swipe_controls_title">Sterowanie przesuwaniem</string>
|
<string name="revanced_settings_screen_08_swipe_controls_title">Sterowanie przesuwaniem</string>
|
||||||
<string name="revanced_settings_screen_11_misc_title">Pozostałe</string>
|
<string name="revanced_settings_screen_11_misc_title">Pozostałe</string>
|
||||||
|
|||||||
@@ -79,7 +79,6 @@ Toque no botão continuar e permita as mudanças de otimização. "</string>
|
|||||||
<string name="revanced_settings_screen_03_feed_title">Feed</string>
|
<string name="revanced_settings_screen_03_feed_title">Feed</string>
|
||||||
<string name="revanced_settings_screen_04_player_title">Reprodutor</string>
|
<string name="revanced_settings_screen_04_player_title">Reprodutor</string>
|
||||||
<string name="revanced_settings_screen_05_general_title">Layout geral</string>
|
<string name="revanced_settings_screen_05_general_title">Layout geral</string>
|
||||||
<string name="revanced_settings_screen_06_shorts_title">Shorts</string>
|
|
||||||
<string name="revanced_settings_screen_07_seekbar_title">Barra de busca</string>
|
<string name="revanced_settings_screen_07_seekbar_title">Barra de busca</string>
|
||||||
<string name="revanced_settings_screen_08_swipe_controls_title">Controles deslizantes</string>
|
<string name="revanced_settings_screen_08_swipe_controls_title">Controles deslizantes</string>
|
||||||
<string name="revanced_settings_screen_11_misc_title">Outras configurações</string>
|
<string name="revanced_settings_screen_11_misc_title">Outras configurações</string>
|
||||||
|
|||||||
@@ -79,7 +79,6 @@ Nhấn nút tiếp tục và cho phép thay đổi tối ưu hóa."</string>
|
|||||||
<string name="revanced_settings_screen_03_feed_title">Recomendações</string>
|
<string name="revanced_settings_screen_03_feed_title">Recomendações</string>
|
||||||
<string name="revanced_settings_screen_04_player_title">Leitor</string>
|
<string name="revanced_settings_screen_04_player_title">Leitor</string>
|
||||||
<string name="revanced_settings_screen_05_general_title">Interface geral</string>
|
<string name="revanced_settings_screen_05_general_title">Interface geral</string>
|
||||||
<string name="revanced_settings_screen_06_shorts_title">Shorts</string>
|
|
||||||
<string name="revanced_settings_screen_07_seekbar_title">Barra de pesquisa</string>
|
<string name="revanced_settings_screen_07_seekbar_title">Barra de pesquisa</string>
|
||||||
<string name="revanced_settings_screen_08_swipe_controls_title">Controlos por Gestos</string>
|
<string name="revanced_settings_screen_08_swipe_controls_title">Controlos por Gestos</string>
|
||||||
<string name="revanced_settings_screen_11_misc_title">Outros</string>
|
<string name="revanced_settings_screen_11_misc_title">Outros</string>
|
||||||
|
|||||||
@@ -516,15 +516,15 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_navigation_button_labels_title">Подписи кнопок навигации</string>
|
<string name="revanced_hide_navigation_button_labels_title">Подписи кнопок навигации</string>
|
||||||
<string name="revanced_hide_navigation_button_labels_summary_on">Подписи кнопок навигации скрыты</string>
|
<string name="revanced_hide_navigation_button_labels_summary_on">Подписи кнопок навигации скрыты</string>
|
||||||
<string name="revanced_hide_navigation_button_labels_summary_off">Подписи кнопок навигации отображены</string>
|
<string name="revanced_hide_navigation_button_labels_summary_off">Подписи кнопок навигации отображены</string>
|
||||||
<string name="revanced_disable_translucent_status_bar_title">Отключить полупрозрачную строку состояния</string>
|
<string name="revanced_disable_translucent_status_bar_title">Полупрозрачная строка состояния</string>
|
||||||
<string name="revanced_disable_translucent_status_bar_summary_on">Строка состояния непрозрачна</string>
|
<string name="revanced_disable_translucent_status_bar_summary_on">Строка состояния непрозрачна</string>
|
||||||
<string name="revanced_disable_translucent_status_bar_summary_off">Строка состояния непрозрачна или полупрозрачна</string>
|
<string name="revanced_disable_translucent_status_bar_summary_off">Строка состояния непрозрачна или полупрозрачна</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_light_title">Отключить полупрозрачную светлую панель навигации</string>
|
<string name="revanced_disable_translucent_navigation_bar_light_title">Полупрозрачная светлая панель</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_on">Светлая полупрозрачная панель навигации не будет отображаться</string>
|
<string name="revanced_disable_translucent_navigation_bar_light_summary_on">Панель навигации при светлой теме непрозрачна</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_off">Панель навигации в светлом режиме непрозрачна или полупрозрачна</string>
|
<string name="revanced_disable_translucent_navigation_bar_light_summary_off">Панель навигации при светлой теме непрозрачна или полупрозрачна</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_dark_title">Отключить темную полупрозрачную панель навигации</string>
|
<string name="revanced_disable_translucent_navigation_bar_dark_title">Полупрозрачная темная панель</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_on">Темная полупрозрачная панель навигации не будет отображаться</string>
|
<string name="revanced_disable_translucent_navigation_bar_dark_summary_on">Панель навигации при темной теме непрозрачна</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_off">Панель навигации в темном режиме непрозрачна или полупрозрачна</string>
|
<string name="revanced_disable_translucent_navigation_bar_dark_summary_off">Панель навигации при темной теме непрозрачна или полупрозрачна</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.hide.player.flyoutmenupanel.hidePlayerFlyoutMenuPatch">
|
<patch id="layout.hide.player.flyoutmenupanel.hidePlayerFlyoutMenuPatch">
|
||||||
<string name="revanced_hide_player_flyout_title">Выдвижное меню плеера</string>
|
<string name="revanced_hide_player_flyout_title">Выдвижное меню плеера</string>
|
||||||
@@ -654,7 +654,7 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_shorts_shop_button_summary_off">Кнопка \"Магазин\" в Shorts отображена</string>
|
<string name="revanced_hide_shorts_shop_button_summary_off">Кнопка \"Магазин\" в Shorts отображена</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_title">Кнопка \"Супер спасибо\"</string>
|
<string name="revanced_hide_shorts_super_thanks_button_title">Кнопка \"Супер спасибо\"</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Кнопка \"Супер спасибо\" скрыта</string>
|
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Кнопка \"Супер спасибо\" скрыта</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Кнопка \"Супер спасибо\" показывается</string>
|
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Кнопка \"Супер спасибо\" отображена</string>
|
||||||
<string name="revanced_hide_shorts_tagged_products_title">Товары с тегом</string>
|
<string name="revanced_hide_shorts_tagged_products_title">Товары с тегом</string>
|
||||||
<string name="revanced_hide_shorts_tagged_products_summary_on">Товары с тегом в Shorts скрыты</string>
|
<string name="revanced_hide_shorts_tagged_products_summary_on">Товары с тегом в Shorts скрыты</string>
|
||||||
<string name="revanced_hide_shorts_tagged_products_summary_off">Товары с тегом в Shorts отображены</string>
|
<string name="revanced_hide_shorts_tagged_products_summary_off">Товары с тегом в Shorts отображены</string>
|
||||||
@@ -736,8 +736,8 @@ Second \"item\" text"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.panels.popup.playerPopupPanelsPatch">
|
<patch id="layout.panels.popup.playerPopupPanelsPatch">
|
||||||
<string name="revanced_hide_player_popup_panels_title">Всплывающие панели плеера</string>
|
<string name="revanced_hide_player_popup_panels_title">Всплывающие панели плеера</string>
|
||||||
<string name="revanced_hide_player_popup_panels_summary_on">Автоматически всплывающие панели (плейлист или живой чат) в плеере скрыты</string>
|
<string name="revanced_hide_player_popup_panels_summary_on">Автоматически всплывающие панели в плеере скрыты</string>
|
||||||
<string name="revanced_hide_player_popup_panels_summary_off">Автоматически всплывающие панели (плейлист или живой чат) в плеере отображены</string>
|
<string name="revanced_hide_player_popup_panels_summary_off">Автоматически всплывающие панели в плеере отображены</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.player.fullscreen.openVideosFullscreen">
|
<patch id="layout.player.fullscreen.openVideosFullscreen">
|
||||||
<string name="revanced_open_videos_fullscreen_portrait_title">Видео в полноэкранном портрете</string>
|
<string name="revanced_open_videos_fullscreen_portrait_title">Видео в полноэкранном портрете</string>
|
||||||
@@ -763,9 +763,9 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_ryd_shorts_summary_on">Дизлайки в Shorts отображены</string>
|
<string name="revanced_ryd_shorts_summary_on">Дизлайки в Shorts отображены</string>
|
||||||
<string name="revanced_ryd_shorts_summary_on_disclaimer">"Дизлайки в Shorts отображены
|
<string name="revanced_ryd_shorts_summary_on_disclaimer">"Дизлайки в Shorts отображены
|
||||||
|
|
||||||
Ограничение: Дизлайки могут не отображаться в режиме инкогнито"</string>
|
Ограничение: дизлайки могут не отображаться в режиме инкогнито"</string>
|
||||||
<string name="revanced_ryd_shorts_summary_off">Дизлайки в Shorts скрыты</string>
|
<string name="revanced_ryd_shorts_summary_off">Дизлайки в Shorts скрыты</string>
|
||||||
<string name="revanced_ryd_dislike_percentage_title">Варианты отображения дизлайков</string>
|
<string name="revanced_ryd_dislike_percentage_title">Стиль отображения дизлайков</string>
|
||||||
<string name="revanced_ryd_dislike_percentage_summary_on">Дизлайки отображаются как проценты</string>
|
<string name="revanced_ryd_dislike_percentage_summary_on">Дизлайки отображаются как проценты</string>
|
||||||
<string name="revanced_ryd_dislike_percentage_summary_off">Дизлайки отображаются как число</string>
|
<string name="revanced_ryd_dislike_percentage_summary_off">Дизлайки отображаются как число</string>
|
||||||
<!-- Translations should use language similar to 'revanced_sb_enable_compact_skip_button' -->
|
<!-- Translations should use language similar to 'revanced_sb_enable_compact_skip_button' -->
|
||||||
@@ -1225,7 +1225,7 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_disable_zoom_haptics_summary_off">Виброотклик при масштабировании включен</string>
|
<string name="revanced_disable_zoom_haptics_summary_off">Виброотклик при масштабировании включен</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.audio.forceOriginalAudioPatch">
|
<patch id="video.audio.forceOriginalAudioPatch">
|
||||||
<string name="revanced_force_original_audio_title">Использовать оригинальный звук</string>
|
<string name="revanced_force_original_audio_title">Принудительно оригинальный звук</string>
|
||||||
<string name="revanced_force_original_audio_summary_on">Используется оригинальный звук</string>
|
<string name="revanced_force_original_audio_summary_on">Используется оригинальный звук</string>
|
||||||
<string name="revanced_force_original_audio_summary_off">Используется звук по умолчанию</string>
|
<string name="revanced_force_original_audio_summary_off">Используется звук по умолчанию</string>
|
||||||
</patch>
|
</patch>
|
||||||
@@ -1290,8 +1290,8 @@ Second \"item\" text"</string>
|
|||||||
|
|
||||||
AVC имеет максимальное разрешение 1080p, аудио кодек Opus недоступен, и воспроизведение видео будет использовать больше интернет данных в сравнении с VP9 или AV1."</string>
|
AVC имеет максимальное разрешение 1080p, аудио кодек Opus недоступен, и воспроизведение видео будет использовать больше интернет данных в сравнении с VP9 или AV1."</string>
|
||||||
<string name="revanced_spoof_video_streams_about_ios_title">Побочные эффекты подмены на iOS</string>
|
<string name="revanced_spoof_video_streams_about_ios_title">Побочные эффекты подмены на iOS</string>
|
||||||
<string name="revanced_spoof_video_streams_about_ios_summary">"\u2022 Язеное на неявершенные параметры для детей
|
<string name="revanced_spoof_video_streams_about_ios_summary">"• Видео для детей могут не воспроизводиться
|
||||||
\u2022 Видео завершаются 1 секундоа раньше"</string>
|
• Видео заканчиваются на 1 секунду раньше"</string>
|
||||||
<string name="revanced_spoof_video_streams_about_android_vr_title">Побочные эффекты подмены на Android VR</string>
|
<string name="revanced_spoof_video_streams_about_android_vr_title">Побочные эффекты подмены на Android VR</string>
|
||||||
<string name="revanced_spoof_video_streams_about_android_vr_summary">"• Видео для детей могут не воспроизводиться
|
<string name="revanced_spoof_video_streams_about_android_vr_summary">"• Видео для детей могут не воспроизводиться
|
||||||
• Меню выбора аудиодорожки отсутствует
|
• Меню выбора аудиодорожки отсутствует
|
||||||
@@ -1359,12 +1359,12 @@ AVC имеет максимальное разрешение 1080p, аудио
|
|||||||
<string name="revanced_block_audio_ads_summary_off">Аудиореклама разблокирована</string>
|
<string name="revanced_block_audio_ads_summary_off">Аудиореклама разблокирована</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="ad.embedded.embeddedAdsPatch">
|
<patch id="ad.embedded.embeddedAdsPatch">
|
||||||
<string name="revanced_embedded_ads_service_unavailable">%s недоступен, реклама может показываться. Попробуйте изменить службу блокировки рекламы в настройках.</string>
|
<string name="revanced_embedded_ads_service_unavailable">%s недоступен, реклама может отображаться. Попробуйте изменить службу блокировки рекламы в настройках.</string>
|
||||||
<string name="revanced_embedded_ads_service_failed">%s вернул ошибку, реклама может показываться. Попробуйте изменить службу блокировки рекламы в настройках.</string>
|
<string name="revanced_embedded_ads_service_failed">%s вернул ошибку, реклама может отображаться. Попробуйте изменить службу блокировки рекламы в настройках.</string>
|
||||||
<string name="revanced_block_embedded_ads_title">Встроенная реклама в видео</string>
|
<string name="revanced_block_embedded_ads_title">Встроенная реклама в видео</string>
|
||||||
<string name="revanced_block_embedded_ads_entry_1">Отключено</string>
|
<string name="revanced_block_embedded_ads_entry_1">Отключено</string>
|
||||||
<string name="revanced_block_embedded_ads_entry_2">Luminous proxy</string>
|
<string name="revanced_block_embedded_ads_entry_2">Luminous прокси</string>
|
||||||
<string name="revanced_block_embedded_ads_entry_3">PurpleAdBlock proxy</string>
|
<string name="revanced_block_embedded_ads_entry_3">PurpleAdBlock прокси</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="ad.video.videoAdsPatch">
|
<patch id="ad.video.videoAdsPatch">
|
||||||
<string name="revanced_block_video_ads_title">Реклама в видео</string>
|
<string name="revanced_block_video_ads_title">Реклама в видео</string>
|
||||||
|
|||||||
@@ -516,15 +516,15 @@ Napomena: Omogućavanje ovoga prisilno sakriva i video oglase"</string>
|
|||||||
<string name="revanced_hide_navigation_button_labels_title">Sakrij oznake dugmadi za navigaciju</string>
|
<string name="revanced_hide_navigation_button_labels_title">Sakrij oznake dugmadi za navigaciju</string>
|
||||||
<string name="revanced_hide_navigation_button_labels_summary_on">Oznake dugmadi za navigaciju su skrivene</string>
|
<string name="revanced_hide_navigation_button_labels_summary_on">Oznake dugmadi za navigaciju su skrivene</string>
|
||||||
<string name="revanced_hide_navigation_button_labels_summary_off">Oznake dugmadi za navigaciju su prikazane</string>
|
<string name="revanced_hide_navigation_button_labels_summary_off">Oznake dugmadi za navigaciju su prikazane</string>
|
||||||
<string name="revanced_disable_translucent_status_bar_title">Onemogući prozirnu traku stanja</string>
|
<string name="revanced_disable_translucent_status_bar_title">Onemogući prozirnu statusnu traku</string>
|
||||||
<string name="revanced_disable_translucent_status_bar_summary_on">Statusna traka je neprozirna</string>
|
<string name="revanced_disable_translucent_status_bar_summary_on">Statusna traka je neprozirna</string>
|
||||||
<string name="revanced_disable_translucent_status_bar_summary_off">Statusna traka je neprozirna ili prozirna</string>
|
<string name="revanced_disable_translucent_status_bar_summary_off">Statusna traka je neprozirna ili prozirna</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_light_title">Onemogući prozirnu svetlu traku</string>
|
<string name="revanced_disable_translucent_navigation_bar_light_title">Onemogući svetlu prozirnu traku za navigaciju</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_on">Svetla traka za navigaciju je neprozirna</string>
|
<string name="revanced_disable_translucent_navigation_bar_light_summary_on">Traka za navigaciju u svetlom režimu je neprozirna</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_off">Navigacijska traka u svetlom modu je neprozirna ili prozirna</string>
|
<string name="revanced_disable_translucent_navigation_bar_light_summary_off">Traka za navigaciju u svetlom režimu je neprozirna ili prozirna</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_dark_title">Onemogući tamnu prozirnu traku</string>
|
<string name="revanced_disable_translucent_navigation_bar_dark_title">Onemogući tamnu prozirnu traku za navigaciju</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_on">Tamna traka za navigaciju je neprozirna</string>
|
<string name="revanced_disable_translucent_navigation_bar_dark_summary_on">Traka za navigaciju u tamnom režimu je neprozirna</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_off">Navigacijska traka u tamnom modu je neprozirna ili prozirna</string>
|
<string name="revanced_disable_translucent_navigation_bar_dark_summary_off">Traka za navigaciju u tamnom režimu je neprozirna ili prozirna</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.hide.player.flyoutmenupanel.hidePlayerFlyoutMenuPatch">
|
<patch id="layout.hide.player.flyoutmenupanel.hidePlayerFlyoutMenuPatch">
|
||||||
<string name="revanced_hide_player_flyout_title">Padajući meni</string>
|
<string name="revanced_hide_player_flyout_title">Padajući meni</string>
|
||||||
@@ -1288,6 +1288,8 @@ Reprodukcija videa možda neće raditi"</string>
|
|||||||
|
|
||||||
AVC ima maksimalnu rezoluciju od 1080p, audio kodek Opus nije dostupan, a reprodukcija videa će koristiti više internet podataka nego VP9 ili AV1."</string>
|
AVC ima maksimalnu rezoluciju od 1080p, audio kodek Opus nije dostupan, a reprodukcija videa će koristiti više internet podataka nego VP9 ili AV1."</string>
|
||||||
<string name="revanced_spoof_video_streams_about_ios_title">Neželjeni efekti lažiranja na iOS</string>
|
<string name="revanced_spoof_video_streams_about_ios_title">Neželjeni efekti lažiranja na iOS</string>
|
||||||
|
<string name="revanced_spoof_video_streams_about_ios_summary">"• Privatni dečji videi se možda neće puštati
|
||||||
|
• Videi će se završiti 1 sekundu ranije"</string>
|
||||||
<string name="revanced_spoof_video_streams_about_android_vr_title">Neželjeni efekti lažiranja na Android VR</string>
|
<string name="revanced_spoof_video_streams_about_android_vr_title">Neželjeni efekti lažiranja na Android VR</string>
|
||||||
<string name="revanced_spoof_video_streams_about_android_vr_summary">"• Dečji videi se možda neće puštati
|
<string name="revanced_spoof_video_streams_about_android_vr_summary">"• Dečji videi se možda neće puštati
|
||||||
• Strimovi uživo počinju od početka
|
• Strimovi uživo počinju od početka
|
||||||
|
|||||||
@@ -79,7 +79,6 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_settings_screen_03_feed_title">Фид</string>
|
<string name="revanced_settings_screen_03_feed_title">Фид</string>
|
||||||
<string name="revanced_settings_screen_04_player_title">Плејер</string>
|
<string name="revanced_settings_screen_04_player_title">Плејер</string>
|
||||||
<string name="revanced_settings_screen_05_general_title">Општи изглед</string>
|
<string name="revanced_settings_screen_05_general_title">Општи изглед</string>
|
||||||
<string name="revanced_settings_screen_06_shorts_title">Шорцеви</string>
|
|
||||||
<string name="revanced_settings_screen_07_seekbar_title">Трака за премотавање</string>
|
<string name="revanced_settings_screen_07_seekbar_title">Трака за премотавање</string>
|
||||||
<string name="revanced_settings_screen_08_swipe_controls_title">Контроле превлачења</string>
|
<string name="revanced_settings_screen_08_swipe_controls_title">Контроле превлачења</string>
|
||||||
<string name="revanced_settings_screen_11_misc_title">Разно</string>
|
<string name="revanced_settings_screen_11_misc_title">Разно</string>
|
||||||
@@ -516,15 +515,15 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_navigation_button_labels_title">Сакриј ознаке дугмади за навигацију</string>
|
<string name="revanced_hide_navigation_button_labels_title">Сакриј ознаке дугмади за навигацију</string>
|
||||||
<string name="revanced_hide_navigation_button_labels_summary_on">Ознаке дугмади за навигацију су скривене</string>
|
<string name="revanced_hide_navigation_button_labels_summary_on">Ознаке дугмади за навигацију су скривене</string>
|
||||||
<string name="revanced_hide_navigation_button_labels_summary_off">Ознаке дугмади за навигацију су приказане</string>
|
<string name="revanced_hide_navigation_button_labels_summary_off">Ознаке дугмади за навигацију су приказане</string>
|
||||||
<string name="revanced_disable_translucent_status_bar_title">Онемогући провидну статусну траку</string>
|
<string name="revanced_disable_translucent_status_bar_title">Онемогући прозирну статусну траку</string>
|
||||||
<string name="revanced_disable_translucent_status_bar_summary_on">Statusna traka je neprozirna</string>
|
<string name="revanced_disable_translucent_status_bar_summary_on">Статусна трака је непрозирна</string>
|
||||||
<string name="revanced_disable_translucent_status_bar_summary_off">Statusna traka je neprozirna ili providna</string>
|
<string name="revanced_disable_translucent_status_bar_summary_off">Статусна трака је непрозирна или прозирна</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_light_title">Онемогући светлу провидну траку</string>
|
<string name="revanced_disable_translucent_navigation_bar_light_title">Онемогући светлу прозирну траку за навигацију</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_on">Светли режим траке за навигацију је непрозиран</string>
|
<string name="revanced_disable_translucent_navigation_bar_light_summary_on">Трака за навигацију у светлом режиму је непрозирна</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_off">Navigaciona traka u svetlom režimu je neprozirna ili providna</string>
|
<string name="revanced_disable_translucent_navigation_bar_light_summary_off">Трака за навигацију у светлом режиму је непрозирна или прозирна</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_dark_title">Onemogući providnu tamnu traku</string>
|
<string name="revanced_disable_translucent_navigation_bar_dark_title">Онемогући тамну прозирну траку за навигацију</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_on">Тамни режим траке за навигацију је непрозиран</string>
|
<string name="revanced_disable_translucent_navigation_bar_dark_summary_on">Трака за навигацију у тамном режиму је непрозирна</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_off">Navigaciona traka u tamnom režimu je neprozirna ili providna</string>
|
<string name="revanced_disable_translucent_navigation_bar_dark_summary_off">Трака за навигацију у тамном режиму је непрозирна или прозирна</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.hide.player.flyoutmenupanel.hidePlayerFlyoutMenuPatch">
|
<patch id="layout.hide.player.flyoutmenupanel.hidePlayerFlyoutMenuPatch">
|
||||||
<string name="revanced_hide_player_flyout_title">Падајући мени</string>
|
<string name="revanced_hide_player_flyout_title">Падајући мени</string>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -79,7 +79,6 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_settings_screen_03_feed_title">Стрічка</string>
|
<string name="revanced_settings_screen_03_feed_title">Стрічка</string>
|
||||||
<string name="revanced_settings_screen_04_player_title">Плеєр</string>
|
<string name="revanced_settings_screen_04_player_title">Плеєр</string>
|
||||||
<string name="revanced_settings_screen_05_general_title">Загальні налаштування</string>
|
<string name="revanced_settings_screen_05_general_title">Загальні налаштування</string>
|
||||||
<string name="revanced_settings_screen_06_shorts_title">Шорти</string>
|
|
||||||
<string name="revanced_settings_screen_07_seekbar_title">Панель прогресу</string>
|
<string name="revanced_settings_screen_07_seekbar_title">Панель прогресу</string>
|
||||||
<string name="revanced_settings_screen_08_swipe_controls_title">Керування жестами</string>
|
<string name="revanced_settings_screen_08_swipe_controls_title">Керування жестами</string>
|
||||||
<string name="revanced_settings_screen_11_misc_title">Різне</string>
|
<string name="revanced_settings_screen_11_misc_title">Різне</string>
|
||||||
@@ -519,10 +518,10 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_disable_translucent_status_bar_title">Вимкнути напівпрозорість рядка стану</string>
|
<string name="revanced_disable_translucent_status_bar_title">Вимкнути напівпрозорість рядка стану</string>
|
||||||
<string name="revanced_disable_translucent_status_bar_summary_on">Рядок стану непрозорий</string>
|
<string name="revanced_disable_translucent_status_bar_summary_on">Рядок стану непрозорий</string>
|
||||||
<string name="revanced_disable_translucent_status_bar_summary_off">Рядок стану непрозорий або напівпрозорий</string>
|
<string name="revanced_disable_translucent_status_bar_summary_off">Рядок стану непрозорий або напівпрозорий</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_light_title">Вимкнути світлу напівпрозору панель</string>
|
<string name="revanced_disable_translucent_navigation_bar_light_title">Вимкнути напівпрозорість світлої панелі</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_on">Панель навігації світлого режиму непрозора</string>
|
<string name="revanced_disable_translucent_navigation_bar_light_summary_on">Панель навігації світлого режиму непрозора</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_off">Панель навігації світлого режиму непрозора або напівпрозора</string>
|
<string name="revanced_disable_translucent_navigation_bar_light_summary_off">Панель навігації світлого режиму непрозора або напівпрозора</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_dark_title">Вимкнути темну напівпрозору панель</string>
|
<string name="revanced_disable_translucent_navigation_bar_dark_title">Вимкнути напівпрозорість темної панелі</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_on">Панель навігації темного режиму непрозора</string>
|
<string name="revanced_disable_translucent_navigation_bar_dark_summary_on">Панель навігації темного режиму непрозора</string>
|
||||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_off">Панель навігації темного режиму непрозора або напівпрозора</string>
|
<string name="revanced_disable_translucent_navigation_bar_dark_summary_off">Панель навігації темного режиму непрозора або напівпрозора</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
|||||||
@@ -1201,7 +1201,7 @@ Bật tính năng này có thể mở khóa chất lượng video cao hơn"</str
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||||
<string name="microg_settings_title">Cài đặt GmsCore</string>
|
<string name="microg_settings_title">Cài đặt GmsCore</string>
|
||||||
<string name="microg_settings_summary">Các cài dặt cho GmsCore</string>
|
<string name="microg_settings_summary">Các cài đặt cho GmsCore</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="misc.links.bypassURLRedirectsPatch">
|
<patch id="misc.links.bypassURLRedirectsPatch">
|
||||||
<string name="revanced_bypass_url_redirects_title">Vượt chuyển hướng URL</string>
|
<string name="revanced_bypass_url_redirects_title">Vượt chuyển hướng URL</string>
|
||||||
|
|||||||
@@ -221,6 +221,28 @@
|
|||||||
<item>BROWSE</item>
|
<item>BROWSE</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
</patch>
|
</patch>
|
||||||
|
<patch id="layout.shortsplayer.shortsPlayerTypePatch">
|
||||||
|
<string-array name="revanced_shorts_player_type_legacy_entries">
|
||||||
|
<item>@string/revanced_shorts_player_type_shorts</item>
|
||||||
|
<item>@string/revanced_shorts_player_type_regular_player</item>
|
||||||
|
</string-array>
|
||||||
|
<string-array name="revanced_shorts_player_type_legacy_entry_values">
|
||||||
|
<!-- Enum names from extension -->
|
||||||
|
<item>SHORTS_PLAYER</item>
|
||||||
|
<item>REGULAR_PLAYER</item>
|
||||||
|
</string-array>
|
||||||
|
<string-array name="revanced_shorts_player_type_entries">
|
||||||
|
<item>@string/revanced_shorts_player_type_shorts</item>
|
||||||
|
<item>@string/revanced_shorts_player_type_regular_player</item>
|
||||||
|
<item>@string/revanced_shorts_player_type_regular_player_fullscreen</item>
|
||||||
|
</string-array>
|
||||||
|
<string-array name="revanced_shorts_player_type_entry_values">
|
||||||
|
<!-- Enum names from extension -->
|
||||||
|
<item>SHORTS_PLAYER</item>
|
||||||
|
<item>REGULAR_PLAYER</item>
|
||||||
|
<item>REGULAR_PLAYER_FULLSCREEN</item>
|
||||||
|
</string-array>
|
||||||
|
</patch>
|
||||||
<patch id="layout.thumbnails.alternativeThumbnailsPatch">
|
<patch id="layout.thumbnails.alternativeThumbnailsPatch">
|
||||||
<string-array name="revanced_alt_thumbnail_options_entries">
|
<string-array name="revanced_alt_thumbnail_options_entries">
|
||||||
<item>@string/revanced_alt_thumbnail_options_entry_1</item>
|
<item>@string/revanced_alt_thumbnail_options_entry_1</item>
|
||||||
|
|||||||
@@ -1058,6 +1058,12 @@ If later turned off, it is recommended to clear the app data to prevent UI bugs.
|
|||||||
<string name="revanced_disable_resuming_shorts_player_summary_on">Shorts player will not resume on app startup</string>
|
<string name="revanced_disable_resuming_shorts_player_summary_on">Shorts player will not resume on app startup</string>
|
||||||
<string name="revanced_disable_resuming_shorts_player_summary_off">Shorts player will resume on app startup</string>
|
<string name="revanced_disable_resuming_shorts_player_summary_off">Shorts player will resume on app startup</string>
|
||||||
</patch>
|
</patch>
|
||||||
|
<patch id="layout.shortsplayer.shortsPlayerTypePatch">
|
||||||
|
<string name="revanced_shorts_player_type_title">Open Shorts with</string>
|
||||||
|
<string name="revanced_shorts_player_type_shorts">Shorts player</string>
|
||||||
|
<string name="revanced_shorts_player_type_regular_player">Regular player</string>
|
||||||
|
<string name="revanced_shorts_player_type_regular_player_fullscreen">Regular player fullscreen</string>
|
||||||
|
</patch>
|
||||||
<patch id="layout.shortsautoplay.shortsAutoplayPatch">
|
<patch id="layout.shortsautoplay.shortsAutoplayPatch">
|
||||||
<string name="revanced_shorts_autoplay_title">Autoplay Shorts</string>
|
<string name="revanced_shorts_autoplay_title">Autoplay Shorts</string>
|
||||||
<string name="revanced_shorts_autoplay_summary_on">Shorts will autoplay</string>
|
<string name="revanced_shorts_autoplay_summary_on">Shorts will autoplay</string>
|
||||||
|
|||||||
Reference in New Issue
Block a user