Compare commits

...

13 Commits

Author SHA1 Message Date
semantic-release-bot
545e16913a chore: Release v5.2.0-dev.4 [skip ci]
# [5.2.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.2.0-dev.3...v5.2.0-dev.4) (2024-11-26)

### Bug Fixes

* **YouTube - Playback speed:** Allow long press 2x speed when using custom playback speeds ([#3990](https://github.com/ReVanced/revanced-patches/issues/3990)) ([fafed09](fafed099c5))
2024-11-26 21:16:15 +00:00
LisoUseInAIKyrios
fafed099c5 fix(YouTube - Playback speed): Allow long press 2x speed when using custom playback speeds (#3990) 2024-11-26 22:12:46 +01:00
semantic-release-bot
a65bbebfdb chore: Release v5.2.0-dev.3 [skip ci]
# [5.2.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.2.0-dev.2...v5.2.0-dev.3) (2024-11-26)

### Features

* **VSCO:** Remove non functional `Unlock pro` patch ([1a910a2](1a910a2cf6))
2024-11-26 21:06:29 +00:00
oSumAtrIX
1a910a2cf6 feat(VSCO): Remove non functional Unlock pro patch 2024-11-26 22:03:31 +01:00
semantic-release-bot
6d23a4e000 chore: Release v5.2.0-dev.2 [skip ci]
# [5.2.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.2.0-dev.1...v5.2.0-dev.2) (2024-11-26)

### Bug Fixes

* **YouTube - Settings:** Show navigation back button in setting sub menus ([#3991](https://github.com/ReVanced/revanced-patches/issues/3991)) ([5c3c684](5c3c68406e))
2024-11-26 16:49:10 +00:00
LisoUseInAIKyrios
5c3c68406e fix(YouTube - Settings): Show navigation back button in setting sub menus (#3991) 2024-11-26 20:45:48 +04:00
github-actions[bot]
b0c3709be7 chore: Sync translations (#3993) 2024-11-26 20:45:18 +04:00
LisoUseInAIKyrios
cd19f976e7 chore: Fix redundant patch description 2024-11-26 16:47:36 +04:00
semantic-release-bot
c181135cc1 chore: Release v5.2.0-dev.1 [skip ci]
# [5.2.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.1.1-dev.2...v5.2.0-dev.1) (2024-11-25)

### Features

* **YouTube - Theme:** Apply custom seekbar color to splash screen animation ([#3978](https://github.com/ReVanced/revanced-patches/issues/3978)) ([7f67759](7f6775950e))
2024-11-25 16:52:34 +00:00
LisoUseInAIKyrios
7f6775950e feat(YouTube - Theme): Apply custom seekbar color to splash screen animation (#3978) 2024-11-25 20:49:05 +04:00
github-actions[bot]
4b2abaf17e chore: Sync translations (#3985) 2024-11-25 20:47:23 +04:00
semantic-release-bot
677b18c41a chore: Release v5.1.1-dev.2 [skip ci]
## [5.1.1-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.1.1-dev.1...v5.1.1-dev.2) (2024-11-25)

### Bug Fixes

* **YouTube - Hide Shorts components:** Add missing options to patch ([736b6a9](736b6a96b8))
2024-11-25 15:43:26 +00:00
oSumAtrIX
736b6a96b8 fix(YouTube - Hide Shorts components): Add missing options to patch 2024-11-25 16:40:06 +01:00
37 changed files with 1202 additions and 821 deletions

View File

@@ -1,3 +1,38 @@
# [5.2.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.2.0-dev.3...v5.2.0-dev.4) (2024-11-26)
### Bug Fixes
* **YouTube - Playback speed:** Allow long press 2x speed when using custom playback speeds ([#3990](https://github.com/ReVanced/revanced-patches/issues/3990)) ([79a543a](https://github.com/ReVanced/revanced-patches/commit/79a543a57470638f983862c61270e046f3ac5cb7))
# [5.2.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.2.0-dev.2...v5.2.0-dev.3) (2024-11-26)
### Features
* **VSCO:** Remove non functional `Unlock pro` patch ([4fddb19](https://github.com/ReVanced/revanced-patches/commit/4fddb1930bc7adeee3b60ae9cd346b143e88bd42))
# [5.2.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.2.0-dev.1...v5.2.0-dev.2) (2024-11-26)
### Bug Fixes
* **YouTube - Settings:** Show navigation back button in setting sub menus ([#3991](https://github.com/ReVanced/revanced-patches/issues/3991)) ([e61686c](https://github.com/ReVanced/revanced-patches/commit/e61686c1039ae29e443273e4da4ec63956216841))
# [5.2.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.1.1-dev.2...v5.2.0-dev.1) (2024-11-25)
### Features
* **YouTube - Theme:** Apply custom seekbar color to splash screen animation ([#3978](https://github.com/ReVanced/revanced-patches/issues/3978)) ([98d57e2](https://github.com/ReVanced/revanced-patches/commit/98d57e28af7206099867474b7aa3760cd4fe333f))
## [5.1.1-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.1.1-dev.1...v5.1.1-dev.2) (2024-11-25)
### Bug Fixes
* **YouTube - Hide Shorts components:** Add missing options to patch ([65f62fc](https://github.com/ReVanced/revanced-patches/commit/65f62fcd5ac340616a96542c64faf2af2a60df28))
## [5.1.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.1.0...v5.1.1-dev.1) (2024-11-24)

View File

@@ -1,21 +1,33 @@
package app.revanced.extension.shared.settings.preference;
import static app.revanced.extension.shared.StringRef.str;
import static app.revanced.extension.shared.Utils.getResourceIdentifier;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.preference.*;
import android.util.TypedValue;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toolbar;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.util.Objects;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.settings.BaseSettings;
import app.revanced.extension.shared.settings.BooleanSetting;
import app.revanced.extension.shared.settings.Setting;
import static app.revanced.extension.shared.StringRef.str;
import app.revanced.extension.youtube.ThemeHelper;
@SuppressWarnings("deprecation")
public abstract class AbstractPreferenceFragment extends PreferenceFragment {
@@ -71,6 +83,15 @@ public abstract class AbstractPreferenceFragment extends PreferenceFragment {
}
};
@SuppressLint("UseCompatLoadingForDrawables")
public static Drawable getBackButtonDrawable() {
final int backButtonResource = getResourceIdentifier(ThemeHelper.isDarkTheme()
? "yt_outline_arrow_left_white_24"
: "yt_outline_arrow_left_black_24",
"drawable");
return Utils.getContext().getResources().getDrawable(backButtonResource);
}
/**
* Initialize this instance, and do any custom behavior.
* <p>
@@ -98,7 +119,7 @@ public abstract class AbstractPreferenceFragment extends PreferenceFragment {
showingUserDialogMessage = true;
new AlertDialog.Builder(context)
.setTitle(confirmDialogTitle)
.setMessage(setting.userDialogMessage.toString())
.setMessage(Objects.requireNonNull(setting.userDialogMessage).toString())
.setPositiveButton(android.R.string.ok, (dialog, id) -> {
if (setting.rebootApp) {
showRestartDialog(context);
@@ -261,6 +282,7 @@ public abstract class AbstractPreferenceFragment extends PreferenceFragment {
// causes a callback to the listener even though nothing changed.
initialize();
updateUIToSettingValues();
setPreferenceScreenToolbar(getPreferenceScreen());
preferenceManager.getSharedPreferences().registerOnSharedPreferenceChangeListener(listener);
} catch (Exception ex) {
@@ -273,4 +295,44 @@ public abstract class AbstractPreferenceFragment extends PreferenceFragment {
getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(listener);
super.onDestroy();
}
private void setPreferenceScreenToolbar(PreferenceScreen parentScreen) {
for (int i = 0, preferenceCount = parentScreen.getPreferenceCount(); i < preferenceCount; i++) {
Preference childPreference = parentScreen.getPreference(i);
if (childPreference instanceof PreferenceScreen) {
// Recursively set sub preferences.
setPreferenceScreenToolbar((PreferenceScreen) childPreference);
childPreference.setOnPreferenceClickListener(
childScreen -> {
Dialog preferenceScreenDialog = ((PreferenceScreen) childScreen).getDialog();
ViewGroup rootView = (ViewGroup) preferenceScreenDialog
.findViewById(android.R.id.content)
.getParent();
Toolbar toolbar = new Toolbar(childScreen.getContext());
toolbar.setTitle(childScreen.getTitle());
toolbar.setNavigationIcon(getBackButtonDrawable());
toolbar.setNavigationOnClickListener(view -> preferenceScreenDialog.dismiss());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
final int margin = (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, 16, getResources().getDisplayMetrics()
);
toolbar.setTitleMargin(margin, 0, margin, 0);
}
TextView toolbarTextView = Utils.getChildView(toolbar,
true, TextView.class::isInstance);
if (toolbarTextView != null) {
toolbarTextView.setTextColor(ThemeHelper.getForegroundColor());
}
rootView.addView(toolbar, 0);
return false;
}
);
}
}
}
}

View File

@@ -82,4 +82,12 @@ public class ThemeHelper {
}
return Utils.getResourceColor(colorString);
}
public static int getBackgroundColor() {
return isDarkTheme() ? getDarkThemeColor() : getLightThemeColor();
}
public static int getForegroundColor() {
return isDarkTheme() ? getLightThemeColor() : getDarkThemeColor();
}
}

View File

@@ -1,14 +1,14 @@
package app.revanced.extension.youtube.patches;
import androidx.annotation.NonNull;
import app.revanced.extension.youtube.patches.playback.speed.RememberPlaybackSpeedPatch;
import app.revanced.extension.youtube.shared.VideoState;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import java.lang.ref.WeakReference;
import java.util.Objects;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.youtube.shared.VideoState;
/**
* Hooking class for the current playing video.
* @noinspection unused
@@ -120,6 +120,16 @@ public final class VideoInformation {
}
}
/**
* Injection point.
*/
public static void videoSpeedChanged(float currentVideoSpeed) {
if (playbackSpeed != currentVideoSpeed) {
Logger.printDebug(() -> "Video speed changed: " + currentVideoSpeed);
playbackSpeed = currentVideoSpeed;
}
}
/**
* Injection point.
* Called when user selects a playback speed.
@@ -131,18 +141,6 @@ public final class VideoInformation {
playbackSpeed = userSelectedPlaybackSpeed;
}
/**
* Overrides the current playback speed.
* <p>
* <b> Used exclusively by {@link RememberPlaybackSpeedPatch} </b>
*/
public static void overridePlaybackSpeed(float speedOverride) {
if (playbackSpeed != speedOverride) {
Logger.printDebug(() -> "Overriding playback speed to: " + speedOverride);
playbackSpeed = speedOverride;
}
}
/**
* Injection point.
*

View File

@@ -12,6 +12,8 @@ public final class RememberPlaybackSpeedPatch {
private static final long TOAST_DELAY_MILLISECONDS = 750;
private static volatile boolean newVideoStarted;
private static long lastTimeSpeedChanged;
/**
@@ -19,7 +21,7 @@ public final class RememberPlaybackSpeedPatch {
*/
public static void newVideoStarted(VideoInformation.PlaybackController ignoredPlayerController) {
Logger.printDebug(() -> "newVideoStarted");
VideoInformation.overridePlaybackSpeed(Settings.PLAYBACK_SPEED_DEFAULT.get());
newVideoStarted = true;
}
/**
@@ -29,42 +31,56 @@ public final class RememberPlaybackSpeedPatch {
* @param playbackSpeed The playback speed the user selected
*/
public static void userSelectedPlaybackSpeed(float playbackSpeed) {
if (Settings.REMEMBER_PLAYBACK_SPEED_LAST_SELECTED.get()) {
// With the 0.05x menu, if the speed is set by integrations to higher than 2.0x
// then the menu will allow increasing without bounds but the max speed is
// still capped to under 8.0x.
playbackSpeed = Math.min(playbackSpeed, CustomPlaybackSpeedPatch.PLAYBACK_SPEED_MAXIMUM - 0.05f);
try {
if (Settings.REMEMBER_PLAYBACK_SPEED_LAST_SELECTED.get()) {
// With the 0.05x menu, if the speed is set by integrations to higher than 2.0x
// then the menu will allow increasing without bounds but the max speed is
// still capped to under 8.0x.
playbackSpeed = Math.min(playbackSpeed, CustomPlaybackSpeedPatch.PLAYBACK_SPEED_MAXIMUM - 0.05f);
// Prevent toast spamming if using the 0.05x adjustments.
// Show exactly one toast after the user stops interacting with the speed menu.
final long now = System.currentTimeMillis();
lastTimeSpeedChanged = now;
// Prevent toast spamming if using the 0.05x adjustments.
// Show exactly one toast after the user stops interacting with the speed menu.
final long now = System.currentTimeMillis();
lastTimeSpeedChanged = now;
final float finalPlaybackSpeed = playbackSpeed;
Utils.runOnMainThreadDelayed(() -> {
if (lastTimeSpeedChanged != now) {
// The user made additional speed adjustments and this call is outdated.
return;
}
final float finalPlaybackSpeed = playbackSpeed;
Utils.runOnMainThreadDelayed(() -> {
if (lastTimeSpeedChanged != now) {
// The user made additional speed adjustments and this call is outdated.
return;
}
if (Settings.PLAYBACK_SPEED_DEFAULT.get() == finalPlaybackSpeed) {
// User changed to a different speed and immediately changed back.
// Or the user is going past 8.0x in the glitched out 0.05x menu.
return;
}
Settings.PLAYBACK_SPEED_DEFAULT.save(finalPlaybackSpeed);
if (Settings.PLAYBACK_SPEED_DEFAULT.get() == finalPlaybackSpeed) {
// User changed to a different speed and immediately changed back.
// Or the user is going past 8.0x in the glitched out 0.05x menu.
return;
}
Settings.PLAYBACK_SPEED_DEFAULT.save(finalPlaybackSpeed);
Utils.showToastLong(str("revanced_remember_playback_speed_toast", (finalPlaybackSpeed + "x")));
}, TOAST_DELAY_MILLISECONDS);
Utils.showToastLong(str("revanced_remember_playback_speed_toast", (finalPlaybackSpeed + "x")));
}, TOAST_DELAY_MILLISECONDS);
}
} catch (Exception ex) {
Logger.printException(() -> "userSelectedPlaybackSpeed failure", ex);
}
}
/**
* Injection point.
* Overrides the video speed. Called after video loads, and immediately after user selects a different playback speed
* Overrides the video speed. Called after video loads,
* and immediately after the user selects a different playback speed.
*/
public static float getPlaybackSpeedOverride() {
return VideoInformation.getPlaybackSpeed();
if (newVideoStarted) {
newVideoStarted = false;
final float defaultSpeed = Settings.PLAYBACK_SPEED_DEFAULT.get();
if (defaultSpeed > 0) {
return defaultSpeed;
}
}
return -2.0f;
}
}
}

View File

@@ -2,9 +2,12 @@ package app.revanced.extension.youtube.patches.theme;
import static app.revanced.extension.shared.StringRef.str;
import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.drawable.AnimatedVectorDrawable;
import java.util.Arrays;
import java.util.Locale;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
@@ -16,7 +19,8 @@ public final class SeekbarColorPatch {
private static final boolean SEEKBAR_CUSTOM_COLOR_ENABLED = Settings.SEEKBAR_CUSTOM_COLOR.get();
/**
* Default color of the seekbar.
* Default color of the litho seekbar.
* Differs slightly from the default custom seekbar color setting.
*/
private static final int ORIGINAL_SEEKBAR_COLOR = 0xFFFF0000;
@@ -72,12 +76,76 @@ public final class SeekbarColorPatch {
return seekbarColor;
}
/**
* Injection point
*/
public static boolean playerSeekbarGradientEnabled(boolean original) {
if (SEEKBAR_CUSTOM_COLOR_ENABLED) return false;
return original;
}
/**
* Injection point
*/
public static boolean useLotteLaunchSplashScreen(boolean original) {
Logger.printDebug(() -> "useLotteLaunchSplashScreen original: " + original);
if (SEEKBAR_CUSTOM_COLOR_ENABLED) return false;
return original;
}
private static int colorChannelTo3Bits(int channel8Bits) {
final float channel3Bits = channel8Bits * 7 / 255f;
// If a color channel is near zero, then allow rounding up so values between
// 0x12 and 0x23 will show as 0x24. But always round down when the channel is
// near full saturation, otherwise rounding to nearest will cause all values
// between 0xEC and 0xFE to always show as full saturation (0xFF).
return channel3Bits < 6
? Math.round(channel3Bits)
: (int) channel3Bits;
}
private static String get9BitStyleIdentifier(int color24Bit) {
final int r3 = colorChannelTo3Bits(Color.red(color24Bit));
final int g3 = colorChannelTo3Bits(Color.green(color24Bit));
final int b3 = colorChannelTo3Bits(Color.blue(color24Bit));
return String.format(Locale.US, "splash_seekbar_color_style_%d_%d_%d", r3, g3, b3);
}
/**
* Injection point
*/
public static void setSplashAnimationDrawableTheme(AnimatedVectorDrawable vectorDrawable) {
// Alternatively a ColorMatrixColorFilter can be used to change the color of the drawable
// without using any styles, but a color filter cannot selectively change the seekbar
// while keeping the red YT logo untouched.
// Even if the seekbar color xml value is changed to a completely different color (such as green),
// a color filter still cannot be selectively applied when the drawable has more than 1 color.
try {
String seekbarStyle = get9BitStyleIdentifier(seekbarColor);
Logger.printDebug(() -> "Using splash seekbar style: " + seekbarStyle);
final int styleIdentifierDefault = Utils.getResourceIdentifier(
seekbarStyle,
"style"
);
if (styleIdentifierDefault == 0) {
throw new RuntimeException("Seekbar style not found: " + seekbarStyle);
}
Resources.Theme theme = Utils.getContext().getResources().newTheme();
theme.applyStyle(styleIdentifierDefault, true);
vectorDrawable.applyTheme(theme);
} catch (Exception ex) {
Logger.printException(() -> "setSplashAnimationDrawableTheme failure", ex);
}
}
/**
* Injection point.
*
@@ -189,4 +257,4 @@ public final class SeekbarColorPatch {
private static float clamp(float value, float lower, float upper) {
return Math.max(lower, Math.min(value, upper));
}
}
}

View File

@@ -7,6 +7,7 @@ import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.TextView;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.settings.preference.AbstractPreferenceFragment;
import app.revanced.extension.youtube.ThemeHelper;
import app.revanced.extension.youtube.settings.preference.ReVancedPreferenceFragment;
import app.revanced.extension.youtube.settings.preference.ReturnYouTubeDislikePreferenceFragment;
@@ -39,7 +40,7 @@ public class LicenseActivityHook {
PreferenceFragment fragment;
String toolbarTitleResourceName;
String dataString = licenseActivity.getIntent().getDataString();
String dataString = Objects.requireNonNull(licenseActivity.getIntent().getDataString());
switch (dataString) {
case "revanced_sb_settings_intent":
toolbarTitleResourceName = "revanced_sb_settings_title";
@@ -59,12 +60,14 @@ public class LicenseActivityHook {
}
setToolbarTitle(licenseActivity, toolbarTitleResourceName);
//noinspection deprecation
licenseActivity.getFragmentManager()
.beginTransaction()
.replace(getResourceIdentifier("revanced_settings_fragments", "id"), fragment)
.commit();
} catch (Exception ex) {
Logger.printException(() -> "onCreate failure", ex);
Logger.printException(() -> "initialize failure", ex);
}
}
@@ -80,11 +83,7 @@ public class LicenseActivityHook {
ViewGroup toolbar = activity.findViewById(getToolbarResourceId());
ImageButton imageButton = Objects.requireNonNull(getChildView(toolbar, false,
view -> view instanceof ImageButton));
final int backButtonResource = getResourceIdentifier(ThemeHelper.isDarkTheme()
? "yt_outline_arrow_left_white_24"
: "yt_outline_arrow_left_black_24",
"drawable");
imageButton.setImageDrawable(activity.getResources().getDrawable(backButtonResource));
imageButton.setImageDrawable(AbstractPreferenceFragment.getBackButtonDrawable());
imageButton.setOnClickListener(view -> activity.onBackPressed());
}

View File

@@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M
org.gradle.parallel = true
android.useAndroidX = true
kotlin.code.style = official
version = 5.1.1-dev.1
version = 5.2.0-dev.4

View File

@@ -1328,6 +1328,7 @@ public final class app/revanced/patches/youtube/misc/playservice/VersionCheckPat
public static final fun is_19_36_or_greater ()Z
public static final fun is_19_41_or_greater ()Z
public static final fun is_19_43_or_greater ()Z
public static final fun is_19_46_or_greater ()Z
}
public final class app/revanced/patches/youtube/misc/privacy/RemoveTrackingQueryParameterPatchKt {
@@ -1369,11 +1370,9 @@ public final class app/revanced/patches/youtube/shared/FingerprintsKt {
}
public final class app/revanced/patches/youtube/video/information/VideoInformationPatchKt {
public static final fun getSetPlaybackSpeedClassFieldReference ()Ljava/lang/String;
public static final fun getSetPlaybackSpeedContainerClassFieldReference ()Ljava/lang/String;
public static final fun getSetPlaybackSpeedMethodReference ()Ljava/lang/String;
public static final fun getVideoInformationPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
public static final fun userSelectedPlaybackSpeedHook (Ljava/lang/String;Ljava/lang/String;)V
public static final fun videoSpeedChangedHook (Ljava/lang/String;Ljava/lang/String;)V
public static final fun videoTimeHook (Ljava/lang/String;Ljava/lang/String;)V
}

View File

@@ -3,9 +3,9 @@ package app.revanced.patches.vsco.misc.pro
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.patch.bytecodePatch
@Deprecated("This patch is deprecated because it does not work anymore and will be removed in the future.")
@Suppress("unused")
val unlockProPatch = bytecodePatch(
name = "Unlock pro",
description = "Unlocks pro features.",
) {
compatibleWith("com.vsco.cam"("345"))

View File

@@ -192,6 +192,9 @@ val hideShortsComponentsPatch = bytecodePatch(
),
)
hideShortsAppShortcutOption()
hideShortsWidgetOption()
execute {
// region Hide the Shorts shelf.

View File

@@ -135,8 +135,7 @@ private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/youtube/
@Suppress("unused")
val miniplayerPatch = bytecodePatch(
name = "Miniplayer",
description = "Adds options to change the in app minimized player. " +
"Patching target 19.16+ adds modern miniplayers.",
description = "Adds options to change the in app minimized player."
) {
dependsOn(
sharedExtensionPatch,

View File

@@ -48,3 +48,17 @@ internal val lithoLinearGradientFingerprint = fingerprint {
returns("Landroid/graphics/LinearGradient;")
parameters("F", "F", "F", "F", "[I", "[F")
}
internal const val launchScreenLayoutTypeLotteFeatureFlag = 268507948L
internal val launchScreenLayoutTypeFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR)
returns("V")
custom { method, _ ->
val firstParameter = method.parameterTypes.firstOrNull()
// 19.25 - 19.45
(firstParameter == "Lcom/google/android/apps/youtube/app/watchwhile/MainActivity;"
|| firstParameter == "Landroid/app/Activity;") // 19.46+
&& method.containsLiteralInstruction(launchScreenLayoutTypeLotteFeatureFlag)
}
}

View File

@@ -13,15 +13,24 @@ import app.revanced.patches.shared.misc.mapping.resourceMappings
import app.revanced.patches.youtube.layout.theme.lithoColorHookPatch
import app.revanced.patches.youtube.layout.theme.lithoColorOverrideHook
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
import app.revanced.patches.youtube.misc.playservice.is_19_23_or_greater
import app.revanced.patches.youtube.misc.playservice.is_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.settingsPatch
import app.revanced.patches.youtube.shared.mainActivityOnCreateFingerprint
import app.revanced.util.copyXmlNode
import app.revanced.util.findElementByAttributeValueOrThrow
import app.revanced.util.getReference
import app.revanced.util.indexOfFirstInstructionOrThrow
import app.revanced.util.indexOfFirstLiteralInstructionOrThrow
import app.revanced.util.inputStreamFromBundledResource
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
import org.w3c.dom.Element
import java.io.ByteArrayInputStream
import kotlin.use
internal var reelTimeBarPlayedColorId = -1L
private set
@@ -30,6 +39,8 @@ internal var inlineTimeBarColorizedBarPlayedColorDarkId = -1L
internal var inlineTimeBarPlayedNotHighlightedColorId = -1L
private set
internal const val splashSeekbarColorAttributeName = "splash_custom_seekbar_color"
private val seekbarColorResourcePatch = resourcePatch {
dependsOn(
settingsPatch,
@@ -51,9 +62,8 @@ private val seekbarColorResourcePatch = resourcePatch {
"inline_time_bar_played_not_highlighted_color",
]
// Edit the resume playback drawable and replace the progress bar with a custom drawable
// Modify the resume playback drawable and replace the progress bar with a custom drawable.
document("res/drawable/resume_playback_progressbar_drawable.xml").use { document ->
val layerList = document.getElementsByTagName("layer-list").item(0) as Element
val progressNode = layerList.getElementsByTagName("item").item(1) as Element
if (!progressNode.getAttributeNode("android:id").value.endsWith("progress")) {
@@ -66,9 +76,102 @@ private val seekbarColorResourcePatch = resourcePatch {
)
scaleNode.replaceChild(replacementNode, shapeNode)
}
if (!is_19_25_or_greater) {
return@execute
}
// Add attribute and styles for splash screen custom color.
// Using a style is the only way to selectively change just the seekbar fill color.
//
// Because the style colors must be hard coded for all color possibilities,
// instead of allowing 24 bit color the style is restricted to 9-bit (3 bits per color channel)
// and the style color closest to the users custom color is used for the splash screen.
arrayOf(
inputStreamFromBundledResource("seekbar/values", "attrs.xml")!! to "res/values/attrs.xml",
ByteArrayInputStream(create9BitSeekbarColorStyles().toByteArray()) to "res/values/styles.xml"
).forEach { (source, destination) ->
"resources".copyXmlNode(
document(source),
document(destination),
).close()
}
fun setSplashDrawablePathFillColor(xmlFileNames: Iterable<String>, vararg resourceNames: String) {
xmlFileNames.forEach { xmlFileName ->
document(xmlFileName).use { document ->
resourceNames.forEach { elementId ->
val element = document.childNodes.findElementByAttributeValueOrThrow(
"android:name",
elementId
)
val attribute = "android:fillColor"
if (!element.hasAttribute(attribute)) {
throw PatchException("Could not find $attribute for $elementId")
}
element.setAttribute(attribute, "?attr/$splashSeekbarColorAttributeName")
}
}
}
}
setSplashDrawablePathFillColor(
listOf(
"res/drawable/\$startup_animation_light__0.xml",
"res/drawable/\$startup_animation_dark__0.xml"
),
"_R_G_L_10_G_D_0_P_0"
)
if (!is_19_46_or_greater) {
// Resources removed in 19.46+
setSplashDrawablePathFillColor(
listOf(
"res/drawable/\$buenos_aires_animation_light__0.xml",
"res/drawable/\$buenos_aires_animation_dark__0.xml"
),
"_R_G_L_8_G_D_0_P_0"
)
}
}
}
/**
* Generate a style xml with all combinations of 9-bit colors.
*/
private fun create9BitSeekbarColorStyles(): String = StringBuilder().apply {
append("<?xml version=\"1.0\" encoding=\"utf-8\"?>")
append("<resources>\n")
for (red in 0..7) {
for (green in 0..7) {
for (blue in 0..7) {
val name = "${red}_${green}_${blue}"
fun roundTo3BitHex(channel8Bits: Int) =
(channel8Bits * 255 / 7).toString(16).padStart(2, '0')
val r = roundTo3BitHex(red)
val g = roundTo3BitHex(green)
val b = roundTo3BitHex(blue)
val color = "#ff$r$g$b"
append(
"""
<style name="splash_seekbar_color_style_$name">
<item name="$splashSeekbarColorAttributeName">$color</item>
</style>
"""
)
}
}
}
append("</resources>")
}.toString()
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/youtube/patches/theme/SeekbarColorPatch;"
val seekbarColorPatch = bytecodePatch(
@@ -117,27 +220,73 @@ val seekbarColorPatch = bytecodePatch(
}
}
if (is_19_23_or_greater) {
playerSeekbarGradientConfigFingerprint.method.apply {
val literalIndex = indexOfFirstLiteralInstructionOrThrow(PLAYER_SEEKBAR_GRADIENT_FEATURE_FLAG)
lithoColorOverrideHook(EXTENSION_CLASS_DESCRIPTOR, "getLithoColor")
if (!is_19_25_or_greater) {
return@execute
}
// 19.25+ changes
playerSeekbarGradientConfigFingerprint.method.apply {
val literalIndex = indexOfFirstLiteralInstructionOrThrow(PLAYER_SEEKBAR_GRADIENT_FEATURE_FLAG)
val resultIndex = indexOfFirstInstructionOrThrow(literalIndex, Opcode.MOVE_RESULT)
val register = getInstruction<OneRegisterInstruction>(resultIndex).registerA
addInstructions(
resultIndex + 1,
"""
invoke-static { v$register }, $EXTENSION_CLASS_DESCRIPTOR->playerSeekbarGradientEnabled(Z)Z
move-result v$register
"""
)
}
lithoLinearGradientFingerprint.method.addInstruction(
0,
"invoke-static/range { p4 .. p5 }, $EXTENSION_CLASS_DESCRIPTOR->setLinearGradient([I[F)V"
)
// region apply seekbar custom color to splash screen animation.
// Don't use the lotte splash screen layout if using custom seekbar.
arrayOf(
launchScreenLayoutTypeFingerprint,
mainActivityOnCreateFingerprint
).forEach { fingerprint ->
fingerprint.method.apply {
val literalIndex = indexOfFirstLiteralInstructionOrThrow(launchScreenLayoutTypeLotteFeatureFlag)
val resultIndex = indexOfFirstInstructionOrThrow(literalIndex, Opcode.MOVE_RESULT)
val register = getInstruction<OneRegisterInstruction>(resultIndex).registerA
addInstructions(
resultIndex + 1,
"""
invoke-static { v$register }, $EXTENSION_CLASS_DESCRIPTOR->playerSeekbarGradientEnabled(Z)Z
invoke-static { v$register }, $EXTENSION_CLASS_DESCRIPTOR->useLotteLaunchSplashScreen(Z)Z
move-result v$register
""",
"""
)
}
}
lithoLinearGradientFingerprint.method.addInstruction(
0,
"invoke-static/range { p4 .. p5 }, $EXTENSION_CLASS_DESCRIPTOR->setLinearGradient([I[F)V",
// Hook the splash animation drawable to set the a seekbar color theme.
mainActivityOnCreateFingerprint.method.apply {
val drawableIndex = indexOfFirstInstructionOrThrow {
val reference = getReference<MethodReference>()
reference?.definingClass == "Landroid/widget/ImageView;"
&& reference.name == "getDrawable"
}
val checkCastIndex = indexOfFirstInstructionOrThrow(drawableIndex, Opcode.CHECK_CAST)
val drawableRegister = getInstruction<OneRegisterInstruction>(checkCastIndex).registerA
addInstruction(
checkCastIndex + 1,
"invoke-static { v$drawableRegister }, $EXTENSION_CLASS_DESCRIPTOR->" +
"setSplashAnimationDrawableTheme(Landroid/graphics/drawable/AnimatedVectorDrawable;)V"
)
}
lithoColorOverrideHook(EXTENSION_CLASS_DESCRIPTOR, "getLithoColor")
// endregion
}
}

View File

@@ -56,7 +56,7 @@ val shortsAutoplayPatch = bytecodePatch(
// Main activity is used to check if app is in pip mode.
mainActivityOnCreateFingerprint.method.addInstructions(
0,
1,
"invoke-static/range { p0 .. p0 }, $EXTENSION_CLASS_DESCRIPTOR->" +
"setMainActivity(Landroid/app/Activity;)V",
)

View File

@@ -37,6 +37,8 @@ var is_19_41_or_greater = false
private set
var is_19_43_or_greater = false
private set
var is_19_46_or_greater = false
private set
val versionCheckPatch = resourcePatch(
description = "Uses the Play Store service version to find the major/minor version of the YouTube target app.",
@@ -68,5 +70,6 @@ val versionCheckPatch = resourcePatch(
is_19_36_or_greater = 243705000 <= playStoreServicesVersion
is_19_41_or_greater = 244305000 <= playStoreServicesVersion
is_19_43_or_greater = 244405000 <= playStoreServicesVersion
is_19_46_or_greater = 244705000 <= playStoreServicesVersion
}
}

View File

@@ -20,13 +20,13 @@ import app.revanced.util.getReference
import app.revanced.util.indexOfFirstInstructionOrThrow
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.builder.BuilderInstruction
import com.android.tools.smali.dexlib2.builder.MutableMethodImplementation
import com.android.tools.smali.dexlib2.iface.Method
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
import com.android.tools.smali.dexlib2.immutable.ImmutableMethodParameter
@@ -57,12 +57,16 @@ private lateinit var speedSelectionInsertMethod: MutableMethod
private var speedSelectionInsertIndex = -1
private var speedSelectionValueRegister = -1
// Change playback speed method.
private lateinit var setPlaybackSpeedMethod: MutableMethod
private var setPlaybackSpeedMethodIndex = -1
// Used by other patches.
lateinit var setPlaybackSpeedContainerClassFieldReference: String
internal lateinit var setPlaybackSpeedContainerClassFieldReference: FieldReference
private set
lateinit var setPlaybackSpeedClassFieldReference: String
internal lateinit var setPlaybackSpeedClassFieldReference: FieldReference
private set
lateinit var setPlaybackSpeedMethodReference: String
internal lateinit var setPlaybackSpeedMethodReference: MethodReference
private set
val videoInformationPatch = bytecodePatch(
@@ -164,24 +168,27 @@ val videoInformationPatch = bytecodePatch(
videoTimeHook(EXTENSION_CLASS_DESCRIPTOR, "setVideoTime")
/*
* Hook the user playback speed selection
* Hook the user playback speed selection.
*/
onPlaybackSpeedItemClickFingerprint.method.apply {
val speedSelectionMethodInstructions = implementation!!.instructions
val speedSelectionValueInstructionIndex = speedSelectionMethodInstructions.indexOfFirst {
it.opcode == Opcode.IGET
}
val speedSelectionValueInstructionIndex = indexOfFirstInstructionOrThrow(Opcode.IGET)
legacySpeedSelectionInsertMethod = this
legacySpeedSelectionInsertIndex = speedSelectionValueInstructionIndex + 1
legacySpeedSelectionValueRegister =
getInstruction<TwoRegisterInstruction>(speedSelectionValueInstructionIndex).registerA
setPlaybackSpeedClassFieldReference =
getInstruction<ReferenceInstruction>(speedSelectionValueInstructionIndex + 1).reference.toString()
setPlaybackSpeedMethodReference =
getInstruction<ReferenceInstruction>(speedSelectionValueInstructionIndex + 2).reference.toString()
getInstruction<ReferenceInstruction>(speedSelectionValueInstructionIndex + 2).reference as MethodReference
setPlaybackSpeedClassFieldReference =
getInstruction<ReferenceInstruction>(speedSelectionValueInstructionIndex + 1).reference as FieldReference
setPlaybackSpeedContainerClassFieldReference =
getReference(speedSelectionMethodInstructions, -1, Opcode.IF_EQZ)
getInstruction<ReferenceInstruction>(indexOfFirstInstructionOrThrow(Opcode.IF_EQZ) - 1).reference as FieldReference
setPlaybackSpeedMethod =
proxy(classes.first { it.type == setPlaybackSpeedMethodReference.definingClass })
.mutableClass.methods.first { it.name == setPlaybackSpeedMethodReference.name }
setPlaybackSpeedMethodIndex = 0
}
// Handle new playback speed menu.
@@ -195,6 +202,7 @@ val videoInformationPatch = bytecodePatch(
speedSelectionValueRegister = getInstruction<TwoRegisterInstruction>(index).registerA
}
videoSpeedChangedHook(EXTENSION_CLASS_DESCRIPTOR, "videoSpeedChanged")
userSelectedPlaybackSpeedHook(EXTENSION_CLASS_DESCRIPTOR, "userSelectedPlaybackSpeed")
}
}
@@ -295,9 +303,14 @@ fun videoTimeHook(targetMethodClass: String, targetMethodName: String) =
"$targetMethodClass->$targetMethodName(J)V",
)
private fun getReference(instructions: List<BuilderInstruction>, offset: Int, opcode: Opcode) =
(instructions[instructions.indexOfFirst { it.opcode == opcode } + offset] as ReferenceInstruction)
.reference.toString()
/**
* Hook when the video speed is changed for any reason _except when the user manually selects a new speed_.
*/
fun videoSpeedChangedHook(targetMethodClass: String, targetMethodName: String) =
setPlaybackSpeedMethod.addInstruction(
setPlaybackSpeedMethodIndex++,
"invoke-static { p1 }, $targetMethodClass->$targetMethodName(F)V"
)
/**
* Hook the video speed selected by the user.
@@ -312,4 +325,4 @@ fun userSelectedPlaybackSpeedHook(targetMethodClass: String, targetMethodName: S
speedSelectionInsertIndex++,
"invoke-static { v$speedSelectionValueRegister }, $targetMethodClass->$targetMethodName(F)V",
)
}
}

View File

@@ -114,7 +114,6 @@ fun String.copyXmlNode(
target: Document,
): AutoCloseable {
val hostNodes = source.getElementsByTagName(this).item(0).childNodes
val destinationNode = target.getElementsByTagName(this).item(0)
for (index in 0 until hostNodes.length) {

View File

@@ -1012,6 +1012,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_type_title">Kiçik oynadıcı növü</string>
<string name="revanced_miniplayer_type_entry_0">Qeyri-aktivdir</string>
<string name="revanced_miniplayer_type_entry_1">Orijinal</string>
<string name="revanced_miniplayer_type_entry_2">Ən kiçik</string>
<string name="revanced_miniplayer_type_entry_3">Planşet</string>
<string name="revanced_miniplayer_type_entry_4">Müasir 1</string>
<string name="revanced_miniplayer_type_entry_5">Müasir 2</string>

View File

@@ -1012,6 +1012,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_type_title">Минимизиран тип екран за гледане</string>
<string name="revanced_miniplayer_type_entry_0">Деактивирано</string>
<string name="revanced_miniplayer_type_entry_1">Оригинал</string>
<string name="revanced_miniplayer_type_entry_2">Минимално</string>
<string name="revanced_miniplayer_type_entry_3">Таблет</string>
<string name="revanced_miniplayer_type_entry_4">Модерен 1</string>
<string name="revanced_miniplayer_type_entry_5">Модерен 2</string>

View File

@@ -33,7 +33,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<resources>
<app id="shared">
<patch id="misc.checks.checkEnvironmentPatch">
<string name="revanced_check_environment_failed_title">Überprüfungen fehlgeschlagen</string>
<string name="revanced_check_environment_failed_title">Überprüfung fehlgeschlagen</string>
<string name="revanced_check_environment_dialog_open_official_source_button">Offizielle Webseite öffnen</string>
<string name="revanced_check_environment_dialog_ignore_button">Ignorieren</string>
<string name="revanced_check_environment_failed_message">&lt;h5&gt;Diese App wurde offenbar nicht von Ihnen gepatcht.&lt;/h5&gt;&lt;br&gt;Diese App funktioniert möglicherweise nicht richtig, &lt;b&gt;könnte schädlich oder sogar gefährlich in der Verwendung sein&lt;/b&gt;.&lt; br&gt;&lt;br&gt;Diese Prüfungen deuten darauf hin, dass diese App vorab gepatcht wurde oder von jemandem bezogen wurde sonst:&lt;br&gt;&lt;br&gt;&lt;small&gt;%1$s&lt;/small&gt;&lt;br&gt;Es wird dringend empfohlen, &lt;b&gt;diese App zu deinstallieren und selbst zu patchen&lt;/b&gt; um sicherzustellen, dass Sie eine validierte und sichere App verwenden.&lt;p&gt;&lt;br&gt;Wenn Sie diese Warnung ignorieren, wird sie nur zweimal angezeigt.</string>

View File

@@ -1010,13 +1010,13 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_title">Ελαχιστοποιημένη οθόνη αναπαραγωγής</string>
<string name="revanced_miniplayer_screen_summary">Αλλάξτε το στυλ της ελαχιστοποιημένης οθόνης αναπαραγωγής</string>
<string name="revanced_miniplayer_type_title">Τύπος ελαχιστοποιημένης οθόνης αναπαραγωγής</string>
<string name="revanced_miniplayer_type_entry_0">Ανενεργό</string>
<string name="revanced_miniplayer_type_entry_0">Ανενεργή</string>
<string name="revanced_miniplayer_type_entry_1">Αρχικός</string>
<string name="revanced_miniplayer_type_entry_2">Ελάχιστα</string>
<string name="revanced_miniplayer_type_entry_2">Ελάχιστη</string>
<string name="revanced_miniplayer_type_entry_3">Ταμπλετ</string>
<string name="revanced_miniplayer_type_entry_4">Μοντέρνος 1</string>
<string name="revanced_miniplayer_type_entry_5">Μοντέρνος 2</string>
<string name="revanced_miniplayer_type_entry_6">Μοντέρνος 3</string>
<string name="revanced_miniplayer_type_entry_4">Μοντέρνα 1</string>
<string name="revanced_miniplayer_type_entry_5">Μοντέρνα 2</string>
<string name="revanced_miniplayer_type_entry_6">Μοντέρνα 3</string>
<string name="revanced_miniplayer_rounded_corners_title">Στρογγυλεμένες γωνίες</string>
<string name="revanced_miniplayer_rounded_corners_summary_on">Οι γωνίες είναι στρογγυλεμένες</string>
<string name="revanced_miniplayer_rounded_corners_summary_off">Οι γωνίες είναι τετράγωνες</string>

View File

@@ -293,7 +293,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_keyword_content_subscriptions_title">Piilota tilaukset-videoita avainsanojen mukaan</string>
<string name="revanced_hide_keyword_content_subscriptions_summary_on">Tilaukset-välilehden videoita suodatetaan avainsanojen mukaan</string>
<string name="revanced_hide_keyword_content_subscriptions_summary_off">Tilaukset-välilehden videoita ei suodateta avainsanojen mukaan</string>
<string name="revanced_hide_keyword_content_search_title">Piilota hakutuloksia avainsanojen muakan</string>
<string name="revanced_hide_keyword_content_search_title">Piilota hakutuloksia avainsanojen mukaan</string>
<string name="revanced_hide_keyword_content_search_summary_on">Hakutuloksia suodatetaan avainsanojen mukaan</string>
<string name="revanced_hide_keyword_content_search_summary_off">Hakutuloksia ei suodateta avainsanojen mukaan</string>
<string name="revanced_hide_keyword_content_phrases_title">Piilotettavat avainsanat</string>
@@ -1166,11 +1166,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_playback_speed_dialog_button_summary_off">Painiketta ei näytetä</string>
</patch>
<patch id="video.speed.custom.customPlaybackSpeedPatch">
<string name="revanced_custom_speed_menu_title">Mukautettu soiton nopeusvalikko</string>
<string name="revanced_custom_speed_menu_title">Mukautetun toistonopeuden valikko</string>
<string name="revanced_custom_speed_menu_summary_on">Mukautettu nopeusvalikko näkyy</string>
<string name="revanced_custom_speed_menu_summary_off">Mukautettua nopeusvalikkoa ei näytetä</string>
<string name="revanced_custom_playback_speeds_title">Mukautetut toistonopeudet</string>
<string name="revanced_custom_playback_speeds_summary">Lisää tai muuta mukautettuja soiton nopeuksia</string>
<string name="revanced_custom_playback_speeds_summary">Lisää tai muuta mukautettuja toistonopeuksia</string>
<string name="revanced_custom_playback_speeds_invalid">Mukautettujen nopeuksien on oltava alle %s. Käytetään oletusarvoja.</string>
<string name="revanced_custom_playback_speeds_parse_exception">Virheelliset mukautetut toistonopeudet. Käytetään oletusarvoja.</string>
<string name="revanced_custom_playback_speeds_auto">Automaattinen</string>

View File

@@ -1012,6 +1012,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_type_title">Cineál Miniplayer</string>
<string name="revanced_miniplayer_type_entry_0">Díchumasaithe</string>
<string name="revanced_miniplayer_type_entry_1">Bunaidh</string>
<string name="revanced_miniplayer_type_entry_2">Íosta</string>
<string name="revanced_miniplayer_type_entry_3">Táibléad</string>
<string name="revanced_miniplayer_type_entry_4">Nua-aimseartha 1</string>
<string name="revanced_miniplayer_type_entry_5">Nua-Aimseartha 2</string>

View File

@@ -1012,6 +1012,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_type_title">Jenis pemutar mini</string>
<string name="revanced_miniplayer_type_entry_0">Nonaktif</string>
<string name="revanced_miniplayer_type_entry_1">Asli</string>
<string name="revanced_miniplayer_type_entry_2">Minimal</string>
<string name="revanced_miniplayer_type_entry_3">Tablet</string>
<string name="revanced_miniplayer_type_entry_4">Modern 1</string>
<string name="revanced_miniplayer_type_entry_5">Modern 2</string>
@@ -1044,7 +1045,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_width_dip_summary">Awal pada ukuran layar, dalam piksel</string>
<string name="revanced_miniplayer_width_dip_invalid_toast">Ukuran piksel harus antara %1$s dan %2$s</string>
<string name="revanced_miniplayer_opacity_title">Opasitas hamparan</string>
<string name="revanced_miniplayer_opacity_summary">Nilai opasitas antara 0-100, di mana 0 adalah transparan</string>
<string name="revanced_miniplayer_opacity_summary">Nilai opasitas antara 0-100, dimana 0 adalah transparan</string>
<string name="revanced_miniplayer_opacity_invalid_toast">Opasitas hamparan pemutar mini antara 0-100</string>
</patch>
<patch id="layout.theme.themePatch">

View File

@@ -373,7 +373,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_remove_viewer_discretion_dialog_title">시청 경고 다이얼로그 제거하기</string>
<string name="revanced_remove_viewer_discretion_dialog_summary_on">다이얼로그가 숨겨집니다</string>
<string name="revanced_remove_viewer_discretion_dialog_summary_off">다이얼로그가 표시됩니다</string>
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">• 이 설정은 다이얼로그를 자동으로 허용하기만 하며 연령 제한(성인인증 절차)을 우회할 수 없습니다\n• 즉, 성인인증이 필요한 동영상에서 인증을 하려 할 때, 휴대폰 번호가 필요하다고 알려주는 소형 팝업창(다이얼로그) 없이 바로 휴대폰 번호 인증 페이지가 표시됩니다\n• \'당신은 혼자가 아닙니다\' 페이지에서 \'확인하기\' 버튼이 표시되지 않는다면 이 설정이 아닌 플레이어 설정에서 \'정보 패널 숨기기\'를 비활성화해야 합니다</string>
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">• 이 설정은 다이얼로그를 자동으로 허용하기만 하며 연령 제한(성인인증 절차)을 우회할 수 없습니다\n• 즉, 성인인증이 필요한 동영상에서 인증을 하려 할 때, 휴대폰 번호가 필요하다고 알려주는 소형 팝업창(다이얼로그) 없이 바로 휴대폰 번호 인증 페이지가 표시됩니다\n• \'당신은 혼자가 아닙니다\' 페이지는 제거할 수 없으며, 해당 페이지에서 \'확인하기\' 버튼이 표시되지 않는다면 이 설정이 아닌 플레이어 설정에서 \'정보 패널 숨기기\'를 비활성화해야 합니다</string>
</patch>
<patch id="interaction.downloads.downloadsResourcePatch">
<string name="revanced_external_downloader_screen_title">외부 다운로드</string>
@@ -968,7 +968,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_app_version_target_legacy_entry_1">18.33.40 - 시크릿 모드에서 Shorts RYD를 복원합니다</string>
<string name="revanced_spoof_app_version_target_legacy_entry_2">18.20.39 - 넓은 동영상 재생 속도 &amp; 화질 메뉴를 복원합니다</string>
<string name="revanced_spoof_app_version_target_legacy_entry_3">16.09.39 - 이전 보관함 탭을 복원합니다 (내 페이지 탭을 비활성화합니다)</string>
<string name="revanced_spoof_app_version_target_legacy_entry_4">17.33.42 - 이전 재생목록 선반으로 복원합니다</string>
<string name="revanced_spoof_app_version_target_legacy_entry_4">17.33.42 - 이전 재생목록 선반 복원합니다</string>
</patch>
<patch id="layout.startpage.changeStartPagePatch">
<string name="revanced_change_start_page_title">앱 시작 페이지 변경하기</string>
@@ -1013,6 +1013,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_type_title">미니 플레이어 유형 설정</string>
<string name="revanced_miniplayer_type_entry_0">비활성화됨</string>
<string name="revanced_miniplayer_type_entry_1">기기 기본값 사용</string>
<string name="revanced_miniplayer_type_entry_2">최소화</string>
<string name="revanced_miniplayer_type_entry_3">태블릿</string>
<string name="revanced_miniplayer_type_entry_4">최신 스타일 1</string>
<string name="revanced_miniplayer_type_entry_5">최신 스타일 2</string>

View File

@@ -997,6 +997,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_type_title">Miniplayer type</string>
<string name="revanced_miniplayer_type_entry_0">Uitgeschakeld</string>
<string name="revanced_miniplayer_type_entry_1">Origineel</string>
<string name="revanced_miniplayer_type_entry_2">Minimaal</string>
<string name="revanced_miniplayer_type_entry_3">Telefoon</string>
<string name="revanced_miniplayer_type_entry_4">Moderne 1</string>
<string name="revanced_miniplayer_type_entry_5">Moderne 2</string>

View File

@@ -57,7 +57,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_pref_import_export_title">Zaimportuj / Wyeksportuj</string>
<string name="revanced_pref_import_export_summary">Zaimportuj / Wyeksportuj ustawienia ReVanced</string>
<!-- Settings about dialog. -->
<string name="revanced_settings_about_links_body">Używasz wersji łatek ReVanced &lt;i&gt;%s&lt;/i&gt;</string>
<string name="revanced_settings_about_links_body">Używasz łatek ReVanced w wersji &lt;i&gt;%s&lt;/i&gt;</string>
<string name="revanced_settings_about_links_dev_header">Notka</string>
<string name="revanced_settings_about_links_dev_body">Ta wersja jest wersją wstępną i mogą wystąpić nieoczekiwane problemy</string>
<string name="revanced_settings_about_links_header">Oficjalne linki</string>
@@ -81,22 +81,22 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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_05_general_title">Ogólny układ</string>
<string name="revanced_settings_screen_07_seekbar_title">Pasek wyszukiwania</string>
<string name="revanced_settings_screen_08_swipe_controls_title">Sterowanie gestami</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_11_misc_title">Pozostałe</string>
<string name="revanced_settings_screen_12_video_title">Film</string>
</patch>
<patch id="misc.backgroundplayback.backgroundPlaybackPatch">
<string name="revanced_shorts_disable_background_playback_title">Wyłącz odtwarzanie Shorts\'ów w tle</string>
<string name="revanced_shorts_disable_background_playback_summary_on">Odtwarzanie w tle Shorts\'ów jest wyłączone</string>
<string name="revanced_shorts_disable_background_playback_summary_off">Odtwarzanie w tle Shorts\'ów jest włączone</string>
<string name="revanced_shorts_disable_background_playback_title">Wyłącz odtwarzanie Shortsów w tle</string>
<string name="revanced_shorts_disable_background_playback_summary_on">Odtwarzanie w tle Shortsów jest wyłączone</string>
<string name="revanced_shorts_disable_background_playback_summary_off">Odtwarzanie w tle Shortsów jest włączone</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Debugowanie</string>
<string name="revanced_debug_screen_summary">Włącz lub wyłącz opcje debugowania</string>
<string name="revanced_debug_title">Logi do debugowania</string>
<string name="revanced_debug_summary_on">Włączone</string>
<string name="revanced_debug_summary_off">Wyłączone</string>
<string name="revanced_debug_summary_on">Logi debugowania są włączone</string>
<string name="revanced_debug_summary_off">Logi debugowania są wyłączone</string>
<string name="revanced_debug_protobuffer_title">Logi protokołu bufora</string>
<string name="revanced_debug_protobuffer_summary_on">Logi do debugowania zawierają bufory</string>
<string name="revanced_debug_protobuffer_summary_off">Logi do debugowania nie zawierają buforów</string>
@@ -109,59 +109,59 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_debug_toast_on_error_user_dialog_message">Wyłączanie komunikatów ukrywa wszystkie komunikaty o błędach ReVanced.\n\nNie będziesz powiadamiany o żadnych nieoczekiwanych zdarzeniach.</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_disable_like_subscribe_glow_title">Podświetlenie przycisków polubienia i subskrypcji</string>
<string name="revanced_disable_like_subscribe_glow_summary_on">Przycisk polubienia i subskrypcji nie podświetlą się po użyciu</string>
<string name="revanced_disable_like_subscribe_glow_summary_off">Przycisk polubienia i subskrypcji podświetlą się po użyciu</string>
<string name="revanced_disable_like_subscribe_glow_title">Poświata przycisków polubienia i subskrypcji</string>
<string name="revanced_disable_like_subscribe_glow_summary_on">Poświata przycisku polubienia i subskrypcji jest ukryta</string>
<string name="revanced_disable_like_subscribe_glow_summary_off">Poświata przycisku polubienia i subskrypcji jest widoczna</string>
<string name="revanced_hide_album_cards_title">Karty albumów</string>
<string name="revanced_hide_album_cards_summary_on">Karty albumów są ukryte</string>
<string name="revanced_hide_album_cards_summary_off">Karty albumów są widoczne</string>
<string name="revanced_hide_crowdfunding_box_title">Ramki ze zbiórkami</string>
<string name="revanced_hide_crowdfunding_box_summary_on">Ramki ze zbiórkami są ukryte</string>
<string name="revanced_hide_crowdfunding_box_summary_off">Ramki ze zbiórkami są widoczne</string>
<string name="revanced_hide_floating_microphone_button_title">Pływający przycisk mikrofonu</string>
<string name="revanced_hide_floating_microphone_button_summary_on">Przycisk mikrofonu ukryty</string>
<string name="revanced_hide_floating_microphone_button_summary_off">Przycisk mikrofonu widoczny</string>
<string name="revanced_hide_floating_microphone_button_title">Dolny przycisk od mikrofonu</string>
<string name="revanced_hide_floating_microphone_button_summary_on">Przycisk mikrofonu jest ukryty</string>
<string name="revanced_hide_floating_microphone_button_summary_off">Przycisk mikrofonu jest widoczny</string>
<string name="revanced_hide_channel_watermark_title">Znaki wodne kanałów</string>
<string name="revanced_hide_channel_watermark_summary_on">Ukryte</string>
<string name="revanced_hide_channel_watermark_summary_off">Widoczne</string>
<string name="revanced_hide_channel_watermark_summary_on">Znaki wodne są ukryte</string>
<string name="revanced_hide_channel_watermark_summary_off">Znaki wodne są widoczne</string>
<string name="revanced_hide_horizontal_shelves_title">Poziome półki</string>
<string name="revanced_hide_horizontal_shelves_summary_on">Ukryte są półki:\n• Z najnowszymi informacjami\n• Z filmów, które nie zostały dokończone\n• Od odkrywania kanałów\n• Od kupowania\n• Z filmów, które zostały obejrzane</string>
<string name="revanced_hide_horizontal_shelves_summary_on">Ukryte są półki:\n• Z najnowszymi informacjami\n• Z filmami, które nie zostały dokończone\n• Od odkrywania kanałów\n• Od kupowania\n• Z filmami, które zostały obejrzane</string>
<string name="revanced_hide_horizontal_shelves_summary_off">Pociski są widoczne</string>
<!-- 'Join' should be translated using the same localized wording YouTube displays.
This appears in the video player for certain videos. -->
<string name="revanced_hide_join_membership_button_title">Przycisk \'Dołącz\'</string>
<string name="revanced_hide_join_membership_button_summary_on">Ukryty</string>
<string name="revanced_hide_join_membership_button_summary_off">Widoczny</string>
<string name="revanced_hide_join_membership_button_title">Przycisk od sponsorowania</string>
<string name="revanced_hide_join_membership_button_summary_on">Przycisk jest ukryty</string>
<string name="revanced_hide_join_membership_button_summary_off">Przycisk jest widoczny</string>
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_for_you_shelf_title">Półka \'Dla ciebie\' na stronach kanałów</string>
<string name="revanced_hide_for_you_shelf_summary_on">Ukryta</string>
<string name="revanced_hide_for_you_shelf_summary_off">Widoczna</string>
<string name="revanced_hide_for_you_shelf_summary_on">Półka jest ukryta</string>
<string name="revanced_hide_for_you_shelf_summary_off">Półka jest widoczna</string>
<!-- '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. -->
<string name="revanced_hide_notify_me_button_title">Przycisk \'Powiadom mnie\'</string>
<string name="revanced_hide_notify_me_button_summary_on">Ukryty</string>
<string name="revanced_hide_notify_me_button_summary_off">Widoczny</string>
<string name="revanced_hide_notify_me_button_summary_on">Przycisk jest ukryty</string>
<string name="revanced_hide_notify_me_button_summary_off">Przycisk jest widoczny</string>
<!-- 'People also watch' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_search_result_recommendations_title">Rekomendacje \'Inni widzowie obejrzeli też ten film\'</string>
<string name="revanced_hide_search_result_recommendations_summary_on">Ukryte</string>
<string name="revanced_hide_search_result_recommendations_title">Rekomendacje \'Inne osoby również obejrzały\'</string>
<string name="revanced_hide_search_result_recommendations_summary_on">Rekomendacje są ukryte</string>
<string name="revanced_hide_search_result_recommendations_summary_off">Rekomendacje są widoczne</string>
<!-- 'Show more' should be translated with the same localized wording that YouTube displays.
This button usually appears when searching for a YT creator. -->
<string name="revanced_hide_show_more_button_title">Przycisk \'Pokaż więcej\'</string>
<string name="revanced_hide_show_more_button_summary_on">Ukryty</string>
<string name="revanced_hide_show_more_button_summary_off">Widoczny</string>
<string name="revanced_hide_show_more_button_summary_on">Przycisk jest ukryty</string>
<string name="revanced_hide_show_more_button_summary_off">Przycisk jest widoczny</string>
<string name="revanced_hide_timed_reactions_title">Reakcje czasowe</string>
<string name="revanced_hide_timed_reactions_summary_on">Reakcje czasowe są ukryte</string>
<string name="revanced_hide_timed_reactions_summary_off">Reakcje czasowe są widoczne</string>
<string name="revanced_hide_search_result_shelf_header_title">Półki z nagłówkami w wynikach wyszukiwania</string>
<string name="revanced_hide_search_result_shelf_header_title">Półki z nagłówkiem w wynikach wyszukiwania</string>
<string name="revanced_hide_search_result_shelf_header_summary_on">Półki z nagłówkiem są ukryte</string>
<string name="revanced_hide_search_result_shelf_header_summary_off">Półki z nagłówkiem są widoczne</string>
<string name="revanced_hide_channel_guidelines_title">Wytyczne kanału</string>
<string name="revanced_hide_channel_guidelines_summary_on">Wytyczne kanału są ukryte</string>
<string name="revanced_hide_channel_guidelines_summary_off">Wytyczne kanału są widoczne</string>
<string name="revanced_hide_chips_shelf_title">Rozszerzalne półki</string>
<string name="revanced_hide_chips_shelf_summary_on">Rozszerzalne półki są ukryte</string>
<string name="revanced_hide_chips_shelf_summary_off">Rozszerzalne półki są widoczne</string>
<string name="revanced_hide_chips_shelf_title">Paski z kategoriami</string>
<string name="revanced_hide_chips_shelf_summary_on">Paski z kategoriami są ukryte</string>
<string name="revanced_hide_chips_shelf_summary_off">Paski z kategoriami są widoczne</string>
<string name="revanced_hide_expandable_chip_title">Produkty i rozdziały pod filmami</string>
<string name="revanced_hide_expandable_chip_summary_on">Produkty i rozdziały są ukryte</string>
<string name="revanced_hide_expandable_chip_summary_off">Produkty i rozdziały są widoczne</string>
@@ -207,9 +207,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_related_videos_title">Powiązane filmy w szybkich akcjach</string>
<string name="revanced_hide_related_videos_summary_on">Powiązane filmy są ukryte</string>
<string name="revanced_hide_related_videos_summary_off">Powiązane filmy są widoczne</string>
<string name="revanced_hide_image_shelf_title">Półka z obrazami w wynikach wyszukiwania</string>
<string name="revanced_hide_image_shelf_summary_on">Półka z obrazami jest ukryta</string>
<string name="revanced_hide_image_shelf_summary_off">Półka z obrazami jest widoczna</string>
<string name="revanced_hide_image_shelf_title">Półka ze zdjeciami w wynikach wyszukiwania</string>
<string name="revanced_hide_image_shelf_summary_on">Półka ze zdjęciami jest ukryta</string>
<string name="revanced_hide_image_shelf_summary_off">Półka ze zdjęciami jest widoczna</string>
<string name="revanced_hide_latest_posts_ads_title">Najnowsze posty</string>
<string name="revanced_hide_latest_posts_ads_summary_on">Najnowsze posty są ukryte</string>
<string name="revanced_hide_latest_posts_ads_summary_off">Najnowsze posty są widoczne</string>
@@ -217,7 +217,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_mix_playlists_summary_on">Playlisty mix są ukryte</string>
<string name="revanced_hide_mix_playlists_summary_off">Playlisty mix są widoczne</string>
<string name="revanced_hide_artist_cards_title">Karty artystów</string>
<string name="revanced_hide_artist_cards_summary_on">Karty wykonawcy są ukryte</string>
<string name="revanced_hide_artist_cards_summary_on">Karty artystów są ukryte</string>
<string name="revanced_hide_artist_cards_summary_off">Karty artystów są widoczne</string>
<string name="revanced_hide_attributes_section_title">Sekcja atrybutów</string>
<string name="revanced_hide_attributes_section_summary_on">Sekcje wyróżnionych miejsc, gier i muzyki są ukryte</string>
@@ -239,41 +239,41 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_transcript_section_summary_off">Sekcja transkrypcji jest widoczna</string>
<string name="revanced_hide_description_components_screen_title">Opis filmu</string>
<string name="revanced_hide_description_components_screen_summary">Ukryj lub pokaż elementy opisu filmu</string>
<string name="revanced_hide_filter_bar_screen_title">Pasek filtra</string>
<string name="revanced_hide_filter_bar_screen_summary">Ukryj lub pokazuj pasek z filtrami na stronie głównej, nad wynikami wyszukiwania i powiązanymi filmami</string>
<string name="revanced_hide_filter_bar_screen_title">Pasek filtrowania</string>
<string name="revanced_hide_filter_bar_screen_summary">Ukryj lub pokazuj pasek filtrowania na stronie głównej, w wynikach wyszukiwania i powiązanych filmach</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Na stronie głównej</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Ukryte na stronie głównej</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Widoczne na stronie głównej</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">W wyszukiwarce</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">Ukryte w wyszukiwaniu</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">Ukryte w wyszukiwarce</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">Widoczne w wyszukiwarce</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">W powiązanych filmach</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Ukryte w powiązanych filmach</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Widoczne w powiązanych filmach</string>
<string name="revanced_comments_screen_title">Komentarze</string>
<string name="revanced_comments_screen_summary">Ukryj lub pokazuj komentarze</string>
<string name="revanced_hide_comments_by_members_header_title">Nagłówek sponsora w komentarzach</string>
<string name="revanced_hide_comments_by_members_header_summary_on">Nagłówek sponsora do komentarza jest ukryty</string>
<string name="revanced_hide_comments_by_members_header_summary_off">Nagłówek sponsora do komentarza jest widoczny</string>
<string name="revanced_hide_comments_by_members_header_title">Nagłówki z komentarzami sponsorów</string>
<string name="revanced_hide_comments_by_members_header_summary_on">Nagłówki z komentarzami sponsorów są ukryte</string>
<string name="revanced_hide_comments_by_members_header_summary_off">Nagłówki z komentarzami sponsorów są widoczne</string>
<string name="revanced_hide_comments_section_title">Sekcja komentarzy</string>
<string name="revanced_hide_comments_section_summary_on">Sekcja komentarzy jest ukryta</string>
<string name="revanced_hide_comments_section_summary_off">Sekcja komentarzy jest widoczna</string>
<string name="revanced_hide_comments_create_a_short_button_title">Przycisk tworzenia Shorts\'a</string>
<string name="revanced_hide_comments_create_a_short_button_summary_on">Przycisk tworzenia Shorts\'a jest ukryty</string>
<string name="revanced_hide_comments_create_a_short_button_summary_off">Przycisk tworzenia Shorts\'a jest widoczny</string>
<string name="revanced_hide_comments_create_a_short_button_title">Przycisk od tworzenia Shortsów</string>
<string name="revanced_hide_comments_create_a_short_button_summary_on">Przycisk od tworzenia Shortsów jest ukryty</string>
<string name="revanced_hide_comments_create_a_short_button_summary_off">Przycisk od tworzenia Shortsów jest widoczny</string>
<string name="revanced_hide_comments_preview_comment_title">Wyróżnione komentarze</string>
<string name="revanced_hide_comments_preview_comment_summary_on">Wyróżnione komentarze są ukryte</string>
<string name="revanced_hide_comments_preview_comment_summary_off">Wyróżnione komentarze są widoczne</string>
<string name="revanced_hide_comments_thanks_button_title">Przycisk do dziękowania</string>
<string name="revanced_hide_comments_thanks_button_summary_on">Przycisk dziękowania jest ukryty</string>
<string name="revanced_hide_comments_thanks_button_summary_off">Przycisk dziękowania jest widoczny</string>
<string name="revanced_hide_comments_thanks_button_title">Przycisk od dziękowania</string>
<string name="revanced_hide_comments_thanks_button_summary_on">Przycisk od dziękowania jest ukryty</string>
<string name="revanced_hide_comments_thanks_button_summary_off">Przycisk od dziękowania jest widoczny</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Czas i przyciski od emotikon</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Czas i przyciski od emotikon są ukryte</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Czas i przyciski od emotikon są widoczne</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_doodles_title">YouTube Doodles</string>
<string name="revanced_hide_doodles_summary_on">Pasek wyszukiwania z Doodles jest ukryty</string>
<string name="revanced_hide_doodles_summary_off">Pasek wyszukiwania z Doodles jest widoczny</string>
<string name="revanced_hide_doodles_summary_on">YouTube Doodles jest ukryty</string>
<string name="revanced_hide_doodles_summary_off">YouTube Doodles jest widoczny</string>
<string name="revanced_hide_doodles_user_dialog_message">YouTube Doodles pojawia się co roku na kilka dni.\n\nJeśli Doodle wyświetlą się w Twoim regionie, a to ustawienie jest włączone, to pasek filtrowania poniżej paska wyszukiwania również zostanie ukryty.</string>
<string name="revanced_custom_filter_screen_title">Własny filtr</string>
<string name="revanced_custom_filter_screen_summary">Ukryj komponenty za pomocą własnego filtra</string>
@@ -282,28 +282,28 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_custom_filter_summary_off">Filtr niestandardowy jest wyłączony</string>
<string name="revanced_custom_filter_strings_title">Własny filtr</string>
<!-- 'Component path builder strings' is the technical name for identifying the Litho UI layout items to hide. This is an advanced feature and most users will never use this. -->
<string name="revanced_custom_filter_strings_summary">Lista ciągów budujących ścieżki komponentu do filtrowania, oddzielonych nową linią</string>
<string name="revanced_custom_filter_strings_summary">Lista tekstów tworzących ścieżkę komponentów do filtrowania, która musi być oddzielona nowymi liniami</string>
<string name="revanced_custom_filter_toast_invalid_syntax">Nieprawidłowy niestandardowy filtr: %s</string>
<string name="revanced_hide_keyword_content_screen_title">Ukryj zawartość słowa</string>
<string name="revanced_hide_keyword_content_screen_title">Filtrowanie słów</string>
<string name="revanced_hide_keyword_content_screen_summary">Ukryj wyszukiwanie i filmy na stronie głównej za pomocą filtrów słów</string>
<string name="revanced_hide_keyword_content_home_title">Ukryj filmy na stronie głównej słowami</string>
<string name="revanced_hide_keyword_content_home_title">Filmy na stronie głównej</string>
<string name="revanced_hide_keyword_content_home_summary_on">Filmy na stronie głównej są filtrowane przez słowa</string>
<string name="revanced_hide_keyword_content_home_summary_off">Filmy na stronie głównej nie są filtrowane przez słowa</string>
<string name="revanced_hide_keyword_content_subscriptions_title">Ukryj filmy na stronie subskrypcji słowami</string>
<string name="revanced_hide_keyword_content_subscriptions_summary_on">Filmy w zakładce Subskrypcji są filtrowane przez słowa</string>
<string name="revanced_hide_keyword_content_subscriptions_summary_off">Filmy w zakładce Subskrypcji nie są filtrowane przez słowa</string>
<string name="revanced_hide_keyword_content_search_title">Wyniki wyszukiwania za pomocą słów</string>
<string name="revanced_hide_keyword_content_subscriptions_title">Filmy na stronie subskrypcji</string>
<string name="revanced_hide_keyword_content_subscriptions_summary_on">Filmy na stronie subskrypcji są filtrowane przez słowa</string>
<string name="revanced_hide_keyword_content_subscriptions_summary_off">Filmy na stronie subskrypcji nie są filtrowane przez słowa</string>
<string name="revanced_hide_keyword_content_search_title">W wynikach wyszukiwania</string>
<string name="revanced_hide_keyword_content_search_summary_on">Wyniki wyszukiwania są filtrowane przez słowa</string>
<string name="revanced_hide_keyword_content_search_summary_off">Wyniki wyszukiwania nie są filtrowane przez słowa</string>
<string name="revanced_hide_keyword_content_phrases_title">Słowa do ukrycia</string>
<!-- For localization it is preferred, but not required, if 'LeBlanc' is replaced with a localized name or a familiar word that has upper case letters in the middle of the word.
This is because keywords can be in any language, and showing an example in the localized script helps convey this. -->
<string name="revanced_hide_keyword_content_phrases_summary">Słowa i frazy do ukrycia, oddzielone nowymi wierszami\n\nSłowa mogą być nazwami kanałów lub dowolnymi tekstami pokazanymi w tytułach wideo\n\nSłowa z wielkimi literami w środku muszą być wpisane z odpowiednią wielkością liter (np. iPhone, TikTok, LeBlanc)</string>
<string name="revanced_hide_keyword_content_phrases_summary">Słowa i frazy do ukrycia, oddzielone nowymi liniami\n\nSłowami mogą być nazwy kanałów, jak też jakikolwiek tekst z tytułu filmu\n\nSłowa z wielkimi literami w środku muszą być wpisane z odpowiednią wielkością liter (np. iPhone, TikTok, LeBlanc)</string>
<string name="revanced_hide_keyword_content_about_title">O filtrowaniu słów</string>
<string name="revanced_hide_keyword_content_about_summary">Strona główna/Subskrypcje/Wyniki wyszukiwania są filtrowane, aby ukryć treści pasujące do fraz kluczowych\n\nOgraniczenia\n• Shorts\'y nie mogą zostać ukryte według nazwy kanału\n• Niektóre elementy interfejsu mogą nie zostać ukryte\n• Wyszukiwanie słowa może nie zwrócić wyników</string>
<string name="revanced_hide_keyword_content_about_whole_words_title">Dopasuj całe słowa</string>
<string name="revanced_hide_keyword_content_about_summary">Strona główna/Subskrypcje/Wyniki wyszukiwania są filtrowane, aby ukryć treści pasujące do fraz kluczowych\n\nOgraniczenia\n• Shortsy nie mogą zostać ukryte według nazwy kanału\n• Niektóre elementy interfejsu mogą nie zostać ukryte\n• Wyszukiwanie słowa może nie zwrócić wyników</string>
<string name="revanced_hide_keyword_content_about_whole_words_title">Uwzględnij całe wyrazy</string>
<!-- Translations _must_ use a localized example. For languages that do not use spaces between words (Chinese, Japanese, etc) the English AI example should be used since no localized examples exist. Or if using machine translations, or if nobody wants to think of a localized example, then the English 'ai' example should be left as-is. -->
<string name="revanced_hide_keyword_content_about_whole_words_summary">Otoczenie słowa/frazy cudzysłowami zapobiegnie częściowym dopasowaniom tytułów filmów i nazw kanałów&lt;br&gt;&lt;br&gt;Na przykład,&lt;br&gt;&lt;b&gt;\"ai\"&lt;/b&gt; ukryje film: &lt;b&gt;Jak działa AI?&lt;/b&gt;&lt;br&gt;ale nie ukryje: &lt;b&gt;Co oznacza aikido?&lt;/b&gt;</string>
<string name="revanced_hide_keyword_content_about_whole_words_summary">Otoczenie słowa/frazy podwójnym cudzysłowem może zapobiec częściowemu dopasowywaniu tytułów filmów i nazw kanałów&lt;br&gt;&lt;br&gt;Dla przykładu,&lt;br&gt;&lt;b&gt;\"ai\"&lt;/b&gt; ukryje film: &lt;b&gt;Jak działa AI?&lt;/b&gt;&lt;br&gt;lecz nie ukryje: &lt;b&gt;Co oznacza aikido?&lt;/b&gt;</string>
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<string name="revanced_hide_keyword_toast_invalid_common">Nie można użyć słowa: %s</string>
<string name="revanced_hide_keyword_toast_invalid_common_whole_word_required">Dodaj cudzysłowy, aby użyć słowa: %s</string>
@@ -315,7 +315,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_general_ads_title">Reklamy ogólne</string>
<string name="revanced_hide_general_ads_summary_on">Ogólne reklamy są ukryte</string>
<string name="revanced_hide_general_ads_summary_off">Ogólne reklamy są widoczne</string>
<string name="revanced_hide_fullscreen_ads_title">Reklamy w trybie pełnoekranowym</string>
<string name="revanced_hide_fullscreen_ads_title">Reklamy pełnoekranowe</string>
<string name="revanced_hide_fullscreen_ads_summary_on">Reklamy pełnoekranowe są ukryte\n\nTa funkcja jest dostępna tylko dla starszych urządzeń</string>
<string name="revanced_hide_fullscreen_ads_summary_off">Reklamy pełnoekranowe są widoczne</string>
<string name="revanced_hide_buttoned_ads_title">Reklamy z przyciskami</string>
@@ -327,10 +327,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_self_sponsor_ads_title">Karty z autopromocją</string>
<string name="revanced_hide_self_sponsor_ads_summary_on">Karty z autopromocją są ukryte</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">Karty z autopromocją są widoczne</string>
<string name="revanced_hide_products_banner_title">Baner do wyświetlania produktów</string>
<string name="revanced_hide_products_banner_summary_on">Baner jest ukryty</string>
<string name="revanced_hide_products_banner_summary_off">Baner jest pokazany</string>
<string name="revanced_hide_player_store_shelf_title">Półki sklepowe gracza</string>
<string name="revanced_hide_products_banner_title">Banery z produktami</string>
<string name="revanced_hide_products_banner_summary_on">Banery są ukryte</string>
<string name="revanced_hide_products_banner_summary_off">Banery są widoczne</string>
<string name="revanced_hide_player_store_shelf_title">Półki sklepowe w odtwarzaczu</string>
<string name="revanced_hide_player_store_shelf_summary_on">Półki sklepowe są ukryte</string>
<string name="revanced_hide_player_store_shelf_summary_off">Półki sklepowe są widoczne</string>
<string name="revanced_hide_shopping_links_title">Linki do zakupów w opisie filmu</string>
@@ -362,10 +362,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<patch id="interaction.copyvideourl.copyVideoUrlResourcePatch">
<string name="revanced_share_copy_url_success">Adres URL skopiowany do schowka</string>
<string name="revanced_share_copy_url_timestamp_success">URL ze znacznikiem czasu skopiowany</string>
<string name="revanced_copy_video_url_title">Przycisk kopiowania URL filmu</string>
<string name="revanced_copy_video_url_title">Przycisk od kopiowania URL filmu</string>
<string name="revanced_copy_video_url_summary_on">Przycisk jest widoczny. Dotknij, aby skopiować adres URL wideo. Dotknij i przytrzymaj aby skopiować adres wideo ze znacznikiem czasu</string>
<string name="revanced_copy_video_url_summary_off">Przycisk nie jest widoczny</string>
<string name="revanced_copy_video_url_timestamp_title">Przycisk do kopiowania URL filmu z czasem</string>
<string name="revanced_copy_video_url_timestamp_title">Przycisk od kopiowania URL filmu z czasem</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Przycisk jest widoczny. Dotknij, aby skopiować URL filmu ze znacznikiem czasu. Dotknij i przytrzymaj, aby skopiować film bez znacznika czasu</string>
<string name="revanced_copy_video_url_timestamp_summary_off">Przycisk nie jest widoczny</string>
</patch>
@@ -376,13 +376,13 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">To nie pomija ograniczeń wiekowych i akceptuje je automatycznie.</string>
</patch>
<patch id="interaction.downloads.downloadsResourcePatch">
<string name="revanced_external_downloader_screen_title">Pobieranie zewnętrzne</string>
<string name="revanced_external_downloader_screen_title">Zewnętrzna aplikacja od pobierania</string>
<string name="revanced_external_downloader_screen_summary">Ustawienia dla zewnętrznej aplikacji</string>
<string name="revanced_external_downloader_title">Przycisk zewnętrznego pobierania</string>
<string name="revanced_external_downloader_summary_on">Przycisk pobierania jest widoczny w odtwarzaczu</string>
<string name="revanced_external_downloader_summary_off">Przycisk pobierania nie jest widoczny w odtwarzaczu</string>
<!-- 'download action button' should be translated using the same wording as the translation of 'revanced_hide_download_button_title' -->
<string name="revanced_external_downloader_action_button_title">Przycisk akcji pobierania</string>
<string name="revanced_external_downloader_action_button_title">Nadpisz przycisk od pobierania</string>
<string name="revanced_external_downloader_action_button_summary_on">Przycisk pobierania otwiera zewnętrzną aplikację</string>
<string name="revanced_external_downloader_action_button_summary_off">Przycisk pobierania otwiera natywne pobieranie w aplikacji</string>
<string name="revanced_external_downloader_name_title">Nazwa pakietu aplikacji od pobierania</string>
@@ -406,14 +406,14 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_swipe_volume_title">Gest głośności</string>
<string name="revanced_swipe_volume_summary_on">Przesunięcie głośności jest włączone</string>
<string name="revanced_swipe_volume_summary_off">Przesunięcie głośności jest wyłączone</string>
<string name="revanced_swipe_press_to_engage_title">Gest naciśnięcia na przesunięcie</string>
<string name="revanced_swipe_press_to_engage_summary_on">Gest naciśnięcia na przesunięcie jest włączony</string>
<string name="revanced_swipe_press_to_engage_summary_off">Gest naciśnięcia na przesunięcie jest wyłączony</string>
<string name="revanced_swipe_press_to_engage_title">Naciśnij, by przesunąć</string>
<string name="revanced_swipe_press_to_engage_summary_on">Gest naciśnięcia jest włączony</string>
<string name="revanced_swipe_press_to_engage_summary_off">Gest naciśnięcia jest wyłączony</string>
<string name="revanced_swipe_haptic_feedback_title">Wibracje</string>
<string name="revanced_swipe_haptic_feedback_summary_on">Wibracje są włączone</string>
<string name="revanced_swipe_haptic_feedback_summary_off">Wibracje są wyłączone</string>
<string name="revanced_swipe_save_and_restore_brightness_title">Zapisz i przywróć jasność</string>
<string name="revanced_swipe_save_and_restore_brightness_summary_on">Zapisz i przywróć jasność podczas zamykania lub wchodzenia w tryb pełnoekranowy</string>
<string name="revanced_swipe_save_and_restore_brightness_title">Zapisywanie i przywracanie jasności</string>
<string name="revanced_swipe_save_and_restore_brightness_summary_on">Zapisuj i przywracaj jasność podczas zamykania lub wchodzenia w tryb pełnoekranowy</string>
<string name="revanced_swipe_save_and_restore_brightness_summary_off">Nie zapisuj i nie przywracaj jasności podczas zamykania lub wchodzenia w tryb pełnoekranowy</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_title">Gest automatycznej jasności</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_on">Przesunięcie w dół do najniższej wartości gestu jasności włącza automatyczną jasność</string>
@@ -436,32 +436,32 @@ This is because Crowdin requires temporarily flattening this file and removing t
<patch id="layout.buttons.action.hideButtonsPatch">
<string name="revanced_hide_buttons_screen_title">Przyciski akcji</string>
<string name="revanced_hide_buttons_screen_summary">Ukryj lub pokaż przyciski pod filmami</string>
<string name="revanced_hide_like_dislike_button_title">Przycisk do łapek w górę i w dół</string>
<string name="revanced_hide_like_dislike_button_title">Przycisk od łapek w górę i w dół</string>
<string name="revanced_hide_like_dislike_button_summary_on">Przyciski łapki w górę i w dół są ukryte</string>
<string name="revanced_hide_like_dislike_button_summary_off">Przyciski łapki w górę i w dół są widoczne</string>
<!-- 'Share' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_share_button_title">Przycisk do udostępniania</string>
<string name="revanced_hide_share_button_title">Przycisk od udostępniania</string>
<string name="revanced_hide_share_button_summary_on">Przycisk udostępniania jest ukryty</string>
<string name="revanced_hide_share_button_summary_off">Przycisk udostępniania jest widoczny</string>
<!-- 'Report' should be translated with the same localized wording that YouTube displays.
This button usually appears only on live streams. -->
<string name="revanced_hide_report_button_title">Przycisk do zgłaszania</string>
<string name="revanced_hide_report_button_title">Przycisk od zgłaszania</string>
<string name="revanced_hide_report_button_summary_on">Przycisk zgłaszania jest ukryty</string>
<string name="revanced_hide_report_button_summary_off">Przycisk zgłaszania jest widoczny</string>
<!-- 'Remix' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_remix_button_title">Przycisk do remiksu</string>
<string name="revanced_hide_remix_button_title">Przycisk od remiksu</string>
<string name="revanced_hide_remix_button_summary_on">Przycisk remiksu jest ukryty</string>
<string name="revanced_hide_remix_button_summary_off">Przycisk remiksu jest widoczny</string>
<!-- 'Download' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_download_button_title">Przycisk do pobierania</string>
<string name="revanced_hide_download_button_title">Przycisk od pobierania</string>
<string name="revanced_hide_download_button_summary_on">Przycisk pobierania jest ukryty</string>
<string name="revanced_hide_download_button_summary_off">Przycisk pobierania jest widoczny</string>
<!-- 'Thanks' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_thanks_button_title">Przycisk do dziękowania</string>
<string name="revanced_hide_thanks_button_summary_on">Przycisk dziękowania jest ukryty</string>
<string name="revanced_hide_thanks_button_summary_off">Przycisk dziękowania jest widoczny</string>
<string name="revanced_hide_thanks_button_title">Przycisk od dziękowania</string>
<string name="revanced_hide_thanks_button_summary_on">Przycisk od dziękowania jest ukryty</string>
<string name="revanced_hide_thanks_button_summary_off">Przycisk od dziękowania jest widoczny</string>
<!-- 'Clip' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_clip_button_title">Przycisk do klipu</string>
<string name="revanced_hide_clip_button_title">Przycisk od klipów</string>
<string name="revanced_hide_clip_button_summary_on">Przycisk tworzenia klipów jest ukryty</string>
<string name="revanced_hide_clip_button_summary_off">Przycisk tworzenia klipów jest widoczny</string>
<!-- 'Save' should be translated with the same localized wording that YouTube displays. -->
@@ -473,19 +473,19 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_navigation_buttons_screen_title">Przyciski nawigacyjne</string>
<string name="revanced_navigation_buttons_screen_summary">Ukryj lub zmień przyciski na pasku nawigacji</string>
<!-- 'Home' should be translated using the same localized wording YouTube displays for the tab. -->
<string name="revanced_hide_home_button_title">Przycisk do strony głównej</string>
<string name="revanced_hide_home_button_title">Przycisk od głównej</string>
<string name="revanced_hide_home_button_summary_on">Przycisk strony głównej jest ukryty</string>
<string name="revanced_hide_home_button_summary_off">Przycisk strony głównej jest widoczny</string>
<!-- 'Shorts' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_hide_shorts_button_title">Przycisk do Shorts\'ów</string>
<string name="revanced_hide_shorts_button_summary_on">Przycisk Shorts\'ów jest ukryty</string>
<string name="revanced_hide_shorts_button_summary_off">Przycisk Shorts\'ów jest widoczny</string>
<string name="revanced_hide_shorts_button_title">Przycisk od Shortsów</string>
<string name="revanced_hide_shorts_button_summary_on">Przycisk Shortsów jest ukryty</string>
<string name="revanced_hide_shorts_button_summary_off">Przycisk Shortsów jest widoczny</string>
<!-- The Create button has no display name. Translate normally. -->
<string name="revanced_hide_create_button_title">Przycisk do przesyłania</string>
<string name="revanced_hide_create_button_title">Przycisk od przesyłania</string>
<string name="revanced_hide_create_button_summary_on">Przycisk przesyłania jest ukryty</string>
<string name="revanced_hide_create_button_summary_off">Przycisk przesyłania jest widoczny</string>
<!-- 'Subscriptions' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_hide_subscriptions_button_title">Przycisk do subskrypcji</string>
<string name="revanced_hide_subscriptions_button_title">Przycisk od strony subskrypcji</string>
<string name="revanced_hide_subscriptions_button_summary_on">Przycisk subskrypcji jest ukryty</string>
<string name="revanced_hide_subscriptions_button_summary_off">Przycisk subskrypcji jest widoczny</string>
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
@@ -497,54 +497,54 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_navigation_button_labels_summary_off">Etykiety są widoczne</string>
</patch>
<patch id="layout.hide.player.flyoutmenupanel.hidePlayerFlyoutMenuPatch">
<string name="revanced_hide_player_flyout_title">Menu ustawień filmu</string>
<string name="revanced_hide_player_flyout_summary">Ukryj lub pokaż elementy menu ustawień filmu</string>
<string name="revanced_hide_player_flyout_title">Menu ustawień</string>
<string name="revanced_hide_player_flyout_summary">Ukryj lub pokaż elementy menu ustawień</string>
<!-- 'Captions' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_captions_title">Menu do napisów</string>
<string name="revanced_hide_player_flyout_captions_title">Menu napisów</string>
<string name="revanced_hide_player_flyout_captions_summary_on">Menu napisów jest ukryte</string>
<string name="revanced_hide_player_flyout_captions_summary_off">Menu napisów jest widoczne</string>
<!-- 'Additional settings' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_additional_settings_title">Menu do dodatkowych ustawień</string>
<string name="revanced_hide_player_flyout_additional_settings_title">Menu dodatkowych ustawień</string>
<string name="revanced_hide_player_flyout_additional_settings_summary_on">Menu dodatkowych ustawień jest ukryte</string>
<string name="revanced_hide_player_flyout_additional_settings_summary_off">Menu dodatkowych ustawień jest widoczne</string>
<!-- 'Sleep timer' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_sleep_timer_title">Menu do wyłącznika czasowego</string>
<string name="revanced_hide_player_flyout_sleep_timer_title">Menu wyłącznika czasowego</string>
<string name="revanced_hide_player_flyout_sleep_timer_summary_on">Menu wyłącznika czasowego jest ukryte</string>
<string name="revanced_hide_player_flyout_sleep_timer_summary_off">Menu wyłącznika czasowego jest widoczne</string>
<!-- 'Loop video' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_loop_video_title">Menu do pętli filmu</string>
<string name="revanced_hide_player_flyout_loop_video_title">Menu pętli filmu</string>
<string name="revanced_hide_player_flyout_loop_video_summary_on">Menu pętli filmu jest ukryte</string>
<string name="revanced_hide_player_flyout_loop_video_summary_off">Menu pętli filmu jest widoczne</string>
<!-- 'Ambient mode' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_ambient_mode_title">Menu do oświetlenia kinowego</string>
<string name="revanced_hide_player_flyout_ambient_mode_title">Menu oświetlenia kinowego</string>
<string name="revanced_hide_player_flyout_ambient_mode_summary_on">Menu oświetlenia kinowego jest ukryte</string>
<string name="revanced_hide_player_flyout_ambient_mode_summary_off">Menu oświetlenia kinowego jest widoczne</string>
<string name="revanced_hide_player_flyout_stable_volume_title">Menu do stabilnej głośności</string>
<string name="revanced_hide_player_flyout_stable_volume_title">Menu stabilnej głośności</string>
<string name="revanced_hide_player_flyout_stable_volume_summary_off">Menu stabilnej głośności jest widoczne</string>
<string name="revanced_hide_player_flyout_stable_volume_summary_on">Menu stabilnej głośności jest ukryte</string>
<!-- 'Help & feedback' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_help_title">Menu do pomocy i opinii</string>
<string name="revanced_hide_player_flyout_help_title">Menu pomocy i opinii</string>
<string name="revanced_hide_player_flyout_help_summary_on">Menu pomocy i opinii jest ukryte</string>
<string name="revanced_hide_player_flyout_help_summary_off">Menu pomocy i opinii jest widoczne</string>
<!-- 'Playback speed' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_speed_title">Menu do prędkości odtwarzania</string>
<string name="revanced_hide_player_flyout_speed_title">Menu prędkości odtwarzania</string>
<string name="revanced_hide_player_flyout_speed_summary_on">Menu prędkości odtwarzania jest ukryte</string>
<string name="revanced_hide_player_flyout_speed_summary_off">Menu prędkości odtwarzania jest widoczne</string>
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<string name="revanced_hide_player_flyout_more_info_title">Menu do większej ilości informacji</string>
<string name="revanced_hide_player_flyout_more_info_title">Menu większej ilości informacji</string>
<string name="revanced_hide_player_flyout_more_info_summary_on">Menu większej ilości informacji jest ukryte</string>
<string name="revanced_hide_player_flyout_more_info_summary_off">Menu większej ilości informacji jest widoczne</string>
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_lock_screen_title">Menu do blokady ekranu</string>
<string name="revanced_hide_player_flyout_lock_screen_title">Menu blokady ekranu</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_on">Menu blokady ekranu jest ukryte</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_off">Menu blokady ekranu jest widoczne</string>
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_audio_track_title">Menu do ścieżki dźwiękowej</string>
<string name="revanced_hide_player_flyout_audio_track_title">Menu ścieżki dźwiękowej</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">Menu ścieżki dźwiękowej jest ukryte</string>
<string name="revanced_hide_player_flyout_audio_track_summary_off">Menu ścieżki dźwiękowej jest widoczne</string>
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_watch_in_vr_title">Menu do oglądania w VR</string>
<string name="revanced_hide_player_flyout_watch_in_vr_title">Menu oglądania w VR</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Menu oglądania w VR jest ukryte</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_off">Menu oglądania w VR jest widoczne</string>
<string name="revanced_hide_player_flyout_video_quality_footer_title">Opis menu jakości filmu</string>
@@ -552,14 +552,14 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_player_flyout_video_quality_footer_summary_off">Opis menu jakości filmu jest widoczny</string>
</patch>
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
<string name="revanced_hide_player_previous_next_buttons_title">Przyciski do poprzedniego i następnego filmu</string>
<string name="revanced_hide_player_previous_next_buttons_title">Przyciski od poprzedniego i następnego filmu</string>
<string name="revanced_hide_player_previous_next_buttons_summary_on">Przyciski są ukryte</string>
<string name="revanced_hide_player_previous_next_buttons_summary_off">Przyciski są widoczne</string>
<string name="revanced_hide_cast_button_title">Przycisk do powielania</string>
<string name="revanced_hide_cast_button_title">Przycisk od powielania</string>
<string name="revanced_hide_cast_button_summary_on">Przycisk powielania jest ukryty</string>
<string name="revanced_hide_cast_button_summary_off">Przycisk powielania jest widoczny</string>
<!-- This button does not display any text, but 'captions' should be translated using the same wording used as the translation of 'revanced_hide_player_flyout_captions_title' -->
<string name="revanced_hide_captions_button_title">Przycisk do napisów</string>
<string name="revanced_hide_captions_button_title">Przycisk od napisów</string>
<string name="revanced_hide_captions_button_summary_on">Przycisk napisów jest ukryty</string>
<string name="revanced_hide_captions_button_summary_off">Przycisk napisów jest widoczny</string>
<string name="revanced_hide_autoplay_button_title">Przycisk automatycznego odtwarzania</string>
@@ -590,24 +590,24 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_seekbar_title">Pasek postępu filmu w odtwarzaczu</string>
<string name="revanced_hide_seekbar_summary_on">Pasek postępu w odtwarzaczu jest ukryty</string>
<string name="revanced_hide_seekbar_summary_off">Pasek postępu w odtwarzaczu jest widoczny</string>
<string name="revanced_hide_seekbar_thumbnail_title">Paski postępu filmów w miniaturkach</string>
<string name="revanced_hide_seekbar_thumbnail_title">Pasek postępu filmu w miniaturkach</string>
<string name="revanced_hide_seekbar_thumbnail_summary_on">Pasek postępu jest ukryty</string>
<string name="revanced_hide_seekbar_thumbnail_summary_off">Pasek postępu jest widoczny</string>
</patch>
<patch id="layout.hide.shorts.hideShortsComponentsResourcePatch">
<string name="revanced_shorts_player_screen_title">Odtwarzacz Shortsów</string>
<string name="revanced_shorts_player_screen_summary">Ukryj lub pokazuj przyciski w odtwarzaczu Shorts\'ów</string>
<string name="revanced_shorts_player_screen_summary">Ukryj lub pokaż przyciski w odtwarzaczu Shortsów</string>
<!-- 'home' should be translated using the same localized wording YouTube displays for the home tab. -->
<string name="revanced_hide_shorts_home_title">Shorts\'y na stronie głównej</string>
<string name="revanced_hide_shorts_home_summary_on">Shorts\'y na stronie głównej są ukryte</string>
<string name="revanced_hide_shorts_home_summary_off">Shorts\'y na stronie głównej są widoczne</string>
<string name="revanced_hide_shorts_home_title">Shortsy na stronie głównej</string>
<string name="revanced_hide_shorts_home_summary_on">Shortsy na stronie głównej są ukryte</string>
<string name="revanced_hide_shorts_home_summary_off">Shortsy na stronie głównej są widoczne</string>
<!-- 'subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
<string name="revanced_hide_shorts_subscriptions_title">Shorts\'y na stronie subskrypcji</string>
<string name="revanced_hide_shorts_subscriptions_summary_on">Shorts\'y na stronie subskrypcji są ukryte</string>
<string name="revanced_hide_shorts_subscriptions_summary_off">Shorts\'y na stronie subskrypcji są widoczne</string>
<string name="revanced_hide_shorts_search_title">Shorts\'y w wynikach wyszukiwania</string>
<string name="revanced_hide_shorts_search_summary_on">Shorts\'y w wynikach wyszukiwania są ukryte</string>
<string name="revanced_hide_shorts_search_summary_off">Shorts\'y w wynikach wyszukiwania są widoczne</string>
<string name="revanced_hide_shorts_subscriptions_title">Shortsy na stronie subskrypcji</string>
<string name="revanced_hide_shorts_subscriptions_summary_on">Shortsy na stronie subskrypcji są ukryte</string>
<string name="revanced_hide_shorts_subscriptions_summary_off">Shortsy na stronie subskrypcji są widoczne</string>
<string name="revanced_hide_shorts_search_title">Shortsy w wynikach wyszukiwania</string>
<string name="revanced_hide_shorts_search_summary_on">Shortsy w wynikach wyszukiwania są ukryte</string>
<string name="revanced_hide_shorts_search_summary_off">Shortsy w wynikach wyszukiwania są widoczne</string>
<!-- 'join' should be translated using the same localized wording YouTube displays for the button. -->
<string name="revanced_hide_shorts_join_button_title">Przycisk od sponsorowania</string>
<string name="revanced_hide_shorts_join_button_summary_on">Przycisk od sponsorowania jest ukryty</string>
@@ -724,10 +724,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_ryd_failure_ryd_enabled_while_playing_video_then_user_voted">Odśwież film, aby zagłosować za pomocą Return YouTube Dislike</string>
<string name="revanced_ryd_enable_summary_on">Łapki w dół są widoczne</string>
<string name="revanced_ryd_enable_summary_off">Łapki w dół są ukryte</string>
<string name="revanced_ryd_shorts_title">Pokaż łapki w dół na Shorts\'ach</string>
<string name="revanced_ryd_shorts_summary_on">Łapki w dół widoczne na Shorts\'ach</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">Łapki w dół wyświetlane na Shorts\n\nOgraniczenie: łapki w dół mogą się nie wyświetlać w trybie incognito</string>
<string name="revanced_ryd_shorts_summary_off">Łapki w dół ukryte na Shorts\'ach</string>
<string name="revanced_ryd_shorts_title">Łapki w dół na Shortsach</string>
<string name="revanced_ryd_shorts_summary_on">Łapki w dół widoczne na Shortsach</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">Łapki w dół widoczne na Shortsach\n\nOgraniczenie: łapki w dół mogą się nie wyświetlać w trybie incognito</string>
<string name="revanced_ryd_shorts_summary_off">Łapki w dół ukryte na Shortsach</string>
<string name="revanced_ryd_dislike_percentage_title">Łapki w dół jako procent</string>
<string name="revanced_ryd_dislike_percentage_summary_on">Łapki w dół wyświetlane jako procent</string>
<string name="revanced_ryd_dislike_percentage_summary_off">Łapki w dół wyświetlane jako liczba</string>
@@ -735,7 +735,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_ryd_compact_layout_title">Kompaktowy przycisk polubienia</string>
<string name="revanced_ryd_compact_layout_summary_on">Przycisk łapki stylizowany dla minimalnej szerokości</string>
<string name="revanced_ryd_compact_layout_summary_off">Przycisk łapki stylizowany dla najlepszego wyglądu</string>
<string name="revanced_ryd_toast_on_connection_error_title">Pokaż komunikat o niedostępności API</string>
<string name="revanced_ryd_toast_on_connection_error_title">Komunikat o niedostępności API</string>
<string name="revanced_ryd_toast_on_connection_error_summary_on">Komunikat jest wyświetlany, jeśli Return YouTube Dislike nie jest dostępny</string>
<string name="revanced_ryd_toast_on_connection_error_summary_off">Komunikat nie jest wyświetlany, jeśli Return YouTube Dislike nie jest dostępny</string>
<string name="revanced_ryd_about">O programie</string>
@@ -771,24 +771,24 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_off">Pełnoekranowy podgląd filmu w średniej jakości</string>
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">Spowoduje to również przywrócenie miniatur na transmisjach na żywo, które nie mają podglądu filmu.\n\nPodglądy filmów będą miały taką samą jakość jak bieżący film.\n\nTa funkcja działa najlepiej przy jakości 720p lub niższej oraz przy bardzo szybkim połączeniu internetowym.</string>
<string name="revanced_restore_old_seekbar_thumbnails_title">Stare miniatury paska nawigacji</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">Podgląd filmu pojawi pojawią się nad paskiem postępu</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">Podgląd filmu pojawi się na pełnym ekranie</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">Podgląd filmu pojawia się nad paskiem postępu filmów</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">Podgląd filmu pojawia się w trybie pełnoekranowym</string>
</patch>
<patch id="layout.sponsorblock.sponsorBlockResourcePatch">
<string name="revanced_sb_enable_sb">Włącz SponsorBlock\'a</string>
<string name="revanced_sb_enable_sb">SponsorBlock</string>
<string name="revanced_sb_enable_sb_sum">SponsorBlock to system oparty na społeczności, który umożliwia pomijanie irytujących części filmów na YouTube</string>
<string name="revanced_sb_appearance_category">Wygląd</string>
<string name="revanced_sb_enable_voting">Przycisk głosowania</string>
<string name="revanced_sb_enable_voting_sum_on">Przycisk głosowania jest wyświetlany</string>
<string name="revanced_sb_enable_voting_sum_off">Przycisk głosowania nie jest wyświetlany</string>
<string name="revanced_sb_enable_voting_sum_on">Przycisk głosowania jest widoczny</string>
<string name="revanced_sb_enable_voting_sum_off">Przycisk głosowania nie jest widoczny</string>
<!-- Translations should use language similar to 'revanced_ryd_compact_layout_title' -->
<string name="revanced_sb_enable_compact_skip_button">Styl przycisku od pomijania</string>
<string name="revanced_sb_enable_compact_skip_button_sum_on">Przycisk od pomijania stylizowany dla minimalnej szerokości</string>
<string name="revanced_sb_enable_compact_skip_button_sum_off">Przycisk od pomijania stylizowany dla najlepszego wyglądu</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button">Automatycznie ukryj przycisk od pomijania</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button">Automatycznie ukryj przycisk pomijania</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_on">Przycisk od pomijania ukrywa się po kilku sekundach</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_off">Przycisk od pomijania wyświetlany dla całego segmentu</string>
<string name="revanced_sb_general_skiptoast">Pokaż komunikat podczas automatycznego pominięcia</string>
<string name="revanced_sb_general_skiptoast">Komunikat podczas automatycznego pominięcia</string>
<string name="revanced_sb_general_skiptoast_sum_on">Komunikat jest wyświetlany, gdy segment zostanie automatycznie pominięty. Dotknij tutaj, aby zobaczyć przykład</string>
<string name="revanced_sb_general_skiptoast_sum_off">Komunikat nie jest wyświetlany. Dotknij tutaj, aby zobaczyć przykład</string>
<string name="revanced_sb_general_time_without">Długość filmu bez segmentów</string>
@@ -820,7 +820,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_general_uuid">Twój prywatny identyfikator użytkownika</string>
<string name="revanced_sb_general_uuid_sum">Ta informacja jest poufna i działa jak hasło. Użytkownik, który ma do niej dostęp, może zgłaszać treści jako ty</string>
<string name="revanced_sb_general_uuid_invalid">Identyfikator użytkownika prywatnego musi mieć co najmniej 30 znaków</string>
<string name="revanced_sb_general_api_url">Zmień link API</string>
<string name="revanced_sb_general_api_url">Zmień adres URL API</string>
<string name="revanced_sb_general_api_url_sum">Adres, który jest używany przez SponsorBlock do wykonywania połączeń z serwerem</string>
<string name="revanced_sb_api_url_reset">Zresetuj adres API</string>
<string name="revanced_sb_api_url_invalid">Adres API jest nieprawidłowy</string>
@@ -940,8 +940,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_stats_saved">Uchroniłeś ludzi przed &lt;b&gt;%s&lt;/b&gt; segmentami</string>
<string name="revanced_sb_stats_saved_sum_zero">Dotknij tutaj, aby zobaczyć globalne statystyki i najlepszych współtwórców</string>
<string name="revanced_sb_stats_saved_sum">To &lt;b&gt;%s&lt;/b&gt; ich życia.&lt;br&gt;Dotknij tutaj, aby zobaczyć tabelę wyników</string>
<string name="revanced_sb_stats_self_saved">Pominąłeś &lt;b&gt;%s&lt;/b&gt; segmentów</string>
<string name="revanced_sb_stats_self_saved_sum">To jest &lt;b&gt;%s&lt;/b&gt;</string>
<string name="revanced_sb_stats_self_saved">Pominąłeś(aś) &lt;b&gt;%s&lt;/b&gt; segmentów</string>
<string name="revanced_sb_stats_self_saved_sum">To &lt;b&gt;%s&lt;/b&gt;</string>
<string name="revanced_sb_stats_self_saved_reset_title">Czy chcesz zresetować ilość pominiętych segmentów?</string>
<string name="revanced_sb_stats_saved_hour_format">%1$s godzin %2$s minut</string>
<string name="revanced_sb_stats_saved_minute_format">%1$s minut %2$s sekund</string>
@@ -963,9 +963,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<!-- It is ideal, but not required, if the text here appears is alphabetically after the text used for 'revanced_spoof_app_version_title'.
This is because the 'General layout' menu uses alphabetic sorting, and it functionally works better if the spoof target selector appears below the 'Spoof app version' UI switch -->
<string name="revanced_spoof_app_version_target_title">Docelowa oszukiwana wersja aplikacji</string>
<string name="revanced_spoof_app_version_target_entry_1">18.38.44 - Przywróć stare ikony gracza Shorts</string>
<string name="revanced_spoof_app_version_target_entry_1">18.38.44 - Przywróć stare ikony odtwarzacza Shortsów</string>
<!-- 'RYD' is 'Return YouTube Dislike' -->
<string name="revanced_spoof_app_version_target_legacy_entry_1">18.33.40 - Przywróć RYD (Return YouTube Dislike) w trybie incognito</string>
<string name="revanced_spoof_app_version_target_legacy_entry_1">18.33.40 - Przywróć RYD w trybie incognito Shortsów</string>
<string name="revanced_spoof_app_version_target_legacy_entry_2">18.20.39 - Przywracanie szerokiej prędkości wideo &amp; menu jakości</string>
<string name="revanced_spoof_app_version_target_legacy_entry_3">18.09.39 - Przywróć kartę bibliotek</string>
<string name="revanced_spoof_app_version_target_legacy_entry_4">17.33.42 - Przywróć stary układ playlisty</string>
@@ -989,17 +989,17 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_change_start_page_entry_watch_later">Do obejrzenia</string>
</patch>
<patch id="layout.startupshortsreset.disableResumingShortsOnStartupPatch">
<string name="revanced_disable_resuming_shorts_player_title">Wznawianie odtwarzacza Shorts\'ów</string>
<string name="revanced_disable_resuming_shorts_player_summary_on">Odtwarzacz Shorts\'ów nie będzie wznawiany przy starcie aplikacji</string>
<string name="revanced_disable_resuming_shorts_player_summary_off">Odtwarzacz Shorts\'ów zostanie wznowiony przy starcie aplikacji</string>
<string name="revanced_disable_resuming_shorts_player_title">Wznawianie odtwarzacza Shortsów</string>
<string name="revanced_disable_resuming_shorts_player_summary_on">Odtwarzacz Shortsów nie będzie wznawiany przy starcie aplikacji</string>
<string name="revanced_disable_resuming_shorts_player_summary_off">Odtwarzacz Shortsów zostanie wznowiony przy starcie aplikacji</string>
</patch>
<patch id="layout.shortsautoplay.shortsAutoplayPatch">
<string name="revanced_shorts_autoplay_title">Autoodtwarzanie Shorts</string>
<string name="revanced_shorts_autoplay_summary_on">Shorts\'y będą odtwarzane automatycznie</string>
<string name="revanced_shorts_autoplay_summary_off">Shorts\'y będą odtwarzane automatycznie</string>
<string name="revanced_shorts_autoplay_background_title">Automatyczne odtwarzanie w tle Shorts\'ów</string>
<string name="revanced_shorts_autoplay_background_summary_on">Odtwarzanie w tle Shorts\'ów będzie automatycznie odtwarzane</string>
<string name="revanced_shorts_autoplay_background_summary_off">Odtwarzanie w tle Shorts\'ów będzie się powtarzać</string>
<string name="revanced_shorts_autoplay_title">Autoodtwarzanie Shortsów</string>
<string name="revanced_shorts_autoplay_summary_on">Shortsy będą odtwarzane automatycznie</string>
<string name="revanced_shorts_autoplay_summary_off">Shortsy będą się powtarzać</string>
<string name="revanced_shorts_autoplay_background_title">Autoodtwarzanie Shortsów w tle</string>
<string name="revanced_shorts_autoplay_background_summary_on">Odtwarzanie w tle Shortsów będzie automatyczne</string>
<string name="revanced_shorts_autoplay_background_summary_off">Odtwarzanie w tle Shortsów będzie się powtarzać</string>
</patch>
<patch id="layout.tablet.enableTabletLayoutPatch">
<string name="revanced_tablet_layout_title">Układ tabletu</string>
@@ -1011,22 +1011,22 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_title">Miniodtwarzacz</string>
<string name="revanced_miniplayer_screen_summary">Zmień styl zminimalizowanego odtwarzacza aplikacji</string>
<string name="revanced_miniplayer_type_title">Typ miniodtwarzacza</string>
<string name="revanced_miniplayer_type_entry_0">Nieaktywne</string>
<string name="revanced_miniplayer_type_entry_1">Oryginał</string>
<string name="revanced_miniplayer_type_entry_0">Wyłączony</string>
<string name="revanced_miniplayer_type_entry_1">Oryginalny</string>
<string name="revanced_miniplayer_type_entry_2">Minimalny</string>
<string name="revanced_miniplayer_type_entry_3">Tablet</string>
<string name="revanced_miniplayer_type_entry_3">Tabletowy</string>
<string name="revanced_miniplayer_type_entry_4">Nowoczesny 1</string>
<string name="revanced_miniplayer_type_entry_5">Nowoczesny 2</string>
<string name="revanced_miniplayer_type_entry_6">Nowoczesny 3</string>
<string name="revanced_miniplayer_rounded_corners_title">Zaokrąglone narożniki</string>
<string name="revanced_miniplayer_rounded_corners_summary_on">Zaokrąglone</string>
<string name="revanced_miniplayer_rounded_corners_summary_off">Kwadratowe</string>
<string name="revanced_miniplayer_rounded_corners_summary_on">Narożniki są zaokrąglone</string>
<string name="revanced_miniplayer_rounded_corners_summary_off">Narożniki są kwadratowe</string>
<string name="revanced_miniplayer_double_tap_action_title">Podwójne stuknięcie i uszczypnięcie, aby zmienić rozmiar</string>
<string name="revanced_miniplayer_double_tap_action_summary_on">Włączone\n\n• Dwukrotnie dotknij, aby zwiększyć rozmiar miniodtwarzacza\n• Dwukrotnie dotknij ponownie, aby przywrócić oryginalny rozmiar</string>
<string name="revanced_miniplayer_double_tap_action_summary_off">Wyłączone</string>
<string name="revanced_miniplayer_drag_and_drop_title">Przeciągnij i upuść</string>
<string name="revanced_miniplayer_drag_and_drop_summary_on">Włączone\n\nMiniodtwarzacz można przeciągnąć do dowolnego rogu ekranu</string>
<string name="revanced_miniplayer_drag_and_drop_summary_off">Wyłączone</string>
<string name="revanced_miniplayer_drag_and_drop_title">Gest przeciągnięcia i upuszczenia</string>
<string name="revanced_miniplayer_drag_and_drop_summary_on">Gest przeciągnięcia i upuszczenia włączony\n\nMiniodtwarzacz można przeciągnąć do dowolnego rogu ekranu</string>
<string name="revanced_miniplayer_drag_and_drop_summary_off">Gest przeciągnięcia i upuszczenia wyłączony</string>
<string name="revanced_miniplayer_horizontal_drag_title">Gest przeciągania w poziomie</string>
<string name="revanced_miniplayer_horizontal_drag_summary_on">Włączony\n\nMiniodtwarzacz można przeciągnąć poza ekran w lewo lub prawo</string>
<string name="revanced_miniplayer_horizontal_drag_summary_off">Gest przeciągania w poziomie jest wyłączony</string>
@@ -1036,9 +1036,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_hide_expand_close_legacy_title">Przyciski rozszerzania i zamykania</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">Przycisk są ukryte\n\nPrzesuń palcem, aby rozszerzyć lub zamknąć</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_off">Widoczne</string>
<string name="revanced_miniplayer_hide_subtext_title">Ukryj napisy</string>
<string name="revanced_miniplayer_hide_subtext_summary_on">Napisy są ukryte</string>
<string name="revanced_miniplayer_hide_subtext_summary_off">Napisy są widoczne</string>
<string name="revanced_miniplayer_hide_subtext_title">Podteksty</string>
<string name="revanced_miniplayer_hide_subtext_summary_on">Podteksty są ukryte</string>
<string name="revanced_miniplayer_hide_subtext_summary_off">Podteksty są widoczne</string>
<string name="revanced_miniplayer_hide_rewind_forward_title">Przyciski przewijania do przodu i do tyłu</string>
<string name="revanced_miniplayer_hide_rewind_forward_summary_on">Przyciski przewijania do przodu i do tyłu są ukryte</string>
<string name="revanced_miniplayer_hide_rewind_forward_summary_off">Przyciski przewijania do przodu i do tyłu są widoczne</string>
@@ -1069,13 +1069,13 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="layout.thumbnails.alternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<string name="revanced_alt_thumbnail_home_title">Strona główna</string>
<string name="revanced_alt_thumbnail_home_title">Na stronie głównej</string>
<!-- 'Subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
<string name="revanced_alt_thumbnail_subscription_title">Strona subskrypcji</string>
<string name="revanced_alt_thumbnail_subscription_title">Na stronie subskrypcji</string>
<!-- 'You' should be translated using the same localized wording YouTube displays for the You (library) tab. -->
<string name="revanced_alt_thumbnail_library_title">Na stronie Ty</string>
<string name="revanced_alt_thumbnail_player_title">W playlistach, rekomendacjach</string>
<string name="revanced_alt_thumbnail_search_title">Wyniki wyszukiwania</string>
<string name="revanced_alt_thumbnail_search_title">W wynikach wyszukiwania</string>
<string name="revanced_alt_thumbnail_options_entry_1">Oryginalne miniaturki</string>
<string name="revanced_alt_thumbnail_options_entry_2">DeArrow i oryginalne miniatury</string>
<string name="revanced_alt_thumbnail_options_entry_3">DeArrow i miniaturki przechwycone z filmu</string>
@@ -1086,11 +1086,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_off">Komunikat nie jest wyświetlany, jeśli DeArrow nie jest dostępny</string>
<string name="revanced_alt_thumbnail_dearrow_api_url_title">Punkt końcowy API DeArrow</string>
<string name="revanced_alt_thumbnail_dearrow_api_url_summary">Adres URL punktu końcowego do miniaturek DeArrow</string>
<string name="revanced_alt_thumbnail_stills_about_title">Przechwytywanie wideo</string>
<string name="revanced_alt_thumbnail_stills_about_title">Miniaturki przechwycone z filmu</string>
<string name="revanced_alt_thumbnail_stills_about_summary">Przechwytywanie jest nadal pobierane od początku/środka/końca każdego filmu. Te obrazy są wbudowane w YouTube i żadne zewnętrzne API nie jest używane</string>
<string name="revanced_alt_thumbnail_stills_fast_title">Szybkie przechwytywanie miniaturek z filmu</string>
<string name="revanced_alt_thumbnail_stills_fast_summary_on">Używasz przechwytywania średniej jakości. Miniaturki będą ładować się szybciej, lecz mogą pozostać puste w przypadku transmisji na żywo, niewydanych i bardzo starych filmów.</string>
<string name="revanced_alt_thumbnail_stills_fast_summary_off">Używasz wysokiej jakości przechwytywania</string>
<string name="revanced_alt_thumbnail_stills_fast_summary_on">Używasz przechwytywania średniej jakości. Miniaturki będą ładować się szybciej, lecz mogą pozostać puste w przypadku transmisji na żywo, niewydanych i bardzo starych filmów</string>
<string name="revanced_alt_thumbnail_stills_fast_summary_off">Używasz przechwytywania wysokiej jakości</string>
<string name="revanced_alt_thumbnail_stills_time_title">Czas, z którego ma być przechwycona miniaturka z filmu</string>
<string name="revanced_alt_thumbnail_stills_time_entry_1">Początek filmu</string>
<string name="revanced_alt_thumbnail_stills_time_entry_2">Środek filmu</string>
@@ -1100,9 +1100,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_alt_thumbnail_dearrow_error_generic">DeArrow tymczasowo niedostępny</string>
</patch>
<patch id="misc.announcements.announcementsPatch">
<string name="revanced_announcements_title">Pokaż ogłoszenia ReVanced</string>
<string name="revanced_announcements_summary_on">Włączone</string>
<string name="revanced_announcements_summary_off">Wyłączone</string>
<string name="revanced_announcements_title">Ogłoszenia ReVanced</string>
<string name="revanced_announcements_summary_on">Ogłoszenia są wyświetlane przy starcie</string>
<string name="revanced_announcements_summary_off">Ogłoszenia nie są wyświetlane przy starcie</string>
<string name="revanced_announcements_enabled_summary">Ogłoszenia przy starcie</string>
<string name="revanced_announcements_connection_failed">Nie udało się połączyć z dostawcą ogłoszeń</string>
<string name="revanced_announcements_dialog_dismiss">Odrzuć</string>
@@ -1114,13 +1114,13 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="misc.autorepeat.autoRepeatPatch">
<string name="revanced_auto_repeat_title">Automatyczne powtarzanie</string>
<string name="revanced_auto_repeat_summary_on">Włączone</string>
<string name="revanced_auto_repeat_summary_off">Wyłączone</string>
<string name="revanced_auto_repeat_summary_on">Automatyczne powtarzanie jest włączone</string>
<string name="revanced_auto_repeat_summary_off">Automatyczne powtarzanie jest wyłączone</string>
</patch>
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
<string name="revanced_spoof_device_dimensions_title">Oszukaj rozdzielczość urządzenia</string>
<string name="revanced_spoof_device_dimensions_summary_on">Włączone\n\nMogą zostać odblokowane wyższe jakości filmów, ale możesz doświadczyć zacinania się odtwarzanego filmu, pogorszenia żywotności baterii oraz nieznanych efektów ubocznych</string>
<string name="revanced_spoof_device_dimensions_summary_off">Wyłączone\n\nWłączenie tej opcji umożliwia ustawienie wyższej jakości filmu niż zwykle</string>
<string name="revanced_spoof_device_dimensions_summary_on">Oszukiwanie rozdzielczości włączone\n\nMogą zostać odblokowane wyższe jakości filmów, ale możesz doświadczyć zacinania się odtwarzanego filmu, pogorszenia żywotności baterii oraz nieznanych efektów ubocznych</string>
<string name="revanced_spoof_device_dimensions_summary_off">Oszukiwanie rozdzielczości wyłączone\n\nWłączenie tej opcji umożliwia ustawienie wyższej jakości filmu niż zwykle</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">Włączenie tego może spowodować zacinanie się odtwarzanego filmu, pogorszenie żywotności baterii i nieznane efekty uboczne.</string>
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
@@ -1128,7 +1128,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="microg_settings_summary">Ustawienia GmsCore</string>
</patch>
<patch id="misc.links.bypassURLRedirectsPatch">
<string name="revanced_bypass_url_redirects_title">Obejście przekierowań URL</string>
<string name="revanced_bypass_url_redirects_title">Omijanie przekierowań URL</string>
<string name="revanced_bypass_url_redirects_summary_on">Przekierowanie URL jest omijane</string>
<string name="revanced_bypass_url_redirects_summary_off">Przekierowanie URL nie jest omijane</string>
</patch>
@@ -1153,19 +1153,19 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_remember_video_quality_last_selected_title">Zapamiętaj zmiany jakości filmu</string>
<string name="revanced_remember_video_quality_last_selected_summary_on">Zmiany jakości dotyczą wszystkich filmów</string>
<string name="revanced_remember_video_quality_last_selected_summary_off">Zmiany jakości dotyczą tylko bieżącego filmu</string>
<string name="revanced_video_quality_default_wifi_title">Domyślna jakość wideo w sieci Wi-Fi</string>
<string name="revanced_video_quality_default_mobile_title">Domyślna jakość wideo w sieci komórkowej</string>
<string name="revanced_video_quality_default_wifi_title">Domyślna jakość filmu w sieci Wi-Fi</string>
<string name="revanced_video_quality_default_mobile_title">Domyślna jakość filmu w sieci komórkowej</string>
<string name="revanced_remember_video_quality_mobile">Dane mobilne</string>
<string name="revanced_remember_video_quality_wifi">Wi-Fi</string>
<string name="revanced_remember_video_quality_toast">Zmieniono domyślną jakość %1$s na: %2$s</string>
</patch>
<patch id="video.speed.button.playbackSpeedButtonPatch">
<string name="revanced_playback_speed_dialog_button_title">Przycisk prędkości</string>
<string name="revanced_playback_speed_dialog_button_title">Przycisk od prędkości</string>
<string name="revanced_playback_speed_dialog_button_summary_on">Przycisk jest widoczny</string>
<string name="revanced_playback_speed_dialog_button_summary_off">Przycisk nie jest widoczny</string>
</patch>
<patch id="video.speed.custom.customPlaybackSpeedPatch">
<string name="revanced_custom_speed_menu_title">Własne menu prędkości odtwarzania</string>
<string name="revanced_custom_speed_menu_title">Niestandardowe menu prędkości odtwarzania</string>
<string name="revanced_custom_speed_menu_summary_on">Niestandardowe menu prędkości jest widoczne</string>
<string name="revanced_custom_speed_menu_summary_off">Niestandardowe menu prędkości nie jest widoczne</string>
<string name="revanced_custom_playback_speeds_title">Niestandardowe prędkości odtwarzania</string>
@@ -1183,13 +1183,13 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="video.videoqualitymenu.restoreOldVideoQualityMenuResourcePatch">
<string name="revanced_restore_old_video_quality_menu_title">Stare menu jakości filmu</string>
<string name="revanced_restore_old_video_quality_menu_summary_on">Stare menu jakości wideo jest wyświelane</string>
<string name="revanced_restore_old_video_quality_menu_summary_off">Stare menu jakości wideo nie jest wyświetlane</string>
<string name="revanced_restore_old_video_quality_menu_summary_on">Stare menu jakości filmu jest widoczne</string>
<string name="revanced_restore_old_video_quality_menu_summary_off">Stare menu jakości filmu nie jest widoczne</string>
</patch>
<patch id="interaction.seekbar.enableSlideToSeekPatch">
<string name="revanced_slide_to_seek_title">Przesuwanie do przewijania</string>
<string name="revanced_slide_to_seek_summary_on">Włączone</string>
<string name="revanced_slide_to_seek_summary_off">Wyłączone</string>
<string name="revanced_slide_to_seek_title">Przesuń, by przewinąć</string>
<string name="revanced_slide_to_seek_summary_on">Gest przesuwania jest włączony</string>
<string name="revanced_slide_to_seek_summary_off">Przesuń, aby przeszukiwać nie jest włączony</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Oszukaj strumienie filmu</string>
@@ -1231,19 +1231,19 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="chat.antidelete.showDeletedMessagesPatch">
<string name="revanced_deleted_msg">wiadomość usunięta</string>
<string name="revanced_show_deleted_messages_title">Pokaż usunięte wiadomości</string>
<string name="revanced_show_deleted_messages_title">Usunięte wiadomości</string>
<string name="revanced_show_deleted_messages_entry_1">Nie pokazuj usuniętych wiadomości</string>
<string name="revanced_show_deleted_messages_entry_2">Ukryj usunięte wiadomości za spoilerem</string>
<string name="revanced_show_deleted_messages_entry_3">Pokaż usunięte wiadomości jako przekreślony tekst</string>
</patch>
<patch id="chat.autoclaim.autoClaimChannelPointsPatch">
<string name="revanced_auto_claim_channel_points_title">Automatycznie odbieranie punktów kanału</string>
<string name="revanced_auto_claim_channel_points_summary_on">Punkty kanału są automatycznie odebrane</string>
<string name="revanced_auto_claim_channel_points_summary_off">Punkty kanału nie są automatycznie odebrane</string>
<string name="revanced_auto_claim_channel_points_title">Automatyczne przyznawanie punktów kanału</string>
<string name="revanced_auto_claim_channel_points_summary_on">Punkty kanału są przyznawane automatycznie</string>
<string name="revanced_auto_claim_channel_points_summary_off">Punkty kanału nie są przyznawane automatycznie</string>
</patch>
<patch id="debug.debugModePatch">
<!-- Twitch specific internal debug mode, and not the same as 'revanced_debug_title' -->
<string name="revanced_twitch_debug_mode_title">Tryb debugowania </string>
<string name="revanced_twitch_debug_mode_title">Tryb debugowania</string>
<string name="revanced_twitch_debug_mode_summary_on">Tryb debugowania jest włączony (niezalecane)</string>
<string name="revanced_twitch_debug_mode_summary_off">Tryb debugowania jest wyłączony</string>
</patch>

View File

@@ -1013,6 +1013,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_type_title">Tip mini-plejera</string>
<string name="revanced_miniplayer_type_entry_0">Onemogućeno</string>
<string name="revanced_miniplayer_type_entry_1">Originalni</string>
<string name="revanced_miniplayer_type_entry_2">Minimalan</string>
<string name="revanced_miniplayer_type_entry_3">Tablet</string>
<string name="revanced_miniplayer_type_entry_4">Moderan 1</string>
<string name="revanced_miniplayer_type_entry_5">Moderan 2</string>

View File

@@ -1013,6 +1013,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_type_title">Тип мини-плејера</string>
<string name="revanced_miniplayer_type_entry_0">Онемогућено</string>
<string name="revanced_miniplayer_type_entry_1">Оригинални</string>
<string name="revanced_miniplayer_type_entry_2">Минималан</string>
<string name="revanced_miniplayer_type_entry_3">Таблет</string>
<string name="revanced_miniplayer_type_entry_4">Модеран 1</string>
<string name="revanced_miniplayer_type_entry_5">Модеран 2</string>

View File

@@ -1012,6 +1012,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_type_title">Mini oynatıcı tipi</string>
<string name="revanced_miniplayer_type_entry_0">Devre dışı</string>
<string name="revanced_miniplayer_type_entry_1">Orijinal</string>
<string name="revanced_miniplayer_type_entry_2">Minimal</string>
<string name="revanced_miniplayer_type_entry_3">Tablet</string>
<string name="revanced_miniplayer_type_entry_4">Modern 1</string>
<string name="revanced_miniplayer_type_entry_5">Modern 2</string>

View File

@@ -1012,7 +1012,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_type_title">Тип мініплеєра</string>
<string name="revanced_miniplayer_type_entry_0">Вимкнуто</string>
<string name="revanced_miniplayer_type_entry_1">Оригінальний</string>
<string name="revanced_miniplayer_type_entry_2">Мінімальні</string>
<string name="revanced_miniplayer_type_entry_2">Мінімальний</string>
<string name="revanced_miniplayer_type_entry_3">Планшетний</string>
<string name="revanced_miniplayer_type_entry_4">Новітній 1</string>
<string name="revanced_miniplayer_type_entry_5">Новітній 2</string>

View File

@@ -1012,6 +1012,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_type_title">Loại trình phát thu nhỏ</string>
<string name="revanced_miniplayer_type_entry_0">Đã tắt</string>
<string name="revanced_miniplayer_type_entry_1">Nguyên bản</string>
<string name="revanced_miniplayer_type_entry_2"></string>
<string name="revanced_miniplayer_type_entry_3">Máy tính bảng</string>
<string name="revanced_miniplayer_type_entry_4">Hiện đại 1</string>
<string name="revanced_miniplayer_type_entry_5">Hiện đại 2</string>

View File

@@ -995,6 +995,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_type_title">最小播放器类型</string>
<string name="revanced_miniplayer_type_entry_0">已禁用</string>
<string name="revanced_miniplayer_type_entry_1">原始文件</string>
<string name="revanced_miniplayer_type_entry_2">最小化</string>
<string name="revanced_miniplayer_type_entry_3">平板电脑</string>
<string name="revanced_miniplayer_type_entry_4">现代1</string>
<string name="revanced_miniplayer_type_entry_5">现代2</string>

View File

@@ -350,8 +350,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="ad.getpremium.hideGetPremiumPatch">
<string name="revanced_hide_get_premium_title">隱藏 YouTube Premium 推廣</string>
<string name="revanced_hide_get_premium_summary_on">已隱藏影片播放器下方 YouTube Premium 推廣</string>
<string name="revanced_hide_get_premium_summary_off">已顯示影片播放器下方 YouTube Premium 推廣</string>
<string name="revanced_hide_get_premium_summary_on">已隱藏影片播放器下方 YouTube Premium 推廣</string>
<string name="revanced_hide_get_premium_summary_off">已顯示影片播放器下方 YouTube Premium 推廣</string>
</patch>
<patch id="ad.video.videoAdsPatch">
<string name="revanced_hide_video_ads_title">隱藏影片廣告</string>
@@ -394,9 +394,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_disable_precise_seeking_gesture_summary_off">已啟用手勢</string>
</patch>
<patch id="interaction.seekbar.enableSeekbarTappingPatch">
<string name="revanced_seekbar_tapping_title">啟用進度列點擊</string>
<string name="revanced_seekbar_tapping_summary_on">已啟用進度列點擊</string>
<string name="revanced_seekbar_tapping_summary_off">已停用進度列點擊</string>
<string name="revanced_seekbar_tapping_title">啟用拖拽欄點擊</string>
<string name="revanced_seekbar_tapping_summary_on">已啟用拖拽欄點擊</string>
<string name="revanced_seekbar_tapping_summary_off">已停用拖拽欄點擊</string>
</patch>
<patch id="interaction.swipecontrols.swipeControlsResourcePatch">
<string name="revanced_swipe_brightness_title">啟用亮度手勢</string>
@@ -586,12 +586,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_disable_rolling_number_animations_summary_off">動畫滾動數字</string>
</patch>
<patch id="layout.hide.seekbar.hideSeekbarPatch">
<string name="revanced_hide_seekbar_title">隱藏影片播放器進度列</string>
<string name="revanced_hide_seekbar_summary_on">已隱藏影片播放器進度列</string>
<string name="revanced_hide_seekbar_summary_off">已顯示影片播放器進度列</string>
<string name="revanced_hide_seekbar_thumbnail_title">在縮圖中隱藏進度列</string>
<string name="revanced_hide_seekbar_thumbnail_summary_on">已隱藏縮圖進度列</string>
<string name="revanced_hide_seekbar_thumbnail_summary_off">已顯示縮圖進度列</string>
<string name="revanced_hide_seekbar_title">隱藏影片播放器拖拽欄</string>
<string name="revanced_hide_seekbar_summary_on">已隱藏影片播放器拖拽欄</string>
<string name="revanced_hide_seekbar_summary_off">已顯示影片播放器拖拽欄</string>
<string name="revanced_hide_seekbar_thumbnail_title">在縮圖中隱藏拖拽欄</string>
<string name="revanced_hide_seekbar_thumbnail_summary_on">已隱藏縮圖拖拽欄</string>
<string name="revanced_hide_seekbar_thumbnail_summary_off">已顯示縮圖拖拽欄</string>
</patch>
<patch id="layout.hide.shorts.hideShortsComponentsResourcePatch">
<string name="revanced_shorts_player_screen_title">Shorts 播放器</string>
@@ -725,7 +725,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_ryd_enable_summary_off">未顯示「不喜歡」數</string>
<string name="revanced_ryd_shorts_title">在 Shorts 中顯示「不喜歡」數</string>
<string name="revanced_ryd_shorts_summary_on">已在 Shorts 中顯示「不喜歡」數</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">顯示 Shorts「不喜歡」數\n\n限制:在無痕模式中可能不會出現「不喜歡」數</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">顯示 Shorts「不喜歡」數\n\n限制在無痕模式中可能不會出現「不喜歡」數</string>
<string name="revanced_ryd_shorts_summary_off">已在 Shorts 中隱藏「不喜歡」數</string>
<string name="revanced_ryd_dislike_percentage_title">「不喜歡」數比例</string>
<string name="revanced_ryd_dislike_percentage_summary_on">顯示「不喜歡」數為比例</string>
@@ -738,7 +738,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_ryd_toast_on_connection_error_summary_on">若 Return YouTube Dislike 無法使用,顯示提示</string>
<string name="revanced_ryd_toast_on_connection_error_summary_off">若 Return YouTube Dislike 無法使用,不顯示提示</string>
<string name="revanced_ryd_about">關於</string>
<string name="revanced_ryd_attribution_summary">資料由 Return YouTube Dislike API 提供。點瞭解更多資訊</string>
<string name="revanced_ryd_attribution_summary">資料由 Return YouTube Dislike API 提供。點擊此處來瞭解更多資訊</string>
<!-- Statistic strings are shown in the settings only when ReVanced debug mode is enabled. Typical users will never see these. -->
<string name="revanced_ryd_statistics_category_title">回傳此裝置的 ReturnYouTubeDislike API 統計資料</string>
<string name="revanced_ryd_statistics_getFetchCallResponseTimeAverage_title">平均 API 回應時間</string>
@@ -769,9 +769,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_on">已設定全螢幕拖拽欄為高畫質縮圖</string>
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_off">已設定全螢幕拖拽欄為中畫質縮圖</string>
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">此操作將復原沒有拖拽欄的即時串流縮圖\n\n拖拽欄縮圖將使用與目前影片的同等畫質。\n\n此功能在您使用高速網際網路並使用在 720p 或更低的畫質時為最佳狀態。</string>
<string name="revanced_restore_old_seekbar_thumbnails_title">還原舊版進度列縮圖</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">進度列縮圖將出現在進度列</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">進度列縮圖將出現在全螢幕畫面</string>
<string name="revanced_restore_old_seekbar_thumbnails_title">還原舊版拖拽欄縮圖</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">拖拽欄縮圖將出現在拖拽欄</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">拖拽欄縮圖將出現在全螢幕畫面</string>
</patch>
<patch id="layout.sponsorblock.sponsorBlockResourcePatch">
<string name="revanced_sb_enable_sb">啟用 SponsorBlock</string>
@@ -886,7 +886,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_skip_automatically">自動跳過</string>
<string name="revanced_sb_skip_automatically_once">自動跳過一次</string>
<string name="revanced_sb_skip_showbutton">顯示跳過按鈕</string>
<string name="revanced_sb_skip_seekbaronly">進度列顯示</string>
<string name="revanced_sb_skip_seekbaronly">拖拽欄顯示</string>
<string name="revanced_sb_skip_ignore">停用</string>
<string name="revanced_sb_submit_failed_invalid">無法提交片段:%s</string>
<string name="revanced_sb_submit_failed_timeout">SponsorBlock 暫時離線</string>
@@ -1012,6 +1012,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_type_title">迷你播放器類型</string>
<string name="revanced_miniplayer_type_entry_0">已停用</string>
<string name="revanced_miniplayer_type_entry_1">原始</string>
<string name="revanced_miniplayer_type_entry_2">最小化</string>
<string name="revanced_miniplayer_type_entry_3">平板</string>
<string name="revanced_miniplayer_type_entry_4">現代樣式 1</string>
<string name="revanced_miniplayer_type_entry_5">現代樣式 2</string>
@@ -1054,17 +1055,17 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_gradient_loading_screen_summary_off">載入畫面將有純色背景</string>
</patch>
<patch id="layout.theme.themeResourcePatch">
<string name="revanced_seekbar_custom_color_title">啟用自訂進度列顏色</string>
<string name="revanced_seekbar_custom_color_summary_on">已顯示自訂進度列顏色</string>
<string name="revanced_seekbar_custom_color_summary_off">已顯示原版進度列顏色</string>
<string name="revanced_seekbar_custom_color_value_title">自訂進度列顏色</string>
<string name="revanced_seekbar_custom_color_value_summary">進度列顏色</string>
<string name="revanced_seekbar_custom_color_title">啟用自訂拖拽欄顏色</string>
<string name="revanced_seekbar_custom_color_summary_on">已顯示自訂拖拽欄顏色</string>
<string name="revanced_seekbar_custom_color_summary_off">已顯示原版拖拽欄顏色</string>
<string name="revanced_seekbar_custom_color_value_title">自訂拖拽欄顏色</string>
<string name="revanced_seekbar_custom_color_value_summary">拖拽欄顏色</string>
<string name="revanced_seekbar_custom_color_invalid">滑動桿色彩值無效</string>
</patch>
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
<string name="revanced_bypass_image_region_restrictions_title">繞過圖片區域限制</string>
<string name="revanced_bypass_image_region_restrictions_summary_on">使用圖片主機 yt4.ggpht.com</string>
<string name="revanced_bypass_image_region_restrictions_summary_off">使用原始圖片主機\n\n啟用此功能可以修正在某些區域被封鎖遺失圖片</string>
<string name="revanced_bypass_image_region_restrictions_summary_off">使用原始圖片主機\n\n啟用此功能可以修正在某些區域被封鎖遺失圖片</string>
</patch>
<patch id="layout.thumbnails.alternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr format="reference|color" name="splash_custom_seekbar_color"/>
</resources>