Compare commits

..

29 Commits

Author SHA1 Message Date
semantic-release-bot
6fb94a7a41 chore: Release v5.38.0-dev.4 [skip ci]
# [5.38.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.38.0-dev.3...v5.38.0-dev.4) (2025-09-16)

### Bug Fixes

* **YouTube - Spoof video streams:** Show settings summary if `Force original audio` is enabled ([3776dda](3776dda710))
2025-09-16 12:05:23 +00:00
LisoUseInAIKyrios
3776dda710 fix(YouTube - Spoof video streams): Show settings summary if Force original audio is enabled 2025-09-16 15:59:32 +04:00
LisoUseInAIKyrios
f88b3a5162 refactor(YouTube - Spoof video streams): Adjust preferred client order 2025-09-16 15:40:55 +04:00
semantic-release-bot
0eeaf7ad67 chore: Release v5.38.0-dev.3 [skip ci]
# [5.38.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.38.0-dev.2...v5.38.0-dev.3) (2025-09-16)

### Features

* **YouTube - Spoof video streams:** Add iPadOS client ([2726231](2726231404))
2025-09-16 11:36:54 +00:00
LisoUseInAIKyrios
2726231404 feat(YouTube - Spoof video streams): Add iPadOS client 2025-09-16 15:33:55 +04:00
github-actions[bot]
9f0558e494 chore: Sync translations (#5905) 2025-09-16 15:11:04 +04:00
semantic-release-bot
01f7bc9f8d chore: Release v5.38.0-dev.2 [skip ci]
# [5.38.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.38.0-dev.1...v5.38.0-dev.2) (2025-09-16)

### Features

* **YouTube Music:** Add `Settings` patch ([#5838](https://github.com/ReVanced/revanced-patches/issues/5838)) ([5e20bd8](5e20bd80f1))
2025-09-16 06:57:43 +00:00
MarcaD
5e20bd80f1 feat(YouTube Music): Add Settings patch (#5838)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2025-09-16 10:53:49 +04:00
semantic-release-bot
f304c178e2 chore: Release v5.38.0-dev.1 [skip ci]
# [5.38.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.37.1-dev.3...v5.38.0-dev.1) (2025-09-15)

### Features

* **Instagram:** Add `Hide explore feed` patch ([#5856](https://github.com/ReVanced/revanced-patches/issues/5856)) ([1d65887](1d65887e01))
2025-09-15 19:30:52 +00:00
brosssh
1d65887e01 feat(Instagram): Add Hide explore feed patch (#5856) 2025-09-15 23:28:01 +04:00
github-actions[bot]
6b6eea8414 chore: Sync translations (#5864) 2025-09-15 23:26:07 +04:00
semantic-release-bot
1db131e90e chore: Release v5.37.1-dev.3 [skip ci]
## [5.37.1-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.37.1-dev.2...v5.37.1-dev.3) (2025-09-15)

### Bug Fixes

* **Spoof video streams:** Remove Android TV and iOS TV clients, add experimental VisionOS, add temporary fix for `Force original audio` to work with any spoof client ([#5861](https://github.com/ReVanced/revanced-patches/issues/5861)) ([abe3943](abe3943f98))
2025-09-15 17:02:01 +00:00
LisoUseInAIKyrios
abe3943f98 fix(Spoof video streams): Remove Android TV and iOS TV clients, add experimental VisionOS, add temporary fix for Force original audio to work with any spoof client (#5861) 2025-09-15 20:58:56 +04:00
semantic-release-bot
cb6d802de3 chore: Release v5.37.1-dev.2 [skip ci]
## [5.37.1-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.37.1-dev.1...v5.37.1-dev.2) (2025-09-15)

### Bug Fixes

* **Instagram - Hide navigation buttons:** Support v397.1.0.52.81 ([#5855](https://github.com/ReVanced/revanced-patches/issues/5855)) ([f11d1ef](f11d1ef990))
2025-09-15 12:52:54 +00:00
brosssh
f11d1ef990 fix(Instagram - Hide navigation buttons): Support v397.1.0.52.81 (#5855) 2025-09-15 16:48:55 +04:00
semantic-release-bot
3d25da18bc chore: Release v5.37.1-dev.1 [skip ci]
## [5.37.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.37.0...v5.37.1-dev.1) (2025-09-15)

### Bug Fixes

* **YouTube Music - Spoof video streams:** Fix playback issues when using a cellular network ([fa04c8e](fa04c8eecf))
2025-09-15 12:47:02 +00:00
LisoUseInAIKyrios
fa04c8eecf fix(YouTube Music - Spoof video streams): Fix playback issues when using a cellular network
Code adapted from 5f35e51a27
2025-09-15 16:43:04 +04:00
semantic-release-bot
105f6e0e97 chore: Release v5.37.0 [skip ci]
# [5.37.0](https://github.com/ReVanced/revanced-patches/compare/v5.36.0...v5.37.0) (2025-09-15)

### Bug Fixes

* **Instagram - Hide navigation buttons:** Add constrain to known working version ([e6c79f1](e6c79f1383))
* Resolve patching with dev branch ([09b941a](09b941abf0))
* **Spotify:** Remove broken `Spoof client` patch ([#5833](https://github.com/ReVanced/revanced-patches/issues/5833)) ([dcd4245](dcd42454bd))
* **Viber - Hide ads:** Add constrain to known working version ([2db0948](2db0948bea))
* **YouTube Music - Spoof streaming data:** Fix audio playback stuttering ([#5839](https://github.com/ReVanced/revanced-patches/issues/5839)) ([2a85a3b](2a85a3b290))

### Features

* **Viber:** Add `Hide ads` patch ([#5826](https://github.com/ReVanced/revanced-patches/issues/5826)) ([0abfab7](0abfab79d7))
2025-09-15 06:45:56 +00:00
LisoUseInAIKyrios
7d59efe05d chore: Merge branch dev to main (#5830) 2025-09-15 10:43:05 +04:00
github-actions[bot]
81ff5576b0 chore: Sync translations (#5854) 2025-09-15 10:41:42 +04:00
semantic-release-bot
9a5c102c0d chore: Release v5.37.0-dev.6 [skip ci]
# [5.37.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.37.0-dev.5...v5.37.0-dev.6) (2025-09-15)

### Bug Fixes

* **Instagram - Hide navigation buttons:** Add constrain to known working version ([e6c79f1](e6c79f1383))
2025-09-15 06:40:30 +00:00
LisoUseInAIKyrios
e6c79f1383 fix(Instagram - Hide navigation buttons): Add constrain to known working version 2025-09-15 10:36:57 +04:00
semantic-release-bot
2a582eced8 chore: Release v5.37.0-dev.5 [skip ci]
# [5.37.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.37.0-dev.4...v5.37.0-dev.5) (2025-09-15)

### Bug Fixes

* **Viber - Hide ads:** Add constrain to known working version ([2db0948](2db0948bea))
2025-09-15 06:29:31 +00:00
LisoUseInAIKyrios
2db0948bea fix(Viber - Hide ads): Add constrain to known working version 2025-09-15 10:26:30 +04:00
semantic-release-bot
a3ba92e742 chore: Release v5.37.0-dev.4 [skip ci]
# [5.37.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.37.0-dev.3...v5.37.0-dev.4) (2025-09-14)

### Bug Fixes

* **YouTube Music - Spoof streaming data:** Fix audio playback stuttering ([#5839](https://github.com/ReVanced/revanced-patches/issues/5839)) ([2a85a3b](2a85a3b290))
2025-09-14 18:22:57 +00:00
LisoUseInAIKyrios
2a85a3b290 fix(YouTube Music - Spoof streaming data): Fix audio playback stuttering (#5839) 2025-09-14 22:19:13 +04:00
semantic-release-bot
eee72208dd chore: Release v5.37.0-dev.3 [skip ci]
# [5.37.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.37.0-dev.2...v5.37.0-dev.3) (2025-09-14)

### Bug Fixes

* **Spotify:** Remove broken `Spoof client` patch ([#5833](https://github.com/ReVanced/revanced-patches/issues/5833)) ([dcd4245](dcd42454bd))
2025-09-14 17:15:28 +00:00
LisoUseInAIKyrios
dcd42454bd fix(Spotify): Remove broken Spoof client patch (#5833) 2025-09-14 21:11:15 +04:00
LisoUseInAIKyrios
782353c18a refactor(Spoof video streams): Handle migration of default spoof client for users upgrading from very old patches 2025-09-14 18:06:40 +04:00
150 changed files with 5657 additions and 2550 deletions

View File

@@ -1,3 +1,96 @@
# [5.38.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.38.0-dev.3...v5.38.0-dev.4) (2025-09-16)
### Bug Fixes
* **YouTube - Spoof video streams:** Show settings summary if `Force original audio` is enabled ([3776dda](https://github.com/ReVanced/revanced-patches/commit/3776dda710a7780717b7e6f2cdc1333ab67b92fc))
# [5.38.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.38.0-dev.2...v5.38.0-dev.3) (2025-09-16)
### Features
* **YouTube - Spoof video streams:** Add iPadOS client ([2726231](https://github.com/ReVanced/revanced-patches/commit/2726231404384d87f101d825e10a17c944e8f1bd))
# [5.38.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.38.0-dev.1...v5.38.0-dev.2) (2025-09-16)
### Features
* **YouTube Music:** Add `Settings` patch ([#5838](https://github.com/ReVanced/revanced-patches/issues/5838)) ([5e20bd8](https://github.com/ReVanced/revanced-patches/commit/5e20bd80f138d7ca94f18857194c46e489c435dc))
# [5.38.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.37.1-dev.3...v5.38.0-dev.1) (2025-09-15)
### Features
* **Instagram:** Add `Hide explore feed` patch ([#5856](https://github.com/ReVanced/revanced-patches/issues/5856)) ([1d65887](https://github.com/ReVanced/revanced-patches/commit/1d65887e015a067196f5a84db486fff355c96596))
## [5.37.1-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.37.1-dev.2...v5.37.1-dev.3) (2025-09-15)
### Bug Fixes
* **Spoof video streams:** Remove Android TV and iOS TV clients, add experimental VisionOS, add temporary fix for `Force original audio` to work with any spoof client ([#5861](https://github.com/ReVanced/revanced-patches/issues/5861)) ([abe3943](https://github.com/ReVanced/revanced-patches/commit/abe3943f98fd86dcd74c7e07cf65d3c7fc24fef9))
## [5.37.1-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.37.1-dev.1...v5.37.1-dev.2) (2025-09-15)
### Bug Fixes
* **Instagram - Hide navigation buttons:** Support v397.1.0.52.81 ([#5855](https://github.com/ReVanced/revanced-patches/issues/5855)) ([f11d1ef](https://github.com/ReVanced/revanced-patches/commit/f11d1ef9907082512f139d4ab0e2e9f707de7e48))
## [5.37.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.37.0...v5.37.1-dev.1) (2025-09-15)
### Bug Fixes
* **YouTube Music - Spoof video streams:** Fix playback issues when using a cellular network ([fa04c8e](https://github.com/ReVanced/revanced-patches/commit/fa04c8eecfbdd0b6ed082b464ca9032536d71762))
# [5.37.0](https://github.com/ReVanced/revanced-patches/compare/v5.36.0...v5.37.0) (2025-09-15)
### Bug Fixes
* **Instagram - Hide navigation buttons:** Add constrain to known working version ([e6c79f1](https://github.com/ReVanced/revanced-patches/commit/e6c79f13834c83fef04e4dee5e628cb0b9a27765))
* Resolve patching with dev branch ([09b941a](https://github.com/ReVanced/revanced-patches/commit/09b941abf0e8029999565082b02a88b5de507ec4))
* **Spotify:** Remove broken `Spoof client` patch ([#5833](https://github.com/ReVanced/revanced-patches/issues/5833)) ([dcd4245](https://github.com/ReVanced/revanced-patches/commit/dcd42454bd5f87dddd720534f6120c4ef90063a3))
* **Viber - Hide ads:** Add constrain to known working version ([2db0948](https://github.com/ReVanced/revanced-patches/commit/2db0948beaf2b68391a1fe7f21e92d31c7df61e7))
* **YouTube Music - Spoof streaming data:** Fix audio playback stuttering ([#5839](https://github.com/ReVanced/revanced-patches/issues/5839)) ([2a85a3b](https://github.com/ReVanced/revanced-patches/commit/2a85a3b29092729ae16d1fd93803634ce5f08e95))
### Features
* **Viber:** Add `Hide ads` patch ([#5826](https://github.com/ReVanced/revanced-patches/issues/5826)) ([0abfab7](https://github.com/ReVanced/revanced-patches/commit/0abfab79d7cda15bf17c53679fbfffb021662649))
# [5.37.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.37.0-dev.5...v5.37.0-dev.6) (2025-09-15)
### Bug Fixes
* **Instagram - Hide navigation buttons:** Add constrain to known working version ([e6c79f1](https://github.com/ReVanced/revanced-patches/commit/e6c79f13834c83fef04e4dee5e628cb0b9a27765))
# [5.37.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.37.0-dev.4...v5.37.0-dev.5) (2025-09-15)
### Bug Fixes
* **Viber - Hide ads:** Add constrain to known working version ([2db0948](https://github.com/ReVanced/revanced-patches/commit/2db0948beaf2b68391a1fe7f21e92d31c7df61e7))
# [5.37.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.37.0-dev.3...v5.37.0-dev.4) (2025-09-14)
### Bug Fixes
* **YouTube Music - Spoof streaming data:** Fix audio playback stuttering ([#5839](https://github.com/ReVanced/revanced-patches/issues/5839)) ([2a85a3b](https://github.com/ReVanced/revanced-patches/commit/2a85a3b29092729ae16d1fd93803634ce5f08e95))
# [5.37.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.37.0-dev.2...v5.37.0-dev.3) (2025-09-14)
### Bug Fixes
* **Spotify:** Remove broken `Spoof client` patch ([#5833](https://github.com/ReVanced/revanced-patches/issues/5833)) ([dcd4245](https://github.com/ReVanced/revanced-patches/commit/dcd42454bd5f87dddd720534f6120c4ef90063a3))
# [5.37.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.37.0-dev.1...v5.37.0-dev.2) (2025-09-14)

View File

@@ -1,3 +1,9 @@
dependencies {
compileOnly(project(":extensions:shared:library"))
compileOnly(project(":extensions:youtube:stub"))
compileOnly(libs.annotation)
}
android {
defaultConfig {
minSdk = 26

View File

@@ -0,0 +1,14 @@
package app.revanced.extension.music.patches;
import app.revanced.extension.music.settings.Settings;
@SuppressWarnings("unused")
public class HideCategoryBarPatch {
/**
* Injection point
*/
public static boolean hideCategoryBar() {
return Settings.HIDE_CATEGORY_BAR.get();
}
}

View File

@@ -0,0 +1,14 @@
package app.revanced.extension.music.patches;
import app.revanced.extension.music.settings.Settings;
@SuppressWarnings("unused")
public class HideGetPremiumPatch {
/**
* Injection point
*/
public static boolean hideGetPremiumLabel() {
return Settings.HIDE_GET_PREMIUM_LABEL.get();
}
}

View File

@@ -0,0 +1,14 @@
package app.revanced.extension.music.patches;
import app.revanced.extension.music.settings.Settings;
@SuppressWarnings("unused")
public class HideUpgradeButtonPatch {
/**
* Injection point
*/
public static boolean hideUpgradeButton() {
return Settings.HIDE_UPGRADE_BUTTON.get();
}
}

View File

@@ -0,0 +1,17 @@
package app.revanced.extension.music.patches;
import app.revanced.extension.music.settings.Settings;
@SuppressWarnings("unused")
public class HideVideoAdsPatch {
/**
* Injection point
*/
public static boolean showVideoAds(boolean original) {
if (Settings.HIDE_VIDEO_ADS.get()) {
return false;
}
return original;
}
}

View File

@@ -0,0 +1,14 @@
package app.revanced.extension.music.patches;
import app.revanced.extension.music.settings.Settings;
@SuppressWarnings("unused")
public class PermanentRepeatPatch {
/**
* Injection point
*/
public static boolean permanentRepeat() {
return Settings.PERMANENT_REPEAT.get();
}
}

View File

@@ -0,0 +1,27 @@
package app.revanced.extension.music.patches.spoof;
import static app.revanced.extension.shared.spoof.ClientType.ANDROID_VR_1_43_32;
import static app.revanced.extension.shared.spoof.ClientType.ANDROID_VR_1_61_48;
import static app.revanced.extension.shared.spoof.ClientType.VISIONOS;
import java.util.List;
import app.revanced.extension.shared.spoof.ClientType;
import app.revanced.extension.shared.spoof.requests.StreamingDataRequest;
@SuppressWarnings("unused")
public class SpoofVideoStreamsPatch {
/**
* Injection point.
*/
public static void setClientOrderToUse() {
List<ClientType> availableClients = List.of(
ANDROID_VR_1_43_32,
ANDROID_VR_1_61_48,
VISIONOS
);
StreamingDataRequest.setClientOrderToUse(availableClients, ANDROID_VR_1_43_32);
}
}

View File

@@ -0,0 +1,84 @@
package app.revanced.extension.music.settings;
import android.app.Activity;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.preference.PreferenceFragment;
import android.view.View;
import app.revanced.extension.music.settings.preference.ReVancedPreferenceFragment;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.settings.BaseActivityHook;
/**
* Hooks GoogleApiActivity to inject a custom ReVancedPreferenceFragment with a toolbar.
*/
public class GoogleApiActivityHook extends BaseActivityHook {
/**
* Injection point
* <p>
* Creates an instance of GoogleApiActivityHook for use in static initialization.
*/
@SuppressWarnings("unused")
public static GoogleApiActivityHook createInstance() {
// Must touch the Music settings to ensure the class is loaded and
// the values can be found when setting the UI preferences.
// Logging anything under non debug ensures this is set.
Logger.printInfo(() -> "Permanent repeat enabled: " + Settings.PERMANENT_REPEAT.get());
return new GoogleApiActivityHook();
}
/**
* Sets the fixed theme for the activity.
*/
@Override
protected void customizeActivityTheme(Activity activity) {
// Override the default YouTube Music theme to increase start padding of list items.
// Custom style located in resources/music/values/style.xml
activity.setTheme(Utils.getResourceIdentifier("Theme.ReVanced.YouTubeMusic.Settings", "style"));
}
/**
* Returns the resource ID for the YouTube Music settings layout.
*/
@Override
protected int getContentViewResourceId() {
return Utils.getResourceIdentifier("revanced_music_settings_with_toolbar", "layout");
}
/**
* Returns the fixed background color for the toolbar.
*/
@Override
protected int getToolbarBackgroundColor() {
return Utils.getResourceColor("ytm_color_black");
}
/**
* Returns the navigation icon with a color filter applied.
*/
@Override
protected Drawable getNavigationIcon() {
Drawable navigationIcon = ReVancedPreferenceFragment.getBackButtonDrawable();
navigationIcon.setColorFilter(Utils.getAppForegroundColor(), PorterDuff.Mode.SRC_IN);
return navigationIcon;
}
/**
* Returns the click listener that finishes the activity when the navigation icon is clicked.
*/
@Override
protected View.OnClickListener getNavigationClickListener(Activity activity) {
return view -> activity.finish();
}
/**
* Creates a new ReVancedPreferenceFragment for the activity.
*/
@Override
protected PreferenceFragment createPreferenceFragment() {
return new ReVancedPreferenceFragment();
}
}

View File

@@ -0,0 +1,21 @@
package app.revanced.extension.music.settings;
import static java.lang.Boolean.FALSE;
import static java.lang.Boolean.TRUE;
import app.revanced.extension.shared.settings.BaseSettings;
import app.revanced.extension.shared.settings.BooleanSetting;
public class Settings extends BaseSettings {
// Ads
public static final BooleanSetting HIDE_VIDEO_ADS = new BooleanSetting("revanced_music_hide_video_ads", TRUE, true);
public static final BooleanSetting HIDE_GET_PREMIUM_LABEL = new BooleanSetting("revanced_music_hide_get_premium_label", TRUE, true);
public static final BooleanSetting HIDE_UPGRADE_BUTTON = new BooleanSetting("revanced_music_hide_upgrade_button", TRUE, true);
// General
public static final BooleanSetting HIDE_CATEGORY_BAR = new BooleanSetting("revanced_music_hide_category_bar", FALSE, true);
// Player
public static final BooleanSetting PERMANENT_REPEAT = new BooleanSetting("revanced_music_play_permanent_repeat", FALSE, true);
}

View File

@@ -0,0 +1,38 @@
package app.revanced.extension.music.settings.preference;
import android.widget.Toolbar;
import app.revanced.extension.music.settings.GoogleApiActivityHook;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.settings.preference.ToolbarPreferenceFragment;
/**
* Preference fragment for ReVanced settings.
*/
@SuppressWarnings({"deprecation", "NewApi"})
public class ReVancedPreferenceFragment extends ToolbarPreferenceFragment {
/**
* Initializes the preference fragment.
*/
@Override
protected void initialize() {
super.initialize();
try {
Utils.sortPreferenceGroups(getPreferenceScreen());
setPreferenceScreenToolbar(getPreferenceScreen());
} catch (Exception ex) {
Logger.printException(() -> "initialize failure", ex);
}
}
/**
* Sets toolbar for all nested preference screens.
*/
@Override
protected void customizeToolbar(Toolbar toolbar) {
GoogleApiActivityHook.setToolbarLayoutParams(toolbar);
}
}

View File

@@ -0,0 +1,142 @@
package app.revanced.extension.shared.settings;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.preference.PreferenceFragment;
import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toolbar;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.settings.preference.ToolbarPreferenceFragment;
/**
* Base class for hooking activities to inject a custom PreferenceFragment with a toolbar.
* Provides common logic for initializing the activity and setting up the toolbar.
*/
@SuppressWarnings({"deprecation", "NewApi"})
public abstract class BaseActivityHook extends Activity {
/**
* Layout parameters for the toolbar, extracted from the dummy toolbar.
*/
protected static ViewGroup.LayoutParams toolbarLayoutParams;
/**
* Sets the layout parameters for the toolbar.
*/
public static void setToolbarLayoutParams(Toolbar toolbar) {
if (toolbarLayoutParams != null) {
toolbar.setLayoutParams(toolbarLayoutParams);
}
}
/**
* Initializes the activity by setting the theme, content view and injecting a PreferenceFragment.
*/
public static void initialize(BaseActivityHook hook, Activity activity) {
try {
hook.customizeActivityTheme(activity);
activity.setContentView(hook.getContentViewResourceId());
// Sanity check.
String dataString = activity.getIntent().getDataString();
if (!"revanced_settings_intent".equals(dataString)) {
Logger.printException(() -> "Unknown intent: " + dataString);
return;
}
PreferenceFragment fragment = hook.createPreferenceFragment();
hook.createToolbar(activity, fragment);
activity.getFragmentManager()
.beginTransaction()
.replace(Utils.getResourceIdentifier("revanced_settings_fragments", "id"), fragment)
.commit();
} catch (Exception ex) {
Logger.printException(() -> "initialize failure", ex);
}
}
/**
* Creates and configures a toolbar for the activity, replacing a dummy placeholder.
*/
@SuppressLint("UseCompatLoadingForDrawables")
protected void createToolbar(Activity activity, PreferenceFragment fragment) {
// Replace dummy placeholder toolbar.
// This is required to fix submenu title alignment issue with Android ASOP 15+
ViewGroup toolBarParent = activity.findViewById(
Utils.getResourceIdentifier("revanced_toolbar_parent", "id"));
ViewGroup dummyToolbar = Utils.getChildViewByResourceName(toolBarParent, "revanced_toolbar");
toolbarLayoutParams = dummyToolbar.getLayoutParams();
toolBarParent.removeView(dummyToolbar);
// Sets appropriate system navigation bar color for the activity.
ToolbarPreferenceFragment.setNavigationBarColor(activity.getWindow());
Toolbar toolbar = new Toolbar(toolBarParent.getContext());
toolbar.setBackgroundColor(getToolbarBackgroundColor());
toolbar.setNavigationIcon(getNavigationIcon());
toolbar.setNavigationOnClickListener(getNavigationClickListener(activity));
toolbar.setTitle(Utils.getResourceIdentifier("revanced_settings_title", "string"));
final int margin = Utils.dipToPixels(16);
toolbar.setTitleMarginStart(margin);
toolbar.setTitleMarginEnd(margin);
TextView toolbarTextView = Utils.getChildView(toolbar, false, view -> view instanceof TextView);
if (toolbarTextView != null) {
toolbarTextView.setTextColor(Utils.getAppForegroundColor());
toolbarTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);
}
setToolbarLayoutParams(toolbar);
onPostToolbarSetup(activity, toolbar, fragment);
toolBarParent.addView(toolbar, 0);
}
/**
* Customizes the activity's theme.
*/
protected abstract void customizeActivityTheme(Activity activity);
/**
* Returns the resource ID for the content view layout.
*/
protected abstract int getContentViewResourceId();
/**
* Returns the background color for the toolbar.
*/
protected abstract int getToolbarBackgroundColor();
/**
* Returns the navigation icon drawable for the toolbar.
*/
protected abstract Drawable getNavigationIcon();
/**
* Returns the click listener for the toolbar's navigation icon.
*/
protected abstract View.OnClickListener getNavigationClickListener(Activity activity);
/**
* Creates the PreferenceFragment to be injected into the activity.
*/
protected PreferenceFragment createPreferenceFragment() {
return new ToolbarPreferenceFragment();
}
/**
* Performs additional setup after the toolbar is configured.
*
* @param activity The activity hosting the toolbar.
* @param toolbar The configured toolbar.
* @param fragment The PreferenceFragment associated with the activity.
*/
protected void onPostToolbarSetup(Activity activity, Toolbar toolbar, PreferenceFragment fragment) {}
}

View File

@@ -4,8 +4,8 @@ import static java.lang.Boolean.FALSE;
import static java.lang.Boolean.TRUE;
import static app.revanced.extension.shared.settings.Setting.parent;
import static app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch.AudioStreamLanguageOverrideAvailability;
import static app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch.SpoofiOSAvailability;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.spoof.ClientType;
/**
@@ -31,9 +31,13 @@ public class BaseSettings {
public static final BooleanSetting SPOOF_VIDEO_STREAMS = new BooleanSetting("revanced_spoof_video_streams", TRUE, true, "revanced_spoof_video_streams_user_dialog_message");
public static final EnumSetting<AppLanguage> SPOOF_VIDEO_STREAMS_LANGUAGE = new EnumSetting<>("revanced_spoof_video_streams_language", AppLanguage.DEFAULT, new AudioStreamLanguageOverrideAvailability());
public static final BooleanSetting SPOOF_STREAMING_DATA_STATS_FOR_NERDS = new BooleanSetting("revanced_spoof_streaming_data_stats_for_nerds", TRUE, parent(SPOOF_VIDEO_STREAMS));
public static final BooleanSetting SPOOF_VIDEO_STREAMS_IOS_FORCE_AVC = new BooleanSetting("revanced_spoof_video_streams_ios_force_avc", FALSE, true,
"revanced_spoof_video_streams_ios_force_avc_user_dialog_message", new SpoofiOSAvailability());
// Client type must be last spoof setting due to cyclic references.
public static final EnumSetting<ClientType> SPOOF_VIDEO_STREAMS_CLIENT_TYPE = new EnumSetting<>("revanced_spoof_video_streams_client_type", ClientType.ANDROID_VR_NO_AUTH, true, parent(SPOOF_VIDEO_STREAMS));
public static final EnumSetting<ClientType> SPOOF_VIDEO_STREAMS_CLIENT_TYPE = new EnumSetting<>("revanced_spoof_video_streams_client_type", ClientType.ANDROID_VR_1_61_48, true, parent(SPOOF_VIDEO_STREAMS));
static {
if (SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get() == ClientType.IOS_UNPLUGGED) {
Logger.printInfo(() -> "Migrating from iOS Unplugged to iPadOS");
SPOOF_VIDEO_STREAMS_CLIENT_TYPE.save(ClientType.IPADOS);
}
}
}

View File

@@ -1,9 +1,8 @@
package app.revanced.extension.youtube.settings.preference;
package app.revanced.extension.shared.settings.preference;
import android.content.Context;
import android.util.AttributeSet;
import android.preference.Preference;
import app.revanced.extension.shared.settings.preference.LogBufferManager;
/**
* A custom preference that clears the ReVanced debug log buffer when clicked.

View File

@@ -1,9 +1,8 @@
package app.revanced.extension.youtube.settings.preference;
package app.revanced.extension.shared.settings.preference;
import android.content.Context;
import android.util.AttributeSet;
import android.preference.Preference;
import app.revanced.extension.shared.settings.preference.LogBufferManager;
/**
* A custom preference that triggers exporting ReVanced debug logs to the clipboard when clicked.

View File

@@ -0,0 +1,150 @@
package app.revanced.extension.shared.settings.preference;
import android.annotation.SuppressLint;
import android.app.Dialog;
import android.graphics.Insets;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.preference.Preference;
import android.preference.PreferenceScreen;
import android.util.TypedValue;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowInsets;
import android.widget.TextView;
import android.widget.Toolbar;
import androidx.annotation.Nullable;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.settings.BaseActivityHook;
@SuppressWarnings({"deprecation", "NewApi"})
public class ToolbarPreferenceFragment extends AbstractPreferenceFragment {
/**
* Sets toolbar for all nested preference screens.
*/
protected void setPreferenceScreenToolbar(PreferenceScreen parentScreen) {
for (int i = 0, count = parentScreen.getPreferenceCount(); i < count; 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();
// Allow package-specific background customization.
customizeDialogBackground(rootView);
// Fix the system navigation bar color for submenus.
setNavigationBarColor(preferenceScreenDialog.getWindow());
// Fix edge-to-edge screen with Android 15 and YT 19.45+
// https://developer.android.com/develop/ui/views/layout/edge-to-edge#system-bars-insets
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
rootView.setOnApplyWindowInsetsListener((v, insets) -> {
Insets statusInsets = insets.getInsets(WindowInsets.Type.statusBars());
Insets navInsets = insets.getInsets(WindowInsets.Type.navigationBars());
Insets cutoutInsets = insets.getInsets(WindowInsets.Type.displayCutout());
// Apply padding for display cutout in landscape.
int leftPadding = cutoutInsets.left;
int rightPadding = cutoutInsets.right;
int topPadding = statusInsets.top;
int bottomPadding = navInsets.bottom;
v.setPadding(leftPadding, topPadding, rightPadding, bottomPadding);
return insets;
});
}
Toolbar toolbar = new Toolbar(childScreen.getContext());
toolbar.setTitle(childScreen.getTitle());
toolbar.setNavigationIcon(getBackButtonDrawable());
toolbar.setNavigationOnClickListener(view -> preferenceScreenDialog.dismiss());
final int margin = Utils.dipToPixels(16);
toolbar.setTitleMargin(margin, 0, margin, 0);
TextView toolbarTextView = Utils.getChildView(toolbar,
true, TextView.class::isInstance);
if (toolbarTextView != null) {
toolbarTextView.setTextColor(Utils.getAppForegroundColor());
toolbarTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);
}
// Allow package-specific toolbar customization.
customizeToolbar(toolbar);
// Allow package-specific post-toolbar setup.
onPostToolbarSetup(toolbar, preferenceScreenDialog);
rootView.addView(toolbar, 0);
return false;
}
);
}
}
}
/**
* Sets the system navigation bar color for the activity.
* Applies the background color obtained from {@link Utils#getAppBackgroundColor()} to the navigation bar.
* For Android 10 (API 29) and above, enforces navigation bar contrast to ensure visibility.
*/
public static void setNavigationBarColor(@Nullable Window window) {
if (window == null) {
Logger.printDebug(() -> "Cannot set navigation bar color, window is null");
return;
}
window.setNavigationBarColor(Utils.getAppBackgroundColor());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
window.setNavigationBarContrastEnforced(true);
}
}
/**
* Returns the drawable for the back button.
*/
@SuppressLint("UseCompatLoadingForDrawables")
public static Drawable getBackButtonDrawable() {
final int backButtonResource = Utils.getResourceIdentifier(
"revanced_settings_toolbar_arrow_left", "drawable");
Drawable drawable = Utils.getContext().getResources().getDrawable(backButtonResource);
customizeBackButtonDrawable(drawable);
return drawable;
}
/**
* Customizes the back button drawable.
*/
protected static void customizeBackButtonDrawable(Drawable drawable) {
drawable.setTint(Utils.getAppForegroundColor());
}
/**
* Allows subclasses to customize the dialog's root view background.
*/
protected void customizeDialogBackground(ViewGroup rootView) {
rootView.setBackgroundColor(Utils.getAppBackgroundColor());
}
/**
* Allows subclasses to customize the toolbar.
*/
protected void customizeToolbar(Toolbar toolbar) {
BaseActivityHook.setToolbarLayoutParams(toolbar);
}
/**
* Allows subclasses to perform actions after toolbar setup.
*/
protected void onPostToolbarSetup(Toolbar toolbar, Dialog preferenceScreenDialog) {}
}

View File

@@ -2,17 +2,22 @@ package app.revanced.extension.shared.spoof;
import android.os.Build;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.util.Locale;
import java.util.Objects;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.settings.BaseSettings;
@SuppressWarnings("ConstantLocale")
public enum ClientType {
/**
* Video not playable: Kids / Paid / Movie / Private / Age-restricted.
* This client can only be used when logged out.
*/
// https://dumps.tadiphone.dev/dumps/oculus/eureka
ANDROID_VR_NO_AUTH(
ANDROID_VR_1_61_48(
28,
"ANDROID_VR",
"com.google.android.apps.youtube.vr.oculus",
@@ -27,29 +32,32 @@ public enum ClientType {
"1.61.48",
false,
false,
"Android VR No auth"
"Android VR 1.61"
),
// Chromecast with Google TV 4K.
// https://dumps.tadiphone.dev/dumps/google/kirkwood
ANDROID_UNPLUGGED(
29,
"ANDROID_UNPLUGGED",
"com.google.android.apps.youtube.unplugged",
"Google",
"Google TV Streamer",
"Android",
"14",
"34",
"UTT3.240625.001.K5",
"132.0.6808.3",
"8.49.0",
true,
true,
"Android TV"
/**
* Uses non adaptive bitrate, which fixes audio stuttering with YT Music.
* Does not use AV1.
*/
ANDROID_VR_1_43_32(
ANDROID_VR_1_61_48.id,
ANDROID_VR_1_61_48.clientName,
Objects.requireNonNull(ANDROID_VR_1_61_48.packageName),
ANDROID_VR_1_61_48.deviceMake,
ANDROID_VR_1_61_48.deviceModel,
ANDROID_VR_1_61_48.osName,
ANDROID_VR_1_61_48.osVersion,
Objects.requireNonNull(ANDROID_VR_1_61_48.androidSdkVersion),
Objects.requireNonNull(ANDROID_VR_1_61_48.buildId),
"107.0.5284.2",
"1.43.32",
ANDROID_VR_1_61_48.requiresAuth,
ANDROID_VR_1_61_48.useAuth,
"Android VR 1.43"
),
// Cannot play livestreams and lacks HDR, but can play videos with music and labeled "for children".
// Google Pixel 9 Pro Fold
// https://dumps.tadiphone.dev/dumps/google/barbet
/**
* Cannot play livestreams and lacks HDR, but can play videos with music and labeled "for children".
* <a href="https://dumps.tadiphone.dev/dumps/google/barbet">Google Pixel 9 Pro Fold</a>
*/
ANDROID_CREATOR(
14,
"ANDROID_CREATOR",
@@ -66,42 +74,64 @@ public enum ClientType {
true,
"Android Creator"
),
/**
* Internal YT client for an unreleased YT client. May stop working at any time.
*/
VISIONOS(101,
"VISIONOS",
"Apple",
"RealityDevice14,1",
"visionOS",
"1.3.21O771",
"0.1",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 Safari/605.1.15",
false,
false,
"visionOS"
),
/**
* The device machine id for the iPad 6th Gen (iPad7,6).
* AV1 hardware decoding is not supported.
* See [this GitHub Gist](https://gist.github.com/adamawolf/3048717) for more information.
*
* Based on Google's actions to date, PoToken may not be required on devices with very low specs.
* For example, suppose the User-Agent for a PlayStation 3 (with 256MB of RAM) is used.
* Accessing 'Web' (https://www.youtube.com) will redirect to 'TV' (https://www.youtube.com/tv).
* 'TV' target devices with very low specs, such as embedded devices, game consoles, and blu-ray players, so PoToken is not required.
*
* For this reason, the device machine id for the iPad 6th Gen (with 2GB of RAM),
* the lowest spec device capable of running iPadOS 17, was used.
*/
IPADOS(5,
"IOS",
"Apple",
"iPad7,6",
"iPadOS",
"17.7.10.21H450",
"19.22.3",
"com.google.ios.youtube/19.22.3 (iPad7,6; U; CPU iPadOS 17_7_10 like Mac OS X; " + Locale.getDefault() + ")",
false,
false,
"iPadOS"
),
/**
* Obsolete and broken client. Here only to migrate data.
*/
@Deprecated
IOS_UNPLUGGED(
33,
"IOS_UNPLUGGED",
"com.google.ios.youtubeunplugged",
"Apple",
forceAVC()
// 11 Pro Max (last device with iOS 13)
? "iPhone12,5"
// 15 Pro Max
: "iPhone16,2",
"iPhone16,2",
"iOS",
forceAVC()
// iOS 13 and earlier uses only AVC. 14+ adds VP9 and AV1.
? "13.7.17H35"
: "18.2.22C152",
null,
null,
null,
// Version number should be a valid iOS release.
// https://www.ipa4fun.com/history/152043/
forceAVC()
// Some newer versions can also force AVC,
// but 6.45 is the last version that supports iOS 13.
? "6.45"
: "8.49",
"18.2.22C152",
"8.49",
"dummy user-agent",
true,
true,
forceAVC()
? "iOS TV Force AVC"
: "iOS TV"
"iOS TV"
);
private static boolean forceAVC() {
return BaseSettings.SPOOF_VIDEO_STREAMS_IOS_FORCE_AVC.get();
}
/**
* YouTube
* <a href="https://github.com/zerodytrash/YouTube-Internal-Clients?tab=readme-ov-file#clients">client type</a>
@@ -113,6 +143,7 @@ public enum ClientType {
/**
* App package name.
*/
@Nullable
private final String packageName;
/**
@@ -182,17 +213,19 @@ public enum ClientType {
*/
public final String friendlyName;
@SuppressWarnings("ConstantLocale")
/**
* Android constructor.
*/
ClientType(int id,
String clientName,
String packageName,
@NonNull String packageName,
String deviceMake,
String deviceModel,
String osName,
String osVersion,
@Nullable String androidSdkVersion,
@Nullable String buildId,
@Nullable String cronetVersion,
@NonNull String androidSdkVersion,
@NonNull String buildId,
@NonNull String cronetVersion,
String clientVersion,
boolean requiresAuth,
boolean useAuth,
@@ -213,31 +246,44 @@ public enum ClientType {
this.friendlyName = friendlyName;
Locale defaultLocale = Locale.getDefault();
if (androidSdkVersion == null) {
// Convert version from '18.2.22C152' into '18_2_22'
String userAgentOsVersion = osVersion
.replaceAll("(\\d+\\.\\d+\\.\\d+).*", "$1")
.replace(".", "_");
// https://github.com/mitmproxy/mitmproxy/issues/4836
this.userAgent = String.format("%s/%s (%s; U; CPU iOS %s like Mac OS X; %s)",
packageName,
clientVersion,
deviceModel,
userAgentOsVersion,
defaultLocale
);
} else {
this.userAgent = String.format("%s/%s (Linux; U; Android %s; %s; %s; Build/%s; Cronet/%s)",
packageName,
clientVersion,
osVersion,
defaultLocale,
deviceModel,
Objects.requireNonNull(buildId),
Objects.requireNonNull(cronetVersion)
);
}
this.userAgent = String.format("%s/%s (Linux; U; Android %s; %s; %s; Build/%s; Cronet/%s)",
packageName,
clientVersion,
osVersion,
defaultLocale,
deviceModel,
Objects.requireNonNull(buildId),
Objects.requireNonNull(cronetVersion)
);
Logger.printDebug(() -> "userAgent: " + this.userAgent);
}
@SuppressWarnings("ConstantLocale")
ClientType(int id,
String clientName,
String deviceMake,
String deviceModel,
String osName,
String osVersion,
String clientVersion,
String userAgent,
boolean requiresAuth,
boolean useAuth,
String friendlyName) {
this.id = id;
this.clientName = clientName;
this.deviceMake = deviceMake;
this.deviceModel = deviceModel;
this.osName = osName;
this.osVersion = osVersion;
this.clientVersion = clientVersion;
this.userAgent = userAgent;
this.requiresAuth = requiresAuth;
this.useAuth = useAuth;
this.friendlyName = friendlyName;
this.packageName = null;
this.androidSdkVersion = null;
this.buildId = null;
this.cronetVersion = null;
}
}

View File

@@ -10,6 +10,7 @@ import java.util.Map;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.settings.AppLanguage;
import app.revanced.extension.shared.settings.BaseSettings;
import app.revanced.extension.shared.settings.Setting;
import app.revanced.extension.shared.spoof.requests.StreamingDataRequest;
@@ -19,13 +20,25 @@ public class SpoofVideoStreamsPatch {
private static final boolean SPOOF_STREAMING_DATA = BaseSettings.SPOOF_VIDEO_STREAMS.get();
private static final boolean FIX_HLS_CURRENT_TIME = SPOOF_STREAMING_DATA
&& BaseSettings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get() == ClientType.IOS_UNPLUGGED;
&& BaseSettings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get() == ClientType.VISIONOS;
@Nullable
private static volatile AppLanguage languageOverride;
/**
* Any unreachable ip address. Used to intentionally fail requests.
* Domain used for internet connectivity verification.
* It has an empty response body and is only used to check for a 204 response code.
* <p>
* If an unreachable IP address (127.0.0.1) is used, no response code is provided.
* <p>
* YouTube handles unreachable IP addresses without issue.
* YouTube Music has an issue with waiting for the Cronet connect timeout of 30s on mobile networks.
* <p>
* Using a VPN or DNS can temporarily resolve this issue,
* But the ideal workaround is to avoid using an unreachable IP address.
*/
private static final String UNREACHABLE_HOST_URI_STRING = "https://127.0.0.0";
private static final Uri UNREACHABLE_HOST_URI = Uri.parse(UNREACHABLE_HOST_URI_STRING);
private static final String INTERNET_CONNECTION_CHECK_URI_STRING = "https://www.google.com/gen_204";
private static final Uri INTERNET_CONNECTION_CHECK_URI = Uri.parse(INTERNET_CONNECTION_CHECK_URI_STRING);
/**
* @return If this patch was included during patching.
@@ -34,10 +47,21 @@ public class SpoofVideoStreamsPatch {
return false; // Modified during patching.
}
public static boolean notSpoofingToAndroid() {
return !isPatchIncluded()
|| !BaseSettings.SPOOF_VIDEO_STREAMS.get()
|| BaseSettings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get() == ClientType.IOS_UNPLUGGED;
public static boolean spoofingToClientWithNoMultiAudioStreams() {
return isPatchIncluded() && BaseSettings.SPOOF_VIDEO_STREAMS.get();
}
/**
* @param language Language override for non-authenticated requests. If this is null then
* {@link BaseSettings#SPOOF_VIDEO_STREAMS_LANGUAGE} is used.
*/
public static void setLanguageOverride(@Nullable AppLanguage language) {
languageOverride = language;
}
@Nullable
public static AppLanguage getLanguageOverride() {
return languageOverride;
}
/**
@@ -53,9 +77,9 @@ public class SpoofVideoStreamsPatch {
String path = playerRequestUri.getPath();
if (path != null && path.contains("get_watch")) {
Logger.printDebug(() -> "Blocking 'get_watch' by returning unreachable uri");
Logger.printDebug(() -> "Blocking 'get_watch' by returning internet connection check uri");
return UNREACHABLE_HOST_URI;
return INTERNET_CONNECTION_CHECK_URI;
}
} catch (Exception ex) {
Logger.printException(() -> "blockGetWatchRequest failure", ex);
@@ -77,9 +101,9 @@ public class SpoofVideoStreamsPatch {
String path = originalUri.getPath();
if (path != null && path.contains("initplayback")) {
Logger.printDebug(() -> "Blocking 'initplayback' by clearing query");
Logger.printDebug(() -> "Blocking 'initplayback' by returning internet connection check uri");
return originalUri.buildUpon().clearQuery().build().toString();
return INTERNET_CONNECTION_CHECK_URI_STRING;
}
} catch (Exception ex) {
Logger.printException(() -> "blockInitPlaybackRequest failure", ex);
@@ -252,16 +276,8 @@ public class SpoofVideoStreamsPatch {
public static final class AudioStreamLanguageOverrideAvailability implements Setting.Availability {
@Override
public boolean isAvailable() {
return BaseSettings.SPOOF_VIDEO_STREAMS.get()
&& BaseSettings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get() == ClientType.ANDROID_VR_NO_AUTH;
}
}
public static final class SpoofiOSAvailability implements Setting.Availability {
@Override
public boolean isAvailable() {
return BaseSettings.SPOOF_VIDEO_STREAMS.get()
&& BaseSettings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get() == ClientType.IOS_UNPLUGGED;
// Since all current clients are un-authenticated, this works for all spoof clients.
return BaseSettings.SPOOF_VIDEO_STREAMS.get();
}
}
}

View File

@@ -1,5 +1,7 @@
package app.revanced.extension.shared.spoof.requests;
import static app.revanced.extension.shared.spoof.ClientType.ANDROID_VR_1_43_32;
import org.json.JSONException;
import org.json.JSONObject;
@@ -10,8 +12,10 @@ import java.util.Locale;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.requests.Requester;
import app.revanced.extension.shared.requests.Route;
import app.revanced.extension.shared.settings.AppLanguage;
import app.revanced.extension.shared.settings.BaseSettings;
import app.revanced.extension.shared.spoof.ClientType;
import app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch;
final class PlayerRoutes {
static final Route.CompiledRoute GET_STREAMING_DATA = new Route(
@@ -37,14 +41,16 @@ final class PlayerRoutes {
try {
JSONObject context = new JSONObject();
// Can override default language only if no login is used.
// Could use preferred audio for all clients that do not login,
// but if this is a fall over client it will set the language even though
// the audio language is not selectable in the UI.
ClientType userSelectedClient = BaseSettings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get();
Locale streamLocale = userSelectedClient == ClientType.ANDROID_VR_NO_AUTH
? BaseSettings.SPOOF_VIDEO_STREAMS_LANGUAGE.get().getLocale()
: Locale.getDefault();
AppLanguage language = SpoofVideoStreamsPatch.getLanguageOverride();
if (language == null || BaseSettings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get() == ANDROID_VR_1_43_32) {
// Force original audio has not overrode the language.
// Or if YT has fallen over to the very last client (VR 1.43), then always
// use the app language because forcing an audio stream of specific languages
// can sometimes fail so it's better to try and load something rather than nothing.
language = BaseSettings.SPOOF_VIDEO_STREAMS_LANGUAGE.get();
}
//noinspection ExtractMethodRecommender
Locale streamLocale = language.getLocale();
JSONObject client = new JSONObject();
client.put("deviceMake", clientType.deviceMake);

View File

@@ -35,21 +35,27 @@ import app.revanced.extension.shared.spoof.ClientType;
*/
public class StreamingDataRequest {
private static final ClientType[] CLIENT_ORDER_TO_USE;
private static volatile ClientType[] clientOrderToUse = ClientType.values();
static {
ClientType[] allClientTypes = ClientType.values();
ClientType preferredClient = BaseSettings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get();
public static void setClientOrderToUse(List<ClientType> availableClients, ClientType preferredClient) {
Objects.requireNonNull(preferredClient);
CLIENT_ORDER_TO_USE = new ClientType[allClientTypes.length];
CLIENT_ORDER_TO_USE[0] = preferredClient;
int availableClientSize = availableClients.size();
if (!availableClients.contains(preferredClient)) {
availableClientSize++;
}
clientOrderToUse = new ClientType[availableClientSize];
clientOrderToUse[0] = preferredClient;
int i = 1;
for (ClientType c : allClientTypes) {
for (ClientType c : availableClients) {
if (c != preferredClient) {
CLIENT_ORDER_TO_USE[i++] = c;
clientOrderToUse[i++] = c;
}
}
Logger.printDebug(() -> "Available spoof clients: " + Arrays.toString(clientOrderToUse));
}
private static final String AUTHORIZATION_HEADER = "Authorization";
@@ -193,9 +199,9 @@ public class StreamingDataRequest {
// Retry with different client if empty response body is received.
int i = 0;
for (ClientType clientType : CLIENT_ORDER_TO_USE) {
for (ClientType clientType : clientOrderToUse) {
// Show an error if the last client type fails, or if debug is enabled then show for all attempts.
final boolean showErrorToast = (++i == CLIENT_ORDER_TO_USE.length) || debugEnabled;
final boolean showErrorToast = (++i == clientOrderToUse.length) || debugEnabled;
HttpURLConnection connection = send(clientType, videoId, playerHeaders, showErrorToast);
if (connection != null) {

View File

@@ -1,7 +1,7 @@
package app.revanced.extension.youtube.patches;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.settings.Setting;
import app.revanced.extension.shared.settings.AppLanguage;
import app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch;
import app.revanced.extension.youtube.settings.Settings;
@@ -11,16 +11,21 @@ public class ForceOriginalAudioPatch {
private static final String DEFAULT_AUDIO_TRACKS_SUFFIX = ".4";
/**
* If the conditions to use this patch were present when the app launched.
* Injection point.
*/
public static boolean PATCH_AVAILABLE = SpoofVideoStreamsPatch.notSpoofingToAndroid();
public static final class ForceOriginalAudioAvailability implements Setting.Availability {
@Override
public boolean isAvailable() {
// Check conditions of launch and now. Otherwise if spoofing is changed
// without a restart the setting will show as available when it's not.
return PATCH_AVAILABLE && SpoofVideoStreamsPatch.notSpoofingToAndroid();
public static void setPreferredLanguage() {
if (Settings.FORCE_ORIGINAL_AUDIO.get()
&& SpoofVideoStreamsPatch.spoofingToClientWithNoMultiAudioStreams()) {
// If client spoofing does not use authentication and lacks multi-audio streams,
// then can use any language code for the request and if that requested language is
// not available YT uses the original audio language. Authenticated requests ignore
// the language code and always use the account language. Use a language that is
// not auto-dubbed by YouTube: https://support.google.com/youtube/answer/15569972
// but the language is also supported natively by the Meta Quest device that
// Android VR is spoofing.
AppLanguage override = AppLanguage.SV;
Logger.printDebug(() -> "Setting language override: " + override);
SpoofVideoStreamsPatch.setLanguageOverride(override);
}
}

View File

@@ -9,13 +9,13 @@ import app.revanced.extension.youtube.shared.ShortsPlayerState;
public class PlayerFlyoutMenuItemsFilter extends Filter {
public static final class HideAudioFlyoutMenuAvailability implements Setting.Availability {
private static final boolean AVAILABLE_ON_LAUNCH = SpoofVideoStreamsPatch.notSpoofingToAndroid();
private static final boolean AVAILABLE_ON_LAUNCH = !SpoofVideoStreamsPatch.spoofingToClientWithNoMultiAudioStreams();
@Override
public boolean isAvailable() {
// Check conditions of launch and now. Otherwise if spoofing is changed
// without a restart the setting will show as available when it's not.
return AVAILABLE_ON_LAUNCH && SpoofVideoStreamsPatch.notSpoofingToAndroid();
return AVAILABLE_ON_LAUNCH && !SpoofVideoStreamsPatch.spoofingToClientWithNoMultiAudioStreams();
}
}

View File

@@ -0,0 +1,35 @@
package app.revanced.extension.youtube.patches.spoof;
import static app.revanced.extension.shared.spoof.ClientType.ANDROID_CREATOR;
import static app.revanced.extension.shared.spoof.ClientType.ANDROID_VR_1_43_32;
import static app.revanced.extension.shared.spoof.ClientType.ANDROID_VR_1_61_48;
import static app.revanced.extension.shared.spoof.ClientType.IPADOS;
import static app.revanced.extension.shared.spoof.ClientType.VISIONOS;
import java.util.List;
import app.revanced.extension.shared.settings.BaseSettings;
import app.revanced.extension.shared.spoof.ClientType;
import app.revanced.extension.shared.spoof.requests.StreamingDataRequest;
@SuppressWarnings("unused")
public class SpoofVideoStreamsPatch {
/**
* Injection point.
*/
public static void setClientOrderToUse() {
List<ClientType> availableClients = List.of(
ANDROID_VR_1_61_48,
VISIONOS,
IPADOS,
// Creator must be next to last, because livestreams fetch successfully but don't playback.
ANDROID_CREATOR,
// VR 1.43 must be last as spoof streaming data handles it slightly differently.
ANDROID_VR_1_43_32
);
StreamingDataRequest.setClientOrderToUse(availableClients,
BaseSettings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get());
}
}

View File

@@ -1,50 +1,120 @@
package app.revanced.extension.youtube.settings;
import static app.revanced.extension.shared.Utils.getResourceIdentifier;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.res.Configuration;
import android.graphics.drawable.Drawable;
import android.preference.PreferenceFragment;
import android.util.TypedValue;
import android.view.ViewGroup;
import android.widget.TextView;
import android.view.View;
import android.widget.Toolbar;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.settings.AppLanguage;
import app.revanced.extension.shared.settings.BaseActivityHook;
import app.revanced.extension.shared.settings.BaseSettings;
import app.revanced.extension.youtube.patches.VersionCheckPatch;
import app.revanced.extension.youtube.patches.spoof.SpoofAppVersionPatch;
import app.revanced.extension.youtube.settings.preference.ReVancedPreferenceFragment;
/**
* Hooks LicenseActivity.
* <p>
* This class is responsible for injecting our own fragment by replacing the LicenseActivity.
* Hooks LicenseActivity to inject a custom ReVancedPreferenceFragment with a toolbar and search functionality.
*/
@SuppressWarnings("unused")
public class LicenseActivityHook extends Activity {
@SuppressWarnings("deprecation")
public class LicenseActivityHook extends BaseActivityHook {
private static int currentThemeValueOrdinal = -1; // Must initially be a non-valid enum ordinal value.
private static ViewGroup.LayoutParams toolbarLayoutParams;
/**
* Controller for managing search view components in the toolbar.
*/
@SuppressLint("StaticFieldLeak")
public static SearchViewController searchViewController;
public static void setToolbarLayoutParams(Toolbar toolbar) {
if (toolbarLayoutParams != null) {
toolbar.setLayoutParams(toolbarLayoutParams);
/**
* Injection point
* <p>
* Creates an instance of LicenseActivityHook for use in static initialization.
*/
@SuppressWarnings("unused")
public static LicenseActivityHook createInstance() {
return new LicenseActivityHook();
}
/**
* Customizes the activity theme based on dark/light mode.
*/
@Override
protected void customizeActivityTheme(Activity activity) {
final var theme = Utils.isDarkModeEnabled()
? "Theme.YouTube.Settings.Dark"
: "Theme.YouTube.Settings";
activity.setTheme(Utils.getResourceIdentifier(theme, "style"));
}
/**
* Returns the resource ID for the YouTube settings layout.
*/
@Override
protected int getContentViewResourceId() {
return Utils.getResourceIdentifier("revanced_settings_with_toolbar", "layout");
}
/**
* Returns the toolbar background color based on dark/light mode.
*/
@Override
protected int getToolbarBackgroundColor() {
final String colorName = Utils.isDarkModeEnabled()
? "yt_black3"
: "yt_white1";
return Utils.getColorFromString(colorName);
}
/**
* Returns the navigation icon drawable for the toolbar.
*/
@Override
protected Drawable getNavigationIcon() {
return ReVancedPreferenceFragment.getBackButtonDrawable();
}
/**
* Returns the click listener for the navigation icon.
*/
@Override
protected View.OnClickListener getNavigationClickListener(Activity activity) {
return null;
}
/**
* Adds search view components to the toolbar for ReVancedPreferenceFragment.
*
* @param activity The activity hosting the toolbar.
* @param toolbar The configured toolbar.
* @param fragment The PreferenceFragment associated with the activity.
*/
@Override
protected void onPostToolbarSetup(Activity activity, Toolbar toolbar, PreferenceFragment fragment) {
if (fragment instanceof ReVancedPreferenceFragment) {
searchViewController = SearchViewController.addSearchViewComponents(
activity, toolbar, (ReVancedPreferenceFragment) fragment);
}
}
/**
* Creates a new ReVancedPreferenceFragment for the activity.
*/
@Override
protected PreferenceFragment createPreferenceFragment() {
return new ReVancedPreferenceFragment();
}
/**
* Injection point.
* Overrides the ReVanced settings language.
*/
@SuppressWarnings("unused")
public static Context getAttachBaseContext(Context original) {
AppLanguage language = BaseSettings.REVANCED_LANGUAGE.get();
if (language == AppLanguage.DEFAULT) {
@@ -57,6 +127,7 @@ public class LicenseActivityHook extends Activity {
/**
* Injection point.
*/
@SuppressWarnings("unused")
public static boolean useCairoSettingsFragment(boolean original) {
// Early targets have layout issues and it's better to always force off.
if (!VersionCheckPatch.IS_19_34_OR_GREATER) {
@@ -80,87 +151,6 @@ public class LicenseActivityHook extends Activity {
/**
* Injection point.
* <p>
* Hooks LicenseActivity#onCreate in order to inject our own fragment.
*/
public static void initialize(Activity licenseActivity) {
try {
setActivityTheme(licenseActivity);
ReVancedPreferenceFragment.setNavigationBarColor(licenseActivity.getWindow());
licenseActivity.setContentView(getResourceIdentifier(
"revanced_settings_with_toolbar", "layout"));
// Sanity check.
String dataString = licenseActivity.getIntent().getDataString();
if (!"revanced_settings_intent".equals(dataString)) {
Logger.printException(() -> "Unknown intent: " + dataString);
return;
}
PreferenceFragment fragment = new ReVancedPreferenceFragment();
createToolbar(licenseActivity, fragment);
//noinspection deprecation
licenseActivity.getFragmentManager()
.beginTransaction()
.replace(getResourceIdentifier("revanced_settings_fragments", "id"), fragment)
.commit();
} catch (Exception ex) {
Logger.printException(() -> "initialize failure", ex);
}
}
@SuppressLint("UseCompatLoadingForDrawables")
private static void createToolbar(Activity activity, PreferenceFragment fragment) {
// Replace dummy placeholder toolbar.
// This is required to fix submenu title alignment issue with Android ASOP 15+
ViewGroup toolBarParent = activity.findViewById(
getResourceIdentifier("revanced_toolbar_parent", "id"));
ViewGroup dummyToolbar = Utils.getChildViewByResourceName(toolBarParent, "revanced_toolbar");
toolbarLayoutParams = dummyToolbar.getLayoutParams();
toolBarParent.removeView(dummyToolbar);
Toolbar toolbar = new Toolbar(toolBarParent.getContext());
toolbar.setBackgroundColor(getToolbarBackgroundColor());
toolbar.setNavigationIcon(ReVancedPreferenceFragment.getBackButtonDrawable());
toolbar.setTitle(getResourceIdentifier("revanced_settings_title", "string"));
final int margin = Utils.dipToPixels(16);
toolbar.setTitleMarginStart(margin);
toolbar.setTitleMarginEnd(margin);
TextView toolbarTextView = Utils.getChildView(toolbar, false,
view -> view instanceof TextView);
if (toolbarTextView != null) {
toolbarTextView.setTextColor(Utils.getAppForegroundColor());
toolbarTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);
}
setToolbarLayoutParams(toolbar);
// Add Search bar only for ReVancedPreferenceFragment.
if (fragment instanceof ReVancedPreferenceFragment) {
searchViewController = SearchViewController.addSearchViewComponents(activity, toolbar, (ReVancedPreferenceFragment) fragment);
}
toolBarParent.addView(toolbar, 0);
}
public static void setActivityTheme(Activity activity) {
final var theme = Utils.isDarkModeEnabled()
? "Theme.YouTube.Settings.Dark"
: "Theme.YouTube.Settings";
activity.setTheme(getResourceIdentifier(theme, "style"));
}
public static int getToolbarBackgroundColor() {
final String colorName = Utils.isDarkModeEnabled()
? "yt_black3"
: "yt_white1";
return Utils.getColorFromString(colorName);
}
/**
* Injection point.
*
* Updates dark/light mode since YT settings can force light/dark mode
* which can differ from the global device settings.
*/
@@ -173,6 +163,10 @@ public class LicenseActivityHook extends Activity {
}
}
/**
* Handles configuration changes, such as orientation, to update the search view.
*/
@SuppressWarnings("unused")
public static void handleConfigurationChanged(Activity activity, Configuration newConfig) {
if (searchViewController != null) {
searchViewController.handleOrientationChange(newConfig.orientation);

View File

@@ -12,7 +12,6 @@ import static app.revanced.extension.youtube.patches.ChangeHeaderPatch.HeaderLog
import static app.revanced.extension.youtube.patches.ChangeStartPagePatch.ChangeStartPageTypeAvailability;
import static app.revanced.extension.youtube.patches.ChangeStartPagePatch.StartPage;
import static app.revanced.extension.youtube.patches.ExitFullscreenPatch.FullscreenMode;
import static app.revanced.extension.youtube.patches.ForceOriginalAudioPatch.ForceOriginalAudioAvailability;
import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerHorizontalDragAvailability;
import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerType;
import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerType.MINIMAL;
@@ -75,7 +74,7 @@ public class Settings extends BaseSettings {
"0.25\n0.5\n0.75\n1.0\n1.25\n1.5\n1.75\n2.0\n2.5\n3.0\n4.0\n5.0\n6.0\n7.0\n8.0", true);
// Audio
public static final BooleanSetting FORCE_ORIGINAL_AUDIO = new BooleanSetting("revanced_force_original_audio", FALSE, new ForceOriginalAudioAvailability());
public static final BooleanSetting FORCE_ORIGINAL_AUDIO = new BooleanSetting("revanced_force_original_audio", FALSE, true);
// Ads
public static final BooleanSetting HIDE_CREATOR_STORE_SHELF = new BooleanSetting("revanced_hide_creator_store_shelf", TRUE);

View File

@@ -1,36 +0,0 @@
package app.revanced.extension.youtube.settings.preference;
import static app.revanced.extension.shared.StringRef.str;
import android.content.Context;
import android.preference.SwitchPreference;
import android.util.AttributeSet;
import app.revanced.extension.youtube.patches.ForceOriginalAudioPatch;
@SuppressWarnings({"deprecation", "unused"})
public class ForceOriginalAudioSwitchPreference extends SwitchPreference {
{
if (!ForceOriginalAudioPatch.PATCH_AVAILABLE) {
// Show why force audio is not available.
String summary = str("revanced_force_original_audio_not_available");
setSummary(summary);
setSummaryOn(summary);
setSummaryOff(summary);
}
}
public ForceOriginalAudioSwitchPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
public ForceOriginalAudioSwitchPreference(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public ForceOriginalAudioSwitchPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ForceOriginalAudioSwitchPreference(Context context) {
super(context);
}
}

View File

@@ -12,8 +12,8 @@ import app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch;
public class HideAudioFlyoutMenuPreference extends SwitchPreference {
{
// Audio menu is not available if spoofing to Android client type.
if (!SpoofVideoStreamsPatch.notSpoofingToAndroid()) {
// Audio menu is not available if spoofing to most client types.
if (SpoofVideoStreamsPatch.spoofingToClientWithNoMultiAudioStreams()) {
String summary = str("revanced_hide_player_flyout_audio_track_not_available");
setSummary(summary);
setSummaryOn(summary);

View File

@@ -3,11 +3,7 @@ package app.revanced.extension.youtube.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.Dialog;
import android.graphics.Insets;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceCategory;
@@ -17,11 +13,6 @@ import android.preference.SwitchPreference;
import android.text.SpannableStringBuilder;
import android.text.TextUtils;
import android.text.style.BackgroundColorSpan;
import android.util.TypedValue;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowInsets;
import android.widget.TextView;
import android.widget.Toolbar;
import androidx.annotation.CallSuper;
@@ -40,16 +31,16 @@ import java.util.regex.Pattern;
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.preference.AbstractPreferenceFragment;
import app.revanced.extension.shared.settings.preference.NoTitlePreferenceCategory;
import app.revanced.extension.shared.settings.preference.ToolbarPreferenceFragment;
import app.revanced.extension.youtube.settings.LicenseActivityHook;
import app.revanced.extension.youtube.sponsorblock.ui.SponsorBlockPreferenceGroup;
/**
* Preference fragment for ReVanced settings.
*/
@SuppressWarnings("deprecation")
public class ReVancedPreferenceFragment extends AbstractPreferenceFragment {
@SuppressWarnings({"deprecation", "NewApi"})
public class ReVancedPreferenceFragment extends ToolbarPreferenceFragment {
/**
* The main PreferenceScreen used to display the current set of preferences.
@@ -70,31 +61,6 @@ public class ReVancedPreferenceFragment extends AbstractPreferenceFragment {
*/
private final List<AbstractPreferenceSearchData<?>> allPreferences = new ArrayList<>();
@SuppressLint("UseCompatLoadingForDrawables")
public static Drawable getBackButtonDrawable() {
final int backButtonResource = getResourceIdentifier("revanced_settings_toolbar_arrow_left", "drawable");
Drawable drawable = Utils.getContext().getResources().getDrawable(backButtonResource);
drawable.setTint(Utils.getAppForegroundColor());
return drawable;
}
/**
* Sets the system navigation bar color for the activity.
* Applies the background color obtained from {@link Utils#getAppBackgroundColor()} to the navigation bar.
* For Android 10 (API 29) and above, enforces navigation bar contrast to ensure visibility.
*/
public static void setNavigationBarColor(@Nullable Window window) {
if (window == null) {
Logger.printDebug(() -> "Cannot set navigation bar color, window is null");
return;
}
window.setNavigationBarColor(Utils.getAppBackgroundColor());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
window.setNavigationBarContrastEnforced(true);
}
}
/**
* Initializes the preference fragment, copying the original screen to allow full restoration.
*/
@@ -139,8 +105,28 @@ public class ReVancedPreferenceFragment extends AbstractPreferenceFragment {
}
}
/**
* Sets toolbar for all nested preference screens.
*/
@Override
protected void customizeToolbar(Toolbar toolbar) {
LicenseActivityHook.setToolbarLayoutParams(toolbar);
}
/**
* Perform actions after toolbar setup.
*/
@Override
protected void onPostToolbarSetup(Toolbar toolbar, Dialog preferenceScreenDialog) {
if (LicenseActivityHook.searchViewController != null
&& LicenseActivityHook.searchViewController.isSearchActive()) {
toolbar.post(() -> LicenseActivityHook.searchViewController.closeSearch());
}
}
/**
* Recursively collects all preferences from the screen or group.
*
* @param includeDepth Menu depth to start including preferences.
* A value of 0 adds all preferences.
*/
@@ -222,75 +208,6 @@ public class ReVancedPreferenceFragment extends AbstractPreferenceFragment {
preferenceScreen.addPreference(noResultsPreference);
}
}
/**
* Sets toolbar for all nested preference screens.
*/
private void setPreferenceScreenToolbar(PreferenceScreen parentScreen) {
for (int i = 0, count = parentScreen.getPreferenceCount(); i < count; 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();
// Fix the system navigation bar color for submenus.
setNavigationBarColor(preferenceScreenDialog.getWindow());
// Fix edge-to-edge screen with Android 15 and YT 19.45+
// https://developer.android.com/develop/ui/views/layout/edge-to-edge#system-bars-insets
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
rootView.setOnApplyWindowInsetsListener((v, insets) -> {
Insets statusInsets = insets.getInsets(WindowInsets.Type.statusBars());
Insets navInsets = insets.getInsets(WindowInsets.Type.navigationBars());
Insets cutoutInsets = insets.getInsets(WindowInsets.Type.displayCutout());
// Apply padding for display cutout in landscape.
int leftPadding = cutoutInsets.left;
int rightPadding = cutoutInsets.right;
int topPadding = statusInsets.top;
int bottomPadding = navInsets.bottom;
v.setPadding(leftPadding, topPadding, rightPadding, bottomPadding);
return insets;
});
}
Toolbar toolbar = new Toolbar(childScreen.getContext());
toolbar.setTitle(childScreen.getTitle());
toolbar.setNavigationIcon(getBackButtonDrawable());
toolbar.setNavigationOnClickListener(view -> preferenceScreenDialog.dismiss());
final int margin = Utils.dipToPixels(16);
toolbar.setTitleMargin(margin, 0, margin, 0);
TextView toolbarTextView = Utils.getChildView(toolbar,
true, TextView.class::isInstance);
if (toolbarTextView != null) {
toolbarTextView.setTextColor(Utils.getAppForegroundColor());
toolbarTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);
}
LicenseActivityHook.setToolbarLayoutParams(toolbar);
if (LicenseActivityHook.searchViewController != null
&& LicenseActivityHook.searchViewController.isSearchActive()) {
toolbar.post(() -> LicenseActivityHook.searchViewController.closeSearch());
}
rootView.addView(toolbar, 0);
return false;
}
);
}
}
}
}
@SuppressWarnings("deprecation")

View File

@@ -0,0 +1,57 @@
package app.revanced.extension.youtube.settings.preference;
import static app.revanced.extension.shared.StringRef.str;
import android.content.Context;
import android.util.AttributeSet;
import app.revanced.extension.shared.settings.preference.SortedListPreference;
import app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch;
@SuppressWarnings({"deprecation", "unused"})
public class SpoofAudioSelectorListPreference extends SortedListPreference {
private final boolean available;
{
if (SpoofVideoStreamsPatch.getLanguageOverride() != null) {
available = false;
super.setEnabled(false);
super.setSummary(str("revanced_spoof_video_streams_language_not_available"));
} else {
available = true;
}
}
public SpoofAudioSelectorListPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
public SpoofAudioSelectorListPreference(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public SpoofAudioSelectorListPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SpoofAudioSelectorListPreference(Context context) {
super(context);
}
@Override
public void setEnabled(boolean enabled) {
if (!available) {
return;
}
super.setEnabled(enabled);
}
@Override
public void setSummary(CharSequence summary) {
if (!available) {
return;
}
super.setSummary(summary);
}
}

View File

@@ -78,21 +78,25 @@ public class SpoofStreamingDataSideEffectsPreference extends Preference {
Logger.printDebug(() -> "Updating spoof stream side effects preference");
setEnabled(BaseSettings.SPOOF_VIDEO_STREAMS.get());
String key = "revanced_spoof_video_streams_about_" +
(clientType == ClientType.IOS_UNPLUGGED
? "ios_tv"
: "android");
String title = str(key + "_title");
String summary = str(key + "_summary");
setTitle(str("revanced_spoof_video_streams_about_title"));
// Android VR supports AV1 but all other clients do not.
if (clientType != ClientType.ANDROID_VR_NO_AUTH) {
summary += '\n' + str("revanced_spoof_video_streams_about_no_av1");
String summary = str(clientType == ClientType.IPADOS
? "revanced_spoof_video_streams_about_ipados_summary"
// visionOS has same base side effects as Android VR.
: "revanced_spoof_video_streams_about_android_summary");
if (clientType == ClientType.IPADOS) {
summary = str("revanced_spoof_video_streams_about_no_av1")
+ '\n' + summary;
} else if (clientType == ClientType.VISIONOS) {
summary = str("revanced_spoof_video_streams_about_experimental")
+ '\n' + summary
+ '\n' + str("revanced_spoof_video_streams_about_no_av1")
+ '\n' + str("revanced_spoof_video_streams_about_kids_videos");
} else {
summary += '\n' + str("revanced_spoof_video_streams_about_kids_videos");
}
summary += '\n' + str("revanced_spoof_video_streams_about_kids_videos");
setTitle(title);
setSummary(summary);
}
}

View File

@@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M
org.gradle.parallel = true
android.useAndroidX = true
kotlin.code.style = official
version = 5.37.0-dev.2
version = 5.38.0-dev.4

View File

@@ -264,6 +264,10 @@ public final class app/revanced/patches/instagram/ads/HideAdsPatchKt {
public static final fun getHideAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/instagram/hide/explore/HideExploreFeedKt {
public static final fun getHideExportFeedPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/instagram/hide/navigation/HideNavigationButtonsKt {
public static final fun getHideNavigationButtonsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
@@ -368,8 +372,9 @@ public final class app/revanced/patches/music/layout/premium/HideGetPremiumPatch
public static final fun getHideGetPremiumPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/music/layout/upgradebutton/RemoveUpgradeButtonPatchKt {
public static final fun getRemoveUpgradeButtonPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
public final class app/revanced/patches/music/layout/upgradebutton/HideUpgradeButtonPatchKt {
public static final fun getHideUpgradeButton ()Lapp/revanced/patcher/patch/BytecodePatch;
public static final fun getRemoveUpgradeButton ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/music/misc/androidauto/BypassCertificateChecksPatchKt {
@@ -392,7 +397,21 @@ public final class app/revanced/patches/music/misc/gms/GmsCoreSupportPatchKt {
public static final fun getGmsCoreSupportPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/music/misc/spoof/SpoofVideoStreamsKt {
public final class app/revanced/patches/music/misc/settings/PreferenceScreen : app/revanced/patches/shared/misc/settings/preference/BasePreferenceScreen {
public static final field INSTANCE Lapp/revanced/patches/music/misc/settings/PreferenceScreen;
public fun commit (Lapp/revanced/patches/shared/misc/settings/preference/PreferenceScreenPreference;)V
public final fun getADS ()Lapp/revanced/patches/shared/misc/settings/preference/BasePreferenceScreen$Screen;
public final fun getGENERAL ()Lapp/revanced/patches/shared/misc/settings/preference/BasePreferenceScreen$Screen;
public final fun getMISC ()Lapp/revanced/patches/shared/misc/settings/preference/BasePreferenceScreen$Screen;
public final fun getPLAYER ()Lapp/revanced/patches/shared/misc/settings/preference/BasePreferenceScreen$Screen;
}
public final class app/revanced/patches/music/misc/settings/SettingsPatchKt {
public static final fun getSettingsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
public static final fun newIntent (Ljava/lang/String;)Lapp/revanced/patches/shared/misc/settings/preference/IntentPreference$Intent;
}
public final class app/revanced/patches/music/misc/spoof/SpoofVideoStreamsPatchKt {
public static final fun getSpoofVideoStreamsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
@@ -1648,7 +1667,6 @@ public final class app/revanced/patches/youtube/misc/settings/PreferenceScreen :
}
public final class app/revanced/patches/youtube/misc/settings/SettingsPatchKt {
public static final fun addSettingPreference (Lapp/revanced/patches/shared/misc/settings/preference/BasePreference;)V
public static final fun getSettingsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
public static final fun newIntent (Ljava/lang/String;)Lapp/revanced/patches/shared/misc/settings/preference/IntentPreference$Intent;
}

View File

@@ -0,0 +1,9 @@
package app.revanced.patches.instagram.hide.explore
import app.revanced.patcher.fingerprint
internal val exploreResponseJsonParserFingerprint = fingerprint {
strings("sectional_items", "ExploreTopicalFeedResponse")
custom { method, _ -> method.name == "parseFromJson" }
}

View File

@@ -0,0 +1,33 @@
package app.revanced.patches.instagram.hide.explore
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
import app.revanced.patcher.patch.bytecodePatch
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
@Suppress("unused")
val hideExportFeedPatch = bytecodePatch(
name = "Hide explore feed",
description = "Hides posts and reels from the explore/search page.",
use = false
) {
compatibleWith("com.instagram.android")
execute {
exploreResponseJsonParserFingerprint.method.apply {
val sectionalItemStringIndex = exploreResponseJsonParserFingerprint.stringMatches!!.first().index
val sectionalItemStringRegister = getInstruction<OneRegisterInstruction>(sectionalItemStringIndex).registerA
/**
* Replacing the JSON key we want to skip with a random string that is not a valid JSON key.
* This way the feeds array will never be populated.
* Received JSON keys that are not handled are simply ignored, so there are no side effects.
*/
replaceInstruction(
sectionalItemStringIndex,
"const-string v$sectionalItemStringRegister, \"BOGUS\""
)
}
}
}

View File

@@ -23,7 +23,7 @@ internal val tabCreateButtonsLoopEndFingerprint = fingerprint {
Opcode.IPUT_OBJECT,
// Injection Jump
Opcode.ADD_INT_LIT8, //Increase Index
Opcode.GOTO_16 // Jump to loopStart
Opcode.GOTO // Jump to loopStart
// LoopEnd
)
}

View File

@@ -15,7 +15,7 @@ val hideNavigationButtonsPatch = bytecodePatch(
description = "Hides navigation bar buttons, such as the Reels and Create button.",
use = false
) {
compatibleWith("com.instagram.android")
compatibleWith("com.instagram.android"("397.1.0.52.81"))
val hideReels by booleanOption(
key = "hideReels",

View File

@@ -1,13 +1,27 @@
package app.revanced.patches.music.ad.video
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.all.misc.resources.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch
import app.revanced.patches.music.misc.extension.sharedExtensionPatch
import app.revanced.patches.music.misc.settings.PreferenceScreen
import app.revanced.patches.music.misc.settings.settingsPatch
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/music/patches/HideVideoAdsPatch;"
@Suppress("unused")
val hideVideoAdsPatch = bytecodePatch(
name = "Hide music video ads",
description = "Hides ads that appear while listening to or streaming music videos, podcasts, or songs.",
description = "Adds an option to hide ads that appear while listening to or streaming music videos, podcasts, or songs.",
) {
dependsOn(
sharedExtensionPatch,
settingsPatch,
addResourcesPatch,
)
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.29.52"
@@ -15,9 +29,21 @@ val hideVideoAdsPatch = bytecodePatch(
)
execute {
addResources("music", "ad.video.hideVideoAdsPatch")
PreferenceScreen.ADS.addPreferences(
SwitchPreference("revanced_music_hide_video_ads"),
)
navigate(showVideoAdsParentFingerprint.originalMethod)
.to(showVideoAdsParentFingerprint.patternMatch!!.startIndex + 1)
.stop()
.addInstruction(0, "const/4 p1, 0x0")
.addInstructions(
0,
"""
invoke-static { p1 }, $EXTENSION_CLASS_DESCRIPTOR->showVideoAds(Z)Z
move-result p1
"""
)
}
}

View File

@@ -1,6 +1,8 @@
package app.revanced.patches.music.audio.exclusiveaudio
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.music.misc.extension.sharedExtensionPatch
import app.revanced.patches.music.misc.settings.settingsPatch
import app.revanced.util.returnEarly
@Suppress("unused")
@@ -8,6 +10,11 @@ val enableExclusiveAudioPlaybackPatch = bytecodePatch(
name = "Enable exclusive audio playback",
description = "Enables the option to play audio without video.",
) {
dependsOn(
sharedExtensionPatch,
settingsPatch,
)
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.29.52"

View File

@@ -4,13 +4,27 @@ import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWith
import app.revanced.patcher.extensions.InstructionExtensions.instructions
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patcher.util.smali.ExternalLabel
import app.revanced.patches.all.misc.resources.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch
import app.revanced.patches.music.misc.extension.sharedExtensionPatch
import app.revanced.patches.music.misc.settings.PreferenceScreen
import app.revanced.patches.music.misc.settings.settingsPatch
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
import app.revanced.util.findFreeRegister
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/music/patches/PermanentRepeatPatch;"
@Suppress("unused")
val permanentRepeatPatch = bytecodePatch(
name = "Permanent repeat",
description = "Permanently remember your repeating preference even if the playlist ends or another track is played.",
use = false,
description = "Adds an option to always repeat even if the playlist ends or another track is played."
) {
dependsOn(
sharedExtensionPatch,
settingsPatch,
addResourcesPatch,
)
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.29.52"
@@ -18,13 +32,27 @@ val permanentRepeatPatch = bytecodePatch(
)
execute {
addResources("music", "interaction.permanentrepeat.permanentRepeatPatch")
PreferenceScreen.PLAYER.addPreferences(
SwitchPreference("revanced_music_play_permanent_repeat"),
)
val startIndex = repeatTrackFingerprint.patternMatch!!.endIndex
val repeatIndex = startIndex + 1
repeatTrackFingerprint.method.apply {
// Start index is at a branch, but the same
// register is clobbered in both branch paths.
val freeRegister = findFreeRegister(startIndex + 1)
addInstructionsWithLabels(
startIndex,
"goto :repeat",
"""
invoke-static { }, $EXTENSION_CLASS_DESCRIPTOR->permanentRepeat()Z
move-result v$freeRegister
if-nez v$freeRegister, :repeat
""",
ExternalLabel("repeat", instructions[repeatIndex]),
)
}

View File

@@ -1,17 +1,32 @@
package app.revanced.patches.music.layout.compactheader
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.all.misc.resources.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch
import app.revanced.patches.music.misc.extension.sharedExtensionPatch
import app.revanced.patches.music.misc.settings.PreferenceScreen
import app.revanced.patches.music.misc.settings.settingsPatch
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
import app.revanced.util.addInstructionsAtControlFlowLabel
import app.revanced.util.findFreeRegister
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/music/patches/HideCategoryBarPatch;"
@Suppress("unused")
val hideCategoryBar = bytecodePatch(
name = "Hide category bar",
description = "Hides the category bar at the top of the homepage.",
use = false,
description = "Adds an option to hide the category bar at the top of the homepage."
) {
dependsOn(
sharedExtensionPatch,
settingsPatch,
addResourcesPatch,
)
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.29.52"
@@ -19,16 +34,27 @@ val hideCategoryBar = bytecodePatch(
)
execute {
addResources("music", "layout.compactheader.hideCategoryBar")
PreferenceScreen.GENERAL.addPreferences(
SwitchPreference("revanced_music_hide_category_bar"),
)
constructCategoryBarFingerprint.method.apply {
val insertIndex = constructCategoryBarFingerprint.patternMatch!!.startIndex
val register = getInstruction<OneRegisterInstruction>(insertIndex - 1).registerA
val freeRegister = findFreeRegister(insertIndex, register)
addInstructions(
addInstructionsWithLabels(
insertIndex,
"""
invoke-static { }, $EXTENSION_CLASS_DESCRIPTOR->hideCategoryBar()Z
move-result v$freeRegister
if-eqz v$freeRegister, :show
const/16 v$freeRegister, 0x8
invoke-virtual { v$register, v$freeRegister }, Landroid/view/View;->setVisibility(I)V
:show
nop
"""
)
}

View File

@@ -1,16 +1,31 @@
package app.revanced.patches.music.layout.premium
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.all.misc.resources.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch
import app.revanced.patches.music.misc.extension.sharedExtensionPatch
import app.revanced.patches.music.misc.settings.PreferenceScreen
import app.revanced.patches.music.misc.settings.settingsPatch
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/music/patches/HideGetPremiumPatch;"
@Suppress("unused")
val hideGetPremiumPatch = bytecodePatch(
name = "Hide 'Get Music Premium' label",
description = "Hides the \"Get Music Premium\" label from the account menu and settings.",
name = "Hide 'Get Music Premium'",
description = "Adds an option to hide the \"Get Music Premium\" label in the settings and account menu.",
) {
dependsOn(
sharedExtensionPatch,
settingsPatch,
addResourcesPatch,
)
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.29.52"
@@ -18,6 +33,12 @@ val hideGetPremiumPatch = bytecodePatch(
)
execute {
addResources("music", "layout.premium.hideGetPremiumPatch")
PreferenceScreen.ADS.addPreferences(
SwitchPreference("revanced_music_hide_get_premium_label"),
)
hideGetPremiumFingerprint.method.apply {
val insertIndex = hideGetPremiumFingerprint.patternMatch!!.endIndex
@@ -37,12 +58,17 @@ val hideGetPremiumPatch = bytecodePatch(
)
}
membershipSettingsFingerprint.method.addInstructions(
membershipSettingsFingerprint.method.addInstructionsWithLabels(
0,
"""
const/4 v0, 0x0
return-object v0
""",
invoke-static { }, $EXTENSION_CLASS_DESCRIPTOR->hideGetPremiumLabel()Z
move-result v0
if-eqz v0, :show
const/4 v0, 0x0
return-object v0
:show
nop
"""
)
}
}

View File

@@ -7,17 +7,31 @@ import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
import app.revanced.patcher.extensions.newLabel
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patcher.util.smali.toInstructions
import app.revanced.patches.all.misc.resources.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch
import app.revanced.patches.music.misc.extension.sharedExtensionPatch
import app.revanced.patches.music.misc.settings.PreferenceScreen
import app.revanced.patches.music.misc.settings.settingsPatch
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
import app.revanced.util.getReference
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.builder.instruction.BuilderInstruction22t
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/music/patches/HideUpgradeButtonPatch;"
@Suppress("unused")
val removeUpgradeButtonPatch = bytecodePatch(
name = "Remove upgrade button",
description = "Removes the upgrade tab from the pivot bar.",
val hideUpgradeButton = bytecodePatch(
name = "Hide upgrade button",
description = "Hides the upgrade tab from the pivot bar.",
) {
dependsOn(
sharedExtensionPatch,
settingsPatch,
addResourcesPatch,
)
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.29.52"
@@ -25,6 +39,15 @@ val removeUpgradeButtonPatch = bytecodePatch(
)
execute {
addResources("music", "layout.upgradebutton.hideUpgradeButtonPatch")
// TODO: Add an extension patch to allow this to be enabled/disabled in app.
if (false) {
PreferenceScreen.ADS.addPreferences(
SwitchPreference("revanced_music_hide_upgrade_button")
)
}
pivotBarConstructorFingerprint.method.apply {
val pivotBarElementFieldReference =
getInstruction(pivotBarConstructorFingerprint.patternMatch!!.endIndex - 1)
@@ -77,3 +100,9 @@ val removeUpgradeButtonPatch = bytecodePatch(
}
}
}
@Deprecated("Patch was renamed", ReplaceWith("hideUpgradeButton"))
@Suppress("unused")
val removeUpgradeButton = bytecodePatch{
dependsOn(hideUpgradeButton)
}

View File

@@ -1,6 +1,8 @@
package app.revanced.patches.music.misc.androidauto
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.music.misc.extension.sharedExtensionPatch
import app.revanced.patches.music.misc.settings.settingsPatch
import app.revanced.util.returnEarly
@Suppress("unused")
@@ -8,6 +10,11 @@ val bypassCertificateChecksPatch = bytecodePatch(
name = "Bypass certificate checks",
description = "Bypasses certificate checks which prevent YouTube Music from working on Android Auto.",
) {
dependsOn(
sharedExtensionPatch,
settingsPatch
)
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.29.52"

View File

@@ -1,13 +1,20 @@
package app.revanced.patches.music.misc.backgroundplayback
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.music.misc.extension.sharedExtensionPatch
import app.revanced.patches.music.misc.settings.settingsPatch
import app.revanced.util.returnEarly
val backgroundPlaybackPatch = bytecodePatch(
name = "Remove background playback restrictions",
description = "Removes restrictions on background playback, including playing kids videos in the background.",
) {
dependsOn(
sharedExtensionPatch,
settingsPatch
)
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.29.52"
@@ -20,12 +27,6 @@ val backgroundPlaybackPatch = bytecodePatch(
"return-void",
)
backgroundPlaybackDisableFingerprint.method.addInstructions(
0,
"""
const/4 v0, 0x1
return v0
""",
)
backgroundPlaybackDisableFingerprint.method.returnEarly(true)
}
}

View File

@@ -1,12 +1,17 @@
package app.revanced.patches.music.misc.gms
import app.revanced.patcher.patch.Option
import app.revanced.patches.all.misc.resources.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch
import app.revanced.patches.music.misc.extension.sharedExtensionPatch
import app.revanced.patches.music.misc.gms.Constants.MUSIC_PACKAGE_NAME
import app.revanced.patches.music.misc.gms.Constants.REVANCED_MUSIC_PACKAGE_NAME
import app.revanced.patches.music.misc.settings.PreferenceScreen
import app.revanced.patches.music.misc.settings.settingsPatch
import app.revanced.patches.music.misc.spoof.spoofVideoStreamsPatch
import app.revanced.patches.shared.castContextFetchFingerprint
import app.revanced.patches.shared.misc.gms.gmsCoreSupportPatch
import app.revanced.patches.shared.misc.settings.preference.IntentPreference
import app.revanced.patches.shared.primeMethodFingerprint
@Suppress("unused")
@@ -33,4 +38,23 @@ private fun gmsCoreSupportResourcePatch(
toPackageName = REVANCED_MUSIC_PACKAGE_NAME,
gmsCoreVendorGroupIdOption = gmsCoreVendorGroupIdOption,
spoofedPackageSignature = "afb0fed5eeaebdd86f56a97742f4b6b33ef59875",
)
executeBlock = {
addResources("shared", "misc.gms.gmsCoreSupportResourcePatch")
val gmsCoreVendorGroupId by gmsCoreVendorGroupIdOption
PreferenceScreen.MISC.addPreferences(
IntentPreference(
"microg_settings",
intent = IntentPreference.Intent("", "org.microg.gms.ui.SettingsActivity") {
"$gmsCoreVendorGroupId.android.gms"
}
)
)
}
) {
dependsOn(
addResourcesPatch,
settingsPatch
)
}

View File

@@ -0,0 +1,11 @@
package app.revanced.patches.music.misc.settings
import app.revanced.patcher.fingerprint
internal val googleApiActivityFingerprint = fingerprint {
returns("V")
parameters("Landroid/os/Bundle;")
custom { method, classDef ->
classDef.endsWith("GoogleApiActivity;") && method.name == "onCreate"
}
}

View File

@@ -0,0 +1,176 @@
package app.revanced.patches.music.misc.settings
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patcher.patch.resourcePatch
import app.revanced.patches.all.misc.packagename.setOrGetFallbackPackageName
import app.revanced.patches.all.misc.resources.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch
import app.revanced.patches.music.misc.extension.sharedExtensionPatch
import app.revanced.patches.shared.misc.mapping.resourceMappingPatch
import app.revanced.patches.shared.misc.settings.preference.*
import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference
import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference.Sorting
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
import app.revanced.patches.shared.misc.settings.settingsPatch
import app.revanced.util.*
import com.android.tools.smali.dexlib2.util.MethodUtil
private const val BASE_ACTIVITY_HOOK_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/shared/settings/BaseActivityHook;"
private const val GOOGLE_API_ACTIVITY_HOOK_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/music/settings/GoogleApiActivityHook;"
private val preferences = mutableSetOf<BasePreference>()
private val settingsResourcePatch = resourcePatch {
dependsOn(
resourceMappingPatch,
settingsPatch(
IntentPreference(
titleKey = "revanced_settings_title",
summaryKey = null,
intent = newIntent("revanced_settings_intent"),
) to "settings_headers",
preferences
)
)
execute {
// TODO: Remove this when search will be abstract.
copyResources(
"settings",
ResourceGroup(
"layout",
"revanced_music_settings_with_toolbar.xml"
)
)
val targetResource = "values/styles.xml"
inputStreamFromBundledResource(
"settings/music",
targetResource,
)!!.let { inputStream ->
"resources".copyXmlNode(
document(inputStream),
document("res/$targetResource"),
).close()
}
// Remove horizontal divider from the settings Preferences.
val styleFile = get("res/values/styles.xml")
styleFile.writeText(
styleFile.readText()
.replace(
"allowDividerAbove\">true",
"allowDividerAbove\">false"
).replace(
"allowDividerBelow\">true",
"allowDividerBelow\">false"
)
)
}
}
val settingsPatch = bytecodePatch(
description = "Adds settings for ReVanced to YouTube Music.",
) {
dependsOn(
sharedExtensionPatch,
settingsResourcePatch,
addResourcesPatch,
)
execute {
addResources("music", "misc.settings.settingsPatch")
addResources("shared", "misc.debugging.enableDebuggingPatch")
// Should make a separate debugging patch, but for now include it with all installations.
PreferenceScreen.MISC.addPreferences(
PreferenceScreenPreference(
key = "revanced_debug_screen",
sorting = Sorting.UNSORTED,
preferences = setOf(
SwitchPreference("revanced_debug"),
NonInteractivePreference(
"revanced_debug_export_logs_to_clipboard",
tag = "app.revanced.extension.shared.settings.preference.ExportLogToClipboardPreference",
selectable = true
),
NonInteractivePreference(
"revanced_debug_logs_clear_buffer",
tag = "app.revanced.extension.shared.settings.preference.ClearLogBufferPreference",
selectable = true
)
)
)
)
// Add an "About" preference to the top.
preferences += NonInteractivePreference(
key = "revanced_settings_music_screen_0_about",
summaryKey = null,
tag = "app.revanced.extension.shared.settings.preference.ReVancedAboutPreference",
selectable = true,
)
// Modify GoogleApiActivity and remove all existing layout code.
// Must modify an existing activity and cannot add a new activity to the manifest,
// as that fails for root installations.
googleApiActivityFingerprint.method.addInstructions(
1,
"""
invoke-static { }, $GOOGLE_API_ACTIVITY_HOOK_CLASS_DESCRIPTOR->createInstance()Lapp/revanced/extension/music/settings/GoogleApiActivityHook;
move-result-object v0
invoke-static { v0, p0 }, $BASE_ACTIVITY_HOOK_CLASS_DESCRIPTOR->initialize(Lapp/revanced/extension/shared/settings/BaseActivityHook;Landroid/app/Activity;)V
return-void
"""
)
// Remove other methods as they will break as the onCreate method is modified above.
googleApiActivityFingerprint.classDef.apply {
methods.removeIf { it.name != "onCreate" && !MethodUtil.isConstructor(it) }
}
}
finalize {
PreferenceScreen.close()
}
}
/**
* Creates an intent to open ReVanced settings.
*/
fun newIntent(settingsName: String) = IntentPreference.Intent(
data = settingsName,
targetClass = "com.google.android.gms.common.api.GoogleApiActivity"
) {
// The package name change has to be reflected in the intent.
setOrGetFallbackPackageName("com.google.android.apps.youtube.music")
}
object PreferenceScreen : BasePreferenceScreen() {
val ADS = Screen(
"revanced_settings_music_screen_1_ads",
summaryKey = null
)
val GENERAL = Screen(
"revanced_settings_music_screen_2_general",
summaryKey = null
)
val PLAYER = Screen(
"revanced_settings_music_screen_3_player",
summaryKey = null
)
val MISC = Screen(
"revanced_settings_music_screen_4_misc",
summaryKey = null
)
override fun commit(screen: PreferenceScreenPreference) {
preferences += screen
}
}

View File

@@ -1,23 +0,0 @@
package app.revanced.patches.music.misc.spoof
import app.revanced.patches.music.misc.extension.sharedExtensionPatch
import app.revanced.patches.music.playservice.is_7_33_or_greater
import app.revanced.patches.music.playservice.is_8_11_or_greater
import app.revanced.patches.music.playservice.is_8_15_or_greater
import app.revanced.patches.music.playservice.versionCheckPatch
import app.revanced.patches.shared.misc.spoof.spoofVideoStreamsPatch
val spoofVideoStreamsPatch = spoofVideoStreamsPatch(
block = {
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.29.52"
)
)
dependsOn(sharedExtensionPatch, versionCheckPatch, userAgentClientSpoofPatch)
},
fixMediaFetchHotConfigChanges = { true },
fixMediaFetchHotConfigAlternativeChanges = { is_8_11_or_greater && !is_8_15_or_greater },
fixParsePlaybackResponseFeatureFlag = { is_7_33_or_greater }
)

View File

@@ -0,0 +1,59 @@
package app.revanced.patches.music.misc.spoof
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patches.all.misc.resources.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch
import app.revanced.patches.music.misc.extension.sharedExtensionPatch
import app.revanced.patches.music.misc.gms.musicActivityOnCreateFingerprint
import app.revanced.patches.music.misc.settings.PreferenceScreen
import app.revanced.patches.music.misc.settings.settingsPatch
import app.revanced.patches.music.playservice.is_7_33_or_greater
import app.revanced.patches.music.playservice.is_8_11_or_greater
import app.revanced.patches.music.playservice.is_8_15_or_greater
import app.revanced.patches.music.playservice.versionCheckPatch
import app.revanced.patches.shared.misc.settings.preference.ListPreference
import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
import app.revanced.patches.shared.misc.spoof.spoofVideoStreamsPatch
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/music/patches/spoof/SpoofVideoStreamsPatch;"
val spoofVideoStreamsPatch = spoofVideoStreamsPatch(
fixMediaFetchHotConfigChanges = { true },
fixMediaFetchHotConfigAlternativeChanges = { is_8_11_or_greater && !is_8_15_or_greater },
fixParsePlaybackResponseFeatureFlag = { is_7_33_or_greater },
block = {
dependsOn(
sharedExtensionPatch,
settingsPatch,
addResourcesPatch,
versionCheckPatch,
userAgentClientSpoofPatch
)
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.29.52"
)
)
},
executeBlock = {
addResources("shared", "misc.spoof.spoofVideoStreamsPatch")
PreferenceScreen.MISC.addPreferences(
PreferenceScreenPreference(
key = "revanced_spoof_video_streams_screen",
sorting = PreferenceScreenPreference.Sorting.UNSORTED,
preferences = setOf(
SwitchPreference("revanced_spoof_video_streams"),
ListPreference("revanced_spoof_video_streams_client_type"),
)
)
)
musicActivityOnCreateFingerprint.method.addInstruction(
0,
"invoke-static { }, $EXTENSION_CLASS_DESCRIPTOR->setClientOrderToUse()V"
)
}
)

View File

@@ -9,8 +9,8 @@ import app.revanced.patcher.patch.BytecodePatchBuilder
import app.revanced.patcher.patch.BytecodePatchContext
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMutable
import app.revanced.patches.all.misc.resources.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch
import app.revanced.patches.music.misc.extension.sharedExtensionPatch
import app.revanced.util.findFreeRegister
import app.revanced.util.findInstructionIndicesReversedOrThrow
import app.revanced.util.getReference
@@ -46,6 +46,8 @@ fun spoofVideoStreamsPatch(
dependsOn(addResourcesPatch)
execute {
addResources("shared", "misc.fix.playback.spoofVideoStreamsPatch")
// region Enable extension helper method used by other patches
patchIncludedExtensionMethodFingerprint.method.returnEarly(true)

View File

@@ -187,11 +187,16 @@ val customThemePatch = resourcePatch(
}
// Login screen gradient.
document("res/drawable/start_screen_gradient.xml").use { document ->
val gradientNode = document.getElementsByTagName("gradient").item(0) as Element
try {
document("res/drawable/start_screen_gradient.xml").use { document ->
val gradientNode = document.getElementsByTagName("gradient").item(0) as Element
gradientNode.setAttribute("android:startColor", "@color/gray_7")
gradientNode.setAttribute("android:endColor", "@color/gray_7")
gradientNode.setAttribute("android:startColor", "@color/gray_7")
gradientNode.setAttribute("android:endColor", "@color/gray_7")
}
} catch (_: Exception) {
// Fails for 9.0.66+
// printWarn("Failed to locate start_screen_gradient.xml, skipping modification.")
}
}
}

View File

@@ -12,9 +12,9 @@ import app.revanced.util.returnEarly
internal const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/spotify/misc/fix/SpoofClientPatch;"
@Deprecated("Patch no longer functions")
@Suppress("unused")
val spoofClientPatch = bytecodePatch(
name = "Spoof client",
description = "Spoofs the client to fix various functions of the app.",
) {
val requestListenerPort by intOption(

View File

@@ -8,7 +8,7 @@ val hideAdsPatch = bytecodePatch(
name = "Hide Ads",
description = "Hides ad banners between chats.",
) {
compatibleWith("com.viber.voip")
compatibleWith("com.viber.voip"("25.9.2.0"))
execute {
// Return 1 (true) indicating ads should be disabled.

View File

@@ -89,7 +89,7 @@ val downloadsPatch = bytecodePatch(
// Main activity is used to launch downloader intent.
mainActivityOnCreateFingerprint.method.addInstruction(
1,
0,
"invoke-static/range { p0 .. p0 }, $EXTENSION_CLASS_DESCRIPTOR->activityCreated(Landroid/app/Activity;)V"
)

View File

@@ -1,6 +1,7 @@
package app.revanced.patches.youtube.layout.seekbar
import app.revanced.patcher.fingerprint
import app.revanced.patches.youtube.shared.YOUTUBE_MAIN_ACTIVITY_CLASS_TYPE
import app.revanced.util.containsLiteralInstruction
import app.revanced.util.getReference
import app.revanced.util.indexOfFirstInstruction
@@ -103,7 +104,7 @@ internal val launchScreenLayoutTypeFingerprint = fingerprint {
custom { method, _ ->
val firstParameter = method.parameterTypes.firstOrNull()
// 19.25 - 19.45
(firstParameter == "Lcom/google/android/apps/youtube/app/watchwhile/MainActivity;"
(firstParameter == YOUTUBE_MAIN_ACTIVITY_CLASS_TYPE
|| firstParameter == "Landroid/app/Activity;") // 19.46+
&& method.containsLiteralInstruction(launchScreenLayoutTypeLotteFeatureFlag)
}

View File

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

View File

@@ -90,8 +90,8 @@ val openShortsInRegularPlayerPatch = bytecodePatch(
// Activity is used as the context to launch an Intent.
mainActivityOnCreateFingerprint.method.addInstruction(
1,
"invoke-static/range { p0 .. p0 }, ${EXTENSION_CLASS_DESCRIPTOR}->" +
0,
"invoke-static/range { p0 .. p0 }, $EXTENSION_CLASS_DESCRIPTOR->" +
"setMainActivity(Landroid/app/Activity;)V",
)

View File

@@ -1,6 +1,7 @@
package app.revanced.patches.youtube.layout.theme
import app.revanced.patcher.fingerprint
import app.revanced.patches.youtube.shared.YOUTUBE_MAIN_ACTIVITY_CLASS_TYPE
import app.revanced.util.literal
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
@@ -37,6 +38,6 @@ internal val splashScreenStyleFingerprint = fingerprint {
parameters("Landroid/os/Bundle;")
literal { SPLASH_SCREEN_STYLE_FEATURE_FLAG }
custom { method, classDef ->
method.name == "onCreate" && classDef.endsWith("/MainActivity;")
method.name == "onCreate" && classDef.type == YOUTUBE_MAIN_ACTIVITY_CLASS_TYPE
}
}

View File

@@ -40,9 +40,7 @@ val announcementsPatch = bytecodePatch(
)
mainActivityOnCreateFingerprint.method.addInstruction(
// Insert index must be greater than the insert index used by GmsCoreSupport,
// as both patch the same method and GmsCore check should be first.
1,
0,
"invoke-static/range { p0 .. p0 }, $EXTENSION_CLASS_DESCRIPTOR->showAnnouncement(Landroid/app/Activity;)V",
)
}

View File

@@ -22,6 +22,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
private const val EXTENSION_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/youtube/patches/EnableDebuggingPatch;"
// TODO: Refactor this into a shared patch that can be used by both YT and YT Music.
// Almost all of the feature flag hooks are the same between both apps.
val enableDebuggingPatch = bytecodePatch(
name = "Enable debugging",
description = "Adds options for debugging and exporting ReVanced logs to the clipboard.",
@@ -45,6 +47,7 @@ val enableDebuggingPatch = bytecodePatch(
)
execute {
addResources("shared", "misc.debugging.enableDebuggingPatch")
addResources("youtube", "misc.debugging.enableDebuggingPatch")
PreferenceScreen.MISC.addPreferences(
@@ -58,13 +61,13 @@ val enableDebuggingPatch = bytecodePatch(
SwitchPreference("revanced_debug_toast_on_error"),
NonInteractivePreference(
"revanced_debug_export_logs_to_clipboard",
tag = "app.revanced.extension.youtube.settings.preference.ExportLogToClipboardPreference",
selectable = true,
tag = "app.revanced.extension.shared.settings.preference.ExportLogToClipboardPreference",
selectable = true
),
NonInteractivePreference(
"revanced_debug_logs_clear_buffer",
tag = "app.revanced.extension.youtube.settings.preference.ClearLogBufferPreference",
selectable = true,
tag = "app.revanced.extension.shared.settings.preference.ClearLogBufferPreference",
selectable = true
),
),
),

View File

@@ -34,12 +34,7 @@ val checkWatchHistoryDomainNameResolutionPatch = bytecodePatch(
addResources("youtube", "misc.dns.checkWatchHistoryDomainNameResolutionPatch")
mainActivityOnCreateFingerprint.method.addInstruction(
// FIXME: Insert index must be greater than the insert index used by GmsCoreSupport,
// as both patch the same method and GmsCoreSupport check should be first,
// but the patch does not depend on GmsCoreSupport, so it should not be possible to enforce this
// unless a third patch is added that this patch and GmsCoreSupport depend on to manage
// the order of the patches.
1,
0,
"invoke-static/range { p0 .. p0 }, $EXTENSION_CLASS_DESCRIPTOR->checkDnsResolver(Landroid/app/Activity;)V",
)
}

View File

@@ -3,4 +3,5 @@ package app.revanced.patches.youtube.misc.extension
import app.revanced.patches.shared.misc.extension.sharedExtensionPatch
import app.revanced.patches.youtube.misc.extension.hooks.*
val sharedExtensionPatch = sharedExtensionPatch("youtube", applicationInitHook)
val sharedExtensionPatch = sharedExtensionPatch("youtube",
applicationInitHook, applicationInitOnCrateHook)

View File

@@ -1,11 +1,23 @@
package app.revanced.patches.youtube.misc.extension.hooks
import app.revanced.patches.shared.misc.extension.extensionHook
import app.revanced.patches.youtube.shared.YOUTUBE_MAIN_ACTIVITY_CLASS_TYPE
/**
* Hooks the context when the app is launched as a regular application (and is not an embedded video playback).
*/
// Extension context is the Activity itself.
internal val applicationInitHook = extensionHook {
// Does _not_ resolve to the YouTube main activity.
// Required as some hooked code runs before the main activity is launched.
strings("Application creation", "Application.onCreate")
}
internal val applicationInitOnCrateHook = extensionHook {
returns("V")
parameters("Landroid/os/Bundle;")
custom { method, classDef ->
method.name == "onCreate" && classDef.type == YOUTUBE_MAIN_ACTIVITY_CLASS_TYPE
}
}

View File

@@ -53,7 +53,7 @@ private fun gmsCoreSupportResourcePatch(
gmsCoreVendorGroupIdOption = gmsCoreVendorGroupIdOption,
spoofedPackageSignature = "24bb24c05e47e0aefa68a58a766179d9b613a600",
executeBlock = {
addResources("youtube", "misc.gms.gmsCoreSupportResourcePatch")
addResources("shared", "misc.gms.gmsCoreSupportResourcePatch")
val gmsCoreVendorGroupId by gmsCoreVendorGroupIdOption
@@ -62,10 +62,14 @@ private fun gmsCoreSupportResourcePatch(
"microg_settings",
intent = IntentPreference.Intent("", "org.microg.gms.ui.SettingsActivity") {
"$gmsCoreVendorGroupId.android.gms"
},
),
}
)
)
},
}
) {
dependsOn(settingsPatch, addResourcesPatch, accountCredentialsInvalidTextPatch)
dependsOn(
addResourcesPatch,
settingsPatch,
accountCredentialsInvalidTextPatch
)
}

View File

@@ -127,8 +127,7 @@ val navigationBarHookPatch = bytecodePatch(description = "Hooks the active navig
// Litho filtering based on navigation tab before the tab is updated.
mainActivityOnBackPressedFingerprint.method.addInstruction(
0,
"invoke-static { p0 }, " +
"$EXTENSION_CLASS_DESCRIPTOR->onBackPressed(Landroid/app/Activity;)V",
"invoke-static { p0 }, $EXTENSION_CLASS_DESCRIPTOR->onBackPressed(Landroid/app/Activity;)V",
)
// Hook the search bar.

View File

@@ -29,7 +29,9 @@ import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
import com.android.tools.smali.dexlib2.immutable.ImmutableMethodParameter
import com.android.tools.smali.dexlib2.util.MethodUtil
private const val EXTENSION_CLASS_DESCRIPTOR =
private const val BASE_ACTIVITY_HOOK_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/shared/settings/BaseActivityHook;"
private const val LICENSE_ACTIVITY_HOOK_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/youtube/settings/LicenseActivityHook;"
internal var appearanceStringId = -1L
@@ -37,10 +39,6 @@ internal var appearanceStringId = -1L
private val preferences = mutableSetOf<BasePreference>()
fun addSettingPreference(screen: BasePreference) {
preferences += screen
}
private val settingsResourcePatch = resourcePatch {
dependsOn(
resourceMappingPatch,
@@ -225,7 +223,9 @@ val settingsPatch = bytecodePatch(
licenseActivityOnCreateFingerprint.method.addInstructions(
1,
"""
invoke-static { p0 }, $EXTENSION_CLASS_DESCRIPTOR->initialize(Landroid/app/Activity;)V
invoke-static {}, $LICENSE_ACTIVITY_HOOK_CLASS_DESCRIPTOR->createInstance()Lapp/revanced/extension/youtube/settings/LicenseActivityHook;
move-result-object v0
invoke-static { v0, p0 }, $BASE_ACTIVITY_HOOK_CLASS_DESCRIPTOR->initialize(Lapp/revanced/extension/shared/settings/BaseActivityHook;Landroid/app/Activity;)V
return-void
"""
)
@@ -249,7 +249,7 @@ val settingsPatch = bytecodePatch(
).toMutable().apply {
addInstructions(
"""
invoke-static { p1 }, $EXTENSION_CLASS_DESCRIPTOR->getAttachBaseContext(Landroid/content/Context;)Landroid/content/Context;
invoke-static { p1 }, $LICENSE_ACTIVITY_HOOK_CLASS_DESCRIPTOR->getAttachBaseContext(Landroid/content/Context;)Landroid/content/Context;
move-result-object p1
invoke-super { p0, p1 }, $superclass->attachBaseContext(Landroid/content/Context;)V
return-void
@@ -294,7 +294,7 @@ val settingsPatch = bytecodePatch(
addInstructions(
"""
invoke-super { p0, p1 }, Landroid/app/Activity;->onConfigurationChanged(Landroid/content/res/Configuration;)V
invoke-static { p0, p1 }, $EXTENSION_CLASS_DESCRIPTOR->handleConfigurationChanged(Landroid/app/Activity;Landroid/content/res/Configuration;)V
invoke-static { p0, p1 }, $LICENSE_ACTIVITY_HOOK_CLASS_DESCRIPTOR->handleConfigurationChanged(Landroid/app/Activity;Landroid/content/res/Configuration;)V
return-void
"""
)
@@ -309,15 +309,15 @@ val settingsPatch = bytecodePatch(
val register = getInstruction<OneRegisterInstruction>(index).registerA
addInstructionsAtControlFlowLabel(
index,
"invoke-static { v$register }, ${EXTENSION_CLASS_DESCRIPTOR}->updateLightDarkModeStatus(Ljava/lang/Enum;)V",
"invoke-static { v$register }, ${LICENSE_ACTIVITY_HOOK_CLASS_DESCRIPTOR}->updateLightDarkModeStatus(Ljava/lang/Enum;)V",
)
}
}
// Add setting to force cairo settings fragment on/off.
// Add setting to force Cairo settings fragment on/off.
cairoFragmentConfigFingerprint.method.insertLiteralOverride(
CAIRO_CONFIG_LITERAL_VALUE,
"$EXTENSION_CLASS_DESCRIPTOR->useCairoSettingsFragment(Z)Z"
"$LICENSE_ACTIVITY_HOOK_CLASS_DESCRIPTOR->useCairoSettingsFragment(Z)Z"
)
}

View File

@@ -1,5 +1,6 @@
package app.revanced.patches.youtube.misc.spoof
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patches.all.misc.resources.addResources
import app.revanced.patches.shared.misc.settings.preference.ListPreference
import app.revanced.patches.shared.misc.settings.preference.NonInteractivePreference
@@ -13,56 +14,69 @@ import app.revanced.patches.youtube.misc.playservice.is_20_14_or_greater
import app.revanced.patches.youtube.misc.playservice.versionCheckPatch
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
import app.revanced.patches.youtube.misc.settings.settingsPatch
import app.revanced.patches.youtube.shared.mainActivityOnCreateFingerprint
val spoofVideoStreamsPatch = spoofVideoStreamsPatch({
compatibleWith(
"com.google.android.youtube"(
"19.34.42",
"19.43.41",
"19.47.53",
"20.07.39",
"20.12.46",
"20.13.41",
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/youtube/patches/spoof/SpoofVideoStreamsPatch;"
val spoofVideoStreamsPatch = spoofVideoStreamsPatch(
block = {
compatibleWith(
"com.google.android.youtube"(
"19.34.42",
"19.43.41",
"19.47.53",
"20.07.39",
"20.12.46",
"20.13.41",
)
)
)
dependsOn(
userAgentClientSpoofPatch,
settingsPatch,
versionCheckPatch
)
}, {
is_19_34_or_greater
}, {
// In 20.14 the flag was merged with 20.03 start playback flag.
is_20_10_or_greater && !is_20_14_or_greater
}, {
is_20_03_or_greater
}, {
addResources("youtube", "misc.fix.playback.spoofVideoStreamsPatch")
dependsOn(
userAgentClientSpoofPatch,
settingsPatch,
versionCheckPatch
)
},
fixMediaFetchHotConfigChanges = {
is_19_34_or_greater
},
fixMediaFetchHotConfigAlternativeChanges = {
// In 20.14 the flag was merged with 20.03 start playback flag.
is_20_10_or_greater && !is_20_14_or_greater
},
fixParsePlaybackResponseFeatureFlag = {
is_20_03_or_greater
},
executeBlock = {
addResources("youtube", "misc.fix.playback.spoofVideoStreamsPatch")
PreferenceScreen.MISC.addPreferences(
PreferenceScreenPreference(
key = "revanced_spoof_video_streams_screen",
sorting = PreferenceScreenPreference.Sorting.UNSORTED,
preferences = setOf(
SwitchPreference("revanced_spoof_video_streams"),
ListPreference("revanced_spoof_video_streams_client_type"),
NonInteractivePreference(
// Requires a key and title but the actual text is chosen at runtime.
key = "revanced_spoof_video_streams_about_android",
tag = "app.revanced.extension.youtube.settings.preference.SpoofStreamingDataSideEffectsPreference"
),
ListPreference(
key = "revanced_spoof_video_streams_language",
// Language strings are declared in Setting patch.
entriesKey = "revanced_language_entries",
entryValuesKey = "revanced_language_entry_values",
tag = "app.revanced.extension.shared.settings.preference.SortedListPreference"
),
SwitchPreference("revanced_spoof_video_streams_ios_force_avc"),
SwitchPreference("revanced_spoof_streaming_data_stats_for_nerds"),
),
),
)
})
PreferenceScreen.MISC.addPreferences(
PreferenceScreenPreference(
key = "revanced_spoof_video_streams_screen",
sorting = PreferenceScreenPreference.Sorting.UNSORTED,
preferences = setOf(
SwitchPreference("revanced_spoof_video_streams"),
ListPreference("revanced_spoof_video_streams_client_type"),
NonInteractivePreference(
// Requires a key and title but the actual text is chosen at runtime.
key = "revanced_spoof_video_streams_about_android",
tag = "app.revanced.extension.youtube.settings.preference.SpoofStreamingDataSideEffectsPreference"
),
ListPreference(
key = "revanced_spoof_video_streams_language",
// Language strings are declared in Setting patch.
entriesKey = "revanced_language_entries",
entryValuesKey = "revanced_language_entry_values",
tag = "app.revanced.extension.youtube.settings.preference.SpoofAudioSelectorListPreference"
),
SwitchPreference("revanced_spoof_streaming_data_stats_for_nerds"),
)
)
)
mainActivityOnCreateFingerprint.method.addInstruction(
0,
"invoke-static { }, $EXTENSION_CLASS_DESCRIPTOR->setClientOrderToUse()V"
)
}
)

View File

@@ -4,6 +4,8 @@ import app.revanced.patcher.fingerprint
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
internal const val YOUTUBE_MAIN_ACTIVITY_CLASS_TYPE = "Lcom/google/android/apps/youtube/app/watchwhile/MainActivity;"
internal val conversionContextFingerprintToString = fingerprint {
parameters()
strings(
@@ -48,7 +50,7 @@ internal val mainActivityConstructorFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR)
parameters()
custom { _, classDef ->
classDef.endsWith("/MainActivity;")
classDef.type == YOUTUBE_MAIN_ACTIVITY_CLASS_TYPE
}
}
@@ -57,7 +59,7 @@ internal val mainActivityOnBackPressedFingerprint = fingerprint {
returns("V")
parameters()
custom { method, classDef ->
method.name == "onBackPressed" && classDef.endsWith("/MainActivity;")
method.name == "onBackPressed" && classDef.type == YOUTUBE_MAIN_ACTIVITY_CLASS_TYPE
}
}
@@ -65,7 +67,7 @@ internal val mainActivityOnCreateFingerprint = fingerprint {
returns("V")
parameters("Landroid/os/Bundle;")
custom { method, classDef ->
method.name == "onCreate" && classDef.endsWith("/MainActivity;")
method.name == "onCreate" && classDef.type == YOUTUBE_MAIN_ACTIVITY_CLASS_TYPE
}
}

View File

@@ -1,5 +1,6 @@
package app.revanced.patches.youtube.video.audio
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
@@ -14,6 +15,7 @@ import app.revanced.patches.youtube.misc.playservice.is_20_07_or_greater
import app.revanced.patches.youtube.misc.playservice.versionCheckPatch
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
import app.revanced.patches.youtube.misc.settings.settingsPatch
import app.revanced.patches.youtube.shared.mainActivityOnCreateFingerprint
import app.revanced.util.findMethodFromToString
import app.revanced.util.indexOfFirstInstructionOrThrow
import app.revanced.util.insertLiteralOverride
@@ -55,10 +57,12 @@ val forceOriginalAudioPatch = bytecodePatch(
addResources("youtube", "video.audio.forceOriginalAudioPatch")
PreferenceScreen.VIDEO.addPreferences(
SwitchPreference(
key = "revanced_force_original_audio",
tag = "app.revanced.extension.youtube.settings.preference.ForceOriginalAudioSwitchPreference"
)
SwitchPreference("revanced_force_original_audio")
)
mainActivityOnCreateFingerprint.method.addInstruction(
0,
"invoke-static { }, $EXTENSION_CLASS_DESCRIPTOR->setPreferredLanguage()V"
)
// Disable feature flag that ignores the default track flag

View File

@@ -30,6 +30,10 @@ Second \"item\" text"</string>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
@@ -207,8 +211,6 @@ Second \"item\" text"</string>
</patch>
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
</patch>
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
</patch>
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
@@ -242,6 +244,20 @@ Second \"item\" text"</string>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
</patch>
</app>
<app id="music">
<patch id="misc.settings.settingsPatch">
</patch>
<patch id="ad.video.hideVideoAdsPatch">
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch>
<patch id="layout.compactheader.hideCategoryBar">
</patch>
<patch id="layout.premium.hideGetPremiumPatch">
</patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
</patch>
</app>
<app id="twitch">
<patch id="ad.audio.audioAdsPatch">
</patch>

View File

@@ -30,6 +30,10 @@ Second \"item\" text"</string>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
@@ -207,8 +211,6 @@ Second \"item\" text"</string>
</patch>
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
</patch>
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
</patch>
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
@@ -242,6 +244,20 @@ Second \"item\" text"</string>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
</patch>
</app>
<app id="music">
<patch id="misc.settings.settingsPatch">
</patch>
<patch id="ad.video.hideVideoAdsPatch">
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch>
<patch id="layout.compactheader.hideCategoryBar">
</patch>
<patch id="layout.premium.hideGetPremiumPatch">
</patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
</patch>
</app>
<app id="twitch">
<patch id="ad.audio.audioAdsPatch">
</patch>

View File

@@ -68,6 +68,8 @@ Second \"item\" text"</string>
and changes made here must also be made there. -->
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">إعدادات GmsCore</string>
<string name="microg_settings_summary">إعدادات لـ GmsCore</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="gms_core_toast_not_installed_message">لم يتم تثبيت MicroG GmsCore. قم بتثبيته.</string>
<string name="gms_core_dialog_title">الإجراء مطلوب</string>
@@ -84,6 +86,37 @@ Second \"item\" text"</string>
انقر فوق زر الاستمرار واسمح بتغييرات التحسين."</string>
<string name="gms_core_dialog_continue_text">متابعة</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Spoof Video Streams</string>
<string name="revanced_spoof_video_streams_screen_summary">تزييف تدفقات الفيديو الخاصة بالعميل لمنع حدوث مشكلات أثناء التشغيل</string>
<string name="revanced_spoof_video_streams_screen_title">انتحال بثوث الفيديو</string>
<string name="revanced_spoof_video_streams_screen_summary">انتحال بثوث الفيديو الخاصة بالعميل لمنع مشكلات التشغيل</string>
<string name="revanced_spoof_video_streams_title">Spoof Video Streams</string>
<string name="revanced_spoof_video_streams_summary_on">"تدفقات الفيديو مزورة
إذا كنت مستخدمًا لـ YouTube Premium، فقد لا يكون هذا الإعداد مطلوبًا"</string>
<string name="revanced_spoof_video_streams_summary_off">"لم يتم انتحال بثوث الفيديو
قد لا يعمل التشغيل"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">قد يؤدي إيقاف تشغيل هذا الإعداد إلى مشكلات في التشغيل.</string>
<string name="revanced_spoof_video_streams_client_type_title">العميل الافتراضي</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">تصحيح الأخطاء</string>
<string name="revanced_debug_screen_summary">تمكين أو تعطيل خيارات تصحيح الأخطاء</string>
<string name="revanced_debug_title">تسجيل تصحيح الأخطاء</string>
<string name="revanced_debug_summary_on">تم تمكين تسجيلات تصحيح الأخطاء</string>
<string name="revanced_debug_summary_off">تم تعطيل تسجيلات تصحيح الأخطاء</string>
<string name="revanced_debug_export_logs_to_clipboard_title">تصدير سجلات تصحيح الأخطاء</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">نسخ سجلات تصحيح أخطاء ReVanced إلى الحافظة</string>
<string name="revanced_debug_logs_disabled">تم تعطيل تسجيلات تصحيح الأخطاء</string>
<string name="revanced_debug_logs_none_found">لم يتم العثور على سجلات</string>
<string name="revanced_debug_logs_copied_to_clipboard">تم نسخ السجلات</string>
<string name="revanced_debug_logs_failed_to_export">فشل تصدير السجلات: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">مسح سجلات تصحيح الأخطاء</string>
<string name="revanced_debug_logs_clear_buffer_summary">يمسح جميع سجلات تصحيح أخطاء ReVanced المخزنة</string>
<string name="revanced_debug_logs_clear_toast">تم مسح السجلات</string>
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
@@ -110,11 +143,6 @@ Second \"item\" text"</string>
<string name="revanced_shorts_disable_background_playback_summary_off">تم تمكين تشغيل Shorts بالخلفية</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">تصحيح الأخطاء</string>
<string name="revanced_debug_screen_summary">تمكين أو تعطيل خيارات تصحيح الأخطاء</string>
<string name="revanced_debug_title">تسجيل تصحيح الأخطاء</string>
<string name="revanced_debug_summary_on">تم تمكين تسجيلات تصحيح الأخطاء</string>
<string name="revanced_debug_summary_off">تم تعطيل تسجيلات تصحيح الأخطاء</string>
<string name="revanced_debug_protobuffer_title">سجل بروتوكول التخزين المؤقت</string>
<string name="revanced_debug_protobuffer_summary_on">تتضمن سجلات التصحيح التخزين المؤقت</string>
<string name="revanced_debug_protobuffer_summary_off">لا تتضمن سجلات التصحيح التخزين المؤقت</string>
@@ -132,15 +160,6 @@ Second \"item\" text"</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">"يؤدي إيقاف تشغيل ملاحظات الأخطاء إلى إخفاء كافة إشعارات أخطاء ReVanced.
لن يتم إعلامك بأي أخطاء غير متوقعة."</string>
<string name="revanced_debug_export_logs_to_clipboard_title">تصدير سجلات تصحيح الأخطاء</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">نسخ سجلات تصحيح أخطاء ReVanced إلى الحافظة</string>
<string name="revanced_debug_logs_disabled">تم تعطيل تسجيلات تصحيح الأخطاء</string>
<string name="revanced_debug_logs_none_found">لم يتم العثور على سجلات</string>
<string name="revanced_debug_logs_copied_to_clipboard">تم نسخ السجلات</string>
<string name="revanced_debug_logs_failed_to_export">فشل تصدير السجلات: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">مسح سجلات تصحيح الأخطاء</string>
<string name="revanced_debug_logs_clear_buffer_summary">يمسح جميع سجلات تصحيح أخطاء ReVanced المخزنة</string>
<string name="revanced_debug_logs_clear_toast">تم مسح السجلات</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_hide_album_cards_title">إخفاء بطاقات الألبوم</string>
@@ -700,9 +719,9 @@ Second \"item\" text"</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">تم إخفاء قائمة المقطع الصوتي</string>
<string name="revanced_hide_player_flyout_audio_track_summary_off">يتم عرض قائمة المقطع الصوتي</string>
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<string name="revanced_hide_player_flyout_audio_track_not_available">"تم إخفاء قائمة المقطع الصوتي
<string name="revanced_hide_player_flyout_audio_track_not_available">"قائمة المسارات الصوتية مخفية
لعرض قائمة المقطع الصوتي، غيّر 'Spoof Video Streams' إلى iOS TV"</string>
قائمة المسارات الصوتية غير متاحة عندما يكون \"تزوير تدفقات الفيديو\" مُمكَّنًا"</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">إخفاء المشاهدة في VR</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">تم إخفاء قائمة المشاهدة في الوضع الافتراضي</string>
@@ -1415,10 +1434,6 @@ Second \"item\" text"</string>
يمكن أن يؤدي تفعيل هذا إلى فتح جودة أعلى للفيديو"</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">قد يؤدي تمكين هذا إلى تباطؤ تشغيل الفيديو وتدهور عمر البطارية وآثار جانبية غير معروفة.</string>
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">إعدادات GmsCore</string>
<string name="microg_settings_summary">إعدادات لـ GmsCore</string>
</patch>
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
<string name="revanced_disable_haptic_feedback_title">الاهتزاز عند الضغط</string>
<string name="revanced_disable_haptic_feedback_summary">تغيير الاهتزاز عند الضغط</string>
@@ -1532,35 +1547,51 @@ Second \"item\" text"</string>
<string name="revanced_slide_to_seek_summary_off">تم تعطيل التمرير للتقديم أو الترجيع</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Spoof Video Streams</string>
<string name="revanced_spoof_video_streams_screen_summary">تزييف تدفقات الفيديو الخاصة بالعميل لمنع حدوث مشكلات أثناء التشغيل</string>
<string name="revanced_spoof_video_streams_title">Spoof Video Streams</string>
<string name="revanced_spoof_video_streams_summary_on">يتم تزييف تدفقات الفيديو</string>
<string name="revanced_spoof_video_streams_summary_off">"لا يتم تزييف تدفقات الفيديو
قد لا يعمل تشغيل الفيديو"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">إيقاف تشغيل هذا الإعداد قد يسبب مشاكل في تشغيل الفيديو.</string>
<string name="revanced_spoof_video_streams_client_type_title">العميل الافتراضي</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">فرض iOS AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">يتم فرض ترميز فيديو على AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">يتم تحديد ترميز الفيديو تلقائيًا</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"قد يؤدي تمكين هذا إلى تحسين عمر البطارية وإصلاح تقطيع التشغيل.
AVC لديه حد أقصى للدقة 1080p، لا يتوفر ترميز الصوت Opus، وسوف يستخدم تشغيل الفيديو بيانات إنترنت أكثر من VP9 أو AV1."</string>
<string name="revanced_spoof_video_streams_about_ios_tv_title">الآثار الجانبية لمحاكاة هوية iOS</string>
<string name="revanced_spoof_video_streams_about_ios_tv_summary">"• قد لا يتم تشغيل الأفلام أو الفيديوهات المدفوعة
• مستوى الصوت الثابت غير متوفر
• تنتهي الفيديوهات قبل ب 1 ثانية"</string>
<string name="revanced_spoof_video_streams_about_title">الآثار الجانبية للتزوير</string>
<string name="revanced_spoof_video_streams_about_android_title">الآثار الجانبية لمحاكاة هوية Android</string>
<string name="revanced_spoof_video_streams_about_android_summary">"• قائمة المقطع الصوتي مفقودة
• مستوى الصوت الثابت غير متاح
• فرض الصوت الأصلي غير متوفر"</string>
<string name="revanced_spoof_video_streams_about_android_summary">"• قائمة المسارات الصوتية مفقودة
• مستوى الصوت المستقر غير متاح"</string>
<string name="revanced_spoof_video_streams_about_experimental">• عميل تجريبي وقد يتوقف عن العمل في أي وقت</string>
<string name="revanced_spoof_video_streams_about_no_av1">• لا يوجد ترميز الفيديو AV1</string>
<string name="revanced_spoof_video_streams_about_kids_videos">• قد لا يتم تشغيل الفيديوهات المخصصة للأطفال عند تسجيل الخروج أو عند استخدام وضع التصفح المتخفي</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">عرض في إحصاءات تقنية</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_on">يتم عرض نوع العميل في إحصاءات تقنية</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_off">تم إخفاء نوع العميل في إحصاءات تقنية</string>
<string name="revanced_spoof_video_streams_language_title">لغة البث الصوتي الافتراضية للواقع الافتراضي VR</string>
<string name="revanced_spoof_video_streams_language_title">لغة بث الصوت</string>
</patch>
</app>
<app id="music">
<patch id="misc.settings.settingsPatch">
<string name="revanced_settings_music_screen_0_about_title">حول</string>
<string name="revanced_settings_music_screen_1_ads_title">إعلانات</string>
<string name="revanced_settings_music_screen_2_general_title">عام</string>
<string name="revanced_settings_music_screen_3_player_title">المشغل</string>
<string name="revanced_settings_music_screen_4_misc_title">متنوعة</string>
</patch>
<patch id="ad.video.hideVideoAdsPatch">
<string name="revanced_music_hide_video_ads_title">إخفاء إعلانات الفيديو</string>
<string name="revanced_music_hide_video_ads_summary_on">تم إخفاء إعلانات الفيديو</string>
<string name="revanced_music_hide_video_ads_summary_off">تم عرض إعلانات الفيديو</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
<string name="revanced_music_play_permanent_repeat_title">تمكين التكرار الدائم</string>
<string name="revanced_music_play_permanent_repeat_summary_on">تم تمكين التكرار الدائم</string>
<string name="revanced_music_play_permanent_repeat_summary_off">تم تعطيل التكرار الدائم</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">إخفاء شريط الفئات</string>
<string name="revanced_music_hide_category_bar_summary_on">شريط الفئات مخفي</string>
<string name="revanced_music_hide_category_bar_summary_off">شريط الفئات معروض</string>
</patch>
<patch id="layout.premium.hideGetPremiumPatch">
<string name="revanced_music_hide_get_premium_label_title">إخفاء تسمية \'الحصول على Music Premium\'</string>
<string name="revanced_music_hide_get_premium_label_summary_on">التسمية مخفية</string>
<string name="revanced_music_hide_get_premium_label_summary_off">التسمية معروضة</string>
</patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
<string name="revanced_music_hide_upgrade_button_title">إخفاء زر الترقية</string>
<string name="revanced_music_hide_upgrade_button_summary_on">الزر مخفي</string>
<string name="revanced_music_hide_upgrade_button_summary_off">الزر معروض</string>
</patch>
</app>
<app id="twitch">

View File

@@ -30,6 +30,10 @@ Second \"item\" text"</string>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
@@ -209,8 +213,6 @@ Second \"item\" text"</string>
</patch>
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
</patch>
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
</patch>
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
@@ -244,6 +246,20 @@ Second \"item\" text"</string>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
</patch>
</app>
<app id="music">
<patch id="misc.settings.settingsPatch">
</patch>
<patch id="ad.video.hideVideoAdsPatch">
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch>
<patch id="layout.compactheader.hideCategoryBar">
</patch>
<patch id="layout.premium.hideGetPremiumPatch">
</patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
</patch>
</app>
<app id="twitch">
<patch id="ad.audio.audioAdsPatch">
</patch>

View File

@@ -68,6 +68,8 @@ Yeni dilləri tərcümə etmək üçün translate.revanced.app 'ə daxil olun"</
and changes made here must also be made there. -->
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">GmsCore Tənzimləmələri</string>
<string name="microg_settings_summary">GmsCore üçün Tənzimləmələr</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="gms_core_toast_not_installed_message">MicroG GmsCore quraşdırılmayıb. Bunu quraşdır.</string>
<string name="gms_core_dialog_title">Fəaliyyət lazımdır</string>
@@ -84,6 +86,31 @@ MicroG üçün batareya optimallaşmasın qapatma batareya istifadəsinə mənfi
Davam et düyməsinə toxun və optimallaşdırma dəyişikliklərin qəbul et."</string>
<string name="gms_core_dialog_continue_text">Davam et</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Video yayımları saxtalaşdır</string>
<string name="revanced_spoof_video_streams_screen_summary">Oynatma problemlərin önləmək üçün qəbuledici video yayımların saxtalaşdır</string>
<string name="revanced_spoof_video_streams_title">Video yayımları saxtalaşdır</string>
<string name="revanced_spoof_video_streams_summary_on">"Video yayımları saxtalaşdırılıb
Əgər YouTube Premium istifadəçisisinizsə, bu tənzimlənmə tələb olunmaya bilər"</string>
<string name="revanced_spoof_video_streams_client_type_title">İlkin qəbuledici</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Sazlama</string>
<string name="revanced_debug_screen_summary">Sazlama seçimlərini aktiv/qeyri-aktiv et</string>
<string name="revanced_debug_title">Sazlama jurnalı</string>
<string name="revanced_debug_summary_on">Sazlama jurnalı işləkdir</string>
<string name="revanced_debug_summary_off">Sazlama jurnalı qeyri-aktivdir</string>
<string name="revanced_debug_export_logs_to_clipboard_title">Sazlama qeydlərini ixrac edin</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">ReVanced sazlama qeydlərini buferə köçürür</string>
<string name="revanced_debug_logs_disabled">Sazlama qeydi qapalıdır</string>
<string name="revanced_debug_logs_none_found">Qeydlər tapılmadı</string>
<string name="revanced_debug_logs_copied_to_clipboard">Qeydlər köçürüldü</string>
<string name="revanced_debug_logs_failed_to_export">Qeydləri ixrac etmək alınmadı: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Sazlama qeydlərini təmizlə</string>
<string name="revanced_debug_logs_clear_buffer_summary">Saxlanılan bütün ReVanced sazlama qeydlərini təmizləyir</string>
<string name="revanced_debug_logs_clear_toast">Qeydlər silindi</string>
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
@@ -110,11 +137,6 @@ Davam et düyməsinə toxun və optimallaşdırma dəyişikliklərin qəbul et."
<string name="revanced_shorts_disable_background_playback_summary_off">Shorts arxa plan oynatma aktivdir</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Sazlama</string>
<string name="revanced_debug_screen_summary">Sazlama seçimlərini aktiv/qeyri-aktiv et</string>
<string name="revanced_debug_title">Sazlama jurnalı</string>
<string name="revanced_debug_summary_on">Sazlama jurnalı işləkdir</string>
<string name="revanced_debug_summary_off">Sazlama jurnalı qeyri-aktivdir</string>
<string name="revanced_debug_protobuffer_title">Bufer protokol jurnalı</string>
<string name="revanced_debug_protobuffer_summary_on">Sazlama jurnallarına protokol buferi daxildir</string>
<string name="revanced_debug_protobuffer_summary_off">Sazlama jurnallarına protokol buferi daxil deyil</string>
@@ -132,15 +154,6 @@ Hər halda, bunu aktivləşdirmə IP ünvanınız kimi bəzi istifadəçi məlum
<string name="revanced_debug_toast_on_error_user_dialog_message">"Xəta ani bildirişlərin qapatmaq, bütün ReVanced xəta bildirişlərin gizlədir.
Gözlənilməz hallardan xəbərdar olmayacaqsınız."</string>
<string name="revanced_debug_export_logs_to_clipboard_title">Sazlama qeydlərini ixrac edin</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">ReVanced sazlama qeydlərini buferə köçürür</string>
<string name="revanced_debug_logs_disabled">Sazlama qeydi qapalıdır</string>
<string name="revanced_debug_logs_none_found">Qeydlər tapılmadı</string>
<string name="revanced_debug_logs_copied_to_clipboard">Qeydlər köçürüldü</string>
<string name="revanced_debug_logs_failed_to_export">Qeydləri ixrac etmək alınmadı: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Sazlama qeydlərini təmizlə</string>
<string name="revanced_debug_logs_clear_buffer_summary">Saxlanılan bütün ReVanced sazlama qeydlərini təmizləyir</string>
<string name="revanced_debug_logs_clear_toast">Qeydlər silindi</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_hide_album_cards_title">Albom kartlarını gizlət</string>
@@ -700,9 +713,9 @@ Bu seçimi dəyişdirmə işə düşmürsə, Gizli rejimə keçməyə çalışı
<string name="revanced_hide_player_flyout_audio_track_summary_on">Səs axını menyusu gizlidir</string>
<string name="revanced_hide_player_flyout_audio_track_summary_off">Səs axını menyusu göstərilir</string>
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<string name="revanced_hide_player_flyout_audio_track_not_available">"Audio trek seçimi gizlədilib
<string name="revanced_hide_player_flyout_audio_track_not_available">"Səs treki menyusu gizlidir
Audio trek seçimin göstərmək üçün \"Video axınları saxtalaşdır\"ı iOS TV-yə dəyiş"</string>
\"Video yayımları saxtalaşdır\" aktivləşdikdə səs trek menyusu mövcud deyil "</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">\"VR-da İzləni\" gizlət</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">VR menyusunda izləmə gizlidir</string>
@@ -1414,10 +1427,6 @@ Yüksək video keyfiyyətlər görünə bilər, ancaq video oynadılmasında qı
Bunu aktivləşdirmə daha yüksək video keyfiyyətləri əngəlin silə bilər"</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">Bunu aktivləşdirmə, video oynatma donmalarına, daha pis batareya istismarına və bilinməyən yan təsirlərə səbəb ola bilər.</string>
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">GmsCore Tənzimləmələri</string>
<string name="microg_settings_summary">GmsCore üçün Tənzimləmələr</string>
</patch>
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
<string name="revanced_disable_haptic_feedback_title">Əks-əlaqə reaksiyası</string>
<string name="revanced_disable_haptic_feedback_summary">Əks-əlaqə reaksiyasını dəyişdir</string>
@@ -1531,35 +1540,32 @@ Bunu aktivləşdirmə daha yüksək video keyfiyyətləri əngəlin silə bilər
<string name="revanced_slide_to_seek_summary_off">Axtarmaq üçün sürüşdürmə aktiv deyil</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Video yayımları saxtalaşdır</string>
<string name="revanced_spoof_video_streams_screen_summary">Oynatma problemlərin önləmək üçün qəbuledici video yayımların saxtalaşdır</string>
<string name="revanced_spoof_video_streams_title">Video yayımları saxtalaşdır</string>
<string name="revanced_spoof_video_streams_summary_on">Video yayımları saxtalaşdırılır</string>
<string name="revanced_spoof_video_streams_summary_off">"Video yayımlar saxtalaşdırılmır
Video oynatma işləməyə bilər"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Bu seçimi bağlamaq, video oynatma problemlərinə səbəb olar.</string>
<string name="revanced_spoof_video_streams_client_type_title">İlkin qəbuledici</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">IOS-da AVC (H.264)-ni məcbur et</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Video kodlama AVC (H.264)-yə məcbur edilir</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Video kodlayıcı avtomatik müəyyən edilir</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"Bunu aktivləşdirmə, batareya ömrün yaxşılaşdıra və oynatma qırılmasın düzəldə bilər.
AVC maksimum 1080p görüntü imkanına malikdir, Opus audio kodlama olmur və video oynatma VP9 və ya AV1-dən daha çox internet məlumatı sərf edəcək."</string>
<string name="revanced_spoof_video_streams_about_ios_tv_title">iOS saxtalaşdırma yan təsirləri</string>
<string name="revanced_spoof_video_streams_about_ios_tv_summary">"• Filmlər və ya ödənişli videolar oynadıla bilməz
• Stabil səs səviyyəsi mövcud deyil
• Videolar 1 saniyə tez bitir"</string>
<string name="revanced_spoof_video_streams_about_title">Saxtakarlıq yan təsirləri</string>
<string name="revanced_spoof_video_streams_about_android_title">Android saxtalaşdırma yan təsirləri</string>
<string name="revanced_spoof_video_streams_about_android_summary">"• Səs treki menyusu yoxdur
• Sabit səs səviyyəsi yoxdur
• İlkin səsi məcbur etmə mümkün deyil"</string>
<string name="revanced_spoof_video_streams_about_android_summary">"• Səs treki menyusu əlçatmazdır
• Sabit səs səviyyəsi yoxdur"</string>
<string name="revanced_spoof_video_streams_about_experimental">• Təcrübi qəbuledici və hər vaxt işləməyi dayandıra bilər</string>
<string name="revanced_spoof_video_streams_about_no_av1">• AV1 video kodlayıcı yoxdur</string>
<string name="revanced_spoof_video_streams_about_kids_videos">• Giriş edilməyəndə və ya gizli rejimdə uşaq videoları oynadıla bilməz</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">İstək üçün Statistikada göstər</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_on">Qəbuledici növü İstək üçün statistikada göstərilir</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_off">Qəbuledici nerd üçün Statistikada gizlidir</string>
<string name="revanced_spoof_video_streams_language_title">VR-da ilkin səs yayımı dili</string>
<string name="revanced_spoof_video_streams_language_title">Səs yayım dili</string>
</patch>
</app>
<app id="music">
<patch id="misc.settings.settingsPatch">
<string name="revanced_settings_music_screen_4_misc_title">Çoxvariantlı</string>
</patch>
<patch id="ad.video.hideVideoAdsPatch">
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch>
<patch id="layout.compactheader.hideCategoryBar">
</patch>
<patch id="layout.premium.hideGetPremiumPatch">
</patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
</patch>
</app>
<app id="twitch">

View File

@@ -68,6 +68,8 @@ Second \"item\" text"</string>
and changes made here must also be made there. -->
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">Налады GmsCore</string>
<string name="microg_settings_summary">Налады для GmsCore</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="gms_core_toast_not_installed_message">MicroG GmsCore не ўсталяваны. Усталюйце яго.</string>
<string name="gms_core_dialog_title">Патрабуецца дзеянне</string>
@@ -84,6 +86,37 @@ Second \"item\" text"</string>
Націсніце кнопку \"Працягнуць\" і дазвольце змяніць аптымізацыю."</string>
<string name="gms_core_dialog_continue_text">Працягнуць</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Подделывать потоки видео</string>
<string name="revanced_spoof_video_streams_screen_summary">Имитируйте потоки видео клиентов, чтобы предотвратить проблемы с воспроизведением</string>
<string name="revanced_spoof_video_streams_screen_title">Падмена відэапатокаў</string>
<string name="revanced_spoof_video_streams_screen_summary">Падмена відэапатокаў кліента для прадухілення праблем з прайграваннем</string>
<string name="revanced_spoof_video_streams_title">Подделывать потоки видео</string>
<string name="revanced_spoof_video_streams_summary_on">"Відэаструмені падроблены
Калі вы карыстаецеся YouTube Premium, гэтая налада можа не спатрэбіцца"</string>
<string name="revanced_spoof_video_streams_summary_off">"Відэапатокі не падменены
Прайграванне можа не працаваць"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Адключэнне гэтай налады можа выклікаць праблемы з прайграваннем.</string>
<string name="revanced_spoof_video_streams_client_type_title">Клиент по умолчанию</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Адладка</string>
<string name="revanced_debug_screen_summary">Уключыць або выключыць параметры адладкі</string>
<string name="revanced_debug_title">Запіс адладкі</string>
<string name="revanced_debug_summary_on">Журналы адладкі ўключаны</string>
<string name="revanced_debug_summary_off">Журналы адладкі адключаны</string>
<string name="revanced_debug_export_logs_to_clipboard_title">Экспартаваць адладачныя лагі</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">Капіруе адладачныя лагі ReVanced у буфер абмену</string>
<string name="revanced_debug_logs_disabled">Адладачнае лагаванне адключана</string>
<string name="revanced_debug_logs_none_found">Лагі не знойдзены</string>
<string name="revanced_debug_logs_copied_to_clipboard">Лагі скапіяваны</string>
<string name="revanced_debug_logs_failed_to_export">Не ўдалося экспартаваць журналы: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Ачысціць адладачныя лагі</string>
<string name="revanced_debug_logs_clear_buffer_summary">Ачышчае ўсе захаваныя адладачныя лагі ReVanced</string>
<string name="revanced_debug_logs_clear_toast">Лагі ачышчаны</string>
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
@@ -110,11 +143,6 @@ Second \"item\" text"</string>
<string name="revanced_shorts_disable_background_playback_summary_off">Фоновый плейлист Shorts включен</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Адладка</string>
<string name="revanced_debug_screen_summary">Уключыць або выключыць параметры адладкі</string>
<string name="revanced_debug_title">Запіс адладкі</string>
<string name="revanced_debug_summary_on">Журналы адладкі ўключаны</string>
<string name="revanced_debug_summary_off">Журналы адладкі адключаны</string>
<string name="revanced_debug_protobuffer_title">Буфер пратаколу часопіса</string>
<string name="revanced_debug_protobuffer_summary_on">Журналы адладкі ўключаюць пратабуфер</string>
<string name="revanced_debug_protobuffer_summary_off">Журналы адладкі не ўключаюць пратабуфер</string>
@@ -132,15 +160,6 @@ Second \"item\" text"</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">"Адключэнне паведамленняў пра памылкі схавае ўсе апавяшчэнні ReVanced пра памылкі.
Вы не будзеце атрымліваць апавяшчэнні пра нечаканыя падзеі."</string>
<string name="revanced_debug_export_logs_to_clipboard_title">Экспартаваць адладачныя лагі</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">Капіруе адладачныя лагі ReVanced у буфер абмену</string>
<string name="revanced_debug_logs_disabled">Адладачнае лагаванне адключана</string>
<string name="revanced_debug_logs_none_found">Лагі не знойдзены</string>
<string name="revanced_debug_logs_copied_to_clipboard">Лагі скапіяваны</string>
<string name="revanced_debug_logs_failed_to_export">Не ўдалося экспартаваць журналы: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Ачысціць адладачныя лагі</string>
<string name="revanced_debug_logs_clear_buffer_summary">Ачышчае ўсе захаваныя адладачныя лагі ReVanced</string>
<string name="revanced_debug_logs_clear_toast">Лагі ачышчаны</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_hide_album_cards_title">Схаваць карты альбома</string>
@@ -700,9 +719,9 @@ Second \"item\" text"</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">Меню гукавой дарожкі схавана</string>
<string name="revanced_hide_player_flyout_audio_track_summary_off">Адлюструецца меню гукавой дарожкі</string>
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<string name="revanced_hide_player_flyout_audio_track_not_available">"Меню аўдыядарожкі схавана
<string name="revanced_hide_player_flyout_audio_track_not_available">"Меню гукавой дарожкі схавана
Каб паказаць меню аўдыядарожкі, змяніце \"Падробка відэаструменяў\" на iOS TV"</string>
Меню гукавой дарожкі недаступна, калі ўключана \"Падробка відэаструменяў\""</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">Схаваць гадзіннік у VR</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Меню прагляду ў VR схавана</string>
@@ -1416,10 +1435,6 @@ Second \"item\" text"</string>
Уключэнне гэтага можа разблакаваць больш высокія якасці відэа"</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">Уключэнне гэтага можа прывесці да прыпынкаў прайгравання відэа, пагаршэння тэрміну службы батарэі і невядомых пабочных эфектаў.</string>
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">Налады GmsCore</string>
<string name="microg_settings_summary">Налады для GmsCore</string>
</patch>
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
<string name="revanced_disable_haptic_feedback_title">Тактыльная зваротная сувязь</string>
<string name="revanced_disable_haptic_feedback_summary">Змяніць тактыльную зваротную сувязь</string>
@@ -1533,35 +1548,51 @@ Second \"item\" text"</string>
<string name="revanced_slide_to_seek_summary_off">Слайд для пошуку не ўключаны</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Подделывать потоки видео</string>
<string name="revanced_spoof_video_streams_screen_summary">Имитируйте потоки видео клиентов, чтобы предотвратить проблемы с воспроизведением</string>
<string name="revanced_spoof_video_streams_title">Подделывать потоки видео</string>
<string name="revanced_spoof_video_streams_summary_on">Потоки видео подделаны</string>
<string name="revanced_spoof_video_streams_summary_off">"Відэаструм не падроблены
Прайграванне відэа можа не працаваць"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Адключэнне гэтай налады можа выклікаць праблемы з прайграваннем відэа.</string>
<string name="revanced_spoof_video_streams_client_type_title">Клиент по умолчанию</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Вымусіць iOS AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Відэакaдэк зафіксаваны ў AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Відэакaдэк вызначаецца аўтаматычна</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"Уключэнне гэтага можа палепшыць час аўтаномнай працы і выправіць заіканне прайгравання.
AVC мае максімальнае дазвол 1080p, аўдыёкадэк Opus недаступны, а прайграванне відэа будзе выкарыстоўваць больш інтэрнэт-даных, чым VP9 або AV1."</string>
<string name="revanced_spoof_video_streams_about_ios_tv_title">Пабочныя эфекты падробкі iOS</string>
<string name="revanced_spoof_video_streams_about_ios_tv_summary">"• Фільмы або платныя відэа могуць не прайгравацца
• Стабільная гучнасць недаступная
• Відэа заканчваюцца на 1 секунду раней"</string>
<string name="revanced_spoof_video_streams_about_title">Пабочныя эфекты падробкі</string>
<string name="revanced_spoof_video_streams_about_android_title">Побічныя эфекты падробкі Android</string>
<string name="revanced_spoof_video_streams_about_android_summary">"• Меню гукавой дарожкі адсутнічае
• Стабільны гук недаступны
• Прымусовае арыгінальнае аўдыё недаступна"</string>
• Стабільная гучнасць недаступна"</string>
<string name="revanced_spoof_video_streams_about_experimental">• Эксперыментальны кліент і можа спыніць працу ў любы час</string>
<string name="revanced_spoof_video_streams_about_no_av1">• Няма відэакідавання AV1</string>
<string name="revanced_spoof_video_streams_about_kids_videos">• Дзіцячыя відэа могуць не прайгравацца ў стане выхаду з акаўнта або ў рэжыме інкогніта</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">Паказаць у статыстыцы для спецыялістаў</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_on">Тып кліента адлюстроўваецца ў статыстыцы для спецыялістаў</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_off">Кліент схаваны ў статыстыцы для спецыялістаў</string>
<string name="revanced_spoof_video_streams_language_title">Мова гукавой дарожкі па змаўчанні для VR</string>
<string name="revanced_spoof_video_streams_language_title">Мова аўдыяпатоку</string>
</patch>
</app>
<app id="music">
<patch id="misc.settings.settingsPatch">
<string name="revanced_settings_music_screen_0_about_title">Пра</string>
<string name="revanced_settings_music_screen_1_ads_title">Рэклама</string>
<string name="revanced_settings_music_screen_2_general_title">Агульныя</string>
<string name="revanced_settings_music_screen_3_player_title">Плэер</string>
<string name="revanced_settings_music_screen_4_misc_title">Рознае</string>
</patch>
<patch id="ad.video.hideVideoAdsPatch">
<string name="revanced_music_hide_video_ads_title">Схаваць відэарэкламу</string>
<string name="revanced_music_hide_video_ads_summary_on">Відэарэклама схаваная</string>
<string name="revanced_music_hide_video_ads_summary_off">Відэарэклама паказаная</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
<string name="revanced_music_play_permanent_repeat_title">Уключыць пастаянны паўтор</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Пастаянны паўтор уключаны</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Пастаянны паўтор адключаны</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Схаваць панэль катэгорый</string>
<string name="revanced_music_hide_category_bar_summary_on">Панэль катэгорый схаваная</string>
<string name="revanced_music_hide_category_bar_summary_off">Панэль катэгорый паказаная</string>
</patch>
<patch id="layout.premium.hideGetPremiumPatch">
<string name="revanced_music_hide_get_premium_label_title">Схаваць надпіс \"Атрымаць Music Premium\"</string>
<string name="revanced_music_hide_get_premium_label_summary_on">Надпіс схаваны</string>
<string name="revanced_music_hide_get_premium_label_summary_off">Надпіс паказаны</string>
</patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
<string name="revanced_music_hide_upgrade_button_title">Схаваць кнопку абнаўлення</string>
<string name="revanced_music_hide_upgrade_button_summary_on">Кнопка схаваная</string>
<string name="revanced_music_hide_upgrade_button_summary_off">Кнопка паказаная</string>
</patch>
</app>
<app id="twitch">

View File

@@ -68,6 +68,8 @@ Second \"item\" text"</string>
and changes made here must also be made there. -->
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">GmsCore Настройки</string>
<string name="microg_settings_summary">Настройки на GmsCore</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="gms_core_toast_not_installed_message">GmsCore не е инсталиран. Инсталирайте го.</string>
<string name="gms_core_dialog_title">Нужно е действие</string>
@@ -84,6 +86,37 @@ Second \"item\" text"</string>
Докоснете бутона за продължаване и разрешете промени в оптимизацията."</string>
<string name="gms_core_dialog_continue_text">Продължи</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Подправяне на видео потоци</string>
<string name="revanced_spoof_video_streams_screen_summary">Подправете клиентските видео потоци, за да предотвратите проблеми с възпроизвеждането</string>
<string name="revanced_spoof_video_streams_screen_title">Имитиране на видео потоци</string>
<string name="revanced_spoof_video_streams_screen_summary">Имитирайте видео потоците на клиента, за да предотвратите проблеми с възпроизвеждането</string>
<string name="revanced_spoof_video_streams_title">Подправяне на видео потоци</string>
<string name="revanced_spoof_video_streams_summary_on">"Видео потоците са подменени
Ако сте потребител на YouTube Premium, тази настройка може да не е необходима"</string>
<string name="revanced_spoof_video_streams_summary_off">"Видеопотоците не са подправени
Възпроизвеждането може да не работи"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Изключването на тази настройка може да причини проблеми с възпроизвеждането.</string>
<string name="revanced_spoof_video_streams_client_type_title">Клиент по подразбиране</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Отстраняване на грешки</string>
<string name="revanced_debug_screen_summary">Активиране или деактивиране на отстраняването на грешки</string>
<string name="revanced_debug_title">Дневник на отстраняването на грешки</string>
<string name="revanced_debug_summary_on">Дневникът за остраняване на грешки е активиран</string>
<string name="revanced_debug_summary_off">Дневникът за остраняване на грешки е деактивиран</string>
<string name="revanced_debug_export_logs_to_clipboard_title">Експортиране на логове за отстраняване на грешки</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">Копира логовете за отстраняване на грешки на ReVanced в клипборда</string>
<string name="revanced_debug_logs_disabled">Отстраняването на грешки е деактивирано</string>
<string name="revanced_debug_logs_none_found">Не са намерени логове</string>
<string name="revanced_debug_logs_copied_to_clipboard">Логовете са копирани</string>
<string name="revanced_debug_logs_failed_to_export">Неуспешно експортиране на логове: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Изчистване на логовете за отстраняване на грешки</string>
<string name="revanced_debug_logs_clear_buffer_summary">Изчиства всички съхранени логове за отстраняване на грешки на ReVanced</string>
<string name="revanced_debug_logs_clear_toast">Логовете са изчистени</string>
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
@@ -110,11 +143,6 @@ Second \"item\" text"</string>
<string name="revanced_shorts_disable_background_playback_summary_off">Фоновото възпроизвеждане на Shorts е активирано</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Отстраняване на грешки</string>
<string name="revanced_debug_screen_summary">Активиране или деактивиране на отстраняването на грешки</string>
<string name="revanced_debug_title">Дневник на отстраняването на грешки</string>
<string name="revanced_debug_summary_on">Дневникът за остраняване на грешки е активиран</string>
<string name="revanced_debug_summary_off">Дневникът за остраняване на грешки е деактивиран</string>
<string name="revanced_debug_protobuffer_title">Буфер на протокола за дневника</string>
<string name="revanced_debug_protobuffer_summary_on">Файлове с дневници за грешки включват буфера</string>
<string name="revanced_debug_protobuffer_summary_off">Файлове с дневници за грешки не включват буфера</string>
@@ -132,15 +160,6 @@ Second \"item\" text"</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">"Изключването на изскачащи съобщения за грешки крие всички известия за грешки на ReVanced.
Няма да бъдете уведомени за неочаквани събития."</string>
<string name="revanced_debug_export_logs_to_clipboard_title">Експортиране на логове за отстраняване на грешки</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">Копира логовете за отстраняване на грешки на ReVanced в клипборда</string>
<string name="revanced_debug_logs_disabled">Отстраняването на грешки е деактивирано</string>
<string name="revanced_debug_logs_none_found">Не са намерени логове</string>
<string name="revanced_debug_logs_copied_to_clipboard">Логовете са копирани</string>
<string name="revanced_debug_logs_failed_to_export">Неуспешно експортиране на логове: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Изчистване на логовете за отстраняване на грешки</string>
<string name="revanced_debug_logs_clear_buffer_summary">Изчиства всички съхранени логове за отстраняване на грешки на ReVanced</string>
<string name="revanced_debug_logs_clear_toast">Логовете са изчистени</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_hide_album_cards_title">\"Карти на албумите\"</string>
@@ -700,9 +719,9 @@ Second \"item\" text"</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">Менюто за избор на Аудио е скрито</string>
<string name="revanced_hide_player_flyout_audio_track_summary_off">Менюто за избор на Аудио се показва</string>
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<string name="revanced_hide_player_flyout_audio_track_not_available">"Менюто за аудио тракове е скрито
<string name="revanced_hide_player_flyout_audio_track_not_available">"Менюто за аудиозаписи е скрито
За да покажете менюто за аудио тракове, променете \"Подмяна на видео потоци\" на iOS TV"</string>
Менюто за аудиозаписи не е налично, когато „Подменяне на видео потоцие активирано"</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">Гледайте във VR</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Менюто за гледане в VR е скрито</string>
@@ -1415,10 +1434,6 @@ Second \"item\" text"</string>
Активирането на това може да отключи по-високи видео качества"</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">Разрешаването на това може да причини прекъсване на възпроизвеждането на видео, влошен живот на батерията и неизвестни странични ефекти.</string>
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">GmsCore Настройки</string>
<string name="microg_settings_summary">Настройки на GmsCore</string>
</patch>
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
<string name="revanced_disable_haptic_feedback_title">Вибрационна обратна връзка</string>
<string name="revanced_disable_haptic_feedback_summary">Промяна на вибрационната обратна връзка</string>
@@ -1532,35 +1547,51 @@ Second \"item\" text"</string>
<string name="revanced_slide_to_seek_summary_off">Слайд за превъртане е деактивиран</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Подправяне на видео потоци</string>
<string name="revanced_spoof_video_streams_screen_summary">Подправете клиентските видео потоци, за да предотвратите проблеми с възпроизвеждането</string>
<string name="revanced_spoof_video_streams_title">Подправяне на видео потоци</string>
<string name="revanced_spoof_video_streams_summary_on">Видео потоците са подправени</string>
<string name="revanced_spoof_video_streams_summary_off">"Потоците на видеоклипове не са фалшифицирани
Възпроизвеждането на видеоклипове може да не работи"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Деактивирането на тази настройка ще доведе до проблеми с възпроизвеждането на видео.</string>
<string name="revanced_spoof_video_streams_client_type_title">Клиент по подразбиране</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Принудително използване на AVC (H.264) на iOS</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Видео кодекът е принудително зададен на AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Видео кодекът се определя автоматично</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"Включването на това може да подобри живота на батерията и да поправи заекването при възпроизвеждане.
AVC има максимална резолюция от 1080p, Opus аудио кодек не е наличен и възпроизвеждането на видео ще използва повече интернет данни от VP9 или AV1."</string>
<string name="revanced_spoof_video_streams_about_ios_tv_title">Ефекти на измамата в iOS</string>
<string name="revanced_spoof_video_streams_about_ios_tv_summary">"• Филми или платени видеоклипове може да не се възпроизвеждат
• Стабилен звук не е наличен
• Видеоклиповете завършват 1 секунда по-рано"</string>
<string name="revanced_spoof_video_streams_about_title">Странични ефекти от подменянето</string>
<string name="revanced_spoof_video_streams_about_android_title">Strani4ni efekti na fal6ivoto predstavqne na Android</string>
<string name="revanced_spoof_video_streams_about_android_summary">"• Lipsva menju za audio pisti
Ne e nali4na stabilna glasnost
• Ne e nali4na forsirana originalna audio pista"</string>
<string name="revanced_spoof_video_streams_about_android_summary">"• Липсва менюто за аудиозаписи
Стабилен звук не е наличен"</string>
<string name="revanced_spoof_video_streams_about_experimental">• Експериментален клиент и може да спре да работи по всяко време</string>
<string name="revanced_spoof_video_streams_about_no_av1">• Без AV1 видео кодек</string>
<string name="revanced_spoof_video_streams_about_kids_videos">• Детските видеоклипове може да не се възпроизвеждат, когато сте излезли от профила си или в режим \"инкогнито\"</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">Poka6i v Statistiki za nerds</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_on">Tipът na klienta se poka6va v Statistiki za nerds</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_off">Klientът e skriт v Statistiki za nerds</string>
<string name="revanced_spoof_video_streams_language_title">Ezik po подразбиране za audio potok v VR</string>
<string name="revanced_spoof_video_streams_language_title">Език на аудио потока</string>
</patch>
</app>
<app id="music">
<patch id="misc.settings.settingsPatch">
<string name="revanced_settings_music_screen_0_about_title">Относно</string>
<string name="revanced_settings_music_screen_1_ads_title">Реклами</string>
<string name="revanced_settings_music_screen_2_general_title">Общи</string>
<string name="revanced_settings_music_screen_3_player_title">Плейър</string>
<string name="revanced_settings_music_screen_4_misc_title">Разни</string>
</patch>
<patch id="ad.video.hideVideoAdsPatch">
<string name="revanced_music_hide_video_ads_title">Скриване на видеореклами</string>
<string name="revanced_music_hide_video_ads_summary_on">Видеорекламите са скрити</string>
<string name="revanced_music_hide_video_ads_summary_off">Видеорекламите са показани</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
<string name="revanced_music_play_permanent_repeat_title">Активиране на постоянно повтаряне</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Постоянното повтаряне е активирано</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Постоянното повтаряне е деактивирано</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Скриване на лентата с категории</string>
<string name="revanced_music_hide_category_bar_summary_on">Лентата с категории е скрита</string>
<string name="revanced_music_hide_category_bar_summary_off">Лентата с категории е показана</string>
</patch>
<patch id="layout.premium.hideGetPremiumPatch">
<string name="revanced_music_hide_get_premium_label_title">Скриване на етикета „Вземете Music Premium“</string>
<string name="revanced_music_hide_get_premium_label_summary_on">Етикетът е скрит</string>
<string name="revanced_music_hide_get_premium_label_summary_off">Етикетът е показан</string>
</patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
<string name="revanced_music_hide_upgrade_button_title">Скриване на бутона за надстройка</string>
<string name="revanced_music_hide_upgrade_button_summary_on">Бутонът е скрит</string>
<string name="revanced_music_hide_upgrade_button_summary_off">Бутонът е показан</string>
</patch>
</app>
<app id="twitch">

View File

@@ -68,6 +68,8 @@ Second \"item\" text"</string>
and changes made here must also be made there. -->
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">GmsCore সেটিং</string>
<string name="microg_settings_summary">GmsCore এর জন্য সেটিং</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="gms_core_toast_not_installed_message">MicroG GmsCore ইনস্টল করা হয়নি। ইনস্টল করুন।</string>
<string name="gms_core_dialog_title">পদক্ষেপ প্রয়োজন</string>
@@ -84,6 +86,37 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
চালিয়ে যান বোতামটি ট্যাপ করুন এবং অপ্টিমাইজেশন পরিবর্তনগুলি অনুমোদন করুন।"</string>
<string name="gms_core_dialog_continue_text">এগিয়ে যান</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">ভিডিও স্ট্রিমিং স্পুফ করুন</string>
<string name="revanced_spoof_video_streams_screen_summary">প্লেব্যাক সমস্যা প্রতিরোধ করতে ক্লায়েন্ট ভিডিও স্ট্রিম স্পুফ করুন</string>
<string name="revanced_spoof_video_streams_screen_title">ভিডিও স্ট্রিম স্পুফ করুন</string>
<string name="revanced_spoof_video_streams_screen_summary">প্লেব্যাক সংক্রান্ত সমস্যা রোধ করতে ক্লায়েন্টের ভিডিও স্ট্রিমগুলি স্পুফ করুন</string>
<string name="revanced_spoof_video_streams_title">ভিডিও স্ট্রিমিং স্পুফ করুন</string>
<string name="revanced_spoof_video_streams_summary_on">"ভিডিও স্ট্রিম স্পুফ করা হয়েছে
আপনি যদি YouTube Premium ব্যবহারকারী হন, তাহলে এই সেটিংটির প্রয়োজন নাও হতে পারে"</string>
<string name="revanced_spoof_video_streams_summary_off">"ভিডিও স্ট্রিম স্পুফ করা হয়নি
প্লেব্যাক কাজ নাও করতে পারে"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">এই সেটিং বন্ধ করলে প্লেব্যাক সমস্যা হতে পারে।</string>
<string name="revanced_spoof_video_streams_client_type_title">ডিফল্ট ক্লায়েন্ট</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">ডিবাগিং</string>
<string name="revanced_debug_screen_summary">ডিবাগিং অপশন সক্রিয় বা নিষ্ক্রিয় করুন</string>
<string name="revanced_debug_title">ডিবাগ লগিং</string>
<string name="revanced_debug_summary_on">ডিবাগ লগ সক্রিয় হয়েছে</string>
<string name="revanced_debug_summary_off">ডিবাগ লগ নিষ্ক্রিয় হয়েছে</string>
<string name="revanced_debug_export_logs_to_clipboard_title">ডিবাগ লগগুলি রফতানি করুন</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">ক্লিপবোর্ডে ReVanced ডিবাগ লগগুলি অনুলিপি করে</string>
<string name="revanced_debug_logs_disabled">ডিবাগ লগিং নিষ্ক্রিয় করা হয়েছে</string>
<string name="revanced_debug_logs_none_found">কোনো লগ পাওয়া যায়নি</string>
<string name="revanced_debug_logs_copied_to_clipboard">লগ অনুলিপি করা হয়েছে</string>
<string name="revanced_debug_logs_failed_to_export">লগ এক্সপোর্ট করা যায়নি: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">ডিবাগ লগগুলি সাফ করুন</string>
<string name="revanced_debug_logs_clear_buffer_summary">সমস্ত সঞ্চিত ReVanced ডিবাগ লগ সাফ করে</string>
<string name="revanced_debug_logs_clear_toast">লগ সাফ করা হয়েছে</string>
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
@@ -110,11 +143,6 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_shorts_disable_background_playback_summary_off">Shorts ব্যাকগ্রাউন্ড প্লে সক্ষম করা হয়েছে</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">ডিবাগিং</string>
<string name="revanced_debug_screen_summary">ডিবাগিং অপশন সক্রিয় বা নিষ্ক্রিয় করুন</string>
<string name="revanced_debug_title">ডিবাগ লগিং</string>
<string name="revanced_debug_summary_on">ডিবাগ লগ সক্রিয় হয়েছে</string>
<string name="revanced_debug_summary_off">ডিবাগ লগ নিষ্ক্রিয় হয়েছে</string>
<string name="revanced_debug_protobuffer_title">প্রটোকল বাফার লগ</string>
<string name="revanced_debug_protobuffer_summary_on">ডিবাগ লগ প্রটোকল বাফার সংযুক্ত করবে</string>
<string name="revanced_debug_protobuffer_summary_off">ডিবাগ লগ প্রটোকল বাফার সংযুক্ত করবে না</string>
@@ -128,15 +156,6 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_debug_toast_on_error_user_dialog_message">"ত্রুটি \"toast\" বন্ধ করে ReVanced ত্রুটি বিজ্ঞপ্তিগুলি লুকানো হয়।
আপনি কোনও অপ্রত্যাশিত ঘটনার বিষয়ে অবহিত হবেন না।"</string>
<string name="revanced_debug_export_logs_to_clipboard_title">ডিবাগ লগগুলি রফতানি করুন</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">ক্লিপবোর্ডে ReVanced ডিবাগ লগগুলি অনুলিপি করে</string>
<string name="revanced_debug_logs_disabled">ডিবাগ লগিং নিষ্ক্রিয় করা হয়েছে</string>
<string name="revanced_debug_logs_none_found">কোনো লগ পাওয়া যায়নি</string>
<string name="revanced_debug_logs_copied_to_clipboard">লগ অনুলিপি করা হয়েছে</string>
<string name="revanced_debug_logs_failed_to_export">লগ এক্সপোর্ট করা যায়নি: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">ডিবাগ লগগুলি সাফ করুন</string>
<string name="revanced_debug_logs_clear_buffer_summary">সমস্ত সঞ্চিত ReVanced ডিবাগ লগ সাফ করে</string>
<string name="revanced_debug_logs_clear_toast">লগ সাফ করা হয়েছে</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_hide_album_cards_title">অ্যালবাম কার্ড লুকান</string>
@@ -698,7 +717,7 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<string name="revanced_hide_player_flyout_audio_track_not_available">"অডিও ট্র্যাক মেনু লুকানো আছে
ডিও ট্র্যাক মেনু দেখাতে, 'স্পুফ ভিডিও স্ট্রিম' পরিবর্তন করে iOS TV করুন"</string>
\"ভিডিও স্ট্রিম স্পুফ করুন\" সক্ষম করা হলে অডিও ট্র্যাক মেনু উপলব্ধ থাকে না"</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">ভিআর-এ ঘড়ি লুকান</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">ভিআর মেনুতে দেখুন লুকানো আছে</string>
@@ -1411,10 +1430,6 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট
এটি সক্রিয় করা উচ্চ ভিডিও গুণমানগুলি আনলক করতে পারে"</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">এটি সক্রিয় করার ফলে আপনি ভিডিও চলার ক্ষেত্রে আটকে চলা, খারাপ ব্যাটারি লাইফ এবং অজানা পার্শ্ব-প্রতিক্রিয়ার সম্মুখিন হতে পারেন।</string>
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">GmsCore সেটিং</string>
<string name="microg_settings_summary">GmsCore এর জন্য সেটিং</string>
</patch>
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
<string name="revanced_disable_haptic_feedback_title">কম্পন প্রতিক্রিয়া</string>
<string name="revanced_disable_haptic_feedback_summary">কম্পন প্রতিক্রিয়া পরিবর্তন করুন</string>
@@ -1528,35 +1543,51 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট
<string name="revanced_slide_to_seek_summary_off">ভিডিওর নির্দিষ্ট অংশে যেতে টানুন সক্রিয় করা হয়নি</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">ভিডিও স্ট্রিমিং স্পুফ করুন</string>
<string name="revanced_spoof_video_streams_screen_summary">প্লেব্যাক সমস্যা প্রতিরোধ করতে ক্লায়েন্ট ভিডিও স্ট্রিম স্পুফ করুন</string>
<string name="revanced_spoof_video_streams_title">ভিডিও স্ট্রিমিং স্পুফ করুন</string>
<string name="revanced_spoof_video_streams_summary_on">ভিডিও স্ট্রিম স্পুফ করা হয়েছে</string>
<string name="revanced_spoof_video_streams_summary_off">"ভিডিও স্ট্রিম ভুয়া নয়
ভিডিও প্লেব্যাক কাজ নাও করতে পারে"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">এই সেটিংটি বন্ধ করার ফলে ভিডিও প্লেব্যাক ত্রুটি হতে পারে।</string>
<string name="revanced_spoof_video_streams_client_type_title">ডিফল্ট ক্লায়েন্ট</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">iOS AVC (H.264) বাধ্যতামূলক করুন</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">ভিডিও কোডেক AVC (H.264) এ বাধ্যতামূলক করা হয়েছে</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">ভিডিও কোডেক স্বয়ংক্রিয়ভাবে নির্ধারিত হয়</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"এটি সক্ষম করলে ব্যাটারি লাইফ উন্নত হতে পারে এবং প্লেব্যাক স্টাটারিং সমস্যা সমাধান হতে পারে।
AVC-এর সর্বোচ্চ রেজোলিউশন হল 1080p, Opus অডিও কোডেক পাওয়া যায় না এবং VP9 বা AV1-এর তুলনায় ভিডিও প্লেব্যাকে বেশি ইন্টারনেট ডেটা ব্যবহার করা হবে。"</string>
<string name="revanced_spoof_video_streams_about_ios_tv_title">আইওএস স্পুফিংয়ের পার্শ্ব প্রতিক্রিয়া</string>
<string name="revanced_spoof_video_streams_about_ios_tv_summary">"• মুভি বা অর্থ প্রদানের ভিডিও চালু নাও হতে পারে
• স্থির ভলিউম পাওয়া যায় না
• ভিডিওগুলি 1 সেকেন্ড আগে শেষ হয়ে যায়"</string>
<string name="revanced_spoof_video_streams_about_title">স্পুফিংয়ের পার্শ্বপ্রতিক্রিয়া</string>
<string name="revanced_spoof_video_streams_about_android_title">Android স্পুফিংয়ের পার্শ্বপ্রতিক্রিয়া</string>
<string name="revanced_spoof_video_streams_about_android_summary">"• অডিও ট্র্যাক মেনু নেই
• স্থি ভলিউম পাওয়া যায় না
• মূল অডিও জোর করে চালু করা যায় না"</string>
<string name="revanced_spoof_video_streams_about_android_summary">"• অডিও ট্র্যাক মেনু অনুপস্থিত
• স্থিতিশীল ভলিউম উপলব্ধ নেই"</string>
<string name="revanced_spoof_video_streams_about_experimental">• পরীক্ষামূলক ক্লায়েন্ট এবং যেকোনো সময় কাজ করা বন্ধ করতে পারে</string>
<string name="revanced_spoof_video_streams_about_no_av1">• কোনো AV1 ভিডিও কোডেক নেই</string>
<string name="revanced_spoof_video_streams_about_kids_videos">• লগআউট করা হলে বা ছদ্মবেশী মোডে বাচ্চাদের ভিডিও চলতে নাও পারে</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">স্ট্যাটস ফর নার্ডসে দেখান</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_on">স্ট্যাটস ফর নার্ডসে ক্লায়েন্ট প্রকার দেখানো হবে</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_off">স্ট্যাটস ফর নার্ডসে ক্লায়েন্ট লুকানো হবে</string>
<string name="revanced_spoof_video_streams_language_title">VR ডিফল্ট অডিও স্ট্রিম ভাষা</string>
<string name="revanced_spoof_video_streams_language_title">অডিও স্ট্রিম ভাষা</string>
</patch>
</app>
<app id="music">
<patch id="misc.settings.settingsPatch">
<string name="revanced_settings_music_screen_0_about_title">সম্পর্কে</string>
<string name="revanced_settings_music_screen_1_ads_title">বিজ্ঞাপন</string>
<string name="revanced_settings_music_screen_2_general_title">সাধারণ</string>
<string name="revanced_settings_music_screen_3_player_title">প্লেয়ার</string>
<string name="revanced_settings_music_screen_4_misc_title">বিবিধ</string>
</patch>
<patch id="ad.video.hideVideoAdsPatch">
<string name="revanced_music_hide_video_ads_title">ভিডিও বিজ্ঞাপন লুকান</string>
<string name="revanced_music_hide_video_ads_summary_on">ভিডিও বিজ্ঞাপন লুকানো আছে</string>
<string name="revanced_music_hide_video_ads_summary_off">ভিডিও বিজ্ঞাপন দেখানো আছে</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
<string name="revanced_music_play_permanent_repeat_title">স্থায়ী পুনরাবৃত্তি সক্ষম করুন</string>
<string name="revanced_music_play_permanent_repeat_summary_on">স্থায়ী পুনরাবৃত্তি সক্ষম করা হয়েছে</string>
<string name="revanced_music_play_permanent_repeat_summary_off">স্থায়ী পুনরাবৃত্তি অক্ষম করা হয়েছে</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">ক্যাটাগরি বার লুকান</string>
<string name="revanced_music_hide_category_bar_summary_on">ক্যাটাগরি বার লুকানো আছে</string>
<string name="revanced_music_hide_category_bar_summary_off">ক্যাটাগরি বার দেখানো আছে</string>
</patch>
<patch id="layout.premium.hideGetPremiumPatch">
<string name="revanced_music_hide_get_premium_label_title">\'গেট মিউজিক প্রিমিয়াম\' লেবেল লুকান</string>
<string name="revanced_music_hide_get_premium_label_summary_on">লেবেল লুকানো আছে</string>
<string name="revanced_music_hide_get_premium_label_summary_off">লেবেল দেখানো আছে</string>
</patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
<string name="revanced_music_hide_upgrade_button_title">আপগ্রেড বাটন লুকান</string>
<string name="revanced_music_hide_upgrade_button_summary_on">বাটন লুকানো আছে</string>
<string name="revanced_music_hide_upgrade_button_summary_off">বাটন দেখানো আছে</string>
</patch>
</app>
<app id="twitch">

View File

@@ -30,6 +30,10 @@ Second \"item\" text"</string>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
@@ -207,8 +211,6 @@ Second \"item\" text"</string>
</patch>
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
</patch>
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
</patch>
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
@@ -242,6 +244,20 @@ Second \"item\" text"</string>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
</patch>
</app>
<app id="music">
<patch id="misc.settings.settingsPatch">
</patch>
<patch id="ad.video.hideVideoAdsPatch">
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch>
<patch id="layout.compactheader.hideCategoryBar">
</patch>
<patch id="layout.premium.hideGetPremiumPatch">
</patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
</patch>
</app>
<app id="twitch">
<patch id="ad.audio.audioAdsPatch">
</patch>

View File

@@ -30,6 +30,10 @@ Second \"item\" text"</string>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
@@ -207,8 +211,6 @@ Second \"item\" text"</string>
</patch>
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
</patch>
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
</patch>
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
@@ -242,6 +244,20 @@ Second \"item\" text"</string>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
</patch>
</app>
<app id="music">
<patch id="misc.settings.settingsPatch">
</patch>
<patch id="ad.video.hideVideoAdsPatch">
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch>
<patch id="layout.compactheader.hideCategoryBar">
</patch>
<patch id="layout.premium.hideGetPremiumPatch">
</patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
</patch>
</app>
<app id="twitch">
<patch id="ad.audio.audioAdsPatch">
</patch>

View File

@@ -68,6 +68,8 @@ Nové jazyky přeložíte na translate.revanced.app"</string>
and changes made here must also be made there. -->
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">Nastavení GmsCore</string>
<string name="microg_settings_summary">Nastavení pro GmsCore</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="gms_core_toast_not_installed_message">MicroG GmsCore není nainstalován. Nainstalujte jej.</string>
<string name="gms_core_dialog_title">Požadovaná akce</string>
@@ -84,6 +86,37 @@ Zakázání optimalizace baterie pro MicroG nebude mít negativní vliv na spot
Klepněte na tlačítko Pokračovat a povolte změny optimalizace."</string>
<string name="gms_core_dialog_continue_text">Pokračovat</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Napodobovat video streamy</string>
<string name="revanced_spoof_video_streams_screen_summary">Napodobovat klientské video streamy, aby se zabránilo problémům s přehráváním</string>
<string name="revanced_spoof_video_streams_screen_title">Falšovat video streamy</string>
<string name="revanced_spoof_video_streams_screen_summary">Falšovat video streamy klienta, aby se předešlo problémům s přehráváním.</string>
<string name="revanced_spoof_video_streams_title">Napodobovat video streamy</string>
<string name="revanced_spoof_video_streams_summary_on">"Video streamy jsou maskovány
Pokud jste uživatelem YouTube Premium, toto nastavení nemusí být vyžadováno."</string>
<string name="revanced_spoof_video_streams_summary_off">"Video streamy nejsou falšované
Přehrávání nemusí fungovat"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Vypnutí tohoto nastavení může způsobit problémy s přehráváním.</string>
<string name="revanced_spoof_video_streams_client_type_title">Výchozí klient</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Debugování</string>
<string name="revanced_debug_screen_summary">Povolit nebo zakázat debugovací možnosti</string>
<string name="revanced_debug_title">Debugovací záznamy</string>
<string name="revanced_debug_summary_on">Debugovací záznamy jsou zapnuty</string>
<string name="revanced_debug_summary_off">Debugovací záznamy jsou vypnuty</string>
<string name="revanced_debug_export_logs_to_clipboard_title">Exportovat ladicí protokoly</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">Zkopíruje ladicí protokoly ReVanced do schránky</string>
<string name="revanced_debug_logs_disabled">Ladění je vypnuto</string>
<string name="revanced_debug_logs_none_found">Nebyly nalezeny žádné protokoly</string>
<string name="revanced_debug_logs_copied_to_clipboard">Protokoly zkopírovány</string>
<string name="revanced_debug_logs_failed_to_export">Nepodařilo se exportovat protokoly: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Vymazat ladicí protokoly</string>
<string name="revanced_debug_logs_clear_buffer_summary">Vymaže všechny uložené ladicí protokoly ReVanced</string>
<string name="revanced_debug_logs_clear_toast">Protokoly vymazány</string>
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
@@ -110,11 +143,6 @@ Klepněte na tlačítko Pokračovat a povolte změny optimalizace."</string>
<string name="revanced_shorts_disable_background_playback_summary_off">Přehrávání Shorts v pozadí je povoleno</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Debugování</string>
<string name="revanced_debug_screen_summary">Povolit nebo zakázat debugovací možnosti</string>
<string name="revanced_debug_title">Debugovací záznamy</string>
<string name="revanced_debug_summary_on">Debugovací záznamy jsou zapnuty</string>
<string name="revanced_debug_summary_off">Debugovací záznamy jsou vypnuty</string>
<string name="revanced_debug_protobuffer_title">Záznam bufferu protokolu</string>
<string name="revanced_debug_protobuffer_summary_on">Debugovací záznamy obsahují proto buffer</string>
<string name="revanced_debug_protobuffer_summary_off">Debugovací záznamy neobsahují proto buffer</string>
@@ -132,15 +160,6 @@ Povolením této možnosti se však budou zaznamenávat i některá uživatelsk
<string name="revanced_debug_toast_on_error_user_dialog_message">"Vypnutí chybových toastů skryje všechna chybová oznámení ReVanced.
Nebudete informováni o žádné neočekávané události."</string>
<string name="revanced_debug_export_logs_to_clipboard_title">Exportovat ladicí protokoly</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">Zkopíruje ladicí protokoly ReVanced do schránky</string>
<string name="revanced_debug_logs_disabled">Ladění je vypnuto</string>
<string name="revanced_debug_logs_none_found">Nebyly nalezeny žádné protokoly</string>
<string name="revanced_debug_logs_copied_to_clipboard">Protokoly zkopírovány</string>
<string name="revanced_debug_logs_failed_to_export">Nepodařilo se exportovat protokoly: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Vymazat ladicí protokoly</string>
<string name="revanced_debug_logs_clear_buffer_summary">Vymaže všechny uložené ladicí protokoly ReVanced</string>
<string name="revanced_debug_logs_clear_toast">Protokoly vymazány</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_hide_album_cards_title">Skrýt karty alb</string>
@@ -700,9 +719,9 @@ Pokud změna tohoto nastavení nemá žádný účinek, zkuste přepnout do rež
<string name="revanced_hide_player_flyout_audio_track_summary_on">Menu Zvuková stopa je skryto</string>
<string name="revanced_hide_player_flyout_audio_track_summary_off">Menu Zvuková stopa je zobrazeno</string>
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<string name="revanced_hide_player_flyout_audio_track_not_available">"Nabídka zvukové stopy je skrytá.
<string name="revanced_hide_player_flyout_audio_track_not_available">"Nabídka zvukové stopy je skrytá
Chcete-li zobrazit nabídku zvukové stopy, změňte možnost „Zfalšovat streamy videa“ na iOS TV"</string>
Nabídka zvukové stopy není dostupná, když je povoleno 'Maskování video streamů'."</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">Skrýt Sledovat ve VR</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Menu Sledovat ve VR je skryto</string>
@@ -1415,10 +1434,6 @@ Mohou být odemčeny vyšší kvality videa, ale může dojít k zadrhávání p
Povolením této funkce lze odemknout vyšší kvality videa"</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">Povolení může způsobit zasekávání přehrávání, zhoršenou výdrž baterie a neznámé vedlejší účinky.</string>
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">Nastavení GmsCore</string>
<string name="microg_settings_summary">Nastavení pro GmsCore</string>
</patch>
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
<string name="revanced_disable_haptic_feedback_title">Haptická odezva</string>
<string name="revanced_disable_haptic_feedback_summary">Změnit haptickou odezvu</string>
@@ -1532,35 +1547,51 @@ Povolením této funkce lze odemknout vyšší kvality videa"</string>
<string name="revanced_slide_to_seek_summary_off">Posun pro hledání není povolen</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Napodobovat video streamy</string>
<string name="revanced_spoof_video_streams_screen_summary">Napodobovat klientské video streamy, aby se zabránilo problémům s přehráváním</string>
<string name="revanced_spoof_video_streams_title">Napodobovat video streamy</string>
<string name="revanced_spoof_video_streams_summary_on">Video streamy jsou napodobeny</string>
<string name="revanced_spoof_video_streams_summary_off">"Video streamy nejsou zfalšovány
Přehrávání videa nemusí fungovat"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Vypnutí tohoto nastavení může způsobit problémy s přehráváním videa.</string>
<string name="revanced_spoof_video_streams_client_type_title">Výchozí klient</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Vynucení kodeku iOS AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Kodek videa je vynucen na AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Kodek videa je určen automaticky</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"Povolení této funkce může zlepšit výdrž baterie a opravit sekání videa.
AVC má maximální rozlišení 1080p, zvukový kodek Opus není dostupný a přehrávání videa bude používat více dat než VP9 nebo AV1."</string>
<string name="revanced_spoof_video_streams_about_ios_tv_title">iOS spoofing vedlejší účinky</string>
<string name="revanced_spoof_video_streams_about_ios_tv_summary">"• Filmy nebo placená videa se nemusí přehrávat
• Stabilní hlasitost není k dispozici
• Videa končí o 1 sekundu dříve"</string>
<string name="revanced_spoof_video_streams_about_title">Vedlejší účinky maskování</string>
<string name="revanced_spoof_video_streams_about_android_title">Vedlejší účinky spoofingu Androidu</string>
<string name="revanced_spoof_video_streams_about_android_summary">"• Chybí nabídka zvukových stop
Není k dispozici stabilní hlasitost
• Není k dispozici možnost vynucení originálního zvuku"</string>
<string name="revanced_spoof_video_streams_about_android_summary">"• Chybí nabídka zvukové stopy
Stabilní hlasitost není k dispozici"</string>
<string name="revanced_spoof_video_streams_about_experimental">• Experimentální klient a může kdykoli přestat fungovat</string>
<string name="revanced_spoof_video_streams_about_no_av1">• Žádný video kodek AV1</string>
<string name="revanced_spoof_video_streams_about_kids_videos">• Dětská videa se nemusí přehrávat, když jste odhlášení nebo v anonymním režimu</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">Zobrazit ve statistikách pro nadšence</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_on">Typ klienta se zobrazuje ve statistikách pro nadšence</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_off">Klient je skrytý ve statistikách pro nadšence</string>
<string name="revanced_spoof_video_streams_language_title">Výchozí jazyk zvukového streamu ve VR</string>
<string name="revanced_spoof_video_streams_language_title">Jazyk zvukového streamu</string>
</patch>
</app>
<app id="music">
<patch id="misc.settings.settingsPatch">
<string name="revanced_settings_music_screen_0_about_title">O aplikaci</string>
<string name="revanced_settings_music_screen_1_ads_title">Reklamy</string>
<string name="revanced_settings_music_screen_2_general_title">Obecné</string>
<string name="revanced_settings_music_screen_3_player_title">Přehrávač</string>
<string name="revanced_settings_music_screen_4_misc_title">Různé</string>
</patch>
<patch id="ad.video.hideVideoAdsPatch">
<string name="revanced_music_hide_video_ads_title">Skrýt videoreklamy</string>
<string name="revanced_music_hide_video_ads_summary_on">Videoreklamy jsou skryty</string>
<string name="revanced_music_hide_video_ads_summary_off">Videoreklamy jsou zobrazeny</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
<string name="revanced_music_play_permanent_repeat_title">Povolit trvalé opakování</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Trvalé opakování je povoleno</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Trvalé opakování je zakázáno</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Skrýt panel kategorií</string>
<string name="revanced_music_hide_category_bar_summary_on">Panel kategorií je skryt</string>
<string name="revanced_music_hide_category_bar_summary_off">Panel kategorií je zobrazen</string>
</patch>
<patch id="layout.premium.hideGetPremiumPatch">
<string name="revanced_music_hide_get_premium_label_title">Skrýt štítek \"Získat Music Premium\"</string>
<string name="revanced_music_hide_get_premium_label_summary_on">Štítek je skryt</string>
<string name="revanced_music_hide_get_premium_label_summary_off">Štítek je zobrazen</string>
</patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
<string name="revanced_music_hide_upgrade_button_title">Skrýt tlačítko pro upgrade</string>
<string name="revanced_music_hide_upgrade_button_summary_on">Tlačítko je skryto</string>
<string name="revanced_music_hide_upgrade_button_summary_off">Tlačítko je zobrazeno</string>
</patch>
</app>
<app id="twitch">

View File

@@ -68,6 +68,8 @@ For at oversætte til nye sprog skal du besøge translate.revanced.app"</string>
and changes made here must also be made there. -->
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">GmsCore Indstillinger</string>
<string name="microg_settings_summary">Indstillinger for GmsCore</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="gms_core_toast_not_installed_message">MicroG GmsCore er ikke installeret. Installer det.</string>
<string name="gms_core_dialog_title">Handling påkrævet</string>
@@ -84,6 +86,37 @@ Deaktivering af batterioptimeringer for MicroG vil ikke påvirke batteriforbruge
Tap på knappen Fortsæt, og tillad optimeringsændringer."</string>
<string name="gms_core_dialog_continue_text">Fortsæt</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Spoof videostreams</string>
<string name="revanced_spoof_video_streams_screen_summary">Spoof klienten video streams for at forhindre afspilning problemer</string>
<string name="revanced_spoof_video_streams_screen_title">Simuler videostreams</string>
<string name="revanced_spoof_video_streams_screen_summary">Simuler klientens videostreams for at forhindre afspilningsproblemer</string>
<string name="revanced_spoof_video_streams_title">Spoof videostreams</string>
<string name="revanced_spoof_video_streams_summary_on">"Videostreams er spoofede
Hvis du er en YouTube Premium-bruger, er denne indstilling muligvis ikke påkrævet"</string>
<string name="revanced_spoof_video_streams_summary_off">"Videostreams simuleres ikke
Afspilning fungerer muligvis ikke"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Deaktivering af denne indstilling kan forårsage afspilningsproblemer.</string>
<string name="revanced_spoof_video_streams_client_type_title">Standard klient</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Fejlfinding</string>
<string name="revanced_debug_screen_summary">Aktivér eller deaktiver fejlfindingsindstillinger</string>
<string name="revanced_debug_title">Fejlfindingslogning</string>
<string name="revanced_debug_summary_on">Fejlfindingslogge er aktiveret</string>
<string name="revanced_debug_summary_off">Fejlfindingslogge er deaktiveret</string>
<string name="revanced_debug_export_logs_to_clipboard_title">Eksportér fejlsøgningslogfiler</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">Kopierer ReVanced-fejlsøgningslogfiler til udklipsholderen</string>
<string name="revanced_debug_logs_disabled">Fejlsøgningslogning er deaktiveret</string>
<string name="revanced_debug_logs_none_found">Ingen logfiler fundet</string>
<string name="revanced_debug_logs_copied_to_clipboard">Logfiler kopieret</string>
<string name="revanced_debug_logs_failed_to_export">Kunne ikke eksportere logfiler: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Ryd fejlsøgningslogfiler</string>
<string name="revanced_debug_logs_clear_buffer_summary">Rydder alle gemte ReVanced-fejlsøgningslogfiler</string>
<string name="revanced_debug_logs_clear_toast">Logfiler ryddet</string>
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
@@ -110,11 +143,6 @@ Tap på knappen Fortsæt, og tillad optimeringsændringer."</string>
<string name="revanced_shorts_disable_background_playback_summary_off">Baggrundsafspilning af Shorts er aktiveret</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Fejlfinding</string>
<string name="revanced_debug_screen_summary">Aktivér eller deaktiver fejlfindingsindstillinger</string>
<string name="revanced_debug_title">Fejlfindingslogning</string>
<string name="revanced_debug_summary_on">Fejlfindingslogge er aktiveret</string>
<string name="revanced_debug_summary_off">Fejlfindingslogge er deaktiveret</string>
<string name="revanced_debug_protobuffer_title">Logprotokolbuffer</string>
<string name="revanced_debug_protobuffer_summary_on">Fejlfindingslogge inkluderer protobuffer</string>
<string name="revanced_debug_protobuffer_summary_off">Fejlfindingslogge inkluderer ikke protobuffer</string>
@@ -132,15 +160,6 @@ Aktivering af dette vil dog også logge nogle brugerdata, såsom din IP-adresse.
<string name="revanced_debug_toast_on_error_user_dialog_message">"Hvis du deaktiverer fejl-toasts, skjules alle ReVanced-fejlmeddelelser.
Du modtager ikke notifikationer om uventede hændelser."</string>
<string name="revanced_debug_export_logs_to_clipboard_title">Eksportér fejlsøgningslogfiler</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">Kopierer ReVanced-fejlsøgningslogfiler til udklipsholderen</string>
<string name="revanced_debug_logs_disabled">Fejlsøgningslogning er deaktiveret</string>
<string name="revanced_debug_logs_none_found">Ingen logfiler fundet</string>
<string name="revanced_debug_logs_copied_to_clipboard">Logfiler kopieret</string>
<string name="revanced_debug_logs_failed_to_export">Kunne ikke eksportere logfiler: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Ryd fejlsøgningslogfiler</string>
<string name="revanced_debug_logs_clear_buffer_summary">Rydder alle gemte ReVanced-fejlsøgningslogfiler</string>
<string name="revanced_debug_logs_clear_toast">Logfiler ryddet</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_hide_album_cards_title">Skjul albumkort</string>
@@ -700,9 +719,9 @@ Hvis ændring af denne indstilling ikke træder i kraft, kan du prøve at skifte
<string name="revanced_hide_player_flyout_audio_track_summary_on">Menuen for lydspor er skjult</string>
<string name="revanced_hide_player_flyout_audio_track_summary_off">Menuen Lydspor vises</string>
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<string name="revanced_hide_player_flyout_audio_track_not_available">"Lydspormenuen er skjult
<string name="revanced_hide_player_flyout_audio_track_not_available">"Lydsporsmenuen er skjult
For at vise lydspormenuen skal du ændre \"Spoof videostream\" til iOS TV"</string>
Lydsporsmenuen er ikke tilgængelig, når 'Spoof videostreams' er aktiveret"</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">Skjul vagt i VR</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Se i VR-menuen er skjult</string>
@@ -1417,10 +1436,6 @@ Højere videokvalitet kan låses op, men du kan opleve videoafspilningshakkethed
Aktivering af dette kan låse op for højere videokvalitet"</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">Aktivering af dette kan forårsage videoafspilning stuttering, værre batterilevetid og ukendte bivirkninger.</string>
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">GmsCore Indstillinger</string>
<string name="microg_settings_summary">Indstillinger for GmsCore</string>
</patch>
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
<string name="revanced_disable_haptic_feedback_title">Haptisk feedback</string>
<string name="revanced_disable_haptic_feedback_summary">Skift haptisk feedback</string>
@@ -1534,33 +1549,51 @@ Aktivering af dette kan låse op for højere videokvalitet"</string>
<string name="revanced_slide_to_seek_summary_off">Dias til søgning er ikke aktiveret</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Spoof videostreams</string>
<string name="revanced_spoof_video_streams_screen_summary">Spoof klienten video streams for at forhindre afspilning problemer</string>
<string name="revanced_spoof_video_streams_title">Spoof videostreams</string>
<string name="revanced_spoof_video_streams_summary_on">Video streams er spoofed</string>
<string name="revanced_spoof_video_streams_summary_off">"Videostreams forfalskes ikke
Videoafspilning virker muligvis ikke"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">At slå denne indstilling fra kan forårsage problemer med videoafspilning.</string>
<string name="revanced_spoof_video_streams_client_type_title">Standard klient</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Forceer iOS AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Videokodec er tvunget til AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Videokodec bestemmes automatisk</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"Aktivering af dette kan forbedre batterilevetiden og rette afspilningshakken.\n\nAVC har en maksimal opløsning på 1080p, Opus-lydkodec er ikke tilgængelig, og videoafspilning vil bruge mere internetdata end VP9 eller AV1."</string>
<string name="revanced_spoof_video_streams_about_ios_tv_title">iOS-spoofing kan have følgende bivirkninger</string>
<string name="revanced_spoof_video_streams_about_ios_tv_summary">"• Film eller betalte videoer afspilles muligvis ikke
• Stabil lydstyrke er ikke tilgængelig
• Videoer slutter 1 sekund for tidligt"</string>
<string name="revanced_spoof_video_streams_about_title">Bivirkninger ved spoofing</string>
<string name="revanced_spoof_video_streams_about_android_title">Bivirkninger ved Android-spoofing</string>
<string name="revanced_spoof_video_streams_about_android_summary">"• Lydspormenu mangler
• Stabil lydstyrke er ikke tilgængelig
• Gennemtving original lyd er ikke tilgængelig"</string>
<string name="revanced_spoof_video_streams_about_android_summary">"• Lydsporsmenuen mangler
• Stabil lydstyrke er ikke tilgængelig"</string>
<string name="revanced_spoof_video_streams_about_experimental">• Eksperimentel klient og kan stoppe med at fungere når som helst</string>
<string name="revanced_spoof_video_streams_about_no_av1">• Intet AV1-videokodek</string>
<string name="revanced_spoof_video_streams_about_kids_videos">• Videoer til børn afspilles muligvis ikke, når du er logget ud eller i inkognitotilstand</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">Vis i Statistik for nørder</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_on">Klienttypen vises i Statistik for nørder</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_off">Klienten er skjult i Statistik for nørder</string>
<string name="revanced_spoof_video_streams_language_title">VR-standardsprog for lydstrømme</string>
<string name="revanced_spoof_video_streams_language_title">Lydstreamsprog</string>
</patch>
</app>
<app id="music">
<patch id="misc.settings.settingsPatch">
<string name="revanced_settings_music_screen_0_about_title">Om</string>
<string name="revanced_settings_music_screen_1_ads_title">Annoncer</string>
<string name="revanced_settings_music_screen_2_general_title">Generelt</string>
<string name="revanced_settings_music_screen_3_player_title">Afspiller</string>
<string name="revanced_settings_music_screen_4_misc_title">Diverse</string>
</patch>
<patch id="ad.video.hideVideoAdsPatch">
<string name="revanced_music_hide_video_ads_title">Skjul videoannoncer</string>
<string name="revanced_music_hide_video_ads_summary_on">Videoannoncer er skjult</string>
<string name="revanced_music_hide_video_ads_summary_off">Videoannoncer vises</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
<string name="revanced_music_play_permanent_repeat_title">Aktiver permanent gentagelse</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Permanent gentagelse er aktiveret</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Permanent gentagelse er deaktiveret</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Skjul kategorilinje</string>
<string name="revanced_music_hide_category_bar_summary_on">Kategorilinjen er skjult</string>
<string name="revanced_music_hide_category_bar_summary_off">Kategorilinjen vises</string>
</patch>
<patch id="layout.premium.hideGetPremiumPatch">
<string name="revanced_music_hide_get_premium_label_title">Skjul \'Få Music Premium\'-etiket</string>
<string name="revanced_music_hide_get_premium_label_summary_on">Etiketten er skjult</string>
<string name="revanced_music_hide_get_premium_label_summary_off">Etiketten vises</string>
</patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
<string name="revanced_music_hide_upgrade_button_title">Skjul opgraderingsknap</string>
<string name="revanced_music_hide_upgrade_button_summary_on">Knappen er skjult</string>
<string name="revanced_music_hide_upgrade_button_summary_off">Knappen vises</string>
</patch>
</app>
<app id="twitch">

View File

@@ -68,6 +68,8 @@ Um neue Sprachen zu übersetzen, besuchen Sie translate.revanced.app"</string>
and changes made here must also be made there. -->
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">GmsCore Einstellungen</string>
<string name="microg_settings_summary">Einstellungen für GmsCore</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="gms_core_toast_not_installed_message">MicroG GmsCore ist nicht installiert. Installieren Sie es.</string>
<string name="gms_core_dialog_title">Aktion notwendig</string>
@@ -82,6 +84,37 @@ Die Deaktivierung der Batterieoptimierung für MicroG hat keinen negativen Einfl
Tippen Sie auf die Schaltfläche \"Fortfahren\" und erlauben Sie die Optimierungsänderungen."</string>
<string name="gms_core_dialog_continue_text">Weiter</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Spoof-Video-Streams</string>
<string name="revanced_spoof_video_streams_screen_summary">Spoof der Client-Videostreams um Wiedergabeprobleme zu verhindern</string>
<string name="revanced_spoof_video_streams_screen_title">Video-Streams vortäuschen</string>
<string name="revanced_spoof_video_streams_screen_summary">Die Client-Video-Streams vortäuschen, um Wiedergabeprobleme zu verhindern</string>
<string name="revanced_spoof_video_streams_title">Spoof-Video-Streams</string>
<string name="revanced_spoof_video_streams_summary_on">"Videostreams werden gespooft
Wenn Sie ein YouTube Premium-Nutzer sind, ist diese Einstellung möglicherweise nicht erforderlich"</string>
<string name="revanced_spoof_video_streams_summary_off">"Video-Streams werden nicht vorgetäuscht
Die Wiedergabe funktioniert möglicherweise nicht"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Das Deaktivieren dieser Einstellung kann Wiedergabeprobleme verursachen.</string>
<string name="revanced_spoof_video_streams_client_type_title">Standard-Client</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Fehlerbehebung</string>
<string name="revanced_debug_screen_summary">Aktiviert oder deaktiviert Debugging-Optionen</string>
<string name="revanced_debug_title">Debug-Protokollierung</string>
<string name="revanced_debug_summary_on">Debug-Protokolle sind aktiviert</string>
<string name="revanced_debug_summary_off">Debug-Protokolle sind deaktiviert</string>
<string name="revanced_debug_export_logs_to_clipboard_title">Debug-Protokolle exportieren</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">Kopiert ReVanced-Debug-Protokolle in die Zwischenablage</string>
<string name="revanced_debug_logs_disabled">Debug-Protokollierung ist deaktiviert</string>
<string name="revanced_debug_logs_none_found">Keine Protokolle gefunden</string>
<string name="revanced_debug_logs_copied_to_clipboard">Protokolle kopiert</string>
<string name="revanced_debug_logs_failed_to_export">Fehler beim Exportieren der Protokolle: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Debug-Protokolle löschen</string>
<string name="revanced_debug_logs_clear_buffer_summary">Löscht alle gespeicherten ReVanced-Debug-Protokolle</string>
<string name="revanced_debug_logs_clear_toast">Protokolle gelöscht</string>
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
@@ -108,11 +141,6 @@ Tippen Sie auf die Schaltfläche \"Fortfahren\" und erlauben Sie die Optimierung
<string name="revanced_shorts_disable_background_playback_summary_off">Shorts-Hintergrundwiedergabe ist aktiviert</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Fehlerbehebung</string>
<string name="revanced_debug_screen_summary">Aktiviert oder deaktiviert Debugging-Optionen</string>
<string name="revanced_debug_title">Debug-Protokollierung</string>
<string name="revanced_debug_summary_on">Debug-Protokolle sind aktiviert</string>
<string name="revanced_debug_summary_off">Debug-Protokolle sind deaktiviert</string>
<string name="revanced_debug_protobuffer_title">Protokollpuffer protokollieren</string>
<string name="revanced_debug_protobuffer_summary_on">Debug-Protokolle enthalten Protokollpuffer</string>
<string name="revanced_debug_protobuffer_summary_off">Debug-Protokolle enthalten kein Protokollpuffer</string>
@@ -130,15 +158,6 @@ Wenn Sie dies aktivieren, werden jedoch auch einige Benutzerdaten wie Ihre IP-Ad
<string name="revanced_debug_toast_on_error_user_dialog_message">"Das Ausschalten von Fehler-Toasts blendet alle Benachrichtigungen über Fehler in ReVanced aus.
Sie werden nicht über unerwartete Ereignisse informiert."</string>
<string name="revanced_debug_export_logs_to_clipboard_title">Debug-Protokolle exportieren</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">Kopiert ReVanced-Debug-Protokolle in die Zwischenablage</string>
<string name="revanced_debug_logs_disabled">Debug-Protokollierung ist deaktiviert</string>
<string name="revanced_debug_logs_none_found">Keine Protokolle gefunden</string>
<string name="revanced_debug_logs_copied_to_clipboard">Protokolle kopiert</string>
<string name="revanced_debug_logs_failed_to_export">Fehler beim Exportieren der Protokolle: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Debug-Protokolle löschen</string>
<string name="revanced_debug_logs_clear_buffer_summary">Löscht alle gespeicherten ReVanced-Debug-Protokolle</string>
<string name="revanced_debug_logs_clear_toast">Protokolle gelöscht</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_hide_album_cards_title">Albumkarten ausblenden</string>
@@ -695,9 +714,9 @@ Wenn diese Änderung nicht wirksam wird, versuchen Sie, in den Inkognito-Modus z
<string name="revanced_hide_player_flyout_audio_track_summary_on">Audiospur-Menü ist ausgeblendet</string>
<string name="revanced_hide_player_flyout_audio_track_summary_off">Audiospurmenü wird angezeigt</string>
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<string name="revanced_hide_player_flyout_audio_track_not_available">"Das Audiotrack-Menü ist ausgeblendet.
<string name="revanced_hide_player_flyout_audio_track_not_available">"Audiotrack-Menü ist ausgeblendet
Um das Audiotrack-Menü anzuzeigen, ändere \"Video-Streams fälschen\" zu iOS TV"</string>
Audiotrack-Menü ist nicht verfügbar, wenn 'Videostreams spoofen' aktiviert ist"</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">Überwachung in VR ausblenden</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Im VR-Menü beobachten ist ausgeblendet</string>
@@ -1410,10 +1429,6 @@ Höhere Videoqualitäten können freigeschaltet werden, aber es kann zu Stottern
Durch Aktivieren dieser Option können höhere Videoqualitäten freigeschaltet werden"</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">Aktivieren kann dazu führen, dass Videowiedergabe blockiert, die Batterielebensdauer verschlechtert und unbekannte Nebeneffekte entstehen.</string>
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">GmsCore Einstellungen</string>
<string name="microg_settings_summary">Einstellungen für GmsCore</string>
</patch>
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
<string name="revanced_disable_haptic_feedback_title">Haptisches Feedback</string>
<string name="revanced_disable_haptic_feedback_summary">Haptisches Feedback ändern</string>
@@ -1527,35 +1542,51 @@ Durch Aktivieren dieser Option können höhere Videoqualitäten freigeschaltet w
<string name="revanced_slide_to_seek_summary_off">Slide zum Suchen ist nicht aktiviert</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Spoof-Video-Streams</string>
<string name="revanced_spoof_video_streams_screen_summary">Spoof der Client-Videostreams um Wiedergabeprobleme zu verhindern</string>
<string name="revanced_spoof_video_streams_title">Spoof-Video-Streams</string>
<string name="revanced_spoof_video_streams_summary_on">Video-Streams sind gefälscht</string>
<string name="revanced_spoof_video_streams_summary_off">"Videoströme werden nicht gefälscht
Die Videowiedergabe funktioniert möglicherweise nicht"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Das Deaktivieren dieser Einstellung kann zu Videowiedergabeproblemen führen.</string>
<string name="revanced_spoof_video_streams_client_type_title">Standard-Client</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">iOS AVC (H.264) erzwingen</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Der Videocodec ist auf AVC (H.264) erzwungen.</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Der Videocodec wird automatisch bestimmt.</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"Aktivieren Sie dies, um die Akkulaufzeit zu verbessern und Ruckeln bei der Wiedergabe zu beheben.
AVC hat eine maximale Auflösung von 1080p, Opus-Audiocodec ist nicht verfügbar und die Videowiedergabe verbraucht mehr Internetdaten als VP9 oder AV1."</string>
<string name="revanced_spoof_video_streams_about_ios_tv_title">iOS-Spoofing-Nebenwirkungen</string>
<string name="revanced_spoof_video_streams_about_ios_tv_summary">"• Filme oder kostenpflichtige Videos können möglicherweise nicht abgespielt werden
• Eine stabile Lautstärke ist nicht verfügbar
• Videos enden 1 Sekunde zu früh"</string>
<string name="revanced_spoof_video_streams_about_title">Nebenwirkungen des Spoofings</string>
<string name="revanced_spoof_video_streams_about_android_title">Android-Spoofing-Nebenwirkungen</string>
<string name="revanced_spoof_video_streams_about_android_summary">"• Audiospur-Menü fehlt
• Stabile Lautstärke ist nicht verfügbar
• Original-Audio erzwingen ist nicht verfügbar"</string>
<string name="revanced_spoof_video_streams_about_android_summary">"• Audiotrack-Menü fehlt
• Stabile Lautstärke ist nicht verfügbar"</string>
<string name="revanced_spoof_video_streams_about_experimental">• Experimenteller Client und kann jederzeit aufhören zu funktionieren</string>
<string name="revanced_spoof_video_streams_about_no_av1">• Kein AV1-Videocodec</string>
<string name="revanced_spoof_video_streams_about_kids_videos">• Kinder-Videos werden möglicherweise nicht abgespielt, wenn du abgemeldet bist oder den Inkognito-Modus verwendest.</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">In Statistiken für Nerds anzeigen</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_on">Der Client-Typ wird in den Statistiken für Nerds angezeigt</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_off">Der Client wird in den Statistiken für Nerds ausgeblendet</string>
<string name="revanced_spoof_video_streams_language_title">Standard-Audiostreamsprache für VR</string>
<string name="revanced_spoof_video_streams_language_title">Audiodatenstromsprache</string>
</patch>
</app>
<app id="music">
<patch id="misc.settings.settingsPatch">
<string name="revanced_settings_music_screen_0_about_title">Über</string>
<string name="revanced_settings_music_screen_1_ads_title">Werbung</string>
<string name="revanced_settings_music_screen_2_general_title">Allgemein</string>
<string name="revanced_settings_music_screen_3_player_title">Spieler</string>
<string name="revanced_settings_music_screen_4_misc_title">Sonstiges</string>
</patch>
<patch id="ad.video.hideVideoAdsPatch">
<string name="revanced_music_hide_video_ads_title">Videoanzeigen ausblenden</string>
<string name="revanced_music_hide_video_ads_summary_on">Videoanzeigen sind ausgeblendet</string>
<string name="revanced_music_hide_video_ads_summary_off">Videoanzeigen werden angezeigt</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
<string name="revanced_music_play_permanent_repeat_title">Dauerwiederholung aktivieren</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Dauerwiederholung ist aktiviert</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Dauerwiederholung ist deaktiviert</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Kategorieleiste ausblenden</string>
<string name="revanced_music_hide_category_bar_summary_on">Kategorieleiste ist ausgeblendet</string>
<string name="revanced_music_hide_category_bar_summary_off">Kategorieleiste wird angezeigt</string>
</patch>
<patch id="layout.premium.hideGetPremiumPatch">
<string name="revanced_music_hide_get_premium_label_title">\"Music Premium holen\"-Label ausblenden</string>
<string name="revanced_music_hide_get_premium_label_summary_on">Label ist ausgeblendet</string>
<string name="revanced_music_hide_get_premium_label_summary_off">Label wird angezeigt</string>
</patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
<string name="revanced_music_hide_upgrade_button_title">Upgrade-Button ausblenden</string>
<string name="revanced_music_hide_upgrade_button_summary_on">Button ist ausgeblendet</string>
<string name="revanced_music_hide_upgrade_button_summary_off">Button wird angezeigt</string>
</patch>
</app>
<app id="twitch">

View File

@@ -68,6 +68,8 @@ Second \"item\" text"</string>
and changes made here must also be made there. -->
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">Ρυθμίσεις GmsCore</string>
<string name="microg_settings_summary">Ρυθμίσεις για το MicroG GmsCore</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="gms_core_toast_not_installed_message">Το MicroG GmsCore δεν έχει εγκατασταθεί. Εγκαταστήστε το.</string>
<string name="gms_core_dialog_title">Απαιτείται ενέργεια</string>
@@ -84,6 +86,37 @@ Second \"item\" text"</string>
Πατήστε το κουμπί «Συνέχεια» και επιτρέψτε τις αλλαγές βελτιστοποίησης."</string>
<string name="gms_core_dialog_continue_text">Συνέχεια</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Παραποίηση ροών βίντεο</string>
<string name="revanced_spoof_video_streams_screen_summary">Παραποίηση ροών βίντεο του προγράμματος πελάτη για την αποφυγή προβλημάτων αναπαραγωγής</string>
<string name="revanced_spoof_video_streams_screen_title">Παραποίηση ροών βίντεο</string>
<string name="revanced_spoof_video_streams_screen_summary">Παραποίηση ροών βίντεο του προγράμματος πελάτη για την αποφυγή προβλημάτων αναπαραγωγής</string>
<string name="revanced_spoof_video_streams_title">Παραποίηση ροών βίντεο</string>
<string name="revanced_spoof_video_streams_summary_on">"Οι ροές βίντεο παραποιούνται
Αν είστε χρήστης YouTube Premium, αυτή η ρύθμιση μπορεί να μην απαιτείται"</string>
<string name="revanced_spoof_video_streams_summary_off">"Οι ροές βίντεο δεν παραποιούνται
Η αναπαραγωγή ενδέχεται να μην λειτουργεί"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Η απενεργοποίηση αυτής της ρύθμισης ενδέχεται να προκαλέσει προβλήματα αναπαραγωγής.</string>
<string name="revanced_spoof_video_streams_client_type_title">Προεπιλεγμένο πρόγραμμα πελάτη</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Εντοπισμός σφαλμάτων</string>
<string name="revanced_debug_screen_summary">Ενεργοποίηση ή απενεργοποίηση επιλογών εντοπισμού σφαλμάτων</string>
<string name="revanced_debug_title">Καταγραφή εντοπισμού σφαλμάτων</string>
<string name="revanced_debug_summary_on">Η καταγραφή εντοπισμού σφαλμάτων είναι ενεργοποιημένη</string>
<string name="revanced_debug_summary_off">Η καταγραφή εντοπισμού σφαλμάτων είναι απενεργοποιημένη</string>
<string name="revanced_debug_export_logs_to_clipboard_title">Εξαγωγή αρχείων καταγραφής εντοπισμού σφαλμάτων</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">Αντιγραφή των αρχείων καταγραφής εντοπισμού σφαλμάτων ReVanced στο πρόχειρο</string>
<string name="revanced_debug_logs_disabled">Η καταγραφή εντοπισμού σφαλμάτων είναι απενεργοποιημένη</string>
<string name="revanced_debug_logs_none_found">Δεν βρέθηκαν αρχεία καταγραφής</string>
<string name="revanced_debug_logs_copied_to_clipboard">Τα αρχεία καταγραφής αντιγράφηκαν</string>
<string name="revanced_debug_logs_failed_to_export">Αποτυχία εξαγωγής αρχείων καταγραφής: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Εκκαθάριση αρχείων καταγραφής εντοπισμού σφαλμάτων</string>
<string name="revanced_debug_logs_clear_buffer_summary">Εκκαθάριση όλων των αποθηκευμένων αρχειών καταγραφής εντοπισμού σφαλμάτων ReVanced</string>
<string name="revanced_debug_logs_clear_toast">Τα αρχεία καταγραφής εκκαθαρίστηκαν</string>
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
@@ -110,11 +143,6 @@ Second \"item\" text"</string>
<string name="revanced_shorts_disable_background_playback_summary_off">Η αναπαραγωγή παρασκηνίου είναι ενεργοποιημένη για τα Shorts</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Εντοπισμός σφαλμάτων</string>
<string name="revanced_debug_screen_summary">Ενεργοποίηση ή απενεργοποίηση επιλογών εντοπισμού σφαλμάτων</string>
<string name="revanced_debug_title">Καταγραφή εντοπισμού σφαλμάτων</string>
<string name="revanced_debug_summary_on">Η καταγραφή εντοπισμού σφαλμάτων είναι ενεργοποιημένη</string>
<string name="revanced_debug_summary_off">Η καταγραφή εντοπισμού σφαλμάτων είναι απενεργοποιημένη</string>
<string name="revanced_debug_protobuffer_title">Καταγραφή του buffer πρωτοκόλλου</string>
<string name="revanced_debug_protobuffer_summary_on">Τα αρχεία καταγραφής σφαλμάτων περιλαμβάνουν το buffer του πρωτοκόλλου</string>
<string name="revanced_debug_protobuffer_summary_off">Τα αρχεία καταγραφής σφαλμάτων δεν περιλαμβάνουν τον buffer πρωτοκόλλου</string>
@@ -132,15 +160,6 @@ Second \"item\" text"</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">"Η απενεργοποίηση των μηνυμάτων σφαλμάτων κρύβει όλες τις ειδοποιήσεις σφαλμάτων που αφορούν το ReVanced.
Δεν θα ειδοποιηθείτε για τυχόν απρόβλεπτα γεγονότα."</string>
<string name="revanced_debug_export_logs_to_clipboard_title">Εξαγωγή αρχείων καταγραφής εντοπισμού σφαλμάτων</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">Αντιγραφή των αρχείων καταγραφής εντοπισμού σφαλμάτων ReVanced στο πρόχειρο</string>
<string name="revanced_debug_logs_disabled">Η καταγραφή εντοπισμού σφαλμάτων είναι απενεργοποιημένη</string>
<string name="revanced_debug_logs_none_found">Δεν βρέθηκαν αρχεία καταγραφής</string>
<string name="revanced_debug_logs_copied_to_clipboard">Τα αρχεία καταγραφής αντιγράφηκαν</string>
<string name="revanced_debug_logs_failed_to_export">Αποτυχία εξαγωγής αρχείων καταγραφής: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Εκκαθάριση αρχείων καταγραφής εντοπισμού σφαλμάτων</string>
<string name="revanced_debug_logs_clear_buffer_summary">Εκκαθάριση όλων των αποθηκευμένων αρχειών καταγραφής εντοπισμού σφαλμάτων ReVanced</string>
<string name="revanced_debug_logs_clear_toast">Τα αρχεία καταγραφής εκκαθαρίστηκαν</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_hide_album_cards_title">Κάρτες άλμπουμ</string>
@@ -704,7 +723,7 @@ Second \"item\" text"</string>
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<string name="revanced_hide_player_flyout_audio_track_not_available">"Το μενού «Κομμάτι ήχου» είναι κρυμμένο
Για να εμφανίζεται το μενού κομματιού ήχου, αλλάξτε την «Παραποίηση ροών βίντεο» σε iOS TV"</string>
Το μενού «Κομμάτι ήχου» δεν είναι διαθέσιμο όταν είναι ενεργοποιημένη η ρύθμιση «Παραποίηση ροών βίντεο»"</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">Μενού «Προβολή σε VR»</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Κρυμμένο</string>
@@ -1098,7 +1117,7 @@ Second \"item\" text"</string>
<string name="revanced_sb_skip_button_preview_beginning">Παράλειψη προεπισκόπησης</string>
<string name="revanced_sb_skip_button_preview_middle">Παράλειψη προεπισκόπησης</string>
<string name="revanced_sb_skip_button_preview_end">Παράλειψη περίληψης</string>
<string name="revanced_sb_skip_button_filler">Παράλειψη παρέκβασης</string>
<string name="revanced_sb_skip_button_filler">Παράλειψη σπατάλης χρόνου</string>
<string name="revanced_sb_skip_button_nomusic">Παράλειψη μη-μουσικού</string>
<string name="revanced_sb_skip_button_unsubmitted">Παράλειψη τμήματος</string>
<string name="revanced_sb_skipped_sponsor">Παραλείφθηκε ο χορηγός</string>
@@ -1113,7 +1132,7 @@ Second \"item\" text"</string>
<string name="revanced_sb_skipped_preview_beginning">Παραλείφθηκε η προεπισκόπηση</string>
<string name="revanced_sb_skipped_preview_middle">Παραλείφθηκε η προεπισκόπηση</string>
<string name="revanced_sb_skipped_preview_end">Παραλείφθηκε η περίληψη</string>
<string name="revanced_sb_skipped_filler">Παραλείφθηκε η παρέκβαση</string>
<string name="revanced_sb_skipped_filler">Παραλείφθηκε η σπατάλη χρόνου</string>
<string name="revanced_sb_skipped_nomusic">Παραλείφθηκε τμήμα χωρίς μουσική</string>
<string name="revanced_sb_skipped_unsubmitted">Παραλήφθηκε μη υποβληθέν τμήμα</string>
<string name="revanced_sb_skipped_multiple_segments">Παραλείφθηκαν πολλαπλά τμήματα</string>
@@ -1414,10 +1433,6 @@ Second \"item\" text"</string>
Η ενεργοποίηση αυτής της λειτουργίας μπορεί να ξεκλειδώσει υψηλότερες ποιότητες βίντεο"</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">Η ενεργοποίηση αυτής της λειτουργίας μπορεί να προκαλέσει μικρο-κολλήματα κατά την αναπαραγωγή, χειρότερη διάρκεια ζωής μπαταρίας, και άλλες άγνωστες παρενέργειες.</string>
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">Ρυθμίσεις GmsCore</string>
<string name="microg_settings_summary">Ρυθμίσεις για το MicroG GmsCore</string>
</patch>
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
<string name="revanced_disable_haptic_feedback_title">Απόκριση δόνησης</string>
<string name="revanced_disable_haptic_feedback_summary">Αλλαγή απόκρισης δόνησης</string>
@@ -1531,35 +1546,51 @@ Second \"item\" text"</string>
<string name="revanced_slide_to_seek_summary_off">Η χειρονομία συρσίματος για αναζήτηση στη γραμμή προόδου είναι απενεργοποιημένη</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Παραποίηση ροών βίντεο</string>
<string name="revanced_spoof_video_streams_screen_summary">Παραποίηση ροών βίντεο του προγράμματος πελάτη για την αποφυγή προβλημάτων αναπαραγωγής</string>
<string name="revanced_spoof_video_streams_title">Παραποίηση ροών βίντεο</string>
<string name="revanced_spoof_video_streams_summary_on">Οι ροές βίντεο παραποιούνται</string>
<string name="revanced_spoof_video_streams_summary_off">"Οι ροές βίντεο δεν παραποιούνται
Η αναπαραγωγή βίντεο ενδέχεται να μην λειτουργεί"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Η απενεργοποίηση αυτής της ρύθμισης ενδέχεται να προκαλέσει προβλήματα αναπαραγωγής βίντεο.</string>
<string name="revanced_spoof_video_streams_client_type_title">Προεπιλεγμένο πρόγραμμα πελάτη</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Εξαναγκασμός iOS AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Ο κωδικοποιητής βίντεο έχει οριστεί υποχρεωτικά σε AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Ο κωδικοποιητής βίντεο ορίζεται αυτόματα</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"Η ενεργοποίηση αυτής της λειτουργίας ενδέχεται να βελτιώσει τη διάρκεια ζωής της μπαταρίας και να διορθώσει κολλήματα αναπαραγωγής.
Ο AVC έχει μέγιστη ανάλυση 1080p, ο κωδικοποιητής ήχου Opus δεν είναι διαθέσιμος και η αναπαραγωγή βίντεο θα χρησιμοποιεί περισσότερα δεδομένα ίντερνετ από τον VP9 ή τον AV1."</string>
<string name="revanced_spoof_video_streams_about_ios_tv_title">Παρενέργειες παραποίησης σε iOS</string>
<string name="revanced_spoof_video_streams_about_ios_tv_summary">"• Οι ταινίες ή τα επί πληρωμή βίντεο ενδέχεται να μην αναπαράγονται
Η λειτουργία «Σταθερή ένταση» δεν είναι διαθέσιμη
Τα βίντεο τελειώνουν 1 δευτερόλεπτο νωρίτερα"</string>
<string name="revanced_spoof_video_streams_about_title">Παρενέργειες παραποίησης</string>
<string name="revanced_spoof_video_streams_about_android_title">Παρενέργειες παραποίησης σε Android</string>
<string name="revanced_spoof_video_streams_about_android_summary">"• Το μενού «Κομμάτι ήχου» λείπει
Η λειτουργία «Σταθερή ένταση» δεν είναι διαθέσιμη
Η λειτουργία «Εξαναγκασμός αρχικού ήχου» δεν είναι διαθέσιμη"</string>
Η λειτουργία «Σταθερή ένταση» δεν είναι διαθέσιμη"</string>
<string name="revanced_spoof_video_streams_about_experimental">• Πειραματικός πελάτης και μπορεί να σταματήσει να λειτουργεί ανά πάσα στιγμή</string>
<string name="revanced_spoof_video_streams_about_no_av1">• Δεν υπάρχει ο κωδικοποιητής βίντεο AV1</string>
<string name="revanced_spoof_video_streams_about_kids_videos">Τα βίντεο για παιδιά ενδέχεται να μην αναπαράγονται αν είστε αποσυνδεδεμένοι ή σε λειτουργία ανώνυμης περιήγησης</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">Εμφάνιση στο μενού «Στατιστικά για σπασίκλες»</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_on">Το πρόγραμμα πελάτη εμφανίζεται στο μενού «Στατιστικά για σπασίκλες»</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_off">Το πρόγραμμα πελάτη δεν εμφανίζεται στο μενού «Στατιστικά για σπασίκλες»</string>
<string name="revanced_spoof_video_streams_language_title">Προεπιλεγμένη γλώσσα ροής ήχου VR</string>
<string name="revanced_spoof_video_streams_language_title">Γλώσσα ροής ήχου</string>
</patch>
</app>
<app id="music">
<patch id="misc.settings.settingsPatch">
<string name="revanced_settings_music_screen_0_about_title">Ομάδα προγραμματιστών</string>
<string name="revanced_settings_music_screen_1_ads_title">Διαφημίσεις</string>
<string name="revanced_settings_music_screen_2_general_title">Γενικά</string>
<string name="revanced_settings_music_screen_3_player_title">Οθόνη αναπαραγωγής</string>
<string name="revanced_settings_music_screen_4_misc_title">Διάφορα</string>
</patch>
<patch id="ad.video.hideVideoAdsPatch">
<string name="revanced_music_hide_video_ads_title">Διαφημίσεις βίντεο</string>
<string name="revanced_music_hide_video_ads_summary_on">Κρυμμένες</string>
<string name="revanced_music_hide_video_ads_summary_off">Εμφανίζονται</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
<string name="revanced_music_play_permanent_repeat_title">Ενεργοποίηση μόνιμης επανάληψης</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Η μόνιμη επανάληψη είναι ενεργοποιημένη</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Η μόνιμη επανάληψη είναι απενεργοποιημένη</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Απόκρυψη γραμμής κατηγοριών</string>
<string name="revanced_music_hide_category_bar_summary_on">Η γραμμή κατηγοριών είναι κρυμμένη</string>
<string name="revanced_music_hide_category_bar_summary_off">Η γραμμή κατηγοριών εμφανίζεται</string>
</patch>
<patch id="layout.premium.hideGetPremiumPatch">
<string name="revanced_music_hide_get_premium_label_title">Απόκρυψη ετικέτας «Απόκτηση Music Premium»</string>
<string name="revanced_music_hide_get_premium_label_summary_on">Η ετικέτα είναι κρυμμένη</string>
<string name="revanced_music_hide_get_premium_label_summary_off">Η ετικέτα εμφανίζεται</string>
</patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
<string name="revanced_music_hide_upgrade_button_title">Απόκρυψη κουμπιού αναβάθμισης</string>
<string name="revanced_music_hide_upgrade_button_summary_on">Κρυμμένο</string>
<string name="revanced_music_hide_upgrade_button_summary_off">Εμφανίζεται</string>
</patch>
</app>
<app id="twitch">

View File

@@ -68,6 +68,8 @@ Para traducir nuevos idiomas, visita translate.revanced.app"</string>
and changes made here must also be made there. -->
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">Ajustes de GmsCore</string>
<string name="microg_settings_summary">Configuración de GmsCore</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="gms_core_toast_not_installed_message">MicroG GmsCore no está instalado. Instálalo.</string>
<string name="gms_core_dialog_title">Acción necesaria</string>
@@ -84,6 +86,37 @@ Deshabilitar las optimizaciones de batería para MicroG no afectará negativamen
Toca el botón continuar y permite los cambios de optimización."</string>
<string name="gms_core_dialog_continue_text">Continuar</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Falsificar transmisiones de vídeo</string>
<string name="revanced_spoof_video_streams_screen_summary">Falsifica las transmisiones de vídeo del cliente para evitar problemas de reproducción</string>
<string name="revanced_spoof_video_streams_screen_title">Falsificar transmisiones de vídeo</string>
<string name="revanced_spoof_video_streams_screen_summary">Falsifica las transmisiones de vídeo del cliente para evitar problemas de reproducción</string>
<string name="revanced_spoof_video_streams_title">Falsificar transmisiones de vídeo</string>
<string name="revanced_spoof_video_streams_summary_on">"Las transmisiones de vídeo están falsificadas.
Si eres un usuario de YouTube Premium, esta configuración podría no ser necesaria"</string>
<string name="revanced_spoof_video_streams_summary_off">"Las transmisiones de video no están suplantadas
La reproducción podría no funcionar"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Desactivar esta configuración puede causar problemas de reproducción.</string>
<string name="revanced_spoof_video_streams_client_type_title">Cliente por defecto</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Depuración</string>
<string name="revanced_debug_screen_summary">Activar o desactivar las opciones de depuración</string>
<string name="revanced_debug_title">Registro de depuración</string>
<string name="revanced_debug_summary_on">Los registros de depuración están habilitados</string>
<string name="revanced_debug_summary_off">Los registros de depuración están desactivados</string>
<string name="revanced_debug_export_logs_to_clipboard_title">Exportar registros de depuración</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">Copia los registros de depuración de ReVanced al portapapeles</string>
<string name="revanced_debug_logs_disabled">El registro de depuración está desactivado</string>
<string name="revanced_debug_logs_none_found">No se encontraron registros</string>
<string name="revanced_debug_logs_copied_to_clipboard">Registros copiados</string>
<string name="revanced_debug_logs_failed_to_export">Error al exportar registros: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Borrar registros de depuración</string>
<string name="revanced_debug_logs_clear_buffer_summary">Borra todos los registros de depuración de ReVanced almacenados</string>
<string name="revanced_debug_logs_clear_toast">Registros borrados</string>
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
@@ -96,13 +129,13 @@ Toca el botón continuar y permite los cambios de optimización."</string>
<string name="revanced_settings_screen_07_seekbar_title">Barra de progreso</string>
<string name="revanced_settings_screen_08_swipe_controls_title">Controles de deslizamiento</string>
<string name="revanced_settings_screen_11_misc_title">Otros</string>
<string name="revanced_settings_screen_12_video_title">Video</string>
<string name="revanced_settings_screen_12_video_title">Vídeo</string>
<string name="revanced_restore_old_settings_menus_title">Restaurar menús de configuración antiguos</string>
<string name="revanced_restore_old_settings_menus_summary_on">Se muestran los menús de configuración antiguos</string>
<string name="revanced_restore_old_settings_menus_summary_off">No se muestran los menús de configuración antiguos</string>
<string name="revanced_restore_old_settings_menus_summary_on">Los menús de configuración antiguos son visibles</string>
<string name="revanced_restore_old_settings_menus_summary_off">Los menús de configuración antiguos están ocultos</string>
<string name="revanced_settings_search_history_title">Mostrar el historial de búsqueda de ajustes</string>
<string name="revanced_settings_search_history_summary_on">El historial de búsqueda de los ajustes es visible</string>
<string name="revanced_settings_search_history_summary_off">El historial de búsqueda de ajustes no se muestra</string>
<string name="revanced_settings_search_history_summary_on">El historial de búsqueda de los ajustes es visible</string>
<string name="revanced_settings_search_history_summary_off">El historial de búsqueda de ajustes está oculto</string>
</patch>
<patch id="misc.backgroundplayback.backgroundPlaybackPatch">
<string name="revanced_shorts_disable_background_playback_title">Desactivar la reproducción en segundo plano de Shorts</string>
@@ -110,11 +143,6 @@ Toca el botón continuar y permite los cambios de optimización."</string>
<string name="revanced_shorts_disable_background_playback_summary_off">La reproducción en segundo plano de Shorts está habilitada</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Depuración</string>
<string name="revanced_debug_screen_summary">Activar o desactivar las opciones de depuración</string>
<string name="revanced_debug_title">Registro de depuración</string>
<string name="revanced_debug_summary_on">Los registros de depuración están habilitados</string>
<string name="revanced_debug_summary_off">Los registros de depuración están desactivados</string>
<string name="revanced_debug_protobuffer_title">Búfer de protocolo de registro</string>
<string name="revanced_debug_protobuffer_summary_on">Los registros de depuración incluyen el búfer proto</string>
<string name="revanced_debug_protobuffer_summary_off">Los registros de depuración no incluyen el búfer proto</string>
@@ -132,15 +160,6 @@ Sin embargo, si activas esto, también se registrarán algunos datos del usuario
<string name="revanced_debug_toast_on_error_user_dialog_message">"Desactivar los avisos de error oculta todas las notificaciones de error de ReVanced.
No se le notificará de ningún evento inesperado."</string>
<string name="revanced_debug_export_logs_to_clipboard_title">Exportar registros de depuración</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">Copia los registros de depuración de ReVanced al portapapeles</string>
<string name="revanced_debug_logs_disabled">El registro de depuración está desactivado</string>
<string name="revanced_debug_logs_none_found">No se encontraron registros</string>
<string name="revanced_debug_logs_copied_to_clipboard">Registros copiados</string>
<string name="revanced_debug_logs_failed_to_export">Error al exportar registros: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Borrar registros de depuración</string>
<string name="revanced_debug_logs_clear_buffer_summary">Borra todos los registros de depuración de ReVanced almacenados</string>
<string name="revanced_debug_logs_clear_toast">Registros borrados</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_hide_album_cards_title">Ocultar tarjetas de álbum</string>
@@ -151,19 +170,19 @@ No se le notificará de ningún evento inesperado."</string>
<string name="revanced_hide_artist_cards_summary_off">Se muestran las tarjetas de artista</string>
<string name="revanced_hide_chips_shelf_title">Ocultar \"Más como esto\"</string>
<string name="revanced_hide_chips_shelf_summary_on">\"Más como esto\" está oculto</string>
<string name="revanced_hide_chips_shelf_summary_off">\"Más como esto\" está habilitado</string>
<string name="revanced_hide_chips_shelf_summary_off">\"Más como esto\" es visible</string>
<string name="revanced_hide_community_posts_title">Ocultar publicaciones de comunidad</string>
<string name="revanced_hide_community_posts_summary_on">Las publicaciones de la comunidad están ocultas</string>
<string name="revanced_hide_community_posts_summary_off">Se muestran las publicaciones de la comunidad</string>
<string name="revanced_hide_community_posts_summary_off">Las publicaciones de la comunidad se muestran</string>
<string name="revanced_hide_compact_banner_title">Ocultar banners compactos</string>
<string name="revanced_hide_compact_banner_summary_on">Los banners compactos están ocultos</string>
<string name="revanced_hide_compact_banner_summary_off">Se muestran los banners compactos</string>
<string name="revanced_hide_crowdfunding_box_title">Ocultar caja de Crowdfunding</string>
<string name="revanced_hide_crowdfunding_box_summary_on">La caja de Crowdfunding está oculta</string>
<string name="revanced_hide_crowdfunding_box_summary_off">La caja de Crowdfunding es visible</string>
<string name="revanced_hide_crowdfunding_box_summary_off">La caja de Crowdfunding es visible</string>
<string name="revanced_hide_expandable_card_title">Ocultar tarjeta expandible</string>
<string name="revanced_hide_expandable_card_summary_on">Tarjeta expandible debajo de los videos oculta</string>
<string name="revanced_hide_expandable_card_summary_off">Tarjeta expandible debajo de los videos visible</string>
<string name="revanced_hide_expandable_card_summary_on">La tarjeta expandible debajo de los vídeos está oculta</string>
<string name="revanced_hide_expandable_card_summary_off">La tarjeta expandible debajo de los vídeos es visible</string>
<string name="revanced_hide_floating_microphone_button_title">Ocultar botón de micrófono flotante</string>
<string name="revanced_hide_floating_microphone_button_summary_on">El botón flotante del micrófono en la búsqueda está oculto</string>
<string name="revanced_hide_floating_microphone_button_summary_off">Se muestra el botón flotante del micrófono en la búsqueda</string>
@@ -175,42 +194,42 @@ No se le notificará de ningún evento inesperado."</string>
• Más relevantes
• Compras
• Ver de nuevo"</string>
<string name="revanced_hide_horizontal_shelves_summary_off">Los estantes horizontales están visibles</string>
<string name="revanced_hide_horizontal_shelves_summary_off">Los estantes horizontales son visibles</string>
<string name="revanced_hide_image_shelf_title">Ocultar estantería de imágenes</string>
<string name="revanced_hide_image_shelf_summary_on">Estantería de imágenes en los resultados de búsqueda oculta</string>
<string name="revanced_hide_image_shelf_summary_off">Estantería de imágenes en los resultados de búsqueda visible</string>
<string name="revanced_hide_image_shelf_summary_on">La estantería de imágenes en los resultados de búsqueda está oculta</string>
<string name="revanced_hide_image_shelf_summary_off">La estantería de imágenes en los resultados de búsqueda es visible</string>
<string name="revanced_hide_latest_posts_title">Ocultar últimas publicaciones</string>
<string name="revanced_hide_latest_posts_summary_on">Las últimas publicaciones están ocultas</string>
<string name="revanced_hide_latest_posts_summary_off">Se muestran las últimas publicaciones</string>
<string name="revanced_hide_mix_playlists_title">Ocultar lista de reproducción Mix</string>
<string name="revanced_hide_mix_playlists_summary_on">La lista de reproducción Mix está oculta</string>
<string name="revanced_hide_mix_playlists_summary_off">La lista de reproducción Mix es visible</string>
<string name="revanced_hide_mix_playlists_summary_on">Las listas de reproducción Mix están ocultas</string>
<string name="revanced_hide_mix_playlists_summary_off">La lista de reproducción Mix es visible</string>
<string name="revanced_hide_movies_section_title">Ocultar sección de películas</string>
<string name="revanced_hide_movies_section_summary_on">La sección de películas está oculta</string>
<string name="revanced_hide_movies_section_summary_off">La sección de películas es visible</string>
<string name="revanced_hide_movies_section_summary_off">La sección de películas es visible</string>
<!-- 'Notify me' should be translated using the same localized wording YouTube displays.
This item appear in the Subscriptions feed for future livestreams or unreleased videos. -->
<string name="revanced_hide_notify_me_button_title">Ocultar el botón \'Notificarme\'</string>
<string name="revanced_hide_notify_me_button_title">Ocultar el botón \"Notificarme\"</string>
<string name="revanced_hide_notify_me_button_summary_on">El botón Notificarme está oculto</string>
<string name="revanced_hide_notify_me_button_summary_off">El botón Notificarme es visible</string>
<string name="revanced_hide_notify_me_button_summary_off">El botón Notificarme es visible</string>
<string name="revanced_hide_playables_title">Ocultar jugables</string>
<string name="revanced_hide_playables_summary_on">Los jugables están ocultos</string>
<string name="revanced_hide_playables_summary_off">Los jugables están visibles</string>
<string name="revanced_hide_playables_summary_off">Los jugables son visibles</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">Ocultar botón \'Mostrar más\'</string>
<string name="revanced_hide_show_more_button_summary_on">El botón Mostrar más en los resultados de búsqueda está oculto</string>
<string name="revanced_hide_show_more_button_summary_off">El botón Mostrar más en los resultados de búsqueda es visible</string>
<string name="revanced_hide_show_more_button_summary_off">El botón Mostrar más en los resultados de búsqueda es visible</string>
<string name="revanced_hide_surveys_title">Ocultar encuestas</string>
<string name="revanced_hide_surveys_summary_on">Las encuestas están ocultas</string>
<string name="revanced_hide_surveys_summary_off">Las encuestas están visibles</string>
<string name="revanced_hide_surveys_summary_off">Las encuestas son visibles</string>
<string name="revanced_hide_ticket_shelf_title">Ocultar estantes de tickets</string>
<string name="revanced_hide_ticket_shelf_summary_on">El estante de tickets está oculto</string>
<string name="revanced_hide_ticket_shelf_summary_off">El estante de boletos es visible</string>
<string name="revanced_hide_ticket_shelf_summary_on">La estantería de tickets está oculta</string>
<string name="revanced_hide_ticket_shelf_summary_off">La estantería de tickets es visible</string>
<!-- 'People also watched' and 'You might also like' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_video_recommendation_labels_title">Ocultar etiquetas de recomendación de vídeo</string>
<string name="revanced_hide_video_recommendation_labels_summary_on">Las etiquetas \"La gente también vio\" y \"También te puede gustar\" en los resultados de búsqueda están ocultas</string>
<string name="revanced_hide_video_recommendation_labels_summary_off">Las etiquetas \"La gente también vio\" y \"También te puede gustar\" en los resultados de búsqueda están visibles</string>
<string name="revanced_hide_video_recommendation_labels_summary_off">Las etiquetas \"La gente también vio\" y \"También te puede gustar\" en los resultados de búsqueda son visibles</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_doodles_title">Ocultar YouTube Doodles</string>
<string name="revanced_hide_doodles_summary_on">La animación de los Doodles de YouTube en el logotipo está oculta</string>
@@ -219,10 +238,10 @@ No se le notificará de ningún evento inesperado."</string>
Si un doodle se está mostrando actualmente en tu región y este ajuste de ocultación está activado, la barra de filtro situada debajo de la barra de búsqueda también estará oculta."</string>
<string name="revanced_hide_channel_bar_title">Ocultar barra de canal</string>
<string name="revanced_hide_channel_bar_summary_on">Barra de canales oculta</string>
<string name="revanced_hide_channel_bar_summary_on">La barra de canales está oculta</string>
<string name="revanced_hide_channel_bar_summary_off">Barra de canales mostrada</string>
<string name="revanced_hide_channel_watermark_title">Ocultar marca de agua del canal</string>
<string name="revanced_hide_channel_watermark_summary_on">Marca de agua oculta</string>
<string name="revanced_hide_channel_watermark_summary_on">La marca de agua está oculta</string>
<string name="revanced_hide_channel_watermark_summary_off">Marca de agua mostrada</string>
<string name="revanced_hide_emergency_box_title">Ocultar cajas de emergencia</string>
<string name="revanced_hide_emergency_box_summary_on">Las cajas de emergencia están ocultas</string>
@@ -232,17 +251,17 @@ Si un doodle se está mostrando actualmente en tu región y este ajuste de ocult
<string name="revanced_hide_info_panels_summary_off">Los paneles de información se muestran</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">Ocultar el botón Unirse</string>
<string name="revanced_hide_join_membership_button_title">Ocultar el botón \"Unirse\"</string>
<string name="revanced_hide_join_membership_button_summary_on">El botón Unirse está oculto</string>
<string name="revanced_hide_join_membership_button_summary_off">El botón Unirse es visible</string>
<string name="revanced_hide_join_membership_button_summary_off">El botón Unirse es visible</string>
<string name="revanced_hide_medical_panels_title">Ocultar paneles médicos</string>
<string name="revanced_hide_medical_panels_summary_on">Los paneles médicos están ocultos</string>
<string name="revanced_hide_medical_panels_summary_off">Se muestran paneles médicos</string>
<string name="revanced_hide_quick_actions_title">Ocultar acciones rápidas</string>
<string name="revanced_hide_quick_actions_summary_on">Acciones rápidas en pantalla completa ocultas</string>
<string name="revanced_hide_quick_actions_summary_on">Las rápidas en pantalla completa están ocultas</string>
<string name="revanced_hide_quick_actions_summary_off">Acciones rápidas en pantalla completa visibles</string>
<string name="revanced_hide_related_videos_title">Ocultar videos relacionados</string>
<string name="revanced_hide_related_videos_summary_on">Videos relacionados en acciones rápidas ocultos</string>
<string name="revanced_hide_related_videos_summary_on">Los vídeos relacionados en acciones rápidas están ocultos</string>
<string name="revanced_hide_related_videos_summary_off">Videos relacionados en acciones rápidas visibles</string>
<string name="revanced_hide_subscribers_community_guidelines_title">Ocultar las directrices para suscriptores</string>
<string name="revanced_hide_subscribers_community_guidelines_summary_on">Las pautas comunitarias de los suscriptores están ocultas</string>
@@ -250,7 +269,7 @@ Si un doodle se está mostrando actualmente en tu región y este ajuste de ocult
<string name="revanced_hide_timed_reactions_title">Ocultar reacciones temporizadas</string>
<string name="revanced_hide_timed_reactions_summary_on">Las reacciones temporizadas están ocultas</string>
<string name="revanced_hide_timed_reactions_summary_off">Se muestran reacciones temporizadas</string>
<string name="revanced_hide_ai_generated_video_summary_section_title">Ocultar \"Resumen de video generado por IA\"</string>
<string name="revanced_hide_ai_generated_video_summary_section_title">Ocultar \"Resumen de vídeo generado por IA\"</string>
<string name="revanced_hide_ai_generated_video_summary_section_summary_on">La sección de resumen de vídeo generada por IA está oculta</string>
<string name="revanced_hide_ai_generated_video_summary_section_summary_off">Sección de resumen de vídeo generada por IA está mostrada</string>
<string name="revanced_hide_ask_section_title">Ocultar pregunta</string>
@@ -285,7 +304,7 @@ Si un doodle se está mostrando actualmente en tu región y este ajuste de ocult
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Oculto en feeds</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Visible en feeds</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">Ocultar en vídeos relacionados</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Escondido en videos relacionados</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Oculto en vídeos relacionados</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Mostrar en vídeos relacionados</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">Ocultar en los resultados de búsqueda</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">Oculto en los resultados de búsqueda</string>
@@ -298,29 +317,29 @@ Si un doodle se está mostrando actualmente en tu región y este ajuste de ocult
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_for_you_shelf_title">Ocultar la sección \"Para ti\"</string>
<string name="revanced_hide_for_you_shelf_summary_on">La estantería \"Para ti\" está oculta</string>
<string name="revanced_hide_for_you_shelf_summary_off">La estantería \"Para ti\" es visible</string>
<string name="revanced_hide_for_you_shelf_summary_off">La estantería \"Para ti\" es visible</string>
<string name="revanced_hide_links_preview_title">Ocultar vista previa de enlaces</string>
<string name="revanced_hide_links_preview_summary_on">Vista previa de enlaces oculta</string>
<string name="revanced_hide_links_preview_summary_on">La vista previa de enlaces está oculta</string>
<string name="revanced_hide_links_preview_summary_off">Vista previa de enlaces visible</string>
<string name="revanced_hide_members_shelf_title">Ocultar estantería de miembros</string>
<string name="revanced_hide_members_shelf_summary_on">Estantería de miembros oculta</string>
<string name="revanced_hide_members_shelf_summary_off">El estante de miembros se muestra</string>
<string name="revanced_hide_members_shelf_summary_on">La estantería de miembros está oculta</string>
<string name="revanced_hide_members_shelf_summary_off">La estantería de miembros se muestra</string>
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_community_button_title">Ocultar el botón \"Visitar comunidad\"</string>
<string name="revanced_hide_visit_community_button_summary_on">El botón Visitar comunidad está oculto</string>
<string name="revanced_hide_visit_community_button_summary_off">El botón \"Visitar comunidad\" es visible</string>
<string name="revanced_hide_visit_community_button_summary_off">El botón \"Visitar comunidad\" es visible</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Ocultar el botón \'Visitar tienda\' en las páginas del canal</string>
<string name="revanced_hide_visit_store_button_summary_on">El botón \"Visitar tienda\" está oculto</string>
<string name="revanced_hide_visit_store_button_summary_off">El botón \"Visitar tienda\" es visible</string>
<string name="revanced_hide_visit_store_button_summary_off">El botón \"Visitar tienda\" es visible</string>
<string name="revanced_comments_screen_title">Comentarios</string>
<string name="revanced_comments_screen_summary">Ocultar o mostrar los componentes de sección de comentarios</string>
<string name="revanced_hide_comments_ai_chat_summary_title">Ocultar resumen de chat de IA</string>
<string name="revanced_hide_comments_ai_chat_summary_summary_on">El resumen del chat de IA está oculto</string>
<string name="revanced_hide_comments_ai_chat_summary_summary_off">El resumen del chat de IA es visible</string>
<string name="revanced_hide_comments_ai_chat_summary_summary_off">El resumen del chat de IA es visible</string>
<string name="revanced_hide_comments_ai_summary_title">Ocultar el resumen de los comentarios de la IA</string>
<string name="revanced_hide_comments_ai_summary_summary_on">El resumen de comentarios de IA está oculto</string>
<string name="revanced_hide_comments_ai_summary_summary_off">El resumen de comentarios de IA es visible</string>
<string name="revanced_hide_comments_ai_summary_summary_off">El resumen de comentarios de IA es visible</string>
<string name="revanced_hide_comments_channel_guidelines_title">Ocultar directrices del canal</string>
<string name="revanced_hide_comments_channel_guidelines_summary_on">Las directrices del canal están ocultas</string>
<string name="revanced_hide_comments_channel_guidelines_summary_off">Las directrices del canal se muestran</string>
@@ -357,14 +376,14 @@ Si un doodle se está mostrando actualmente en tu región y este ajuste de ocult
<string name="revanced_hide_keyword_content_screen_title">Ocultar contenido de palabra clave</string>
<string name="revanced_hide_keyword_content_screen_summary">Ocultar videos de búsqueda y feed usando filtros de palabras clave</string>
<string name="revanced_hide_keyword_content_home_title">Ocultar videos domésticos por palabras clave</string>
<string name="revanced_hide_keyword_content_home_summary_on">Los videos en la pestaña \'Inicio\' son filtrados por palabras clave</string>
<string name="revanced_hide_keyword_content_home_summary_off">Los videos en la pestaña \'Inicio\' no son filtrados por palabras clave</string>
<string name="revanced_hide_keyword_content_home_summary_on">Los vídeos en la pestaña \'Inicio\' son filtrados por palabras clave</string>
<string name="revanced_hide_keyword_content_home_summary_off">Los vídeos en la pestaña \'Inicio\' no son filtrados por palabras clave</string>
<string name="revanced_hide_keyword_content_search_title">Ocultar resultados de búsqueda por palabras clave</string>
<string name="revanced_hide_keyword_content_search_summary_on">Los resultados de la búsqueda son filtrados por palabras clave</string>
<string name="revanced_hide_keyword_content_search_summary_off">Los resultados de la búsqueda no son filtrados por palabras clave</string>
<string name="revanced_hide_keyword_content_subscriptions_title">Ocultar vídeos de suscripción por palabras clave</string>
<string name="revanced_hide_keyword_content_subscriptions_summary_on">Los videos en la pestaña \'Suscripciones\' son filtrados por palabras clave</string>
<string name="revanced_hide_keyword_content_subscriptions_summary_off">Los videos en la pestaña \'Suscripciones\' no son filtrados por palabras clave</string>
<string name="revanced_hide_keyword_content_subscriptions_summary_on">Los vídeos en la pestaña \'Suscripciones\' son filtrados por palabras clave</string>
<string name="revanced_hide_keyword_content_subscriptions_summary_off">Los vídeos en la pestaña \'Suscripciones\' no son filtrados por palabras clave</string>
<string name="revanced_hide_keyword_content_phrases_title">Palabras clave a ocultar</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. -->
@@ -392,11 +411,11 @@ Limitaciones
</patch>
<patch id="ad.general.hideAdsResourcePatch">
<string name="revanced_hide_creator_store_shelf_title">Ocultar estantería de la tienda del creador</string>
<string name="revanced_hide_creator_store_shelf_summary_on">El estante de la tienda del creador debajo del reproductor de vídeo está oculto</string>
<string name="revanced_hide_creator_store_shelf_summary_off">Se muestra el estante de la tienda del creador debajo del reproductor de video</string>
<string name="revanced_hide_creator_store_shelf_summary_on">La estantería de la tienda del creador debajo del reproductor de vídeo está oculta</string>
<string name="revanced_hide_creator_store_shelf_summary_off">La estantería de la tienda del creador debajo del reproductor de vídeo es visible</string>
<string name="revanced_hide_end_screen_store_banner_title">Ocultar banner de la tienda en la pantalla final</string>
<string name="revanced_hide_end_screen_store_banner_summary_on">El banner de la tienda de la pantalla final está oculto</string>
<string name="revanced_hide_end_screen_store_banner_summary_off">El banner de la tienda de la pantalla final es visible</string>
<string name="revanced_hide_end_screen_store_banner_summary_off">El banner de la tienda de la pantalla final es visible</string>
<string name="revanced_hide_fullscreen_ads_title">Ocultar anuncios a pantalla completa</string>
<string name="revanced_hide_fullscreen_ads_summary_on">"Los anuncios a pantalla completa están ocultos
@@ -421,7 +440,7 @@ Esta función solo está disponible para dispositivos antiguos"</string>
<string name="revanced_hide_shopping_links_summary_off">Se muestran los enlaces de compras en la descripción del video</string>
<string name="revanced_hide_view_products_banner_title">Ocultar el banner \"Ver productos\"</string>
<string name="revanced_hide_view_products_banner_summary_on">El banner \"Ver productos\" en la superposición de vídeo está oculto</string>
<string name="revanced_hide_view_products_banner_summary_off">El banner \"Ver productos\" en la superposición de vídeo es visible</string>
<string name="revanced_hide_view_products_banner_summary_off">El banner \"Ver productos\" en la superposición de vídeo es visible</string>
<string name="revanced_hide_web_search_results_title">Ocultar resultados de búsqueda web</string>
<string name="revanced_hide_web_search_results_summary_on">Los resultados de búsqueda web están ocultos</string>
<string name="revanced_hide_web_search_results_summary_off">Se muestran los resultados de la búsqueda web</string>
@@ -432,7 +451,7 @@ Esta función solo está disponible para dispositivos antiguos"</string>
<string name="revanced_hide_get_premium_summary_off">Se muestran las promociones de YouTube Premium en el reproductor de vídeo</string>
</patch>
<patch id="ad.video.videoAdsPatch">
<string name="revanced_hide_video_ads_title">Ocultar anuncios de video</string>
<string name="revanced_hide_video_ads_title">Ocultar anuncios de vídeo</string>
<string name="revanced_hide_video_ads_summary_on">Los anuncios de vídeo están ocultos</string>
<string name="revanced_hide_video_ads_summary_off">Los anuncios de vídeo se muestran</string>
</patch>
@@ -463,7 +482,7 @@ Esta función solo está disponible para dispositivos antiguos"</string>
<string name="revanced_disable_chapter_skip_double_tap_summary_off">El doble toque puede ocasionalmente activar un salto al capítulo siguiente/anterior</string>
</patch>
<patch id="interaction.downloads.downloadsResourcePatch">
<string name="revanced_external_downloader_screen_title">Descargas externa</string>
<string name="revanced_external_downloader_screen_title">Descargas externas</string>
<string name="revanced_external_downloader_screen_summary">Configuración para el uso de un descargador externo</string>
<string name="revanced_external_downloader_title">Mostrar botón externo de descarga</string>
<string name="revanced_external_downloader_summary_on">Se muestra el botón de descarga en el reproductor</string>
@@ -486,7 +505,7 @@ Verifica que el nombre del paquete sea correcto y que la aplicación esté insta
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Desactivar gesto de búsqueda preciso</string>
<string name="revanced_disable_precise_seeking_gesture_summary_on">El gesto está desactivado</string>
<string name="revanced_disable_precise_seeking_gesture_summary_off">Gesto habilitado</string>
<string name="revanced_disable_precise_seeking_gesture_summary_off">Gesto activado</string>
</patch>
<patch id="interaction.seekbar.enableSeekbarTappingPatch">
<string name="revanced_seekbar_tapping_title">Habilitar tocar para buscar</string>
@@ -495,7 +514,7 @@ Verifica que el nombre del paquete sea correcto y que la aplicación esté insta
</patch>
<patch id="interaction.swipecontrols.swipeControlsResourcePatch">
<string name="revanced_swipe_brightness_title">Activar gesto de brillo</string>
<string name="revanced_swipe_brightness_summary_on">"El deslizamiento de brillo a pantalla completa está habilitado
<string name="revanced_swipe_brightness_summary_on">"El deslizamiento de brillo a pantalla completa está activado
Ajusta el brillo deslizando verticalmente en el lado izquierdo de la pantalla"</string>
<string name="revanced_swipe_brightness_summary_off">El deslizamiento de brillo a pantalla completa está desactivado</string>
@@ -584,11 +603,11 @@ Ajusta el volumen deslizando verticalmente en el lado derecho de la pantalla"</s
This button only shows on videos uploaded by the logged in user. -->
<string name="revanced_hide_hype_button_title">Ocultar Hype</string>
<string name="revanced_hide_hype_button_summary_on">El botón Hype está oculto</string>
<string name="revanced_hide_hype_button_summary_off">El botón de hype es visible</string>
<string name="revanced_hide_hype_button_summary_off">El botón de hype es visible</string>
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_promote_button_title">Ocultar pestaña \'Promocionar\'</string>
<string name="revanced_hide_promote_button_summary_on">El botón de Promocionar está oculto</string>
<string name="revanced_hide_promote_button_summary_off">El botón de Promocionar es visible</string>
<string name="revanced_hide_promote_button_summary_off">El botón de Promocionar es visible</string>
<!-- 'Thanks' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_thanks_button_title">Ocultar Gracias</string>
<string name="revanced_hide_thanks_button_summary_on">El botón de gracias está oculto</string>
@@ -633,14 +652,14 @@ Ajusta el volumen deslizando verticalmente en el lado derecho de la pantalla"</s
<string name="revanced_switch_create_with_notifications_button_title">Cambiar botón Crear con el de Notificaciones</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">"El botón Crear se cambia por el botón Notificaciones
Nota: Habilitar esto también ocultará forzosamente los anuncios de video"</string>
Nota: Habilitar esto también ocultará forzosamente los anuncios de vídeo"</string>
<string name="revanced_switch_create_with_notifications_button_summary_off">El botón Crear no se cambia con el botón de notificaciones</string>
<string name="revanced_switch_create_with_notifications_button_user_dialog_message">"Deshabilitar este ajuste también deshabilitará el bloqueo de anuncios de Shorts.
Si cambiar este ajuste no tiene efecto, intenta cambiar al modo incógnito."</string>
<string name="revanced_hide_navigation_button_labels_title">Ocultar etiquetas de navegación</string>
<string name="revanced_hide_navigation_button_labels_summary_on">Las etiquetas están ocultas</string>
<string name="revanced_hide_navigation_button_labels_summary_off">Las etiquetas están visibles</string>
<string name="revanced_hide_navigation_button_labels_summary_off">Las etiquetas son visibles</string>
<string name="revanced_disable_translucent_status_bar_title">Desactivar la barra de estado translúcida</string>
<string name="revanced_disable_translucent_status_bar_summary_on">La barra de estado es opaca</string>
<string name="revanced_disable_translucent_status_bar_summary_off">La barra de estado es opaca o translúcida</string>
@@ -669,7 +688,7 @@ Si cambiar este ajuste no tiene efecto, intenta cambiar al modo incógnito."</st
<string name="revanced_hide_player_flyout_sleep_timer_summary_off">El menú de temporizador de sueño se muestra</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">Ocultar video de bucle</string>
<string name="revanced_hide_player_flyout_loop_video_summary_on">El menú de video en bucle está oculto</string>
<string name="revanced_hide_player_flyout_loop_video_summary_on">El menú de vídeo en bucle está oculto</string>
<string name="revanced_hide_player_flyout_loop_video_summary_off">El menú de vídeo en bucle se muestra</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">Ocultar Modo ambiente</string>
@@ -702,14 +721,14 @@ Si cambiar este ajuste no tiene efecto, intenta cambiar al modo incógnito."</st
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<string name="revanced_hide_player_flyout_audio_track_not_available">"El menú de la pista de audio está oculto.
Para mostrar el menú de la pista de audio, cambia \"Suplantar transmisiones de video\" a iOS TV"</string>
El menú de la pista de audio no está disponible cuando \"Falsificar transmisiones de vídeo\" está activado"</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">Ocultar reloj en VR</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Ver en el menú VR está oculto</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_off">Ver en el menú VR se muestra</string>
<string name="revanced_hide_player_flyout_video_quality_title">Ocultar menú de calidad de vídeo</string>
<string name="revanced_hide_player_flyout_video_quality_summary_on">El menú de calidad de video está oculto</string>
<string name="revanced_hide_player_flyout_video_quality_summary_off">El menú de calidad de video es visible</string>
<string name="revanced_hide_player_flyout_video_quality_summary_on">El menú de calidad de vídeo está oculto</string>
<string name="revanced_hide_player_flyout_video_quality_summary_off">El menú de calidad de vídeo es visible</string>
<string name="revanced_hide_player_flyout_video_quality_footer_title">Ocultar pie de página del menú de calidad de vídeo</string>
<string name="revanced_hide_player_flyout_video_quality_footer_summary_on">Pie de menú de calidad de vídeo oculto</string>
<string name="revanced_hide_player_flyout_video_quality_footer_summary_off">El pie del menú de calidad de vídeo se muestra</string>
@@ -745,7 +764,7 @@ Para mostrar el menú de la pista de audio, cambia \"Suplantar transmisiones de
<patch id="layout.hide.infocards.hideInfocardsResourcePatch">
<string name="revanced_hide_info_cards_title">Ocultar tarjetas de información</string>
<string name="revanced_hide_info_cards_summary_on">Las tarjetas de información están ocultas</string>
<string name="revanced_hide_info_cards_summary_off">Las tarjetas de información están visibles</string>
<string name="revanced_hide_info_cards_summary_off">Las tarjetas de información son visibles</string>
</patch>
<patch id="layout.hide.rollingnumber.disableRollingNumberAnimationPatch">
<string name="revanced_disable_rolling_number_animations_title">Desactivar animaciones de número de rodamiento</string>
@@ -759,7 +778,7 @@ Para mostrar el menú de la pista de audio, cambia \"Suplantar transmisiones de
<!-- Seekbar shown inside video thumbnails found the home/feed/search/history. The seekbar shows the prior watch progress when the video was last open. -->
<string name="revanced_hide_seekbar_thumbnail_title">Ocultar barra de búsqueda de miniaturas de vídeo</string>
<string name="revanced_hide_seekbar_thumbnail_summary_on">La barra de búsqueda de miniaturas de vídeo está oculta</string>
<string name="revanced_hide_seekbar_thumbnail_summary_off">La barra de búsqueda de miniaturas de vídeo es visible</string>
<string name="revanced_hide_seekbar_thumbnail_summary_off">La barra de búsqueda de miniaturas de vídeo es visible</string>
</patch>
<patch id="layout.hide.shorts.hideShortsComponentsResourcePatch">
<string name="revanced_shorts_player_screen_title">Reproductor de Shorts</string>
@@ -780,10 +799,10 @@ Para mostrar el menú de la pista de audio, cambia \"Suplantar transmisiones de
<string name="revanced_hide_shorts_history_summary_off">Mostrado en el historial de visualización</string>
<string name="revanced_hide_shorts_super_thanks_button_title">Ocultar el botón Comprar Súper Gracias</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_on">El botón Comprar Super Thanks está oculto</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_off">El botón Comprar Super Thanks es visible</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_off">El botón Comprar Super Thanks es visible</string>
<string name="revanced_hide_shorts_effect_button_title">Ocultar botón de efecto</string>
<string name="revanced_hide_shorts_effect_button_summary_on">El botón de efecto está oculto</string>
<string name="revanced_hide_shorts_effect_button_summary_off">El botón de efecto es visible</string>
<string name="revanced_hide_shorts_effect_button_summary_off">El botón de efecto es visible</string>
<string name="revanced_hide_shorts_green_screen_button_title">Ocultar el botón Pantalla verde</string>
<string name="revanced_hide_shorts_green_screen_button_summary_on">El botón verde de pantalla está oculto</string>
<string name="revanced_hide_shorts_green_screen_button_summary_off">Se muestra el botón verde de pantalla</string>
@@ -829,7 +848,7 @@ Para mostrar el menú de la pista de audio, cambia \"Suplantar transmisiones de
<string name="revanced_hide_shorts_upcoming_button_summary_off">Se muestra el botón próximo</string>
<string name="revanced_hide_shorts_use_sound_button_title">Ocultar el botón Usar este sonido</string>
<string name="revanced_hide_shorts_use_sound_button_summary_on">El botón Usar este sonido está oculto</string>
<string name="revanced_hide_shorts_use_sound_button_summary_off">El botón Usar este sonido es visible</string>
<string name="revanced_hide_shorts_use_sound_button_summary_off">El botón Usar este sonido es visible</string>
<string name="revanced_hide_shorts_use_template_button_title">Ocultar botón Usar esta plantilla</string>
<string name="revanced_hide_shorts_use_template_button_summary_on">El botón Usar esta plantilla está oculto</string>
<string name="revanced_hide_shorts_use_template_button_summary_off">El botón Usar esta plantilla se muestra</string>
@@ -864,16 +883,16 @@ Para mostrar el menú de la pista de audio, cambia \"Suplantar transmisiones de
<string name="revanced_hide_shorts_channel_bar_summary_off">Barra de canales mostrada</string>
<string name="revanced_hide_shorts_video_title_title">Ocultar título de vídeo</string>
<string name="revanced_hide_shorts_video_title_summary_on">El título del vídeo está oculto</string>
<string name="revanced_hide_shorts_video_title_summary_off">El título del vídeo es visible</string>
<string name="revanced_hide_shorts_video_title_summary_off">El título del vídeo es visible</string>
<string name="revanced_hide_shorts_sound_metadata_label_title">Ocultar etiqueta de metadatos de sonido</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_on">La etiqueta de metadatos de sonido está oculta</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_off">La etiqueta de metadatos de sonido es visible</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_off">La etiqueta de metadatos de sonido es visible</string>
<string name="revanced_hide_shorts_full_video_link_label_title">Ocultar la etiqueta del enlace del video</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_on">Etiqueta de enlace de vídeo oculto</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_off">Etiqueta de enlace de vídeo mostrada</string>
<string name="revanced_hide_shorts_navigation_bar_title">Ocultar barra de navegación</string>
<string name="revanced_hide_shorts_navigation_bar_summary_on">La barra de navegación está oculta</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">La barra de navegación es visible</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">La barra de navegación es visible</string>
</patch>
<patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
<string name="revanced_end_screen_suggested_video_title">Ocultar el vídeo sugerido de la pantalla final</string>
@@ -886,7 +905,7 @@ Configuración → Reproducción → Reproducir el siguiente vídeo automáticam
<patch id="layout.hide.relatedvideooverlay.hideRelatedVideoOverlayPatch">
<string name="revanced_hide_related_videos_overlay_title">Ocultar la superposición de vídeos relacionados</string>
<string name="revanced_hide_related_videos_overlay_summary_on">La superposición de vídeos relacionados en pantalla completa está oculta</string>
<string name="revanced_hide_related_videos_overlay_summary_off">La superposición de vídeos relacionados en pantalla completa es visible</string>
<string name="revanced_hide_related_videos_overlay_summary_off">La superposición de vídeos relacionados en pantalla completa es visible</string>
</patch>
<patch id="layout.hide.time.hideTimestampPatch">
<string name="revanced_hide_timestamp_title">Ocultar fecha y hora de vídeo</string>
@@ -894,9 +913,9 @@ Configuración → Reproducción → Reproducir el siguiente vídeo automáticam
<string name="revanced_hide_timestamp_summary_off">Marca de tiempo mostrada</string>
</patch>
<patch id="layout.panels.popup.playerPopupPanelsPatch">
<string name="revanced_hide_player_popup_panels_title">Ocultar paneles emergentes del jugador</string>
<string name="revanced_hide_player_popup_panels_summary_on">Los paneles emergentes del jugador están ocultos</string>
<string name="revanced_hide_player_popup_panels_summary_off">Se muestran paneles emergentes del jugador</string>
<string name="revanced_hide_player_popup_panels_title">Ocultar paneles emergentes del reproductor</string>
<string name="revanced_hide_player_popup_panels_summary_on">Los paneles emergentes del reproductor están ocultos</string>
<string name="revanced_hide_player_popup_panels_summary_off">Se muestran paneles emergentes del reproductor</string>
</patch>
<patch id="layout.player.fullscreen.exitFullscreenPatch">
<string name="revanced_exit_fullscreen_title">Salir del modo de pantalla completa al final del vídeo</string>
@@ -908,10 +927,10 @@ Configuración → Reproducción → Reproducir el siguiente vídeo automáticam
<patch id="layout.player.fullscreen.openVideosFullscreen">
<string name="revanced_open_videos_fullscreen_portrait_title">Abrir vídeos en el retrato de pantalla completa</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_on">Videos abiertos a pantalla completa</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_off">Los videos no se abren en pantalla completa</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_off">Los vídeos no se abren en pantalla completa</string>
</patch>
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
<string name="revanced_player_overlay_opacity_title">Opacidad de superposición del jugador</string>
<string name="revanced_player_overlay_opacity_title">Opacidad de superposición del reproductor</string>
<string name="revanced_player_overlay_opacity_summary">Valor de potencia entre 0-100, donde 0 es transparente</string>
<string name="revanced_player_overlay_opacity_invalid_toast">Opacidad del reproductor debe estar entre 0 y 100</string>
</patch>
@@ -967,7 +986,7 @@ Limitación: Es posible que los Dislikes no aparezcan en el modo de incógnito"<
<patch id="layout.searchbar.wideSearchbarPatch">
<string name="revanced_wide_searchbar_title">Habilitar barra de búsqueda ancha</string>
<string name="revanced_wide_searchbar_summary_on">Barra de búsqueda ancha habilitada</string>
<string name="revanced_wide_searchbar_summary_off">Barra de búsqueda ancha desactivada</string>
<string name="revanced_wide_searchbar_summary_off">La barra de búsqueda ancha está desactivada</string>
</patch>
<patch id="layout.seekbar.seekbarThumbnailsPatch">
<string name="revanced_seekbar_thumbnails_high_quality_title">Habilitar miniaturas de alta calidad</string>
@@ -984,7 +1003,7 @@ Esta función funciona mejor con una calidad de vídeo de 720p o inferior y cuan
</patch>
<patch id="layout.sponsorblock.sponsorBlockResourcePatch">
<string name="revanced_sb_enable_sb">Activar SponsorBlock</string>
<string name="revanced_sb_enable_sb_sum">SponsorBlock es un sistema de colaboración abierta para omitir partes molestas de los videos de YouTube</string>
<string name="revanced_sb_enable_sb_sum">SponsorBlock es un sistema de colaboración abierta para omitir partes molestas de los vídeos de YouTube</string>
<string name="revanced_sb_appearance_category">Apariencia</string>
<string name="revanced_sb_enable_voting">Mostrar botón de voto</string>
<string name="revanced_sb_enable_voting_sum_on">Se muestra el botón de voto del segmento</string>
@@ -1038,7 +1057,7 @@ Esta función funciona mejor con una calidad de vídeo de 720p o inferior y cuan
<string name="revanced_sb_toast_on_connection_error_summary_off">Toast no se muestra si SponsorBlock no está disponible</string>
<string name="revanced_sb_general_skipcount">Habilitar rastreo del conteo de saltos</string>
<string name="revanced_sb_general_skipcount_sum_on">Permite que la tabla de clasificación de SponsorBlock sepa cuánto tiempo se ha ahorrado. Un mensaje se envía al tablero de clasificación cada vez que se omite un segmento</string>
<string name="revanced_sb_general_skipcount_sum_off">El rastreo del conteo de saltos no está habilitado</string>
<string name="revanced_sb_general_skipcount_sum_off">El rastreo del conteo de saltos no está activado</string>
<string name="revanced_sb_general_min_duration">Duración mínima del segmento</string>
<string name="revanced_sb_general_min_duration_sum">Los segmentos más cortos que este valor (en segundos) no se mostrarán o se omitirán</string>
<string name="revanced_sb_general_min_duration_invalid">Duración de tiempo no válida</string>
@@ -1201,7 +1220,7 @@ Diseño para automóviles
• El feed está organizado por temas y canales"</string>
</patch>
<patch id="layout.spoofappversion.spoofAppVersionPatch">
<string name="revanced_spoof_app_version_title">Versión de la aplicación Spoof</string>
<string name="revanced_spoof_app_version_title">Versión de la aplicación falseada</string>
<string name="revanced_spoof_app_version_summary_on">Versión falseada</string>
<string name="revanced_spoof_app_version_summary_off">Versión no falseada</string>
<string name="revanced_spoof_app_version_user_dialog_message">"La versión de la aplicación se falsificará a una versión anterior de YouTube.
@@ -1209,7 +1228,7 @@ Diseño para automóviles
Esto cambiará la apariencia y las características de la aplicación, pero pueden producirse efectos secundarios desconocidos.
Si se desactiva posteriormente, se recomienda borrar los datos de la aplicación para evitar errores en la interfaz de usuario."</string>
<string name="revanced_spoof_app_version_target_title">Versión de aplicación falsa de destino</string>
<string name="revanced_spoof_app_version_target_title">Versión objetiva de aplicación falsificada</string>
<string name="revanced_spoof_app_version_target_entry_1">19.35.36 - Restaurar iconos antiguos del reproductor de Shorts</string>
<string name="revanced_spoof_app_version_target_entry_2">19.01.34 - Restaurar iconos de navegación antiguos</string>
</patch>
@@ -1357,7 +1376,7 @@ Habilitar esto puede solucionar las imágenes que faltan que están bloqueadas e
<string name="revanced_alt_thumbnail_options_entry_4">Sigue capturando</string>
<string name="revanced_alt_thumbnail_dearrow_about_summary">"DeArrow proporciona miniaturas de vídeos de YouTube obtenidas mediante crowdsourcing. Estas miniaturas suelen ser más relevantes que las que proporciona YouTube
Si está habilitado, las URL de los vídeos se enviarán al servidor de la API y no se envían otros datos. Si un vídeo no tiene miniaturas de DeArrow, se mostrarán las originales o las capturas fijas
Si está activado, las URL de los vídeos se enviarán al servidor de la API y no se envían otros datos. Si un vídeo no tiene miniaturas de DeArrow, se mostrarán las originales o las capturas fijas
Toca aquí para obtener más información sobre DeArrow"</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_title">Mostrar un brindis si la API no está disponible</string>
@@ -1406,10 +1425,6 @@ Es posible que se desbloqueen calidades de vídeo más altas, pero es posible qu
Habilitar esto puede desbloquear calidades de vídeo más altas"</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">Activar esto puede causar retraso en la reproducción de vídeo, peor duración de la batería y efectos secundarios desconocidos.</string>
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">Ajustes de GmsCore</string>
<string name="microg_settings_summary">Configuración de GmsCore</string>
</patch>
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
<string name="revanced_disable_haptic_feedback_title">Vibración háptica</string>
<string name="revanced_disable_haptic_feedback_summary">Cambiar la vibración háptica</string>
@@ -1449,7 +1464,7 @@ Habilitar esto puede desbloquear calidades de vídeo más altas"</string>
<string name="revanced_force_original_audio_summary_on">Usar el idioma de audio original</string>
<string name="revanced_force_original_audio_summary_off">Utilizando audio predeterminado</string>
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<string name="revanced_force_original_audio_not_available">Para usar esta función, cambia \"Suplantar transmisiones de video\" a iOS TV</string>
<string name="revanced_force_original_audio_not_available">Para usar esta función, cambia \"Falsificar transmisiones de vídeo\" a iOS TV</string>
</patch>
<patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as 'revanced_custom_playback_speeds_auto'. -->
@@ -1457,9 +1472,9 @@ Habilitar esto puede desbloquear calidades de vídeo más altas"</string>
<string name="revanced_remember_video_quality_last_selected_title">Recordar cambios de calidad de vídeo</string>
<string name="revanced_remember_video_quality_last_selected_summary_on">Los cambios de calidad se aplican a todos los vídeos</string>
<string name="revanced_remember_video_quality_last_selected_summary_off">Los cambios de calidad sólo se aplican al vídeo actual</string>
<string name="revanced_remember_video_quality_last_selected_toast_title">Mostrar notificación al cambiar la calidad de video</string>
<string name="revanced_remember_video_quality_last_selected_toast_summary_on">Se muestra una notificación cuando se cambia la calidad de video predeterminada</string>
<string name="revanced_remember_video_quality_last_selected_toast_summary_off">No se muestra una notificación cuando se cambia la calidad de video predeterminada</string>
<string name="revanced_remember_video_quality_last_selected_toast_title">Mostrar notificación al cambiar la calidad de vídeo</string>
<string name="revanced_remember_video_quality_last_selected_toast_summary_on">Se muestra una notificación cuando se cambia la calidad de vídeo predeterminada</string>
<string name="revanced_remember_video_quality_last_selected_toast_summary_off">No se muestra una notificación cuando se cambia la calidad de vídeo predeterminada</string>
<string name="revanced_video_quality_default_wifi_title">Calidad de vídeo predeterminada en la red Wi-Fi</string>
<string name="revanced_video_quality_default_mobile_title">Calidad de vídeo predeterminada en la red móvil</string>
<string name="revanced_remember_shorts_quality_last_selected_title">Recordar cambios en la calidad de Shorts</string>
@@ -1478,14 +1493,14 @@ Habilitar esto puede desbloquear calidades de vídeo más altas"</string>
<string name="revanced_playback_speed_dialog_button_summary_off">El botón no se muestra</string>
</patch>
<patch id="video.quality.button.videoQualityDialogButtonPatch">
<string name="revanced_video_quality_dialog_button_title">Mostrar botón de calidad de video</string>
<string name="revanced_video_quality_dialog_button_title">Mostrar botón de calidad de vídeo</string>
<string name="revanced_video_quality_dialog_button_summary_on">Botón visible. Toca y mantén para restablecer la calidad a los valores predeterminados</string>
<string name="revanced_video_quality_dialog_button_summary_off">Botón no visible</string>
</patch>
<patch id="video.speed.custom.customPlaybackSpeedPatch">
<string name="revanced_custom_speed_menu_title">Menú de velocidad de reproducción personalizada</string>
<string name="revanced_custom_speed_menu_summary_on">Menú de velocidad personalizado se muestra</string>
<string name="revanced_custom_speed_menu_summary_off">Menú de velocidad personalizado no se muestra</string>
<string name="revanced_custom_speed_menu_summary_on">El menú de velocidad personalizada se muestra</string>
<string name="revanced_custom_speed_menu_summary_off">El menú de velocidad personalizada no se muestra</string>
<string name="revanced_restore_old_speed_menu_title">Restaurar el menú de velocidad de reproducción antiguo</string>
<string name="revanced_restore_old_speed_menu_summary_on">Se muestra el menú de velocidad antiguo</string>
<string name="revanced_restore_old_speed_menu_summary_off">Se muestra el menú de velocidad moderno</string>
@@ -1520,38 +1535,54 @@ Habilitar esto puede desbloquear calidades de vídeo más altas"</string>
<patch id="interaction.seekbar.enableSlideToSeekPatch">
<string name="revanced_slide_to_seek_title">Habilitar diapositiva para buscar</string>
<string name="revanced_slide_to_seek_summary_on">Deslizar para buscar está activado</string>
<string name="revanced_slide_to_seek_summary_off">Slide to seek no está habilitado</string>
<string name="revanced_slide_to_seek_summary_off">Slide to seek no está activado</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Falsificación del stream de vídeo</string>
<string name="revanced_spoof_video_streams_screen_summary">Falsifica el stream de vídeo del cliente para evitar problemas de reproducción</string>
<string name="revanced_spoof_video_streams_title">Falsificación del stream de vídeo</string>
<string name="revanced_spoof_video_streams_summary_on">El stream de vídeo está falsificado</string>
<string name="revanced_spoof_video_streams_summary_off">"Las transmisiones de vídeo no están falsificadas
Es posible que la reproducción de vídeo no funcione"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Desactivar esta configuración puede causar problemas de reproducción de vídeo.</string>
<string name="revanced_spoof_video_streams_client_type_title">Cliente por defecto</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Forzar iOS AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">El códec de video se fuerza a AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">El códec de video se determina automáticamente</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"Habilitar esto puede mejorar la duración de la batería y solucionar el tartamudeo de la reproducción.
AVC tiene una resolución máxima de 1080p, el códec de audio Opus no está disponible y la reproducción de video utilizará más datos de Internet que VP9 o AV1."</string>
<string name="revanced_spoof_video_streams_about_ios_tv_title">Efectos secundarios de la suplantación de iOS</string>
<string name="revanced_spoof_video_streams_about_ios_tv_summary">"• Es posible que las películas o los videos pagos no se reproduzcan
• El volumen estable no está disponible
• Los videos terminan 1 segundo antes"</string>
<string name="revanced_spoof_video_streams_about_android_title">Efectos secundarios de la suplantación de Android</string>
<string name="revanced_spoof_video_streams_about_title">Efectos secundarios de la falsificación</string>
<string name="revanced_spoof_video_streams_about_android_title">Efectos secundarios de la falsificación de Android</string>
<string name="revanced_spoof_video_streams_about_android_summary">"• Falta el menú de la pista de audio
• El volumen estable no está disponible
• Forzar el audio original no está disponible"</string>
<string name="revanced_spoof_video_streams_about_no_av1">No AV1 códec de vídeo</string>
<string name="revanced_spoof_video_streams_about_kids_videos">• Es posible que los videos infantiles no se reproduzcan cuando se cierra la sesión o se está en modo incógnito</string>
• El volumen estable no está disponible"</string>
<string name="revanced_spoof_video_streams_about_experimental">• El cliente es experimental y puede dejar de funcionar en cualquier momento</string>
<string name="revanced_spoof_video_streams_about_no_av1">Sin códec de vídeo AV1</string>
<string name="revanced_spoof_video_streams_about_kids_videos">• Es posible que los vídeos infantiles no se reproduzcan cuando se cierra la sesión o se está en modo incógnito</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">Mostrar en Estadísticas para nerds</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_on">El tipo de cliente se muestra en Estadísticas para nerds</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_off">El cliente está oculto en Estadísticas para nerds</string>
<string name="revanced_spoof_video_streams_language_title">Idioma de la transmisión de audio por defecto de VR</string>
<string name="revanced_spoof_video_streams_language_title">Idioma de la transmisión de audio</string>
</patch>
</app>
<app id="music">
<patch id="misc.settings.settingsPatch">
<string name="revanced_settings_music_screen_0_about_title">Acerca de</string>
<string name="revanced_settings_music_screen_1_ads_title">Anuncios</string>
<string name="revanced_settings_music_screen_2_general_title">General</string>
<string name="revanced_settings_music_screen_3_player_title">Reproductor</string>
<string name="revanced_settings_music_screen_4_misc_title">Otros</string>
</patch>
<patch id="ad.video.hideVideoAdsPatch">
<string name="revanced_music_hide_video_ads_title">Ocultar anuncios de vídeo</string>
<string name="revanced_music_hide_video_ads_summary_on">Los anuncios de video están ocultos</string>
<string name="revanced_music_hide_video_ads_summary_off">Los anuncios de video son visibles</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
<string name="revanced_music_play_permanent_repeat_title">Habilitar repetición permanente</string>
<string name="revanced_music_play_permanent_repeat_summary_on">La repetición permanente está habilitada</string>
<string name="revanced_music_play_permanent_repeat_summary_off">La repetición permanente está deshabilitada</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Ocultar barra de categorías</string>
<string name="revanced_music_hide_category_bar_summary_on">La barra de categorías está oculta</string>
<string name="revanced_music_hide_category_bar_summary_off">La barra de categorías es visible</string>
</patch>
<patch id="layout.premium.hideGetPremiumPatch">
<string name="revanced_music_hide_get_premium_label_title">Ocultar la etiqueta \'Obtener Music Premium\'</string>
<string name="revanced_music_hide_get_premium_label_summary_on">La etiqueta está oculta</string>
<string name="revanced_music_hide_get_premium_label_summary_off">La etiqueta es visible</string>
</patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
<string name="revanced_music_hide_upgrade_button_title">Ocultar botón de actualización</string>
<string name="revanced_music_hide_upgrade_button_summary_on">El botón está oculto</string>
<string name="revanced_music_hide_upgrade_button_summary_off">El botón es visible</string>
</patch>
</app>
<app id="twitch">
@@ -1588,7 +1619,7 @@ AVC tiene una resolución máxima de 1080p, el códec de audio Opus no está dis
<patch id="debug.debugModePatch">
<!-- Twitch specific internal debug mode, and not the same as 'revanced_debug_title'. -->
<string name="revanced_twitch_debug_mode_title">Activar modo de depuración de Twitch</string>
<string name="revanced_twitch_debug_mode_summary_on">El modo de depuración de Twitch está habilitado (no recomendado)</string>
<string name="revanced_twitch_debug_mode_summary_on">El modo de depuración de Twitch está activado (no recomendado)</string>
<string name="revanced_twitch_debug_mode_summary_off">El modo de depuración de Twitch está desactivado</string>
</patch>
<patch id="misc.settings.settingsPatch">

View File

@@ -68,6 +68,8 @@ Uute keelte tõlkimiseks külastage saiti translate.revanced.app"</string>
and changes made here must also be made there. -->
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">GmsCore seaded</string>
<string name="microg_settings_summary">GmsCore seaded</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="gms_core_toast_not_installed_message">MicroG GmsCore pole installitud. Installi see.</string>
<string name="gms_core_dialog_title">Tegevus on vajalik</string>
@@ -84,6 +86,37 @@ MicroG aku optimeerimise keelamine ei mõjuta aku kestvust negatiivselt.
Vajutage jätkamise nuppu ja lubage optimeerimismuutused."</string>
<string name="gms_core_dialog_continue_text">Jätka</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Võltsitud video voogedastused</string>
<string name="revanced_spoof_video_streams_screen_summary">Võltsitud kliendi video voogedastused, et vältida taasesituse probleeme</string>
<string name="revanced_spoof_video_streams_screen_title">Võltsitud videovood</string>
<string name="revanced_spoof_video_streams_screen_summary">Kliendi videovoogude võltsimine taasesitusprobleemide vältimiseks</string>
<string name="revanced_spoof_video_streams_title">Võltsitud video voogedastused</string>
<string name="revanced_spoof_video_streams_summary_on">"Videovood on võltsitud
Kui olete YouTube Premiumi kasutaja, ei pruugi see säte vajalik olla"</string>
<string name="revanced_spoof_video_streams_summary_off">"Videovooge ei võltsita
Taasesitus ei pruugi töötada"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Selle sätte väljalülitamine võib põhjustada taasesitusprobleeme.</string>
<string name="revanced_spoof_video_streams_client_type_title">Vaikimisi klient</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Veaotsing</string>
<string name="revanced_debug_screen_summary">Veaotsinguvalikud lubamiseks või keelamiseks</string>
<string name="revanced_debug_title">Veaotsingulogimine</string>
<string name="revanced_debug_summary_on">Veaotsingulogimine on lubatud</string>
<string name="revanced_debug_summary_off">Vea logid on keelatud</string>
<string name="revanced_debug_export_logs_to_clipboard_title">Ekspordi silumislogid</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">Kopeerib ReVanced silumislogid lõikelauale</string>
<string name="revanced_debug_logs_disabled">Silumislogimine on keelatud</string>
<string name="revanced_debug_logs_none_found">Logisid ei leitud</string>
<string name="revanced_debug_logs_copied_to_clipboard">Logid kopeeritud</string>
<string name="revanced_debug_logs_failed_to_export">Logide eksportimine ebaõnnestus: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Puhasta silumislogid</string>
<string name="revanced_debug_logs_clear_buffer_summary">Puhastab kõik salvestatud ReVanced silumislogid</string>
<string name="revanced_debug_logs_clear_toast">Logid puhastatud</string>
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
@@ -110,11 +143,6 @@ Vajutage jätkamise nuppu ja lubage optimeerimismuutused."</string>
<string name="revanced_shorts_disable_background_playback_summary_off">Lühivideod taasesitus taustal on lubatud</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Veaotsing</string>
<string name="revanced_debug_screen_summary">Veaotsinguvalikud lubamiseks või keelamiseks</string>
<string name="revanced_debug_title">Veaotsingulogimine</string>
<string name="revanced_debug_summary_on">Veaotsingulogimine on lubatud</string>
<string name="revanced_debug_summary_off">Vea logid on keelatud</string>
<string name="revanced_debug_protobuffer_title">Logi protokolipuffari</string>
<string name="revanced_debug_protobuffer_summary_on">Vea logid sisaldavad protokolipuffari</string>
<string name="revanced_debug_protobuffer_summary_off">Vea logid ei sisalda protokolipuffari</string>
@@ -132,15 +160,6 @@ Selle lubamine logib aga ka mõningaid kasutajaandmeid, näiteks teie IP-aadress
<string name="revanced_debug_toast_on_error_user_dialog_message">"Vea teadete väljalülitamine peidab kõik ReVanced i veateadete märguanded.
Teid ei teavitata ühestki ootamatust sündmusest."</string>
<string name="revanced_debug_export_logs_to_clipboard_title">Ekspordi silumislogid</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">Kopeerib ReVanced silumislogid lõikelauale</string>
<string name="revanced_debug_logs_disabled">Silumislogimine on keelatud</string>
<string name="revanced_debug_logs_none_found">Logisid ei leitud</string>
<string name="revanced_debug_logs_copied_to_clipboard">Logid kopeeritud</string>
<string name="revanced_debug_logs_failed_to_export">Logide eksportimine ebaõnnestus: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Puhasta silumislogid</string>
<string name="revanced_debug_logs_clear_buffer_summary">Puhastab kõik salvestatud ReVanced silumislogid</string>
<string name="revanced_debug_logs_clear_toast">Logid puhastatud</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_hide_album_cards_title">Peida albumikaardid</string>
@@ -702,7 +721,7 @@ Kui selle sätte muutmine ei avalda mõju, proovige lülituda Inkognito režiimi
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<string name="revanced_hide_player_flyout_audio_track_not_available">"Heliriba menüü on peidetud
Heliriba menüü kuvamiseks muutke valikut „Võltsitud videovoogedastus“ väärtuseks iOS TV"</string>
Heliriba menüü pole saadaval, kui \"Videovoogude võltsimine\" on lubatud"</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">Peida Vaata VR-is</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Vaata VR-is menüü on peidetud</string>
@@ -1415,10 +1434,6 @@ Võib avada kõrgema video kvaliteedi, kuid see võib põhjustada video taasesit
Selle lubamine võib avada kõrgema video kvaliteedi"</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">Selle funktsiooni lubamine võib põhjustada videote taasesituse häireid, kehvema aku kestvuse ja tundmatud kõrvalmõjud.</string>
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">GmsCore seaded</string>
<string name="microg_settings_summary">GmsCore seaded</string>
</patch>
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
<string name="revanced_disable_haptic_feedback_title">Haptiline tagasiside</string>
<string name="revanced_disable_haptic_feedback_summary">Muuda haptilist tagasisidet</string>
@@ -1532,35 +1547,51 @@ Selle lubamine võib avada kõrgema video kvaliteedi"</string>
<string name="revanced_slide_to_seek_summary_off">Libistamine otsimiseks on keelatud</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Võltsitud video voogedastused</string>
<string name="revanced_spoof_video_streams_screen_summary">Võltsitud kliendi video voogedastused, et vältida taasesituse probleeme</string>
<string name="revanced_spoof_video_streams_title">Võltsitud video voogedastused</string>
<string name="revanced_spoof_video_streams_summary_on">Video voogedastused on võltsitud</string>
<string name="revanced_spoof_video_streams_summary_off">"Video vooge ei võltsita
Video taasesitus ei pruugi toimida"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Selle seade keelamine võib põhjustada videote taasesituse probleeme.</string>
<string name="revanced_spoof_video_streams_client_type_title">Vaikimisi klient</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Sunnitud iOS AVC (H.264) kodek</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Video kodek on sunnitud AVC (H.264) kodeki</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Video kodek määratakse automaatselt</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"Funktsiooni sisselülitamine võib parandada aku kestvust ja videotaasesituse katkemist.
AVC-l on maksimaalne eraldusvõime 1080p, Opus-i heli kodek pole saadaval ning video taasesitus kasutab rohkem internetiandmeid kui VP9 või AV1."</string>
<string name="revanced_spoof_video_streams_about_ios_tv_title">iOS-i videovoogude võltsimine</string>
<string name="revanced_spoof_video_streams_about_ios_tv_summary">"• Filmid või tasulised videod ei pruugi taasesitada
• Stabiilne helitugevus pole saadaval
• Videod lõpevad 1 sekund varem"</string>
<string name="revanced_spoof_video_streams_about_title">Võltsimise kõrvalmõjud</string>
<string name="revanced_spoof_video_streams_about_android_title">Androidi pettuse kõrvalmõjud</string>
<string name="revanced_spoof_video_streams_about_android_summary">"• Heliraja menüü puudub
• Stabiilset helitugevust pole saadaval
• Sunnitud originaalheli pole saadaval"</string>
<string name="revanced_spoof_video_streams_about_android_summary">"• Heliriba menüü puudub
• Stabiilne helitugevus pole saadaval"</string>
<string name="revanced_spoof_video_streams_about_experimental">• Eksperimentaalne klient ja võib igal ajal töötamast lakata</string>
<string name="revanced_spoof_video_streams_about_no_av1">• Puuduv AV1 videokoodek</string>
<string name="revanced_spoof_video_streams_about_kids_videos">• Video lastele ei pruugi taasesitada, kui olete välja logitud või inkognito režiimis</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">Kuva statistikas \"Nerdide jaoks\"</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_on">Klienditüüp on statistikas \"Nerdide jaoks\" nähtav</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_off">Klient on statistikas \"Nerdide jaoks\" peidetud</string>
<string name="revanced_spoof_video_streams_language_title">VR vaikeväärtus heli voo keelele</string>
<string name="revanced_spoof_video_streams_language_title">Helivoo keel</string>
</patch>
</app>
<app id="music">
<patch id="misc.settings.settingsPatch">
<string name="revanced_settings_music_screen_0_about_title">Teave</string>
<string name="revanced_settings_music_screen_1_ads_title">Reklaamid</string>
<string name="revanced_settings_music_screen_2_general_title">Üldine</string>
<string name="revanced_settings_music_screen_3_player_title">Mängija</string>
<string name="revanced_settings_music_screen_4_misc_title">Muu</string>
</patch>
<patch id="ad.video.hideVideoAdsPatch">
<string name="revanced_music_hide_video_ads_title">Peida videoreklaamid</string>
<string name="revanced_music_hide_video_ads_summary_on">Videoreklaamid on peidetud</string>
<string name="revanced_music_hide_video_ads_summary_off">Videoreklaamid on nähtaval</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
<string name="revanced_music_play_permanent_repeat_title">Luba püsiv kordus</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Püsiv kordus on lubatud</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Püsiv kordus on keelatud</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Peida kategooriariba</string>
<string name="revanced_music_hide_category_bar_summary_on">Kategooriariba on peidetud</string>
<string name="revanced_music_hide_category_bar_summary_off">Kategooriariba on nähtaval</string>
</patch>
<patch id="layout.premium.hideGetPremiumPatch">
<string name="revanced_music_hide_get_premium_label_title">Peida sildike \"Hangi Music Premium\"</string>
<string name="revanced_music_hide_get_premium_label_summary_on">Silt on peidetud</string>
<string name="revanced_music_hide_get_premium_label_summary_off">Silt on nähtaval</string>
</patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
<string name="revanced_music_hide_upgrade_button_title">Peida uuendamise nupp</string>
<string name="revanced_music_hide_upgrade_button_summary_on">Nupp on peidetud</string>
<string name="revanced_music_hide_upgrade_button_summary_off">Nupp on nähtaval</string>
</patch>
</app>
<app id="twitch">

View File

@@ -30,6 +30,10 @@ Second \"item\" text"</string>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
@@ -207,8 +211,6 @@ Second \"item\" text"</string>
</patch>
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
</patch>
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
</patch>
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
@@ -242,6 +244,20 @@ Second \"item\" text"</string>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
</patch>
</app>
<app id="music">
<patch id="misc.settings.settingsPatch">
</patch>
<patch id="ad.video.hideVideoAdsPatch">
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch>
<patch id="layout.compactheader.hideCategoryBar">
</patch>
<patch id="layout.premium.hideGetPremiumPatch">
</patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
</patch>
</app>
<app id="twitch">
<patch id="ad.audio.audioAdsPatch">
</patch>

View File

@@ -65,6 +65,15 @@ Second \"item\" text"</string>
<string name="gms_core_dialog_open_website_text">باز کردن تارنما</string>
<string name="gms_core_dialog_continue_text">ادامه</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">عیب‌یابی</string>
<string name="revanced_debug_screen_summary">فعال یا غیرفعال کردن گزینه‌های عیب یابی</string>
<string name="revanced_debug_title">گزارش عیب</string>
<string name="revanced_debug_summary_on">لاگ عیب فعال است</string>
<string name="revanced_debug_summary_off">لاگ عیب غیرفعال است</string>
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
@@ -77,11 +86,6 @@ Second \"item\" text"</string>
<patch id="misc.backgroundplayback.backgroundPlaybackPatch">
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">عیب‌یابی</string>
<string name="revanced_debug_screen_summary">فعال یا غیرفعال کردن گزینه‌های عیب یابی</string>
<string name="revanced_debug_title">گزارش عیب</string>
<string name="revanced_debug_summary_on">لاگ عیب فعال است</string>
<string name="revanced_debug_summary_off">لاگ عیب غیرفعال است</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<!-- 'Notify me' should be translated using the same localized wording YouTube displays.
@@ -257,8 +261,6 @@ Second \"item\" text"</string>
</patch>
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
</patch>
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
</patch>
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
@@ -292,6 +294,20 @@ Second \"item\" text"</string>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
</patch>
</app>
<app id="music">
<patch id="misc.settings.settingsPatch">
</patch>
<patch id="ad.video.hideVideoAdsPatch">
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch>
<patch id="layout.compactheader.hideCategoryBar">
</patch>
<patch id="layout.premium.hideGetPremiumPatch">
</patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
</patch>
</app>
<app id="twitch">
<patch id="ad.audio.audioAdsPatch">
</patch>

View File

@@ -68,6 +68,8 @@ Voit auttaa uusien kielten kääntämisessä osoitteessa translate.revanced.app"
and changes made here must also be made there. -->
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">GmsCore-asetukset</string>
<string name="microg_settings_summary">GmsCoren asetukset</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="gms_core_toast_not_installed_message">MicroG GmsCorea ei ole asennettu. Asenna se.</string>
<string name="gms_core_dialog_title">Vaatii toimenpiteitä</string>
@@ -84,6 +86,37 @@ MicroG:n akun optimointien poistaminen käytöstä ei vaikuta akun käyttöön n
Napauta jatka-painiketta ja salli optimoinnin muutokset."</string>
<string name="gms_core_dialog_continue_text">Jatka</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Naamioi videovirrat</string>
<string name="revanced_spoof_video_streams_screen_summary">Naamioi asiakasohjelman videovirrat toisto-ongelmien estämiseksi</string>
<string name="revanced_spoof_video_streams_screen_title">Väärennä videovirrat</string>
<string name="revanced_spoof_video_streams_screen_summary">Väärennä asiakkaan videovirrat estääksesi toisto-ongelmat</string>
<string name="revanced_spoof_video_streams_title">Naamioi videovirrat</string>
<string name="revanced_spoof_video_streams_summary_on">"Videovirrat on väärennetty
Jos olet YouTube Premium -käyttäjä, tätä asetusta ei välttämättä tarvita"</string>
<string name="revanced_spoof_video_streams_summary_off">"Videovirtoja ei väärennetä
Toisto ei ehkä toimi"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Tämän asetuksen poistaminen käytöstä voi aiheuttaa toisto-ongelmia.</string>
<string name="revanced_spoof_video_streams_client_type_title">Oletusasiakasohjelma</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Virheenkorjaus</string>
<string name="revanced_debug_screen_summary">Ota tai poista virheenkorjausasetukset käytöstä</string>
<string name="revanced_debug_title">Virheenkorjauksen kirjaaminen</string>
<string name="revanced_debug_summary_on">Virheenkorjauslokit ovat käytössä</string>
<string name="revanced_debug_summary_off">Virheenkorjauslokit eivät ole käytössä</string>
<string name="revanced_debug_export_logs_to_clipboard_title">Vie virheenkorjauslokit</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">Kopioi ReVancedin virheenkorjauslokit leikepöydälle</string>
<string name="revanced_debug_logs_disabled">Virheenkorjausloki ei ole käytössä</string>
<string name="revanced_debug_logs_none_found">Lokeja ei löytynyt</string>
<string name="revanced_debug_logs_copied_to_clipboard">Lokit kopioitu</string>
<string name="revanced_debug_logs_failed_to_export">Lokien vienti epäonnistui: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Tyhjennä virheenkorjauslokit</string>
<string name="revanced_debug_logs_clear_buffer_summary">Tyhjentää kaikki tallennetut ReVanced-virheenkorjauslokit</string>
<string name="revanced_debug_logs_clear_toast">Lokit tyhjennetty</string>
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
@@ -110,11 +143,6 @@ Napauta jatka-painiketta ja salli optimoinnin muutokset."</string>
<string name="revanced_shorts_disable_background_playback_summary_off">Shortsien taustatoisto on käytössä</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Virheenkorjaus</string>
<string name="revanced_debug_screen_summary">Ota tai poista virheenkorjausasetukset käytöstä</string>
<string name="revanced_debug_title">Virheenkorjauksen kirjaaminen</string>
<string name="revanced_debug_summary_on">Virheenkorjauslokit ovat käytössä</string>
<string name="revanced_debug_summary_off">Virheenkorjauslokit eivät ole käytössä</string>
<string name="revanced_debug_protobuffer_title">Kirjaa protokollapuskuri</string>
<string name="revanced_debug_protobuffer_summary_on">Virheenkorjauslokit sisältävät proto-puskurin</string>
<string name="revanced_debug_protobuffer_summary_off">Virheenkorjauslokit eivät sisällä proto-puskuria</string>
@@ -132,15 +160,6 @@ Tämän käyttöönotto kirjaa myös joitakin käyttäjätietoja, kuten IP-osoit
<string name="revanced_debug_toast_on_error_user_dialog_message">"Virheilmoitusten poistaminen käytöstä piilottaa kaikki ReVancedin virheilmoitukset.
Et saa ilmoituksia odottamattomista tapahtumista."</string>
<string name="revanced_debug_export_logs_to_clipboard_title">Vie virheenkorjauslokit</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">Kopioi ReVancedin virheenkorjauslokit leikepöydälle</string>
<string name="revanced_debug_logs_disabled">Virheenkorjausloki ei ole käytössä</string>
<string name="revanced_debug_logs_none_found">Lokeja ei löytynyt</string>
<string name="revanced_debug_logs_copied_to_clipboard">Lokit kopioitu</string>
<string name="revanced_debug_logs_failed_to_export">Lokien vienti epäonnistui: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Tyhjennä virheenkorjauslokit</string>
<string name="revanced_debug_logs_clear_buffer_summary">Tyhjentää kaikki tallennetut ReVanced-virheenkorjauslokit</string>
<string name="revanced_debug_logs_clear_toast">Lokit tyhjennetty</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_hide_album_cards_title">Piilota albumikortit</string>
@@ -453,6 +472,9 @@ Tämä ominaisuus on käytettävissä vain vanhemmilla laitteilla"</string>
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Tämä ei ohita ikärajoitusta. Se vain hyväksyy sen automaattisesti.</string>
</patch>
<patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
<string name="revanced_disable_signin_to_tv_popup_title">Poista Kirjaudu televisioon -ponnahdusikkuna käytöstä</string>
<string name="revanced_disable_signin_to_tv_popup_summary_on">Kirjaudu televisioon -ponnahdusikkuna on poistettu käytöstä</string>
<string name="revanced_disable_signin_to_tv_popup_summary_off">Kirjaudu televisioon -ponnahdusikkuna on käytössä</string>
</patch>
<patch id="interaction.doubletap.disableDoubleTapActionsPatch">
<string name="revanced_disable_chapter_skip_double_tap_title">Poista videon osan ohittaminen kaksoisnapauttamalla käytöstä</string>
@@ -699,7 +721,7 @@ Jos tämän asetuksen muuttaminen ei tule voimaan, kokeile vaihtaa Incognito-til
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<string name="revanced_hide_player_flyout_audio_track_not_available">"Ääniraitavalikko on piilotettu
Jos haluat nähdä sen, aseta \"Naamioi videovirrat\" iOS TV:ksi"</string>
Ääniraitavalikko ei ole käytettävissä, kun \"Videostriimien väärentäminen\" on käytössä"</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">Piilota Katso VR-tilassa</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Katso VR-tilassa -valinta on piilotettu</string>
@@ -1412,10 +1434,6 @@ Korkealaatuisemmat videot saattavat avautua, mutta videotoisto voi tökkiä, aku
Tämä voi avata korkealaatuisemmat videot"</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">Tämän käyttöönotto voi aiheuttaa videotoiston tökkimistä, huonompaa akun kestoa ja tuntemattomia sivuvaikutuksia.</string>
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">GmsCore-asetukset</string>
<string name="microg_settings_summary">GmsCoren asetukset</string>
</patch>
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
<string name="revanced_disable_haptic_feedback_title">Haptinen palaute</string>
<string name="revanced_disable_haptic_feedback_summary">Muuta haptista palautetta</string>
@@ -1529,35 +1547,51 @@ Tämä voi avata korkealaatuisemmat videot"</string>
<string name="revanced_slide_to_seek_summary_off">Kelaus liu\'uttamalla ei ole käytössä</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Naamioi videovirrat</string>
<string name="revanced_spoof_video_streams_screen_summary">Naamioi asiakasohjelman videovirrat toisto-ongelmien estämiseksi</string>
<string name="revanced_spoof_video_streams_title">Naamioi videovirrat</string>
<string name="revanced_spoof_video_streams_summary_on">Videovirrat naamioidaan</string>
<string name="revanced_spoof_video_streams_summary_off">"Videovirtoja ei naamioida
Videon toisto ei välttämättä toimi"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Tämän asetuksen poistaminen käytöstä voi aiheuttaa ongelmia videotoistossa.</string>
<string name="revanced_spoof_video_streams_client_type_title">Oletusasiakasohjelma</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Pakota iOS AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Videokoodekiksi pakotetaan AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Videokoodekki määritetään automaattisesti</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"Tämän käyttöönotto voi parantaa akun kestoa ja korjata toiston tökkimisen.
AVC:n maksimiresoluutio on 1080p, Opus-äänikoodekki ei ole käytettävissä, ja videon toisto käyttää enemmän Internet-dataa kuin VP9 tai AV1."</string>
<string name="revanced_spoof_video_streams_about_ios_tv_title">iOS-naamioinnin haittavaikutukset</string>
<string name="revanced_spoof_video_streams_about_ios_tv_summary">"• Elokuvat tai maksulliset videot eivät välttämättä toistu
• Tasainen äänenvoimakkuus ei ole käytettävissä
• Videot päättyvät 1 sekuntia etuajassa"</string>
<string name="revanced_spoof_video_streams_about_title">Väärentämisen sivuvaikutukset</string>
<string name="revanced_spoof_video_streams_about_android_title">Android-naamioinnin haittavaikutukset</string>
<string name="revanced_spoof_video_streams_about_android_summary">"• Ääniraitavalikko puuttuu
Tasainen äänenvoimakkuus ei ole käytettävissä
• Alkuperäisen äänen pakotus ei ole käytettävissä"</string>
<string name="revanced_spoof_video_streams_about_android_summary">"• Ääniraita-valikko puuttuu
Vakaa äänenvoimakkuus ei ole käytettävissä"</string>
<string name="revanced_spoof_video_streams_about_experimental">• Kokeellinen asiakasohjelma, joka saattaa lakata toimimasta milloin tahansa</string>
<string name="revanced_spoof_video_streams_about_no_av1">• Ei AV1-videokoodekkia</string>
<string name="revanced_spoof_video_streams_about_kids_videos">• Lasten videot eivät ehkä toistu, kun olet kirjautunut ulos tai incognito-tilassa</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">Näytä teknisissä tiedoissa</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_on">Asiakastyyppi näytetään teknisissä tiedoissa</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_off">Asiakastyyppi on piilotettu teknisissä tiedoissa</string>
<string name="revanced_spoof_video_streams_language_title">VR-äänivirran oletuskieli</string>
<string name="revanced_spoof_video_streams_language_title">Äänivirran kieli</string>
</patch>
</app>
<app id="music">
<patch id="misc.settings.settingsPatch">
<string name="revanced_settings_music_screen_0_about_title">Tietoja</string>
<string name="revanced_settings_music_screen_1_ads_title">Mainokset</string>
<string name="revanced_settings_music_screen_2_general_title">Yleiset</string>
<string name="revanced_settings_music_screen_3_player_title">Soitin</string>
<string name="revanced_settings_music_screen_4_misc_title">Sekalaiset</string>
</patch>
<patch id="ad.video.hideVideoAdsPatch">
<string name="revanced_music_hide_video_ads_title">Piilota videomainokset</string>
<string name="revanced_music_hide_video_ads_summary_on">Videomainokset on piilotettu</string>
<string name="revanced_music_hide_video_ads_summary_off">Videomainokset näytetään</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
<string name="revanced_music_play_permanent_repeat_title">Ota pysyvä toisto käyttöön</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Pysyvä toisto on käytössä</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Pysyvä toisto on poissa käytöstä</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Piilota kategoriapalkki</string>
<string name="revanced_music_hide_category_bar_summary_on">Kategoriapalkki on piilotettu</string>
<string name="revanced_music_hide_category_bar_summary_off">Kategoriapalkki näytetään</string>
</patch>
<patch id="layout.premium.hideGetPremiumPatch">
<string name="revanced_music_hide_get_premium_label_title">Piilota \"Hanki Music Premium\" -merkintä</string>
<string name="revanced_music_hide_get_premium_label_summary_on">Merkintä on piilotettu</string>
<string name="revanced_music_hide_get_premium_label_summary_off">Merkintä näytetään</string>
</patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
<string name="revanced_music_hide_upgrade_button_title">Piilota päivityspainike</string>
<string name="revanced_music_hide_upgrade_button_summary_on">Painike on piilotettu</string>
<string name="revanced_music_hide_upgrade_button_summary_off">Painike näytetään</string>
</patch>
</app>
<app id="twitch">

View File

@@ -68,6 +68,8 @@ Upang magsalin ng mga bagong wika, bisitahin ang translate.revanced.app"</string
and changes made here must also be made there. -->
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">Mga Setting ng GmsCore</string>
<string name="microg_settings_summary">Mga setting para sa GmsCore</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="gms_core_toast_not_installed_message">Hindi naka-install ang MicroG GmsCore. I-install ito.</string>
<string name="gms_core_dialog_title">Kailangan ng aksyon</string>
@@ -84,6 +86,37 @@ Ang pag-disable ng mga pag-optimize ng baterya para sa MicroG ay hindi makakaape
Tapikin ang pindutan ng pagpapatuloy at payagan ang mga pagbabago sa pag-optimize."</string>
<string name="gms_core_dialog_continue_text">Magpatuloy</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Spoof ng mga video stream</string>
<string name="revanced_spoof_video_streams_screen_summary">Spoof ang mga video stream ng client upang maiwasan ang mga problema sa pag-playback</string>
<string name="revanced_spoof_video_streams_screen_title">Pekein ang mga video stream</string>
<string name="revanced_spoof_video_streams_screen_summary">Pekein ang mga video stream ng client upang maiwasan ang mga isyu sa pag-playback</string>
<string name="revanced_spoof_video_streams_title">Spoof ng mga video stream</string>
<string name="revanced_spoof_video_streams_summary_on">"Ang mga video stream ay pinapanggap.
Kung ikaw ay isang user ng YouTube Premium, maaaring hindi kailangan ang setting na ito"</string>
<string name="revanced_spoof_video_streams_summary_off">"Hindi pinepeke ang mga video stream
Maaaring hindi gumana ang pag-playback"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Ang pag-off sa setting na ito ay maaaring magdulot ng mga isyu sa pag-playback.</string>
<string name="revanced_spoof_video_streams_client_type_title">Default na kliyente</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Pagde-debug</string>
<string name="revanced_debug_screen_summary">Paganahin o huwag paganahin ang mga opsyon sa pag-debug</string>
<string name="revanced_debug_title">Pag-log sa pag-debug</string>
<string name="revanced_debug_summary_on">Ang mga debug log ay pinagana</string>
<string name="revanced_debug_summary_off">Ang mga debug log ay hindi pinagana</string>
<string name="revanced_debug_export_logs_to_clipboard_title">I-export ang mga debug log</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">Kinokopya ang mga ReVanced debug log sa clipboard</string>
<string name="revanced_debug_logs_disabled">Hindi pinagana ang pag-log ng debug</string>
<string name="revanced_debug_logs_none_found">Walang nakitang mga log</string>
<string name="revanced_debug_logs_copied_to_clipboard">Nakopya ang mga log</string>
<string name="revanced_debug_logs_failed_to_export">Nabigo ang pag-export ng mga log: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">I-clear ang mga debug log</string>
<string name="revanced_debug_logs_clear_buffer_summary">Iki-clear ang lahat ng nakaimbak na ReVanced debug log</string>
<string name="revanced_debug_logs_clear_toast">Na-clear ang mga log</string>
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
@@ -110,11 +143,6 @@ Tapikin ang pindutan ng pagpapatuloy at payagan ang mga pagbabago sa pag-optimiz
<string name="revanced_shorts_disable_background_playback_summary_off">Ang pag-playback ng Shorts sa background ay pinagana</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Pagde-debug</string>
<string name="revanced_debug_screen_summary">Paganahin o huwag paganahin ang mga opsyon sa pag-debug</string>
<string name="revanced_debug_title">Pag-log sa pag-debug</string>
<string name="revanced_debug_summary_on">Ang mga debug log ay pinagana</string>
<string name="revanced_debug_summary_off">Ang mga debug log ay hindi pinagana</string>
<string name="revanced_debug_protobuffer_title">Mag-log protocol buffer</string>
<string name="revanced_debug_protobuffer_summary_on">Kasama sa mga debug log ang proto buffer</string>
<string name="revanced_debug_protobuffer_summary_off">Ang mga debug log ay hindi kasama ang proto buffer</string>
@@ -132,15 +160,6 @@ Gayunpaman, ang pagpapagana nito ay magtatala rin ng ilang data ng user gaya ng
<string name="revanced_debug_toast_on_error_user_dialog_message">"Ang pag-off ng mga toast ng error ay nagtatago ng lahat ng mga abiso ng error ng ReVanced.
Hindi ka aabisuhan ng anumang hindi inaasahang mga kaganapan."</string>
<string name="revanced_debug_export_logs_to_clipboard_title">I-export ang mga debug log</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">Kinokopya ang mga ReVanced debug log sa clipboard</string>
<string name="revanced_debug_logs_disabled">Hindi pinagana ang pag-log ng debug</string>
<string name="revanced_debug_logs_none_found">Walang nakitang mga log</string>
<string name="revanced_debug_logs_copied_to_clipboard">Nakopya ang mga log</string>
<string name="revanced_debug_logs_failed_to_export">Nabigo ang pag-export ng mga log: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">I-clear ang mga debug log</string>
<string name="revanced_debug_logs_clear_buffer_summary">Iki-clear ang lahat ng nakaimbak na ReVanced debug log</string>
<string name="revanced_debug_logs_clear_toast">Na-clear ang mga log</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_hide_album_cards_title">Itago ang mga album card</string>
@@ -700,7 +719,7 @@ Tandaan: Ang pagpapagana nito ay nagtatago rin ng mga ad ng video"</string>
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<string name="revanced_hide_player_flyout_audio_track_not_available">"Nakatago ang menu ng audio track
Upang ipakita ang menu ng Audio track, baguhin ang 'Spoof video streams' sa iOS TV"</string>
Hindi available ang menu ng audio track kapag naka-enable ang 'Pagpapanggap ng mga video stream'"</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">Itago ang Panoorin sa VR</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Nakatago ang panonood sa VR menu</string>
@@ -1413,10 +1432,6 @@ Ang mas mataas na kalidad ng video ay maaaring mabuksan ngunit maaari kang makar
Ang pagpapagana nito ay maaaring magbukas ng mas mataas na kalidad ng video"</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">Ang pagpapagana nito ay maaaring magdulot ng pagkautal sa pag-playback ng video, mas malala ang buhay ng baterya, at hindi kilalang mga side effect.</string>
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">Mga Setting ng GmsCore</string>
<string name="microg_settings_summary">Mga setting para sa GmsCore</string>
</patch>
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
<string name="revanced_disable_haptic_feedback_title">Haptic feedback</string>
<string name="revanced_disable_haptic_feedback_summary">Baguhin ang haptic feedback</string>
@@ -1530,35 +1545,51 @@ Ang pagpapagana nito ay maaaring magbukas ng mas mataas na kalidad ng video"</st
<string name="revanced_slide_to_seek_summary_off">Hindi pinagana ang slide to seek</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Spoof ng mga video stream</string>
<string name="revanced_spoof_video_streams_screen_summary">Spoof ang mga video stream ng client upang maiwasan ang mga problema sa pag-playback</string>
<string name="revanced_spoof_video_streams_title">Spoof ng mga video stream</string>
<string name="revanced_spoof_video_streams_summary_on">Naka-spoof ang mga video stream</string>
<string name="revanced_spoof_video_streams_summary_off">"Ang mga stream ng video ay hindi mapapang-ulol
Ang paglalaro ng video ay maaaring hindi gumana"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Ang pag-off sa setting na ito ay maaaring magdulot ng mga isyu sa pag-playback ng video.</string>
<string name="revanced_spoof_video_streams_client_type_title">Default na kliyente</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Pilitin ang iOS AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Ang codec ng video ay pinilit sa AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Ang codec ng video ay awtomatikong natutukoy</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"Ang pagpapagana nito ay maaaring mapahaba ang buhay ng baterya at ayusin ang pagkautal ng playback.
Ang AVC ay may pinakamataas na resolusyon na 1080p, ang codec ng audio ng Opus ay hindi available, at ang playback ng video ay gagamit ng mas maraming data sa internet kaysa sa VP9 o AV1."</string>
<string name="revanced_spoof_video_streams_about_ios_tv_title">Mga epekto ng iOS spoofing</string>
<string name="revanced_spoof_video_streams_about_ios_tv_summary">"• Maaaring hindi mai-play ang mga pelikula o binayarang video
• Hindi magagamit ang stable na volume
• Ang mga video ay magtatapos ng 1 segundo nang mas maaga"</string>
<string name="revanced_spoof_video_streams_about_title">Mga epekto ng pagpapanggap</string>
<string name="revanced_spoof_video_streams_about_android_title">Mga side effect ng Android spoofing</string>
<string name="revanced_spoof_video_streams_about_android_summary">"• Nawawala ang menu ng audio track
• Hindi magagamit ang stable na volume
• Hindi magagamit ang pagpilit sa orihinal na audio"</string>
• Hindi available ang stable na volume"</string>
<string name="revanced_spoof_video_streams_about_experimental">• Pang-eksperimentong kliyente at maaaring huminto sa paggana anumang oras</string>
<string name="revanced_spoof_video_streams_about_no_av1">• Walang AV1 video codec</string>
<string name="revanced_spoof_video_streams_about_kids_videos">• Mga video ng mga bata ay maaaring hindi ma-play kapag naka-log out o nasa incognito mode</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">Ipakita sa Mga Istatistika para sa mga nerds</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_on">Ipinapakita ang uri ng kliyente sa Mga Istatistika para sa mga nerds</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_off">Nakatago ang kliyente sa Mga Istatistika para sa mga nerds</string>
<string name="revanced_spoof_video_streams_language_title">Wika ng default na audio stream ng VR</string>
<string name="revanced_spoof_video_streams_language_title">Wika ng audio stream</string>
</patch>
</app>
<app id="music">
<patch id="misc.settings.settingsPatch">
<string name="revanced_settings_music_screen_0_about_title">Tungkol</string>
<string name="revanced_settings_music_screen_1_ads_title">Mga Ad</string>
<string name="revanced_settings_music_screen_2_general_title">Pangkalahatan</string>
<string name="revanced_settings_music_screen_3_player_title">Manlalaro</string>
<string name="revanced_settings_music_screen_4_misc_title">Iba-iba</string>
</patch>
<patch id="ad.video.hideVideoAdsPatch">
<string name="revanced_music_hide_video_ads_title">Itago ang mga video ad</string>
<string name="revanced_music_hide_video_ads_summary_on">Nakatago ang mga video ad</string>
<string name="revanced_music_hide_video_ads_summary_off">Ipinapakita ang mga video ad</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
<string name="revanced_music_play_permanent_repeat_title">Paganahin ang permanenteng pag-ulit</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Pinagana ang permanenteng pag-ulit</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Hindi pinagana ang permanenteng pag-ulit</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Itago ang category bar</string>
<string name="revanced_music_hide_category_bar_summary_on">Nakatago ang category bar</string>
<string name="revanced_music_hide_category_bar_summary_off">Ipinapakita ang category bar</string>
</patch>
<patch id="layout.premium.hideGetPremiumPatch">
<string name="revanced_music_hide_get_premium_label_title">Itago ang label na \'Kumuha ng Music Premium\'</string>
<string name="revanced_music_hide_get_premium_label_summary_on">Nakatago ang label</string>
<string name="revanced_music_hide_get_premium_label_summary_off">Ipinapakita ang label</string>
</patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
<string name="revanced_music_hide_upgrade_button_title">Itago ang pindutan ng upgrade</string>
<string name="revanced_music_hide_upgrade_button_summary_on">Nakatago ang buton</string>
<string name="revanced_music_hide_upgrade_button_summary_off">Ipinapakita ang buton</string>
</patch>
</app>
<app id="twitch">

View File

@@ -68,6 +68,8 @@ Pour traduire dans de nouvelles langues, visitez translate.revanced.app"</string
and changes made here must also be made there. -->
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">Paramètres GmsCore</string>
<string name="microg_settings_summary">Paramètres relatifs à GmsCore</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="gms_core_toast_not_installed_message">MicroG GmsCore n\'est pas installé. Veuillez linstaller.</string>
<string name="gms_core_dialog_title">Action requise</string>
@@ -84,6 +86,37 @@ Désactiver les optimisations de la batterie pour MicroG n'aura pas d'impact né
Appuyez sur le bouton Continuer et autorisez les modifications."</string>
<string name="gms_core_dialog_continue_text">Continuer</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Falsifier les flux vidéo</string>
<string name="revanced_spoof_video_streams_screen_summary">Falsifiez les flux vidéo client pour prévenir les problèmes de lecture</string>
<string name="revanced_spoof_video_streams_screen_title">Falsifier les flux vidéo</string>
<string name="revanced_spoof_video_streams_screen_summary">Falsifiez les flux vidéo client pour éviter les problèmes de lecture</string>
<string name="revanced_spoof_video_streams_title">Falsifier les flux vidéo</string>
<string name="revanced_spoof_video_streams_summary_on">"Les flux vidéo sont falsifiés
Si vous avez YouTube Premium, il est possible que ce paramètre ne soit pas nécessaire"</string>
<string name="revanced_spoof_video_streams_summary_off">"Les flux vidéo ne sont pas falsifiés
La lecture est susceptible de ne pas fonctionner"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">La désactivation de ce paramètre peut entraîner des problèmes de lecture.</string>
<string name="revanced_spoof_video_streams_client_type_title">Client par défaut</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Débogage</string>
<string name="revanced_debug_screen_summary">Activez ou désactivez les options de débogage</string>
<string name="revanced_debug_title">Journalisation de débogage</string>
<string name="revanced_debug_summary_on">Les journaux de débogage sont activés</string>
<string name="revanced_debug_summary_off">Les journaux de débogage sont désactivés</string>
<string name="revanced_debug_export_logs_to_clipboard_title">Exporter les journaux de débogage</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">Copie les journaux de débogage ReVanced dans le presse-papiers</string>
<string name="revanced_debug_logs_disabled">La journalisation de débogage est désactivée</string>
<string name="revanced_debug_logs_none_found">Aucun journal trouvé</string>
<string name="revanced_debug_logs_copied_to_clipboard">Journaux copiés</string>
<string name="revanced_debug_logs_failed_to_export">Échec de l\'exportation des journaux : %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Effacer les journaux de débogage</string>
<string name="revanced_debug_logs_clear_buffer_summary">Efface tous les journaux de débogage ReVanced stockés</string>
<string name="revanced_debug_logs_clear_toast">Journaux effacés</string>
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
@@ -110,11 +143,6 @@ Appuyez sur le bouton Continuer et autorisez les modifications."</string>
<string name="revanced_shorts_disable_background_playback_summary_off">La lecture en arrière-plan des Shorts est activée</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Débogage</string>
<string name="revanced_debug_screen_summary">Activez ou désactivez les options de débogage</string>
<string name="revanced_debug_title">Journalisation de débogage</string>
<string name="revanced_debug_summary_on">Les journaux de débogage sont activés</string>
<string name="revanced_debug_summary_off">Les journaux de débogage sont désactivés</string>
<string name="revanced_debug_protobuffer_title">Journaliser les protobufs</string>
<string name="revanced_debug_protobuffer_summary_on">Les journaux de débogage incluent les protocol buffers</string>
<string name="revanced_debug_protobuffer_summary_off">Les journaux de débogage n\'incluent pas les protocol buffers</string>
@@ -132,15 +160,6 @@ Toutefois, l'activation de cette option entraînera également l'enregistrement
<string name="revanced_debug_toast_on_error_user_dialog_message">"La désactivation des messages toasts d'erreur masque toutes les notifications d'erreur ReVanced.
Vous ne serez pas informé des événements inattendus."</string>
<string name="revanced_debug_export_logs_to_clipboard_title">Exporter les journaux de débogage</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">Copie les journaux de débogage ReVanced dans le presse-papiers</string>
<string name="revanced_debug_logs_disabled">La journalisation de débogage est désactivée</string>
<string name="revanced_debug_logs_none_found">Aucun journal trouvé</string>
<string name="revanced_debug_logs_copied_to_clipboard">Journaux copiés</string>
<string name="revanced_debug_logs_failed_to_export">Échec de l\'exportation des journaux : %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Effacer les journaux de débogage</string>
<string name="revanced_debug_logs_clear_buffer_summary">Efface tous les journaux de débogage ReVanced stockés</string>
<string name="revanced_debug_logs_clear_toast">Journaux effacés</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_hide_album_cards_title">Masquer les fiches d\'album</string>
@@ -702,7 +721,7 @@ Si la modification de ce paramètre ne prend pas effet, essayez de passer en mod
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<string name="revanced_hide_player_flyout_audio_track_not_available">"Le menu Piste audio est masqué
Pour afficher le menu Piste audio, définissez \"Falsifier les flux vidéo\" sur iOS TV"</string>
Le menu Piste audio n'est pas disponible lorsque \"Falsifier les flux vidéo\" est activé"</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">Masquer \"Regarder en RV\"</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Le menu Regarder en RV est masqué</string>
@@ -1077,11 +1096,11 @@ Votre ID d'utilisateur est comme un mot de passe et ne doit jamais être partag
<string name="revanced_sb_segments_outro">Écrans de fin / Crédits</string>
<string name="revanced_sb_segments_outro_sum">Crédits ou moment où apparaissent les écrans de fin YouTube. Pas pour les conclusions contenant des informations.</string>
<string name="revanced_sb_segments_hook">Accroche / Salutations</string>
<string name="revanced_sb_segments_hook_sum">Présentation de la vidéo actuelle ou d\'une prochaine vidéo par le créateur, salutations et au revoir. N\'inclut pas les sections qui ajoutent du contenu supplémentaire</string>
<string name="revanced_sb_segments_hook_sum">Présentation de la vidéo actuelle ou d\'une prochaine vidéo par le créateur, salutations et au revoir. N\'inclut pas les sections qui ajoutent du contenu supplémentaire.</string>
<string name="revanced_sb_segments_preview">Aperçu / Résumé</string>
<string name="revanced_sb_segments_preview_sum">Collection de clips qui présentent ce qui va suivre ou ce qui s\'est passé dans la vidéo ou dans d\'autres vidéos d\'une série, où toutes les informations sont répétées ailleurs</string>
<string name="revanced_sb_segments_filler">Digression / Blagues</string>
<string name="revanced_sb_segments_filler_sum">Digressions ou blagues non nécessaires à la compréhension du contenu principal de la vidéo. Cette catégorie ne devrait pas contenir de segments fournissant du contexte ou des détails secondaires</string>
<string name="revanced_sb_segments_filler_sum">Digressions ou blagues non nécessaires à la compréhension du contenu principal de la vidéo. N\'inclut pas les sections fournissant du contexte ou des détails secondaires.</string>
<string name="revanced_sb_segments_nomusic">Musique : Segment non musical</string>
<string name="revanced_sb_segments_nomusic_sum">Uniquement pour utilisation dans les vidéos musicales. Sections non musicales dans les clips, qui ne sont pas déjà couvertes par une autre catégorie.</string>
<string name="revanced_sb_skip_button_compact">Passer</string>
@@ -1416,10 +1435,6 @@ Des qualités vidéo supérieures pourraient être déverrouillées, mais la lec
Activer cette option peut déverrouiller des qualités vidéo supérieures"</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">Activer cette option peut engendrer des saccades durant la lecture de vidéos, une dégradation de l\'autonomie de la batterie et des effets secondaires inconnus.</string>
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">Paramètres GmsCore</string>
<string name="microg_settings_summary">Paramètres relatifs à GmsCore</string>
</patch>
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
<string name="revanced_disable_haptic_feedback_title">Retour haptique</string>
<string name="revanced_disable_haptic_feedback_summary">Modifiez les retours haptiques</string>
@@ -1533,35 +1548,51 @@ Activer cette option peut déverrouiller des qualités vidéo supérieures"</str
<string name="revanced_slide_to_seek_summary_off">Glisser pour rechercher est désactivé</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Falsifier les flux vidéo</string>
<string name="revanced_spoof_video_streams_screen_summary">Falsifiez les flux vidéo client pour prévenir les problèmes de lecture</string>
<string name="revanced_spoof_video_streams_title">Falsifier les flux vidéo</string>
<string name="revanced_spoof_video_streams_summary_on">Les flux vidéo sont falsifiés</string>
<string name="revanced_spoof_video_streams_summary_off">"Les flux vidéo ne sont pas falsifiés
La lecture des vidéos peut ne pas fonctionner"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Désactiver ce paramètre peut causer des problèmes de lecture vidéo.</string>
<string name="revanced_spoof_video_streams_client_type_title">Client par défaut</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Forcer iOS AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Le codec vidéo est forcé sur AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Le codec vidéo est déterminé automatiquement</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"Activer cette option pourrait améliorer l'autonomie de la batterie et corriger les saccades lors de la lecture.
AVC a une résolution maximale de 1080p et ne prend pas en charge le codec audio Opus, et la lecture vidéo utilisera plus de données Internet qu'avec VP9 ou AV1."</string>
<string name="revanced_spoof_video_streams_about_ios_tv_title">Effets secondaires de la falsification iOS</string>
<string name="revanced_spoof_video_streams_about_ios_tv_summary">"• La lecture des films ou des vidéos payantes peut ne pas fonctionner
• Volume stable n'est pas disponible
• Les vidéos se terminent 1 seconde trop tôt"</string>
<string name="revanced_spoof_video_streams_about_title">Effets secondaires de la falsification</string>
<string name="revanced_spoof_video_streams_about_android_title">Effets secondaires de la falsification Android</string>
<string name="revanced_spoof_video_streams_about_android_summary">"• Le menu Piste audio est absent
Volume stable n'est pas disponible
• Forcer l'audio d'origine n'est pas disponible"</string>
Le volume stable n'est pas disponible"</string>
<string name="revanced_spoof_video_streams_about_experimental">• Client expérimental, peut cesser de fonctionner à tout moment</string>
<string name="revanced_spoof_video_streams_about_no_av1">• Codec vidéo AV1 indisponible</string>
<string name="revanced_spoof_video_streams_about_kids_videos">• La lecture des vidéos pour enfants peut ne pas fonctionner lorsque vous êtes déconnecté ou en mode navigation privée</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">Afficher dans les Statistiques avancées</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_on">Le type de client est affiché dans les Statistiques avancées</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_off">Le client est caché dans les Statistiques avancées</string>
<string name="revanced_spoof_video_streams_language_title">Langue par défaut du flux audio en mode RV</string>
<string name="revanced_spoof_video_streams_language_title">Langue du flux audio</string>
</patch>
</app>
<app id="music">
<patch id="misc.settings.settingsPatch">
<string name="revanced_settings_music_screen_0_about_title">À propos</string>
<string name="revanced_settings_music_screen_1_ads_title">Annonces</string>
<string name="revanced_settings_music_screen_2_general_title">Général</string>
<string name="revanced_settings_music_screen_3_player_title">Lecteur</string>
<string name="revanced_settings_music_screen_4_misc_title">Divers</string>
</patch>
<patch id="ad.video.hideVideoAdsPatch">
<string name="revanced_music_hide_video_ads_title">Masquer les annonces vidéo</string>
<string name="revanced_music_hide_video_ads_summary_on">Les annonces vidéo sont masquées</string>
<string name="revanced_music_hide_video_ads_summary_off">Les annonces vidéo sont affichées</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
<string name="revanced_music_play_permanent_repeat_title">Activer la lecture en boucle permanente</string>
<string name="revanced_music_play_permanent_repeat_summary_on">La lecture en boucle permanente est activée</string>
<string name="revanced_music_play_permanent_repeat_summary_off">La lecture en boucle permanente est désactivée</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Masquer la barre des catégories</string>
<string name="revanced_music_hide_category_bar_summary_on">La barre des catégories est masquée</string>
<string name="revanced_music_hide_category_bar_summary_off">La barre des catégories est affichée</string>
</patch>
<patch id="layout.premium.hideGetPremiumPatch">
<string name="revanced_music_hide_get_premium_label_title">Masquer le libellé \"S\'abonner à Music Premium\"</string>
<string name="revanced_music_hide_get_premium_label_summary_on">Le libellé est masqué</string>
<string name="revanced_music_hide_get_premium_label_summary_off">Le libellé est affiché</string>
</patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
<string name="revanced_music_hide_upgrade_button_title">Masquer le bouton S\'abonner</string>
<string name="revanced_music_hide_upgrade_button_summary_on">Le bouton est masqué</string>
<string name="revanced_music_hide_upgrade_button_summary_off">Le bouton est affiché</string>
</patch>
</app>
<app id="twitch">

View File

@@ -68,6 +68,8 @@ Chun teangacha nua a aistriú, tabhair cuairt ar translate.revanced.app"</string
and changes made here must also be made there. -->
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">Socruithe GmsCore</string>
<string name="microg_settings_summary">Socruithe le haghaidh GmsCore</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="gms_core_toast_not_installed_message">Níl MicroG GmsCore suiteáilte. Suiteáil é.</string>
<string name="gms_core_dialog_title">Gníomh riachtanach</string>
@@ -84,6 +86,37 @@ Ní chuirfidh díghníomhachtú optúimíochtaí ceallraí do MicroG isteach ar
Brúigh an cnaipe leanúnaí agus ligean athruithe optúimíochta."</string>
<string name="gms_core_dialog_continue_text">Lean ar aghaidh</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Sruthanna físeán spoof</string>
<string name="revanced_spoof_video_streams_screen_summary">Spoof na sruthanna físeáin cliant chun saincheisteanna athsheinm a chosc</string>
<string name="revanced_spoof_video_streams_screen_title">Sruthanna físeáin bréige</string>
<string name="revanced_spoof_video_streams_screen_summary">Déan bréagú ar shruthanna físeáin an chliaint chun saincheisteanna athsheinm a chosc</string>
<string name="revanced_spoof_video_streams_title">Sruthanna físeán spoof</string>
<string name="revanced_spoof_video_streams_summary_on">"Tá sruthanna físeáin bréagaithe
Má tá tú i do úsáideoir YouTube Premium, seans nach mbeidh an socrú seo ag teastáil"</string>
<string name="revanced_spoof_video_streams_summary_off">"Ní dhéantar sruthanna físeáin a bhréagnú
Seans nach n-oibreoidh an t-athsheinm"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Má mhúchann tú an socrú seo, d\'fhéadfadh saincheisteanna athsheinm a theacht chun cinn.</string>
<string name="revanced_spoof_video_streams_client_type_title">Cliant réamhshocraithe</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Dífhabhtú</string>
<string name="revanced_debug_screen_summary">Cumasaigh nó díchumasaigh roghanna dífhabhtú</string>
<string name="revanced_debug_title">Dífhabhtú logáil</string>
<string name="revanced_debug_summary_on">Tá logaí dífhabhtaithe cumasaithe</string>
<string name="revanced_debug_summary_off">Tá logaí dífhabhtaithe díchumasaithe</string>
<string name="revanced_debug_export_logs_to_clipboard_title">Easpórtáil logaí dífhabhtaithe</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">Cóipeálann sé logaí dífhabhtaithe ReVanced chuig an gearrthaisce</string>
<string name="revanced_debug_logs_disabled">Tá logáil dífhabhtaithe díchumasaithe</string>
<string name="revanced_debug_logs_none_found">Níor aimsíodh aon logaí</string>
<string name="revanced_debug_logs_copied_to_clipboard">Lógaí cóipeáilte</string>
<string name="revanced_debug_logs_failed_to_export">Theip ar logaí a easpórtáil: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Glan logaí dífhabhtaithe</string>
<string name="revanced_debug_logs_clear_buffer_summary">Glanann sé gach loga dífhabhtaithe ReVanced stóráilte</string>
<string name="revanced_debug_logs_clear_toast">Lógaí glanta</string>
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
@@ -110,11 +143,6 @@ Brúigh an cnaipe leanúnaí agus ligean athruithe optúimíochta."</string>
<string name="revanced_shorts_disable_background_playback_summary_off">Tá seinm chúlra Shorts cumasaithe</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Dífhabhtú</string>
<string name="revanced_debug_screen_summary">Cumasaigh nó díchumasaigh roghanna dífhabhtú</string>
<string name="revanced_debug_title">Dífhabhtú logáil</string>
<string name="revanced_debug_summary_on">Tá logaí dífhabhtaithe cumasaithe</string>
<string name="revanced_debug_summary_off">Tá logaí dífhabhtaithe díchumasaithe</string>
<string name="revanced_debug_protobuffer_title">Maolán prótacal logála</string>
<string name="revanced_debug_protobuffer_summary_on">Cuimsíonn logaí dífhabhtaithe maolán</string>
<string name="revanced_debug_protobuffer_summary_off">Ní chuimsíonn logaí dífhabhtaithe maolán proto</string>
@@ -132,15 +160,6 @@ Mar sin féin, logálfaidh sé seo roinnt sonraí úsáideora freisin, mar shamp
<string name="revanced_debug_toast_on_error_user_dialog_message">"Má mhúchtar tóstaí earráide, folaítear gach fógra earráide ReVanced.
Ní chuirfear ar an eolas thú faoi aon imeachtaí gan choinne."</string>
<string name="revanced_debug_export_logs_to_clipboard_title">Easpórtáil logaí dífhabhtaithe</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">Cóipeálann sé logaí dífhabhtaithe ReVanced chuig an gearrthaisce</string>
<string name="revanced_debug_logs_disabled">Tá logáil dífhabhtaithe díchumasaithe</string>
<string name="revanced_debug_logs_none_found">Níor aimsíodh aon logaí</string>
<string name="revanced_debug_logs_copied_to_clipboard">Lógaí cóipeáilte</string>
<string name="revanced_debug_logs_failed_to_export">Theip ar logaí a easpórtáil: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Glan logaí dífhabhtaithe</string>
<string name="revanced_debug_logs_clear_buffer_summary">Glanann sé gach loga dífhabhtaithe ReVanced stóráilte</string>
<string name="revanced_debug_logs_clear_toast">Lógaí glanta</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_hide_album_cards_title">Folaigh cártaí albam</string>
@@ -700,9 +719,9 @@ Mura dtagann aon athrú ar an socrú seo, bain triail as mód Incognito a chur a
<string name="revanced_hide_player_flyout_audio_track_summary_on">Tá roghchlár rian fuaime i bhfolach</string>
<string name="revanced_hide_player_flyout_audio_track_summary_off">Taispeántar roghchlár rian fuaime</string>
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<string name="revanced_hide_player_flyout_audio_track_not_available">"Tá roghchlár na rian fuaime i bhfolach
<string name="revanced_hide_player_flyout_audio_track_not_available">"Tá roghchlár an rian fuaime i bhfolach
Chun roghchlár na rian fuaime a thaispeáint, athraigh 'Srutháin físeáin bhréige' go iOS TV"</string>
Níl roghchlár an rian fuaime ar fáil nuair atá 'Sruthanna físeáin bhréige' cumasaithe"</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">Folaigh Watch i VR</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Tá faire i roghchlár VR i bhfolach</string>
@@ -1415,10 +1434,6 @@ D'fhéadfadh go gcuirfí caighdeáin físeáin níos airde ar fáil ach d'fhéad
Is féidir le seo caighdeáin físeáin níos airde a dhíghlasáil"</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">D\'fhéadfadh sé seo a bheith ina chúis le stuttering athsheinm físe, saol ceallraí níos measa, agus fo-iarmhairtí anaithnid.</string>
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">Socruithe GmsCore</string>
<string name="microg_settings_summary">Socruithe le haghaidh GmsCore</string>
</patch>
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
<string name="revanced_disable_haptic_feedback_title">Aiseolas haptach</string>
<string name="revanced_disable_haptic_feedback_summary">Athraigh aiseolas haptach</string>
@@ -1532,35 +1547,51 @@ Is féidir le seo caighdeáin físeáin níos airde a dhíghlasáil"</string>
<string name="revanced_slide_to_seek_summary_off">Níl sleamhnán le lorg cumasaithe</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Sruthanna físeán spoof</string>
<string name="revanced_spoof_video_streams_screen_summary">Spoof na sruthanna físeáin cliant chun saincheisteanna athsheinm a chosc</string>
<string name="revanced_spoof_video_streams_title">Sruthanna físeán spoof</string>
<string name="revanced_spoof_video_streams_summary_on">Tá sruthanna físe spoofed</string>
<string name="revanced_spoof_video_streams_summary_off">"Níl sruthanna físeáin spoofed
D'fhéadfadh nach n-oibreoidh athsheinm físeáin"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Seans go mbeidh fadhbanna athsheinm físe ag baint leis an socrú seo a mhúchadh.</string>
<string name="revanced_spoof_video_streams_client_type_title">Cliant réamhshocraithe</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Féach iOS AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Fórsaítear códú fhíseán chuig AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Chinntítear códú fhíseán go huathoibríoch</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"D'fhéadfadh a chumasú seo saol na ceallraí a fheabhsú agus stotálú athsaithe a shocrú.
Tá réiteach uasmhéideach 1080p ag AVC, níl códú fuaime Opus ar fáil, agus bainfear úsáid as tuilleadh sonraí Idirlín le haghaidh athsaithe físeán ná VP9 nó AV1."</string>
<string name="revanced_spoof_video_streams_about_ios_tv_title">Éifeachtaí taobheacha sceimhlitheoireachta iOS</string>
<string name="revanced_spoof_video_streams_about_ios_tv_summary">"• Dfhéadfadh sé nach imreodh scannáin nó físeáin íoctha
• Ní bheidh an toirt éagothroime ar fáil
• Críochnaíonn físeáin 1 soicind roimh am"</string>
<string name="revanced_spoof_video_streams_about_title">Fo-iarsmaí bréagaíochta</string>
<string name="revanced_spoof_video_streams_about_android_title">Éifeachtaí taobh Android a mhalartú</string>
<string name="revanced_spoof_video_streams_about_android_summary">"• Tá roghchlár na bhfuaimeanna ar iarraidh
• Níl imfhálú cobhsaí ar fáil
• Níl an fhuaim bhunúsach ar fáil"</string>
<string name="revanced_spoof_video_streams_about_android_summary">"• Tá roghchlár an rian fuaime ar iarraidh
• Níl an toirt chobhsaí ar fáil"</string>
<string name="revanced_spoof_video_streams_about_experimental">• Cliant turgnamhach é seo agus féadfaidh sé stop a chur ag obair ag am ar bith</string>
<string name="revanced_spoof_video_streams_about_no_av1">• Níl aon chóidéir físe AV1</string>
<string name="revanced_spoof_video_streams_about_kids_videos">• Videos faoi phaistí uaireanta nach imreoidh nuair a bhíonn tú logáilte amach nó i mod incognito</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">Taispeáin i Staitisticí do nerds</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_on">Taispeántar cineál an chliaint i Staitisticí do nerds</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_off">Tá an cliant curtha i bhfolach i Staitisticí do nerds</string>
<string name="revanced_spoof_video_streams_language_title">Teanga an sreafa fuaime réamhshocraithe VR</string>
<string name="revanced_spoof_video_streams_language_title">Teanga an tsrutha fuaime</string>
</patch>
</app>
<app id="music">
<patch id="misc.settings.settingsPatch">
<string name="revanced_settings_music_screen_0_about_title">Maidir</string>
<string name="revanced_settings_music_screen_1_ads_title">Fógraí</string>
<string name="revanced_settings_music_screen_2_general_title">Ginearálta</string>
<string name="revanced_settings_music_screen_3_player_title">Seinnteoir</string>
<string name="revanced_settings_music_screen_4_misc_title">Ilchineálach</string>
</patch>
<patch id="ad.video.hideVideoAdsPatch">
<string name="revanced_music_hide_video_ads_title">Folaigh fógraí físeáin</string>
<string name="revanced_music_hide_video_ads_summary_on">Tá fógraí físeáin i bhfolach</string>
<string name="revanced_music_hide_video_ads_summary_off">Taispeántar fógraí físeáin</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
<string name="revanced_music_play_permanent_repeat_title">Cumasaigh athdhéanamh buan</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Tá athdhéanamh buan cumasaithe</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Tá athdhéanamh buan díchumasaithe</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Folaigh an barra catagóirí</string>
<string name="revanced_music_hide_category_bar_summary_on">Tá an barra catagóirí i bhfolach</string>
<string name="revanced_music_hide_category_bar_summary_off">Taispeántar an barra catagóirí</string>
</patch>
<patch id="layout.premium.hideGetPremiumPatch">
<string name="revanced_music_hide_get_premium_label_title">Folaigh an lipéad \'Faigh Music Premium\'</string>
<string name="revanced_music_hide_get_premium_label_summary_on">Tá an lipéad i bhfolach</string>
<string name="revanced_music_hide_get_premium_label_summary_off">Taispeántar an lipéad</string>
</patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
<string name="revanced_music_hide_upgrade_button_title">Folaigh an cnaipe uasghrádaithe</string>
<string name="revanced_music_hide_upgrade_button_summary_on">Tá an cnaipe i bhfolach</string>
<string name="revanced_music_hide_upgrade_button_summary_off">Taispeántar an cnaipe</string>
</patch>
</app>
<app id="twitch">

View File

@@ -30,6 +30,10 @@ Second \"item\" text"</string>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
@@ -207,8 +211,6 @@ Second \"item\" text"</string>
</patch>
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
</patch>
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
</patch>
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
@@ -242,6 +244,20 @@ Second \"item\" text"</string>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
</patch>
</app>
<app id="music">
<patch id="misc.settings.settingsPatch">
</patch>
<patch id="ad.video.hideVideoAdsPatch">
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch>
<patch id="layout.compactheader.hideCategoryBar">
</patch>
<patch id="layout.premium.hideGetPremiumPatch">
</patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
</patch>
</app>
<app id="twitch">
<patch id="ad.audio.audioAdsPatch">
</patch>

View File

@@ -30,6 +30,10 @@ Second \"item\" text"</string>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
@@ -207,8 +211,6 @@ Second \"item\" text"</string>
</patch>
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
</patch>
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
</patch>
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
@@ -242,6 +244,20 @@ Second \"item\" text"</string>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
</patch>
</app>
<app id="music">
<patch id="misc.settings.settingsPatch">
</patch>
<patch id="ad.video.hideVideoAdsPatch">
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch>
<patch id="layout.compactheader.hideCategoryBar">
</patch>
<patch id="layout.premium.hideGetPremiumPatch">
</patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
</patch>
</app>
<app id="twitch">
<patch id="ad.audio.audioAdsPatch">
</patch>

View File

@@ -30,6 +30,10 @@ Second \"item\" text"</string>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
@@ -207,8 +211,6 @@ Second \"item\" text"</string>
</patch>
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
</patch>
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
</patch>
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
@@ -242,6 +244,20 @@ Second \"item\" text"</string>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
</patch>
</app>
<app id="music">
<patch id="misc.settings.settingsPatch">
</patch>
<patch id="ad.video.hideVideoAdsPatch">
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch>
<patch id="layout.compactheader.hideCategoryBar">
</patch>
<patch id="layout.premium.hideGetPremiumPatch">
</patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
</patch>
</app>
<app id="twitch">
<patch id="ad.audio.audioAdsPatch">
</patch>

View File

@@ -30,6 +30,10 @@ Second \"item\" text"</string>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
@@ -207,8 +211,6 @@ Second \"item\" text"</string>
</patch>
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
</patch>
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
</patch>
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
@@ -242,6 +244,20 @@ Second \"item\" text"</string>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
</patch>
</app>
<app id="music">
<patch id="misc.settings.settingsPatch">
</patch>
<patch id="ad.video.hideVideoAdsPatch">
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch>
<patch id="layout.compactheader.hideCategoryBar">
</patch>
<patch id="layout.premium.hideGetPremiumPatch">
</patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
</patch>
</app>
<app id="twitch">
<patch id="ad.audio.audioAdsPatch">
</patch>

View File

@@ -68,6 +68,8 @@ Second \"item\" text"</string>
and changes made here must also be made there. -->
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">GmsCore beállítások</string>
<string name="microg_settings_summary">A GmsCore beállításai</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="gms_core_toast_not_installed_message">MicroG GmsCore nincs telepítve. Telepítse.</string>
<string name="gms_core_dialog_title">Művelet szükséges</string>
@@ -84,6 +86,37 @@ A MicroG akkumulátor-optimalizálásának letiltása nem befolyásolja negatív
Kattintson a folytatás gombra, és engedélyezze az optimalizálási módosításokat."</string>
<string name="gms_core_dialog_continue_text">Folytatás</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Hamis videó stream</string>
<string name="revanced_spoof_video_streams_screen_summary">Hamisítsa meg az ügyfél videó streamet a lejátszási problémák elkerülése érdekében</string>
<string name="revanced_spoof_video_streams_screen_title">Videó streamek hamisítása</string>
<string name="revanced_spoof_video_streams_screen_summary">A kliens videó streamek hamisítása a lejátszási problémák elkerülése érdekében</string>
<string name="revanced_spoof_video_streams_title">Hamis videó stream</string>
<string name="revanced_spoof_video_streams_summary_on">"A videó adatfolyamok hamisítva vannak
Ha Ön YouTube Premium felhasználó, ez a beállítás nem feltétlenül szükséges"</string>
<string name="revanced_spoof_video_streams_summary_off">"A videó streamek nincsenek hamisítva
A lejátszás nem működhet"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Ennek a beállításnak a kikapcsolása lejátszási problémákat okozhat.</string>
<string name="revanced_spoof_video_streams_client_type_title">Alapértelmezett kliens</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Hibakeresés</string>
<string name="revanced_debug_screen_summary">Hibakeresési beállítások engedélyezése vagy letiltása</string>
<string name="revanced_debug_title">Hibakeresési naplózás</string>
<string name="revanced_debug_summary_on">A hibakeresési naplók engedélyezve vannak</string>
<string name="revanced_debug_summary_off">A hibakeresési naplók le vannak tiltva</string>
<string name="revanced_debug_export_logs_to_clipboard_title">Hibakeresési naplók exportálása</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">A ReVanced hibakeresési naplóit a vágólapra másolja</string>
<string name="revanced_debug_logs_disabled">A hibakeresési naplózás ki van kapcsolva</string>
<string name="revanced_debug_logs_none_found">Nem találhatók naplók</string>
<string name="revanced_debug_logs_copied_to_clipboard">Naplók másolva</string>
<string name="revanced_debug_logs_failed_to_export">Nem sikerült exportálni a naplókat: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Hibakeresési naplók törlése</string>
<string name="revanced_debug_logs_clear_buffer_summary">Törli az összes tárolt ReVanced hibakeresési naplót</string>
<string name="revanced_debug_logs_clear_toast">Naplók törölve</string>
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
@@ -110,11 +143,6 @@ Kattintson a folytatás gombra, és engedélyezze az optimalizálási módosít
<string name="revanced_shorts_disable_background_playback_summary_off">A Shorts háttérben történő lejátszása engedélyezve van</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Hibakeresés</string>
<string name="revanced_debug_screen_summary">Hibakeresési beállítások engedélyezése vagy letiltása</string>
<string name="revanced_debug_title">Hibakeresési naplózás</string>
<string name="revanced_debug_summary_on">A hibakeresési naplók engedélyezve vannak</string>
<string name="revanced_debug_summary_off">A hibakeresési naplók le vannak tiltva</string>
<string name="revanced_debug_protobuffer_title">Napló protokoll puffer</string>
<string name="revanced_debug_protobuffer_summary_on">A hibakeresési naplók protopuffert tartalmaznak</string>
<string name="revanced_debug_protobuffer_summary_off">A hibakeresési naplók nem tartalmaznak protopuffert</string>
@@ -132,15 +160,6 @@ Ez a funkció azonban néhány felhasználói adatot is naplóz, például az IP
<string name="revanced_debug_toast_on_error_user_dialog_message">"A hibaüzenetek kikapcsolása elrejti az összes ReVanced hibaértesítést.
Nem fog értesülni semmilyen váratlan eseményről."</string>
<string name="revanced_debug_export_logs_to_clipboard_title">Hibakeresési naplók exportálása</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">A ReVanced hibakeresési naplóit a vágólapra másolja</string>
<string name="revanced_debug_logs_disabled">A hibakeresési naplózás ki van kapcsolva</string>
<string name="revanced_debug_logs_none_found">Nem találhatók naplók</string>
<string name="revanced_debug_logs_copied_to_clipboard">Naplók másolva</string>
<string name="revanced_debug_logs_failed_to_export">Nem sikerült exportálni a naplókat: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Hibakeresési naplók törlése</string>
<string name="revanced_debug_logs_clear_buffer_summary">Törli az összes tárolt ReVanced hibakeresési naplót</string>
<string name="revanced_debug_logs_clear_toast">Naplók törölve</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_hide_album_cards_title">Album kártyák elrejtése</string>
@@ -700,9 +719,9 @@ Ha a beállítás módosítása nem lép életbe, próbáljon meg Inkognitó mó
<string name="revanced_hide_player_flyout_audio_track_summary_on">A hangsáv menü el van rejtve</string>
<string name="revanced_hide_player_flyout_audio_track_summary_off">A hangsáv menü megjelenik</string>
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<string name="revanced_hide_player_flyout_audio_track_not_available">"Az audiosáv menü rejtett
<string name="revanced_hide_player_flyout_audio_track_not_available">"Az hangsáv menü elrejtve
Az audiosáv menü megjelenítéséhez módosítsa a \"Videófolyamok hamisítása\" beállítást iOS TV-re"</string>
Az hangsáv menü nem érhető el, ha a \"Videó adatfolyamok hamisítása\" engedélyezve van"</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">\"Megtekintés VR-módban\" elrejtése</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">A megtekintés VR-módban menü el van rejtve</string>
@@ -1412,10 +1431,6 @@ Lehet, hogy magasabb videóminőségek válnak elérhetővé, de a videólejáts
Ez a beállítás lehetővé teszi a magasabb videóminőségek feloldását"</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">Ennek engedélyezése a videólejátszás akadozását, rosszabb akkuidőt és ismeretlen hatásokat okozhat.</string>
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">GmsCore beállítások</string>
<string name="microg_settings_summary">A GmsCore beállításai</string>
</patch>
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
<string name="revanced_disable_haptic_feedback_title">Haptikus visszajelzés</string>
<string name="revanced_disable_haptic_feedback_summary">Haptikus visszajelzés módosítása</string>
@@ -1529,35 +1544,51 @@ Ez a beállítás lehetővé teszi a magasabb videóminőségek feloldását"</s
<string name="revanced_slide_to_seek_summary_off">A csúsztatás a kereséshez nincs engedélyezve</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Hamis videó stream</string>
<string name="revanced_spoof_video_streams_screen_summary">Hamisítsa meg az ügyfél videó streamet a lejátszási problémák elkerülése érdekében</string>
<string name="revanced_spoof_video_streams_title">Hamis videó stream</string>
<string name="revanced_spoof_video_streams_summary_on">A videó stream hamisítva</string>
<string name="revanced_spoof_video_streams_summary_off">"A videó streamek nem hamisítva vannak
A videólejátszás nem működhet"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">A beállítás kikapcsolása videolejátszási problémákat okozhat.</string>
<string name="revanced_spoof_video_streams_client_type_title">Alapértelmezett kliens</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Az iOS kényyszerített AVC (H.264) videokodeket használ</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">A videokodek AVC-re kényszerítve (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">A videokodek meghatározása automatikusan történik</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"Ennek engedélyezése javíthatja az akkumulátor élettartamát és kijavíthatja a lejátszás akadozását.
Az AVC maximális felbontása 1080p, az Opus audiokodek nem érhető el, és a videolejátszás több internetes adatot használ, mint a VP9 vagy az AV1."</string>
<string name="revanced_spoof_video_streams_about_ios_tv_title">iOS hamisítási mellékhatások</string>
<string name="revanced_spoof_video_streams_about_ios_tv_summary">"• Előfordulhat, hogy a filmeket és a fizetős videókat nem lehet lejátszani
• Nem áll rendelkezésre stabil hangerő
• A videók 1 másodperccel korábban érnek véget"</string>
<string name="revanced_spoof_video_streams_about_title">Hamisítás mellékhatásai</string>
<string name="revanced_spoof_video_streams_about_android_title">Android hamisítási mellékhatások</string>
<string name="revanced_spoof_video_streams_about_android_summary">"• Hiányzik a hangsáv menü
Nem áll rendelkezésre stabil hangerő
• Az eredeti hang kényszerítése nem érhető el"</string>
<string name="revanced_spoof_video_streams_about_android_summary">"• Az hangsáv menü hiányzik
Stabil hangerő nem érhető el"</string>
<string name="revanced_spoof_video_streams_about_experimental">• Kísérleti kliens, és bármikor leállhat</string>
<string name="revanced_spoof_video_streams_about_no_av1">• Nincs AV1 videokodek</string>
<string name="revanced_spoof_video_streams_about_kids_videos">• A gyermekeknek szóló videók nem játszódnak le, ha a felhasználó kijelentkezett, vagy inkognitómódban van.</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">Megjelenítés a Statisztikákban</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_on">A kliens típusa a Statisztikákban látható</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_off">A kliens el van rejtve a Statisztikákban</string>
<string name="revanced_spoof_video_streams_language_title">VR alapértelmezett audio adatfolyam nyelve</string>
<string name="revanced_spoof_video_streams_language_title">Hangfolyam nyelve</string>
</patch>
</app>
<app id="music">
<patch id="misc.settings.settingsPatch">
<string name="revanced_settings_music_screen_0_about_title">Névjegy</string>
<string name="revanced_settings_music_screen_1_ads_title">Hirdetések</string>
<string name="revanced_settings_music_screen_2_general_title">Általános</string>
<string name="revanced_settings_music_screen_3_player_title">Lejátszó</string>
<string name="revanced_settings_music_screen_4_misc_title">Egyéb</string>
</patch>
<patch id="ad.video.hideVideoAdsPatch">
<string name="revanced_music_hide_video_ads_title">Videóhirdetések elrejtése</string>
<string name="revanced_music_hide_video_ads_summary_on">A videóhirdetések rejtve vannak</string>
<string name="revanced_music_hide_video_ads_summary_off">A videóhirdetések láthatók</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
<string name="revanced_music_play_permanent_repeat_title">Állandó ismétlés engedélyezése</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Az állandó ismétlés engedélyezve van</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Az állandó ismétlés letiltva van</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Kategóriasáv elrejtése</string>
<string name="revanced_music_hide_category_bar_summary_on">A kategóriasáv rejtve van</string>
<string name="revanced_music_hide_category_bar_summary_off">A kategóriasáv látható</string>
</patch>
<patch id="layout.premium.hideGetPremiumPatch">
<string name="revanced_music_hide_get_premium_label_title">A „Music Premium beszerzése” címke elrejtése</string>
<string name="revanced_music_hide_get_premium_label_summary_on">A címke rejtve van</string>
<string name="revanced_music_hide_get_premium_label_summary_off">A címke látható</string>
</patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
<string name="revanced_music_hide_upgrade_button_title">Frissítés gomb elrejtése</string>
<string name="revanced_music_hide_upgrade_button_summary_on">A gomb rejtve van</string>
<string name="revanced_music_hide_upgrade_button_summary_off">A gomb látható</string>
</patch>
</app>
<app id="twitch">

View File

@@ -68,6 +68,8 @@ Second \"item\" text"</string>
and changes made here must also be made there. -->
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">GmsCore կարգավորումներ</string>
<string name="microg_settings_summary">GmsCore-ի կարգավորումներ</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="gms_core_toast_not_installed_message">MicroG GmsCore-ը տեղադրված չէ։ Տեղադրեք այն։</string>
<string name="gms_core_dialog_title">Անհրաժեշտ գործողություն</string>
@@ -84,6 +86,37 @@ MicroG-ի համար մարտկոցի օպտիմալացումը անջատել
Սեղմեք շարունակել կոճակը և թույլ տվեք օպտիմալացման փոփոխությունները։"</string>
<string name="gms_core_dialog_continue_text">Շարունակել</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Հնարավոր է տեսանյութի հոսքերը փոփոխել</string>
<string name="revanced_spoof_video_streams_screen_summary">Փոփոխել տեսանյութի հոսքերը համար խուսափել վերարտադրման հետ կապված պրոբլեմներից</string>
<string name="revanced_spoof_video_streams_screen_title">Տեսահոսքերի կեղծում</string>
<string name="revanced_spoof_video_streams_screen_summary">Կեղծել հաճախորդի տեսահոսքերը՝ նվագարկման խնդիրները կանխելու համար</string>
<string name="revanced_spoof_video_streams_title">Հնարավոր է տեսանյութի հոսքերը փոփոխել</string>
<string name="revanced_spoof_video_streams_summary_on">"Տեսահոսքերը կեղծված են
Եթե դուք YouTube Premium օգտատեր եք, այս կարգավորումը կարող է անհրաժեշտ չլինել"</string>
<string name="revanced_spoof_video_streams_summary_off">"Տեսահոսքերը կեղծված չեն
Նվագարկումը հնարավոր է՝ չաշխատի"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Այս կարգավորումն անջատելը կարող է նվագարկման խնդիրներ առաջացնել։</string>
<string name="revanced_spoof_video_streams_client_type_title">Դեֆոլտ կլիենտ</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Debug</string>
<string name="revanced_debug_screen_summary">Միացնել կամ անջատել առաջնորդման ռեժիմի ֆունկցիաները</string>
<string name="revanced_debug_title">Առաջնորդման մատնանշում</string>
<string name="revanced_debug_summary_on">Մարմնացման առաջնորդման մատնանշումները ակտիվացված են</string>
<string name="revanced_debug_summary_off">Մարմնացման առաջնորդման մատնանշումները անջատված են</string>
<string name="revanced_debug_export_logs_to_clipboard_title">Արտահանել վրեժխնդրության կարգաբերման մատյանները</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">Պատճենում է ReVanced-ի կարգաբերման մատյանները սեղմատախտակին</string>
<string name="revanced_debug_logs_disabled">Վրեժխնդրության մատյանների գրանցումն անջատված է</string>
<string name="revanced_debug_logs_none_found">Մատյաններ չեն գտնվել</string>
<string name="revanced_debug_logs_copied_to_clipboard">Մատյանները պատճենված են</string>
<string name="revanced_debug_logs_failed_to_export">Չհաջողվեց արտահանել տեղեկամատյանները՝ %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Մաքրել վրեժխնդրության մատյանները</string>
<string name="revanced_debug_logs_clear_buffer_summary">Մաքրում է բոլոր պահված ReVanced կարգաբերման մատյանները</string>
<string name="revanced_debug_logs_clear_toast">Մատյանները մաքրվել են</string>
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
@@ -110,11 +143,6 @@ MicroG-ի համար մարտկոցի օպտիմալացումը անջատել
<string name="revanced_shorts_disable_background_playback_summary_off">Shorts-ի ֆոնային վերարտադրությունը հնարավոր է</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Debug</string>
<string name="revanced_debug_screen_summary">Միացնել կամ անջատել առաջնորդման ռեժիմի ֆունկցիաները</string>
<string name="revanced_debug_title">Առաջնորդման մատնանշում</string>
<string name="revanced_debug_summary_on">Մարմնացման առաջնորդման մատնանշումները ակտիվացված են</string>
<string name="revanced_debug_summary_off">Մարմնացման առաջնորդման մատնանշումները անջատված են</string>
<string name="revanced_debug_protobuffer_title">Բուֆերի արձանագրությունը մտնել</string>
<string name="revanced_debug_protobuffer_summary_on">Մարմնացման առաջնորդման մատնանշումները պարունակում են բուֆերի տարր</string>
<string name="revanced_debug_protobuffer_summary_off">Մարմնացման առաջնորդման մատնանշումները ներառում են բուֆերի տարր</string>
@@ -132,15 +160,6 @@ MicroG-ի համար մարտկոցի օպտիմալացումը անջատել
<string name="revanced_debug_toast_on_error_user_dialog_message">"Սխալների տոաստի անջատումը թաքցնում է ReVanced-ի բոլոր սխալների ծանուցումները։
Դուք չեք ստանա ան予期した出来事ի մասին ծանուցում։"</string>
<string name="revanced_debug_export_logs_to_clipboard_title">Արտահանել վրեժխնդրության կարգաբերման մատյանները</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">Պատճենում է ReVanced-ի կարգաբերման մատյանները սեղմատախտակին</string>
<string name="revanced_debug_logs_disabled">Վրեժխնդրության մատյանների գրանցումն անջատված է</string>
<string name="revanced_debug_logs_none_found">Մատյաններ չեն գտնվել</string>
<string name="revanced_debug_logs_copied_to_clipboard">Մատյանները պատճենված են</string>
<string name="revanced_debug_logs_failed_to_export">Չհաջողվեց արտահանել տեղեկամատյանները՝ %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Մաքրել վրեժխնդրության մատյանները</string>
<string name="revanced_debug_logs_clear_buffer_summary">Մաքրում է բոլոր պահված ReVanced կարգաբերման մատյանները</string>
<string name="revanced_debug_logs_clear_toast">Մատյանները մաքրվել են</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_hide_album_cards_title">Թաքցնել ալբոմի քարտերը</string>
@@ -700,9 +719,9 @@ MicroG-ի համար մարտկոցի օպտիմալացումը անջատել
<string name="revanced_hide_player_flyout_audio_track_summary_on">Աուդիո ձայնագրման մենյուը թաքցված է</string>
<string name="revanced_hide_player_flyout_audio_track_summary_off">Աուդիո ձայնագրման մենյուը երևում է</string>
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<string name="revanced_hide_player_flyout_audio_track_not_available">"Աուդիո ուղու ընտրացանկը թաքնված է:
<string name="revanced_hide_player_flyout_audio_track_not_available">"Ձայնային ուղու մենյուն թաքնված է
Աուդիո ուղու ընտրացանկը ցուցադրելու համար փոխեք «Կեղծել տեսահոսքերը»-ը iOS TV-ի"</string>
Ձայնային ուղու մենյուն հասանելի չէ, երբ միացված է «Տեսահոսքերը կեղծել» տարբերակը"</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">Դիտել VR-ով թաքցնել</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">VR-ով դիտել մենյուը թաքցված է</string>
@@ -1416,10 +1435,6 @@ Mini-player-ը կարող է գրավվել էկրանից դուրս՝ դեպի
Այս կարգավորման միացումը կարող է բացել տեսանյութի ավելի բարձր որակ։"</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">Այս ընտրության ակտիվացումը կարող է առաջացնել տեսանյութի վերարտադրման հետ կապված պրոբլեմների, ավելի վատ մարտկոցի վերջնական համարձակության և անհայտ կողմնակի ազդեցությունների</string>
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">GmsCore կարգավորումներ</string>
<string name="microg_settings_summary">GmsCore-ի կարգավորումներ</string>
</patch>
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
<string name="revanced_disable_haptic_feedback_title">Հպումային արձագանք</string>
<string name="revanced_disable_haptic_feedback_summary">Փոխել հպումային արձագանքը</string>
@@ -1533,35 +1548,51 @@ Mini-player-ը կարող է գրավվել էկրանից դուրս՝ դեպի
<string name="revanced_slide_to_seek_summary_off">Սահելը համար ընտրելը անջատված է</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Հնարավոր է տեսանյութի հոսքերը փոփոխել</string>
<string name="revanced_spoof_video_streams_screen_summary">Փոփոխել տեսանյութի հոսքերը համար խուսափել վերարտադրման հետ կապված պրոբլեմներից</string>
<string name="revanced_spoof_video_streams_title">Հնարավոր է տեսանյութի հոսքերը փոփոխել</string>
<string name="revanced_spoof_video_streams_summary_on">Տեսանյութի հոսքերը փոփոխված են</string>
<string name="revanced_spoof_video_streams_summary_off">"Տեսանյութի հոսքերը չեն կեղծվում
Տեսանյութի վերարտադրումը կարող է չաշխատել։"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Այս կարգավորման անջատումը կարող է առաջացնել տեսանյութի վերարտադրման հետ կապված պրոբլեմներ</string>
<string name="revanced_spoof_video_streams_client_type_title">Դեֆոլտ կլիենտ</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">iOS-ի համար AVC (H.264) պարտադիր ակտիվացում</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Վիդեո կոդեկը պարտադիր կերպով AVC (H.264) է</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Վիդեո կոդեկը որոշվում է ավտոմատ կերպով</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"Սա ակտիվացնելը կարող է բարելավել մարտկոցի աշխատանքի տևողությունը և վերացնել վերարտադրման խցկումները։
AVC-ի առավելագույն թույլտվությունը 1080p է, Opus աուդիո կոդեկը հասանելի չէ, իսկ վիդեոյի վերարտադրումը VP9-ից կամ AV1-ից ավելի շատ ինտերնետ տվյալներ կօգտագործի։"</string>
<string name="revanced_spoof_video_streams_about_ios_tv_title">iOS խաբեության կողմնակի ազդեցություններ</string>
<string name="revanced_spoof_video_streams_about_ios_tv_summary">"• Ֆիլմերը կամ վճարովի տեսանյութերը չեն կարող աշխատել
• Հասանելի չէ կայուն ձայնի ծավալը
• Տեսանյութերը վերջանում են 1 վայրկյան վաղ"</string>
<string name="revanced_spoof_video_streams_about_title">Կեղծելու կողմնակի ազդեցություններ</string>
<string name="revanced_spoof_video_streams_about_android_title">Android խաբեության կողմնակի ազդեցություններ</string>
<string name="revanced_spoof_video_streams_about_android_summary">"• Ձայնի գրառման ընտրացանկը բացակայում է
Ստաբիլ ձայն չկա
• Իրական ձայնի ընտրությունը հասանելի չէ"</string>
<string name="revanced_spoof_video_streams_about_android_summary">"• Ձայնային ուղու մենյուն բացակայում է
Կայուն ձայնի մակարդակը հասանելի չէ"</string>
<string name="revanced_spoof_video_streams_about_experimental">• Փորձնական հաճախորդ է և կարող է ցանկացած պահի դադարել աշխատել</string>
<string name="revanced_spoof_video_streams_about_no_av1">• Հեռացված բոլոր AV1 վիդեո կոդեկները</string>
<string name="revanced_spoof_video_streams_about_kids_videos">Երեխաների տեսանյութերը կարող են չհամապատասխանել հետևյալ պահանջներին՝ եթե արտոնագրման խախտումներ կան։</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">Ցուցադրել վիճակագրության ակնոցներում</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_on">Հաճախորդի տեսակը ցուցադրվում է վիճակագրության ակնոցներում</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_off">Հաճախորդը թաքնված է վիճակագրության ակնոցներում</string>
<string name="revanced_spoof_video_streams_language_title">VR-ի համար նախապես ընտրված ձայնի գրառման լեզու</string>
<string name="revanced_spoof_video_streams_language_title">Ձայնային հոսքի լեզուն</string>
</patch>
</app>
<app id="music">
<patch id="misc.settings.settingsPatch">
<string name="revanced_settings_music_screen_0_about_title">Մասին</string>
<string name="revanced_settings_music_screen_1_ads_title">Գովազդներ</string>
<string name="revanced_settings_music_screen_2_general_title">Ընդհանուր</string>
<string name="revanced_settings_music_screen_3_player_title">Նվագարկիչ</string>
<string name="revanced_settings_music_screen_4_misc_title">Տարբեր</string>
</patch>
<patch id="ad.video.hideVideoAdsPatch">
<string name="revanced_music_hide_video_ads_title">Թաքցնել տեսագովազդները</string>
<string name="revanced_music_hide_video_ads_summary_on">Տեսագովազդները թաքցված են</string>
<string name="revanced_music_hide_video_ads_summary_off">Տեսագովազդները ցուցադրվում են</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
<string name="revanced_music_play_permanent_repeat_title">Միացնել մշտական կրկնություն</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Մշտական կրկնությունը միացված է</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Մշտական կրկնությունը անջատված է</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Թաքցնել կատեգորիաների վահանակը</string>
<string name="revanced_music_hide_category_bar_summary_on">Կատեգորիաների վահանակը թաքցված է</string>
<string name="revanced_music_hide_category_bar_summary_off">Կատեգորիաների վահանակը ցուցադրվում է</string>
</patch>
<patch id="layout.premium.hideGetPremiumPatch">
<string name="revanced_music_hide_get_premium_label_title">Թաքցնել «Ստացեք Music Premium» պիտակը</string>
<string name="revanced_music_hide_get_premium_label_summary_on">Պիտակը թաքցված է</string>
<string name="revanced_music_hide_get_premium_label_summary_off">Պիտակը ցուցադրվում է</string>
</patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
<string name="revanced_music_hide_upgrade_button_title">Թաքցնել թարմացման կոճակը</string>
<string name="revanced_music_hide_upgrade_button_summary_on">Կոճակը թաքցված է</string>
<string name="revanced_music_hide_upgrade_button_summary_off">Կոճակը ցուցադրվում է</string>
</patch>
</app>
<app id="twitch">

View File

@@ -68,6 +68,8 @@ Untuk menerjemahkan bahasa baru kunjungi translate.revanced.app"</string>
and changes made here must also be made there. -->
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">Pengaturan GmsCore</string>
<string name="microg_settings_summary">Pengaturan untuk GmsCore</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="gms_core_toast_not_installed_message">MicroG GmsCore belum dipasang. Pasang dulu.</string>
<string name="gms_core_dialog_title">Tindakan diperlukan</string>
@@ -84,6 +86,37 @@ Menonaktifkan pengoptimalan baterai MicroG tidak akan berdampak buruk pada pengg
Ketuk tombol lanjutkan dan izinkan perubahan pengoptimalan."</string>
<string name="gms_core_dialog_continue_text">Lanjutkan</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Palsukan aliran video</string>
<string name="revanced_spoof_video_streams_screen_summary">Palsukan klien aliran video untuk mencegah masalah pemutaran</string>
<string name="revanced_spoof_video_streams_screen_title">Mengelabui aliran video</string>
<string name="revanced_spoof_video_streams_screen_summary">Mengelabui aliran video klien untuk mencegah masalah pemutaran</string>
<string name="revanced_spoof_video_streams_title">Palsukan aliran video</string>
<string name="revanced_spoof_video_streams_summary_on">"Stream video ditiru
Jika Anda adalah pengguna YouTube Premium, setelan ini mungkin tidak diperlukan"</string>
<string name="revanced_spoof_video_streams_summary_off">"Aliran video tidak dikelabui
Pemutaran mungkin tidak berfungsi"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Mematikan pengaturan ini dapat menyebabkan masalah pemutaran.</string>
<string name="revanced_spoof_video_streams_client_type_title">Klien bawaan</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Debug</string>
<string name="revanced_debug_screen_summary">Mengaktifkan atau menonaktifkan pilihan debugging</string>
<string name="revanced_debug_title">Pencatatan debug</string>
<string name="revanced_debug_summary_on">Pencatatan debug diaktifkan</string>
<string name="revanced_debug_summary_off">Pencatatan debug dinonaktifkan</string>
<string name="revanced_debug_export_logs_to_clipboard_title">Ekspor catatan debug</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">Salin catatan debug ReVanced ke papan klip</string>
<string name="revanced_debug_logs_disabled">Pencatatan debug dinonaktifkan</string>
<string name="revanced_debug_logs_none_found">Tidak ditemukan catatan</string>
<string name="revanced_debug_logs_copied_to_clipboard">Catatan disalin</string>
<string name="revanced_debug_logs_failed_to_export">Gagal mengekspor catatan: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Bersihkan catatan debug</string>
<string name="revanced_debug_logs_clear_buffer_summary">Menghapus semua catatan debug ReVanced yang tersimpan</string>
<string name="revanced_debug_logs_clear_toast">Catatan dibersihkan</string>
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
@@ -110,11 +143,6 @@ Ketuk tombol lanjutkan dan izinkan perubahan pengoptimalan."</string>
<string name="revanced_shorts_disable_background_playback_summary_off">Pemutaran Shorts di latar belakang diaktifkan</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Debug</string>
<string name="revanced_debug_screen_summary">Mengaktifkan atau menonaktifkan pilihan debugging</string>
<string name="revanced_debug_title">Pencatatan debug</string>
<string name="revanced_debug_summary_on">Pencatatan debug diaktifkan</string>
<string name="revanced_debug_summary_off">Pencatatan debug dinonaktifkan</string>
<string name="revanced_debug_protobuffer_title">Buffer protokol log</string>
<string name="revanced_debug_protobuffer_summary_on">Pencatatan debug termasuk buffer proto</string>
<string name="revanced_debug_protobuffer_summary_off">Pencatatan debug tidak menyertakan buffer proto</string>
@@ -132,15 +160,6 @@ Namun, mengaktifkan ini juga akan mencatat beberapa data pengguna seperti alamat
<string name="revanced_debug_toast_on_error_user_dialog_message">"Mematikan notifikasi kesalahan menyembunyikan semua notifikasi kesalahan ReVanced.
Anda tidak akan diberi tahu tentang kejadian yang tidak terduga."</string>
<string name="revanced_debug_export_logs_to_clipboard_title">Ekspor catatan debug</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">Salin catatan debug ReVanced ke papan klip</string>
<string name="revanced_debug_logs_disabled">Pencatatan debug dinonaktifkan</string>
<string name="revanced_debug_logs_none_found">Tidak ditemukan catatan</string>
<string name="revanced_debug_logs_copied_to_clipboard">Catatan disalin</string>
<string name="revanced_debug_logs_failed_to_export">Gagal mengekspor catatan: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Bersihkan catatan debug</string>
<string name="revanced_debug_logs_clear_buffer_summary">Menghapus semua catatan debug ReVanced yang tersimpan</string>
<string name="revanced_debug_logs_clear_toast">Catatan dibersihkan</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_hide_album_cards_title">Sembunyikan kartu album</string>
@@ -702,7 +721,7 @@ Jika mengubah setelan ini tidak berpengaruh, coba beralih ke mode Penyamaran."</
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<string name="revanced_hide_player_flyout_audio_track_not_available">"Menu trek audio disembunyikan
Untuk menampilkan menu trek Audio, ubah 'Spoof aliran video' ke iOS TV"</string>
Menu trek audio tidak tersedia saat 'Spoof stream video' diaktifkan"</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">Sembunyikan Tonton di VR</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Menu tonton di VR disembunyikan</string>
@@ -1078,7 +1097,7 @@ Id pengguna Anda seperti kata sandi dan jangan pernah dibagikan."</string>
<string name="revanced_sb_segments_hook_sum">Trailer yang dinarasikan untuk video mendatang, sapaan, dan perpisahan. Tidak termasuk bagian yang menambahkan konten tambahan</string>
<string name="revanced_sb_segments_preview">Pratinjau / Rekap</string>
<string name="revanced_sb_segments_preview_sum">Kumpulan klip yang menunjukkan apa yang akan datang atau apa yang terjadi di video atau di video lain dari sebuah seri, di mana semua informasi diulang di tempat lain</string>
<string name="revanced_sb_segments_filler">Penyimpangan / Lelucon</string>
<string name="revanced_sb_segments_filler">Singgungan / Lelucon</string>
<string name="revanced_sb_segments_filler_sum">Adegan atau lelucon sampingan yang tidak diperlukan untuk memahami konten utama video. Tidak termasuk bagian yang memberikan konteks atau detail latar belakang</string>
<string name="revanced_sb_segments_nomusic">Musik: Bagian Non-Musik</string>
<string name="revanced_sb_segments_nomusic_sum">Hanya untuk digunakan pada video musik. Bagian video musik tanpa musiknya, yang belum tercakup dalam kategori lain</string>
@@ -1092,11 +1111,11 @@ Id pengguna Anda seperti kata sandi dan jangan pernah dibagikan."</string>
<string name="revanced_sb_skip_button_intro_middle">Lewati jeda</string>
<string name="revanced_sb_skip_button_intro_end">Lewati jeda</string>
<string name="revanced_sb_skip_button_outro">Lewati outro</string>
<string name="revanced_sb_skip_button_hook">Lewati hook</string>
<string name="revanced_sb_skip_button_hook">Lewati pengantar</string>
<string name="revanced_sb_skip_button_preview_beginning">Lewati pratinjau</string>
<string name="revanced_sb_skip_button_preview_middle">Lewati pratinjau</string>
<string name="revanced_sb_skip_button_preview_end">Lewati rekap</string>
<string name="revanced_sb_skip_button_filler">Lewati penyimpangan</string>
<string name="revanced_sb_skip_button_filler">Lewati singgungan</string>
<string name="revanced_sb_skip_button_nomusic">Lewati non-musik</string>
<string name="revanced_sb_skip_button_unsubmitted">Lewati segmen</string>
<string name="revanced_sb_skipped_sponsor">Sponsor dilewati</string>
@@ -1107,11 +1126,11 @@ Id pengguna Anda seperti kata sandi dan jangan pernah dibagikan."</string>
<string name="revanced_sb_skipped_intro_middle">Jeda dilewati</string>
<string name="revanced_sb_skipped_intro_end">Jeda dilewati</string>
<string name="revanced_sb_skipped_outro">Outro dilewati</string>
<string name="revanced_sb_skipped_hook">Hook dilewati</string>
<string name="revanced_sb_skipped_hook">Sapaan dilewati</string>
<string name="revanced_sb_skipped_preview_beginning">Pratinjau dilewati</string>
<string name="revanced_sb_skipped_preview_middle">Pratinjau dilewati</string>
<string name="revanced_sb_skipped_preview_end">Rekap dilewati</string>
<string name="revanced_sb_skipped_filler">Penyimpangan dilewati</string>
<string name="revanced_sb_skipped_filler">Singgungan dilewati</string>
<string name="revanced_sb_skipped_nomusic">Melewati bagian non-musik</string>
<string name="revanced_sb_skipped_unsubmitted">Melewati segmen yang belum dikirim</string>
<string name="revanced_sb_skipped_multiple_segments">Beberapa segmen dilewati</string>
@@ -1414,10 +1433,6 @@ Kualitas video yang lebih tinggi mungkin tidak terkunci, tetapi Anda mungkin men
Mengaktifkan ini dapat membuka kualitas video yang lebih tinggi"</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">Mengaktifkan ini dapat menyebabkan pemutaran video tersendat-sendat, masa pakai baterai yang lebih buruk, dan efek samping yang tidak diketahui.</string>
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">Pengaturan GmsCore</string>
<string name="microg_settings_summary">Pengaturan untuk GmsCore</string>
</patch>
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
<string name="revanced_disable_haptic_feedback_title">Umpan balik sentuh getar</string>
<string name="revanced_disable_haptic_feedback_summary">Ubah umpan balik sentuh getar</string>
@@ -1531,35 +1546,51 @@ Mengaktifkan ini dapat membuka kualitas video yang lebih tinggi"</string>
<string name="revanced_slide_to_seek_summary_off">Geser untuk mencari tidak diaktifkan</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Palsukan aliran video</string>
<string name="revanced_spoof_video_streams_screen_summary">Palsukan klien aliran video untuk mencegah masalah pemutaran</string>
<string name="revanced_spoof_video_streams_title">Palsukan aliran video</string>
<string name="revanced_spoof_video_streams_summary_on">Aliran video dipalsukan</string>
<string name="revanced_spoof_video_streams_summary_off">"Streaming video tidak dipalsukan
Pemutaran video mungkin tidak berfungsi"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Mematikan pengaturan ini dapat menyebabkan masalah pemutaran video.</string>
<string name="revanced_spoof_video_streams_client_type_title">Klien bawaan</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Paksa iOS AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Codec video dipaksa menjadi AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Codec video ditentukan secara otomatis</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"Mengaktifkan ini mungkin dapat meningkatkan daya tahan baterai dan memperbaiki masalah pemutaran.
AVC memiliki resolusi maksimum 1080p, codec audio Opus tidak tersedia, dan pemutaran video akan menggunakan lebih banyak data internet daripada VP9 atau AV1."</string>
<string name="revanced_spoof_video_streams_about_ios_tv_title">Efek samping pemalsuan iOS</string>
<string name="revanced_spoof_video_streams_about_ios_tv_summary">"• Film atau video berbayar mungkin tidak dapat diputar
• Volume stabil tidak tersedia
• Video berakhir 1 detik lebih awal"</string>
<string name="revanced_spoof_video_streams_about_title">Efek samping pemalsuan</string>
<string name="revanced_spoof_video_streams_about_android_title">Efek samping pemalsuan Android</string>
<string name="revanced_spoof_video_streams_about_android_summary">"• Menu trek audio tidak ada
• Volume stabil tidak tersedia
• Paksa audio asli tidak tersedia"</string>
• Volume stabil tidak tersedia"</string>
<string name="revanced_spoof_video_streams_about_experimental">• Klien eksperimental dan dapat berhenti berfungsi kapan saja</string>
<string name="revanced_spoof_video_streams_about_no_av1">• Tidak ada codec video AV1</string>
<string name="revanced_spoof_video_streams_about_kids_videos">• Video anak-anak mungkin tidak dapat diputar saat keluar atau dalam mode penyamaran</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">Tampilkan di Statistik untuk nerds</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_on">Jenis klien ditampilkan di Statistik untuk nerds</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_off">Klien disembunyikan di Statistik untuk nerds</string>
<string name="revanced_spoof_video_streams_language_title">Bahasa aliran audio bawaan VR</string>
<string name="revanced_spoof_video_streams_language_title">Bahasa aliran audio</string>
</patch>
</app>
<app id="music">
<patch id="misc.settings.settingsPatch">
<string name="revanced_settings_music_screen_0_about_title">Tentang</string>
<string name="revanced_settings_music_screen_1_ads_title">Iklan</string>
<string name="revanced_settings_music_screen_2_general_title">Umum</string>
<string name="revanced_settings_music_screen_3_player_title">Pemutar</string>
<string name="revanced_settings_music_screen_4_misc_title">Lain-lain</string>
</patch>
<patch id="ad.video.hideVideoAdsPatch">
<string name="revanced_music_hide_video_ads_title">Sembunyikan iklan video</string>
<string name="revanced_music_hide_video_ads_summary_on">Iklan video disembunyikan</string>
<string name="revanced_music_hide_video_ads_summary_off">Iklan video ditampilkan</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
<string name="revanced_music_play_permanent_repeat_title">Aktifkan pengulangan permanen</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Pengulangan permanen diaktifkan</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Pengulangan permanen dinonaktifkan</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Sembunyikan bilah kategori</string>
<string name="revanced_music_hide_category_bar_summary_on">Bilah kategori disembunyikan</string>
<string name="revanced_music_hide_category_bar_summary_off">Bilah kategori ditampilkan</string>
</patch>
<patch id="layout.premium.hideGetPremiumPatch">
<string name="revanced_music_hide_get_premium_label_title">Sembunyikan label \'Dapatkan Music Premium\'</string>
<string name="revanced_music_hide_get_premium_label_summary_on">Label disembunyikan</string>
<string name="revanced_music_hide_get_premium_label_summary_off">Label ditampilkan</string>
</patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
<string name="revanced_music_hide_upgrade_button_title">Sembunyikan tombol upgrade</string>
<string name="revanced_music_hide_upgrade_button_summary_on">Tombol disembunyikan</string>
<string name="revanced_music_hide_upgrade_button_summary_off">Tombol ditampilkan</string>
</patch>
</app>
<app id="twitch">

View File

@@ -30,6 +30,10 @@ Second \"item\" text"</string>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
@@ -207,8 +211,6 @@ Second \"item\" text"</string>
</patch>
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
</patch>
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
</patch>
<patch id="misc.gms.accountCredentialsInvalidTextPatch">
@@ -242,6 +244,20 @@ Second \"item\" text"</string>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
</patch>
</app>
<app id="music">
<patch id="misc.settings.settingsPatch">
</patch>
<patch id="ad.video.hideVideoAdsPatch">
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch>
<patch id="layout.compactheader.hideCategoryBar">
</patch>
<patch id="layout.premium.hideGetPremiumPatch">
</patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
</patch>
</app>
<app id="twitch">
<patch id="ad.audio.audioAdsPatch">
</patch>

View File

@@ -68,6 +68,8 @@ Per tradurre nuove lingue visita translate.revanced.app"</string>
and changes made here must also be made there. -->
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">Impostazioni di GmsCore</string>
<string name="microg_settings_summary">Impostazioni per GmsCore</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="gms_core_toast_not_installed_message">MicroG GmsCore non è installato. Installalo.</string>
<string name="gms_core_dialog_title">Azione necessaria</string>
@@ -84,6 +86,37 @@ Disabilitare le ottimizzazioni della batteria per MicroG non influirà negativam
Tocca il pulsante Continua e consenti le modifiche di ottimizzazione."</string>
<string name="gms_core_dialog_continue_text">Continua</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Simula il client del flusso video</string>
<string name="revanced_spoof_video_streams_screen_summary">Simula il client del flusso video per evitare problemi di riproduzione</string>
<string name="revanced_spoof_video_streams_screen_title">Falsifica i flussi video</string>
<string name="revanced_spoof_video_streams_screen_summary">Falsifica i flussi video del client per prevenire problemi di riproduzione</string>
<string name="revanced_spoof_video_streams_title">Simula il client del flusso video</string>
<string name="revanced_spoof_video_streams_summary_on">"I flussi video sono falsificati
Se sei un utente YouTube Premium, questa impostazione potrebbe non essere necessaria"</string>
<string name="revanced_spoof_video_streams_summary_off">"I flussi video non sono falsificati
La riproduzione potrebbe non funzionare"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">La disattivazione di questa impostazione potrebbe causare problemi di riproduzione.</string>
<string name="revanced_spoof_video_streams_client_type_title">Client predefinito</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Debug</string>
<string name="revanced_debug_screen_summary">Abilita o disabilita impostazioni di debug</string>
<string name="revanced_debug_title">Log di debug</string>
<string name="revanced_debug_summary_on">I log di debug sono abilitati</string>
<string name="revanced_debug_summary_off">I log di debug sono disabilitati</string>
<string name="revanced_debug_export_logs_to_clipboard_title">Esporta i log di debug</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">Copia i log di debug di ReVanced negli Appunti</string>
<string name="revanced_debug_logs_disabled">La registrazione di debug è disabilitata</string>
<string name="revanced_debug_logs_none_found">Nessun log trovato</string>
<string name="revanced_debug_logs_copied_to_clipboard">Log copiati</string>
<string name="revanced_debug_logs_failed_to_export">Esportazione dei log non riuscita: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Cancella i log di debug</string>
<string name="revanced_debug_logs_clear_buffer_summary">Cancella tutti i log di debug di ReVanced memorizzati</string>
<string name="revanced_debug_logs_clear_toast">Log cancellati</string>
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
@@ -110,11 +143,6 @@ Tocca il pulsante Continua e consenti le modifiche di ottimizzazione."</string>
<string name="revanced_shorts_disable_background_playback_summary_off">La riproduzione in background degli Shorts è abilitata</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Debug</string>
<string name="revanced_debug_screen_summary">Abilita o disabilita impostazioni di debug</string>
<string name="revanced_debug_title">Log di debug</string>
<string name="revanced_debug_summary_on">I log di debug sono abilitati</string>
<string name="revanced_debug_summary_off">I log di debug sono disabilitati</string>
<string name="revanced_debug_protobuffer_title">Buffer di protocollo per log</string>
<string name="revanced_debug_protobuffer_summary_on">I log di debug includono proto buffer</string>
<string name="revanced_debug_protobuffer_summary_off">I log di debug non includono proto buffer</string>
@@ -132,15 +160,6 @@ Tuttavia, l'abilitazione di questa opzione registrerà anche alcuni dati dell'ut
<string name="revanced_debug_toast_on_error_user_dialog_message">"Disabilitare i toast di errore nasconde tutte le notifiche di errore di ReVanced.
Non sarai notificato di eventi imprevisti."</string>
<string name="revanced_debug_export_logs_to_clipboard_title">Esporta i log di debug</string>
<string name="revanced_debug_export_logs_to_clipboard_summary">Copia i log di debug di ReVanced negli Appunti</string>
<string name="revanced_debug_logs_disabled">La registrazione di debug è disabilitata</string>
<string name="revanced_debug_logs_none_found">Nessun log trovato</string>
<string name="revanced_debug_logs_copied_to_clipboard">Log copiati</string>
<string name="revanced_debug_logs_failed_to_export">Esportazione dei log non riuscita: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Cancella i log di debug</string>
<string name="revanced_debug_logs_clear_buffer_summary">Cancella tutti i log di debug di ReVanced memorizzati</string>
<string name="revanced_debug_logs_clear_toast">Log cancellati</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_hide_album_cards_title">Nascondi le schede degli album</string>
@@ -702,7 +721,7 @@ Se la modifica di questa impostazione non ha effetto, prova a passare alla modal
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<string name="revanced_hide_player_flyout_audio_track_not_available">"Il menu della traccia audio è nascosto
Per mostrare il menu della traccia audio, cambia \"Spoof video streams\" in iOS TV"</string>
Il menu della traccia audio non è disponibile quando \"Falsifica flussi video\" è abilitato"</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">Nascondi Guarda in VR</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Il menu Guarda in VR è nascosto</string>
@@ -1414,10 +1433,6 @@ Potrebbero essere sbloccate qualità video più elevate, ma potresti riscontrare
Abilitare questa opzione può sbloccare qualità video più elevate"</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">Abilitando questo può causare stuttering nella riproduzione del video, peggiorare la durata della batteria e causare effetti collaterali sconosciuti.</string>
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">Impostazioni di GmsCore</string>
<string name="microg_settings_summary">Impostazioni per GmsCore</string>
</patch>
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
<string name="revanced_disable_haptic_feedback_title">Feedback aptico</string>
<string name="revanced_disable_haptic_feedback_summary">Modifica feedback aptico</string>
@@ -1531,35 +1546,51 @@ Abilitare questa opzione può sbloccare qualità video più elevate"</string>
<string name="revanced_slide_to_seek_summary_off">Scorri per avanzare non è abilitato</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Simula il client del flusso video</string>
<string name="revanced_spoof_video_streams_screen_summary">Simula il client del flusso video per evitare problemi di riproduzione</string>
<string name="revanced_spoof_video_streams_title">Simula il client del flusso video</string>
<string name="revanced_spoof_video_streams_summary_on">Il client del flusso video è simulato</string>
<string name="revanced_spoof_video_streams_summary_off">"I flussi video non sono simulati
La riproduzione video potrebbe non funzionare"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Disattivando questa impostazione potrebbe causare problemi di riproduzione video.</string>
<string name="revanced_spoof_video_streams_client_type_title">Client predefinito</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Forza iOS AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Il codec video è forzato ad AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Il codec video è determinato automaticamente</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"L'abilitazione di questa opzione potrebbe migliorare la durata della batteria e risolvere i problemi di stuttering durante la riproduzione.
AVC ha una risoluzione massima di 1080p, il codec audio Opus non è disponibile e la riproduzione video utilizzerà più dati Internet rispetto a VP9 o AV1."</string>
<string name="revanced_spoof_video_streams_about_ios_tv_title">Effetti collaterali simulazione iOS</string>
<string name="revanced_spoof_video_streams_about_ios_tv_summary">"• I film o i video a pagamento potrebbero non riprodurre
• Il volume stabile non è disponibile
• I video terminano 1 secondo prima"</string>
<string name="revanced_spoof_video_streams_about_title">Effetti collaterali della falsificazione</string>
<string name="revanced_spoof_video_streams_about_android_title">Effetti collaterali simulazione Android</string>
<string name="revanced_spoof_video_streams_about_android_summary">"• Il menu traccia audio è mancante
• Il volume stabile non è disponibile
• Forza l'audio originale non è disponibile"</string>
<string name="revanced_spoof_video_streams_about_android_summary">"• Il menu della traccia audio è mancante
• Il volume stabile non è disponibile"</string>
<string name="revanced_spoof_video_streams_about_experimental">• Client sperimentale e potrebbe smettere di funzionare in qualsiasi momento</string>
<string name="revanced_spoof_video_streams_about_no_av1">• Nessun codec video AV1</string>
<string name="revanced_spoof_video_streams_about_kids_videos">• I video dei bambini potrebbero non essere riprodotti quando si è disconnessi o in modalità di navigazione in incognito</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">Mostra nelle statistiche per nerd</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_on">Il tipo di client è mostrato nelle statistiche per nerd</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_off">Il client è nascosto nelle statistiche per nerd</string>
<string name="revanced_spoof_video_streams_language_title">Lingua predefinita del flusso audio VR</string>
<string name="revanced_spoof_video_streams_language_title">Lingua del flusso audio</string>
</patch>
</app>
<app id="music">
<patch id="misc.settings.settingsPatch">
<string name="revanced_settings_music_screen_0_about_title">Informazioni</string>
<string name="revanced_settings_music_screen_1_ads_title">Annunci</string>
<string name="revanced_settings_music_screen_2_general_title">Generale</string>
<string name="revanced_settings_music_screen_3_player_title">Lettore</string>
<string name="revanced_settings_music_screen_4_misc_title">Varie</string>
</patch>
<patch id="ad.video.hideVideoAdsPatch">
<string name="revanced_music_hide_video_ads_title">Nascondi annunci video</string>
<string name="revanced_music_hide_video_ads_summary_on">Gli annunci video sono nascosti</string>
<string name="revanced_music_hide_video_ads_summary_off">Gli annunci video sono mostrati</string>
</patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch">
<string name="revanced_music_play_permanent_repeat_title">Abilita ripetizione permanente</string>
<string name="revanced_music_play_permanent_repeat_summary_on">La ripetizione permanente è abilitata</string>
<string name="revanced_music_play_permanent_repeat_summary_off">La ripetizione permanente è disabilitata</string>
</patch>
<patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Nascondi barra delle categorie</string>
<string name="revanced_music_hide_category_bar_summary_on">La barra delle categorie è nascosta</string>
<string name="revanced_music_hide_category_bar_summary_off">La barra delle categorie è mostrata</string>
</patch>
<patch id="layout.premium.hideGetPremiumPatch">
<string name="revanced_music_hide_get_premium_label_title">Nascondi l\'etichetta \'Ottieni Music Premium\'</string>
<string name="revanced_music_hide_get_premium_label_summary_on">L\'etichetta è nascosta</string>
<string name="revanced_music_hide_get_premium_label_summary_off">L\'etichetta è mostrata</string>
</patch>
<patch id="layout.upgradebutton.hideUpgradeButtonPatch">
<string name="revanced_music_hide_upgrade_button_title">Nascondi pulsante di aggiornamento</string>
<string name="revanced_music_hide_upgrade_button_summary_on">Il pulsante è nascosto</string>
<string name="revanced_music_hide_upgrade_button_summary_off">Il pulsante è mostrato</string>
</patch>
</app>
<app id="twitch">

Some files were not shown because too many files have changed in this diff Show More