Compare commits

...

17 Commits

Author SHA1 Message Date
semantic-release-bot
2d9f08a08e chore: Release v5.4.0-dev.6 [skip ci]
# [5.4.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.5...v5.4.0-dev.6) (2024-12-10)

### Bug Fixes

* **YouTube Music - Spoof video streams:** Disable stable volume ([#4097](https://github.com/ReVanced/revanced-patches/issues/4097)) ([78c5118](78c51182f2))
2024-12-10 21:08:47 +00:00
LisoUseInAIKyrios
78c51182f2 fix(YouTube Music - Spoof video streams): Disable stable volume (#4097) 2024-12-11 01:04:48 +04:00
semantic-release-bot
feac2ab439 chore: Release v5.4.0-dev.5 [skip ci]
# [5.4.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.4...v5.4.0-dev.5) (2024-12-10)

### Bug Fixes

* **YouTube - Spoof video streams:** Resolve playback of age restricted videos ([#4096](https://github.com/ReVanced/revanced-patches/issues/4096)) ([32be03c](32be03c28d))
2024-12-10 20:46:59 +00:00
LisoUseInAIKyrios
32be03c28d fix(YouTube - Spoof video streams): Resolve playback of age restricted videos (#4096) 2024-12-11 00:42:56 +04:00
github-actions[bot]
6a345eee37 chore: Sync translations (#4093) 2024-12-10 21:26:57 +04:00
LisoUseInAIKyrios
61be7731e3 refactor(YouTube - Spoof streaming data): Add more debug logging 2024-12-10 21:12:38 +04:00
semantic-release-bot
8295356f88 chore: Release v5.4.0-dev.4 [skip ci]
# [5.4.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.3...v5.4.0-dev.4) (2024-12-10)

### Bug Fixes

* **YouTube - Spoof video streams:** Fix error toast that is sometimes shown ([#4090](https://github.com/ReVanced/revanced-patches/issues/4090)) ([3ec2577](3ec25778eb))
2024-12-10 16:30:47 +00:00
LisoUseInAIKyrios
3ec25778eb fix(YouTube - Spoof video streams): Fix error toast that is sometimes shown (#4090) 2024-12-10 20:27:22 +04:00
LisoUseInAIKyrios
3faf0ac160 refactor(YouTube Music): Show error toast if GmsCore Support is included with root installation 2024-12-10 15:15:02 +04:00
LisoUseInAIKyrios
3ff559878b refactor(YouTube - Miniplayer): Use 'Default' language to describe unpatched Miniplayer type 2024-12-10 03:13:39 +04:00
LisoUseInAIKyrios
ed9c78da1e chore(YouTube - Spoof video streams): Improve error logging 2024-12-10 02:56:40 +04:00
semantic-release-bot
eefb59020e chore: Release v5.4.0-dev.3 [skip ci]
# [5.4.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.2...v5.4.0-dev.3) (2024-12-09)

### Bug Fixes

* **TikTok - Settings:** Use correct colors for dark mode ([#4087](https://github.com/ReVanced/revanced-patches/issues/4087)) ([18f1884](18f18849f3))
2024-12-09 20:50:09 +00:00
LisoUseInAIKyrios
18f18849f3 fix(TikTok - Settings): Use correct colors for dark mode (#4087) 2024-12-10 00:46:53 +04:00
semantic-release-bot
b172c38284 chore: Release v5.4.0-dev.2 [skip ci]
# [5.4.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.1...v5.4.0-dev.2) (2024-12-09)

### Bug Fixes

* **TikTok - SIM Spoof:** Change patch to default off to fix login ([#4084](https://github.com/ReVanced/revanced-patches/issues/4084)) ([3c47bff](3c47bfff1a))

### Features

* Add Internal data documents provider patch ([#3830](https://github.com/ReVanced/revanced-patches/issues/3830)) ([89c45af](89c45afcc6))
2024-12-09 17:52:14 +00:00
github-actions[bot]
5b15602896 chore: Sync translations (#4085) 2024-12-09 21:49:37 +04:00
Tim Schneeberger
89c45afcc6 feat: Add Internal data documents provider patch (#3830)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-12-09 18:46:31 +01:00
LisoUseInAIKyrios
3c47bfff1a fix(TikTok - SIM Spoof): Change patch to default off to fix login (#4084) 2024-12-09 18:45:42 +01:00
77 changed files with 1470 additions and 447 deletions

View File

@@ -1,3 +1,43 @@
# [5.4.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.5...v5.4.0-dev.6) (2024-12-10)
### Bug Fixes
* **YouTube Music - Spoof video streams:** Disable stable volume ([#4097](https://github.com/ReVanced/revanced-patches/issues/4097)) ([16bb9df](https://github.com/ReVanced/revanced-patches/commit/16bb9dfc299612f3922724c136878606987ab132))
# [5.4.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.4...v5.4.0-dev.5) (2024-12-10)
### Bug Fixes
* **YouTube - Spoof video streams:** Resolve playback of age restricted videos ([#4096](https://github.com/ReVanced/revanced-patches/issues/4096)) ([839a404](https://github.com/ReVanced/revanced-patches/commit/839a4045f1bb1759d89047834e0b7695781e82a3))
# [5.4.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.3...v5.4.0-dev.4) (2024-12-10)
### Bug Fixes
* **YouTube - Spoof video streams:** Fix error toast that is sometimes shown ([#4090](https://github.com/ReVanced/revanced-patches/issues/4090)) ([4c46cb2](https://github.com/ReVanced/revanced-patches/commit/4c46cb27a02c6f29626cd769b6a8e825645d5b16))
# [5.4.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.2...v5.4.0-dev.3) (2024-12-09)
### Bug Fixes
* **TikTok - Settings:** Use correct colors for dark mode ([#4087](https://github.com/ReVanced/revanced-patches/issues/4087)) ([6bd22ff](https://github.com/ReVanced/revanced-patches/commit/6bd22ffa7e8af4d8f5d2d3b1711bd92c44b4e4aa))
# [5.4.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.1...v5.4.0-dev.2) (2024-12-09)
### Bug Fixes
* **TikTok - SIM Spoof:** Change patch to default off to fix login ([#4084](https://github.com/ReVanced/revanced-patches/issues/4084)) ([f4659a3](https://github.com/ReVanced/revanced-patches/commit/f4659a328eaf600e1e5f02a66fa2af4b6d8dc7c1))
### Features
* Add Internal data documents provider patch ([#3830](https://github.com/ReVanced/revanced-patches/issues/3830)) ([cb22f65](https://github.com/ReVanced/revanced-patches/commit/cb22f652ed678d81ffda9ece659b3971225d6931))
# [5.4.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.3.0...v5.4.0-dev.1) (2024-12-09)

View File

@@ -0,0 +1,3 @@
dependencies {
compileOnly(libs.annotation)
}

View File

@@ -0,0 +1,334 @@
package app.revanced.extension.all.misc.directory.documentsprovider;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.ProviderInfo;
import android.database.Cursor;
import android.database.MatrixCursor;
import android.os.CancellationSignal;
import android.os.ParcelFileDescriptor;
import android.provider.DocumentsContract;
import android.provider.DocumentsProvider;
import android.system.ErrnoException;
import android.system.Os;
import android.system.StructStat;
import android.util.Log;
import android.webkit.MimeTypeMap;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Objects;
/**
* A DocumentsProvider that allows access to the app's internal data directory.
*/
public class InternalDataDocumentsProvider extends DocumentsProvider {
private static final String[] rootColumns =
{"root_id", "mime_types", "flags", "icon", "title", "summary", "document_id"};
private static final String[] directoryColumns =
{"document_id", "mime_type", "_display_name", "last_modified", "flags",
"_size", "full_path", "lstat_info"};
private static final int S_IFLNK = 0x8000;
private String packageName;
private File dataDirectory;
/**
* Recursively delete a file or directory and all its children.
*
* @param root The file or directory to delete.
* @return True if the file or directory and all its children were successfully deleted.
*/
private static boolean deleteRecursively(File root) {
// If root is a directory, delete all children first
if (root.isDirectory()) {
try {
// Only delete recursively if the directory is not a symlink
if ((Os.lstat(root.getPath()).st_mode & S_IFLNK) != S_IFLNK) {
File[] files = root.listFiles();
if (files != null) {
for (File file : files) {
if (!deleteRecursively(file)) {
return false;
}
}
}
}
} catch (ErrnoException e) {
Log.e("InternalDocumentsProvider", "Failed to lstat " + root.getPath(), e);
}
}
// Delete file or empty directory
return root.delete();
}
/**
* Resolve the MIME type of a file based on its extension.
*
* @param file The file to resolve the MIME type for.
* @return The MIME type of the file.
*/
private static String resolveMimeType(File file) {
if (file.isDirectory()) {
return DocumentsContract.Document.MIME_TYPE_DIR;
}
String name = file.getName();
int indexOfExtDot = name.lastIndexOf('.');
if (indexOfExtDot < 0) {
// No extension
return "application/octet-stream";
}
String extension = name.substring(indexOfExtDot + 1).toLowerCase();
String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
return mimeType != null ? mimeType : "application/octet-stream";
}
@Override
public final boolean onCreate() {
return true;
}
@Override
public final void attachInfo(Context context, ProviderInfo providerInfo) {
super.attachInfo(context, providerInfo);
this.packageName = context.getPackageName();
this.dataDirectory = context.getFilesDir().getParentFile();
}
@Override
public final String createDocument(String parentDocumentId, String mimeType, String displayName) throws FileNotFoundException {
File directory = resolveDocumentId(parentDocumentId);
File file = new File(directory, displayName);
// If file already exists, append a number to the name
int i = 2;
while (file.exists()) {
file = new File(directory, displayName + " (" + i + ")");
i++;
}
try {
// Create the file or directory
if (mimeType.equals(DocumentsContract.Document.MIME_TYPE_DIR) ? file.mkdir() : file.createNewFile()) {
// Return the document ID of the new entity
if (!parentDocumentId.endsWith("/")) {
parentDocumentId = parentDocumentId + "/";
}
return parentDocumentId + file.getName();
}
} catch (IOException e) {
// Do nothing. We are throwing a FileNotFoundException later if the file could not be created.
}
throw new FileNotFoundException("Failed to create document in " + parentDocumentId + " with name " + displayName);
}
@Override
public final void deleteDocument(String documentId) throws FileNotFoundException {
File file = resolveDocumentId(documentId);
if (!deleteRecursively(file)) {
throw new FileNotFoundException("Failed to delete document " + documentId);
}
}
@Override
public final String getDocumentType(String documentId) throws FileNotFoundException {
return resolveMimeType(resolveDocumentId(documentId));
}
@Override
public final boolean isChildDocument(String parentDocumentId, String documentId) {
return documentId.startsWith(parentDocumentId);
}
@Override
public final String moveDocument(String sourceDocumentId, String sourceParentDocumentId, String targetParentDocumentId) throws FileNotFoundException {
File source = resolveDocumentId(sourceDocumentId);
File dest = resolveDocumentId(targetParentDocumentId);
File file = new File(dest, source.getName());
if (!file.exists() && source.renameTo(file)) {
// Return the new document ID
if (targetParentDocumentId.endsWith("/")) {
return targetParentDocumentId + file.getName();
}
return targetParentDocumentId + "/" + file.getName();
}
throw new FileNotFoundException("Failed to move document from " + sourceDocumentId + " to " + targetParentDocumentId);
}
@Override
public final ParcelFileDescriptor openDocument(String documentId, String mode, CancellationSignal signal) throws FileNotFoundException {
File file = resolveDocumentId(documentId);
return ParcelFileDescriptor.open(file, ParcelFileDescriptor.parseMode(mode));
}
@Override
public final Cursor queryChildDocuments(String parentDocumentId, String[] projection, String sortOrder) throws FileNotFoundException {
if (parentDocumentId.endsWith("/")) {
parentDocumentId = parentDocumentId.substring(0, parentDocumentId.length() - 1);
}
if (projection == null) {
projection = directoryColumns;
}
MatrixCursor cursor = new MatrixCursor(projection);
File children = resolveDocumentId(parentDocumentId);
// Collect all children
File[] files = children.listFiles();
if (files != null) {
for (File file : files) {
addRowForDocument(cursor, parentDocumentId + "/" + file.getName(), file);
}
}
return cursor;
}
@Override
public final Cursor queryDocument(String documentId, String[] projection) throws FileNotFoundException {
if (projection == null) {
projection = directoryColumns;
}
MatrixCursor cursor = new MatrixCursor(projection);
addRowForDocument(cursor, documentId, null);
return cursor;
}
@Override
public final Cursor queryRoots(String[] projection) {
ApplicationInfo info = Objects.requireNonNull(getContext()).getApplicationInfo();
String appName = info.loadLabel(getContext().getPackageManager()).toString();
if (projection == null) {
projection = rootColumns;
}
MatrixCursor cursor = new MatrixCursor(projection);
MatrixCursor.RowBuilder row = cursor.newRow();
row.add(DocumentsContract.Root.COLUMN_ROOT_ID, this.packageName);
row.add(DocumentsContract.Root.COLUMN_DOCUMENT_ID, this.packageName);
row.add(DocumentsContract.Root.COLUMN_SUMMARY, this.packageName);
row.add(DocumentsContract.Root.COLUMN_FLAGS,
DocumentsContract.Root.FLAG_LOCAL_ONLY |
DocumentsContract.Root.FLAG_SUPPORTS_IS_CHILD);
row.add(DocumentsContract.Root.COLUMN_TITLE, appName);
row.add(DocumentsContract.Root.COLUMN_MIME_TYPES, "*/*");
row.add(DocumentsContract.Root.COLUMN_ICON, info.icon);
return cursor;
}
@Override
public final void removeDocument(String documentId, String parentDocumentId) throws FileNotFoundException {
deleteDocument(documentId);
}
@Override
public final String renameDocument(String documentId, String displayName) throws FileNotFoundException {
File file = resolveDocumentId(documentId);
if (!file.renameTo(new File(file.getParentFile(), displayName))) {
throw new FileNotFoundException("Failed to rename document from " + documentId + " to " + displayName);
}
// Return the new document ID
return documentId.substring(0, documentId.lastIndexOf('/', documentId.length() - 2)) + "/" + displayName;
}
/**
* Resolve a file instance for a given document ID.
*
* @param fullContentPath The document ID to resolve.
* @return File object for the given document ID.
* @throws FileNotFoundException If the document ID is invalid or the file does not exist.
*/
private File resolveDocumentId(String fullContentPath) throws FileNotFoundException {
if (!fullContentPath.startsWith(this.packageName)) {
throw new FileNotFoundException(fullContentPath + " not found");
}
String path = fullContentPath.substring(this.packageName.length());
// Resolve the relative path within /data/data/{PKG}
File file;
if (path.equals("/") || path.isEmpty()) {
file = this.dataDirectory;
} else {
// Remove leading slash
String relativePath = path.substring(1);
file = new File(this.dataDirectory, relativePath);
}
if (!file.exists()) {
throw new FileNotFoundException(fullContentPath + " not found");
}
return file;
}
/**
* Add a row containing all file properties to a MatrixCursor for a given document ID.
*
* @param cursor The cursor to add the row to.
* @param documentId The document ID to add the row for.
* @param file The file to add the row for. If null, the file will be resolved from the document ID.
* @throws FileNotFoundException If the file does not exist.
*/
private void addRowForDocument(MatrixCursor cursor, String documentId, File file) throws FileNotFoundException {
if (file == null) {
file = resolveDocumentId(documentId);
}
int flags = 0;
if (file.isDirectory()) {
// Prefer list view for directories
flags = flags | DocumentsContract.Document.FLAG_DIR_PREFERS_LAST_MODIFIED;
}
if (file.canWrite()) {
if (file.isDirectory()) {
flags = flags | DocumentsContract.Document.FLAG_DIR_SUPPORTS_CREATE;
}
flags = flags | DocumentsContract.Document.FLAG_SUPPORTS_WRITE |
DocumentsContract.Document.FLAG_SUPPORTS_DELETE |
DocumentsContract.Document.FLAG_SUPPORTS_RENAME |
DocumentsContract.Document.FLAG_SUPPORTS_MOVE;
}
MatrixCursor.RowBuilder row = cursor.newRow();
row.add(DocumentsContract.Document.COLUMN_DOCUMENT_ID, documentId);
row.add(DocumentsContract.Document.COLUMN_DISPLAY_NAME, file.getName());
row.add(DocumentsContract.Document.COLUMN_SIZE, file.length());
row.add(DocumentsContract.Document.COLUMN_MIME_TYPE, resolveMimeType(file));
row.add(DocumentsContract.Document.COLUMN_LAST_MODIFIED, file.lastModified());
row.add(DocumentsContract.Document.COLUMN_FLAGS, flags);
// Custom columns
row.add("full_path", file.getAbsolutePath());
// Add lstat column
String path = file.getPath();
try {
StringBuilder sb = new StringBuilder();
StructStat lstat = Os.lstat(path);
sb.append(lstat.st_mode);
sb.append(";");
sb.append(lstat.st_uid);
sb.append(";");
sb.append(lstat.st_gid);
// Append symlink target if it is a symlink
if ((lstat.st_mode & S_IFLNK) == S_IFLNK) {
sb.append(";");
sb.append(Os.readlink(path));
}
row.add("lstat_info", sb.toString());
} catch (Exception ex) {
Log.e("InternalDocumentsProvider", "Failed to get lstat info for " + path, ex);
}
}
}

View File

@@ -24,7 +24,9 @@ import java.net.URL;
* @noinspection unused
*/
public class GmsCoreSupport {
public static final String ORIGINAL_UNPATCHED_PACKAGE_NAME = "com.google.android.youtube";
private static final String PACKAGE_NAME_YOUTUBE = "com.google.android.youtube";
private static final String PACKAGE_NAME_YOUTUBE_MUSIC = "com.google.android.apps.youtube.music";
private static final String GMS_CORE_PACKAGE_NAME
= getGmsCoreVendorGroupId() + ".android.gms";
private static final Uri GMS_CORE_PROVIDER
@@ -74,7 +76,8 @@ public class GmsCoreSupport {
// Verify the user has not included GmsCore for a root installation.
// GmsCore Support changes the package name, but with a mounted installation
// all manifest changes are ignored and the original package name is used.
if (context.getPackageName().equals(ORIGINAL_UNPATCHED_PACKAGE_NAME)) {
String packageName = context.getPackageName();
if (packageName.equals(PACKAGE_NAME_YOUTUBE) || packageName.equals(PACKAGE_NAME_YOUTUBE_MUSIC)) {
Logger.printInfo(() -> "App is mounted with root, but GmsCore patch was included");
// Cannot use localize text here, since the app will load
// resources from the unpatched app and all patch strings are missing.
@@ -143,12 +146,10 @@ public class GmsCoreSupport {
private static String getGmsCoreDownload() {
final var vendorGroupId = getGmsCoreVendorGroupId();
//noinspection SwitchStatementWithTooFewBranches
switch (vendorGroupId) {
case "app.revanced":
return "https://github.com/revanced/gmscore/releases/latest";
default:
return vendorGroupId + ".android.gms";
}
return switch (vendorGroupId) {
case "app.revanced" -> "https://github.com/revanced/gmscore/releases/latest";
default -> vendorGroupId + ".android.gms";
};
}
// Modified by a patch. Do not touch.

View File

@@ -6,6 +6,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.net.ConnectivityManager;
import android.os.Build;
@@ -499,6 +500,12 @@ public class Utils {
);
}
public static boolean isDarkModeEnabled(Context context) {
Configuration config = context.getResources().getConfiguration();
final int currentNightMode = config.uiMode & Configuration.UI_MODE_NIGHT_MASK;
return currentNightMode == Configuration.UI_MODE_NIGHT_YES;
}
/**
* Automatically logs any exceptions the runnable throws.
*

View File

@@ -54,9 +54,7 @@ public class ReVancedAboutPreference extends Preference {
}
protected boolean isDarkModeEnabled() {
Configuration config = getContext().getResources().getConfiguration();
final int currentNightMode = config.uiMode & Configuration.UI_MODE_NIGHT_MASK;
return currentNightMode == Configuration.UI_MODE_NIGHT_YES;
return Utils.isDarkModeEnabled(getContext());
}
/**

View File

@@ -10,15 +10,17 @@ public enum ClientType {
// Specific purpose for age restricted, or private videos, because the iOS client is not logged in.
// https://dumps.tadiphone.dev/dumps/oculus/eureka
ANDROID_VR(28,
"ANDROID_VR",
"Quest 3",
"12",
"com.google.android.apps.youtube.vr.oculus/1.56.21 (Linux; U; Android 12; GB) gzip",
"32", // Android 12.1
"1.56.21",
true
),
true,
true),
// Specific for kids videos.
IOS(5,
"IOS",
forceAVC()
? "iPhone12,5" // 11 Pro Max (last device with iOS 13)
: "iPhone16,2", // 15 Pro Max
@@ -37,8 +39,22 @@ public enum ClientType {
// but 17.40 is the last version that supports iOS 13.
? "17.40.5"
: "19.47.7",
false
);
false,
true),
/**
* Android VR with no language code.
* Used for age restricted videos and YouTube Music to disable stable volume.
*/
ANDROID_VR_NO_HL(
ANDROID_VR.id,
ANDROID_VR.clientName,
ANDROID_VR.deviceModel,
ANDROID_VR.osVersion,
ANDROID_VR.userAgent,
ANDROID_VR.androidSdkVersion,
ANDROID_VR.clientVersion,
ANDROID_VR.canLogin,
false);
private static boolean forceAVC() {
return BaseSettings.SPOOF_VIDEO_STREAMS_IOS_FORCE_AVC.get();
@@ -50,6 +66,8 @@ public enum ClientType {
*/
public final int id;
public final String clientName;
/**
* Device model, equivalent to {@link Build#MODEL} (System property: ro.product.model)
*/
@@ -82,20 +100,28 @@ public enum ClientType {
*/
public final boolean canLogin;
/**
* If a language code should be used.
*/
public final boolean useLanguageCode;
ClientType(int id,
String clientName,
String deviceModel,
String osVersion,
String userAgent,
@Nullable String androidSdkVersion,
String clientVersion,
boolean canLogin
) {
boolean canLogin,
boolean useLanguageCode) {
this.id = id;
this.clientName = clientName;
this.deviceModel = deviceModel;
this.osVersion = osVersion;
this.userAgent = userAgent;
this.androidSdkVersion = androidSdkVersion;
this.clientVersion = clientVersion;
this.canLogin = canLogin;
this.useLanguageCode = useLanguageCode;
}
}

View File

@@ -6,7 +6,6 @@ import androidx.annotation.Nullable;
import java.nio.ByteBuffer;
import java.util.Map;
import java.util.Objects;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
@@ -23,6 +22,14 @@ public class SpoofVideoStreamsPatch {
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);
/**
* Injection point. Used by YT Music to disable stable volume.
*/
public static void setClientTypeToAndroidVrNoHl() {
Logger.printDebug(() -> "Setting stream spoofing to: " + ClientType.ANDROID_VR_NO_HL);
BaseSettings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.save(ClientType.ANDROID_VR_NO_HL);
}
/**
* Injection point.
* Blocks /get_watch requests by returning an unreachable URI.
@@ -87,10 +94,19 @@ public class SpoofVideoStreamsPatch {
try {
Uri uri = Uri.parse(url);
String path = uri.getPath();
// 'heartbeat' has no video id and appears to be only after playback has started.
if (path != null && path.contains("player") && !path.contains("heartbeat")) {
String videoId = Objects.requireNonNull(uri.getQueryParameter("id"));
StreamingDataRequest.fetchRequest(videoId, requestHeaders);
// 'refresh' has no video id and appears to happen when waiting for a livestream to start.
if (path != null && path.contains("player") && !path.contains("heartbeat")
&& !path.contains("refresh")) {
String id = uri.getQueryParameter("id");
if (id == null) {
Logger.printException(() -> "Ignoring request that has no video id." +
" Url: " + url + " headers: " + requestHeaders);
return;
}
StreamingDataRequest.fetchRequest(id, requestHeaders);
}
} catch (Exception ex) {
Logger.printException(() -> "buildRequest failure", ex);

View File

@@ -35,8 +35,10 @@ final class PlayerRoutes {
JSONObject context = new JSONObject();
JSONObject client = new JSONObject();
client.put("hl", BaseSettings.SPOOF_VIDEO_STREAMS_LANGUAGE.get().getIso639_1());
client.put("clientName", clientType.name());
if (clientType.useLanguageCode) {
client.put("hl", BaseSettings.SPOOF_VIDEO_STREAMS_LANGUAGE.get().getIso639_1());
}
client.put("clientName", clientType.clientName);
client.put("clientVersion", clientType.clientVersion);
client.put("deviceModel", clientType.deviceModel);
client.put("osVersion", clientType.osVersion);

View File

@@ -115,8 +115,7 @@ public class StreamingDataRequest {
Objects.requireNonNull(playerHeaders);
final long startTime = System.currentTimeMillis();
String clientTypeName = clientType.name();
Logger.printDebug(() -> "Fetching video streams for: " + videoId + " using client: " + clientType.name());
Logger.printDebug(() -> "Fetching video streams for: " + videoId + " using client: " + clientType);
try {
HttpURLConnection connection = PlayerRoutes.getPlayerResponseConnectionFromRoute(GET_STREAMING_DATA, clientType);
@@ -124,12 +123,16 @@ public class StreamingDataRequest {
connection.setReadTimeout(HTTP_TIMEOUT_MILLISECONDS);
for (String key : REQUEST_HEADER_KEYS) {
if (!clientType.canLogin && key.equals(AUTHORIZATION_HEADER)) {
continue;
}
String value = playerHeaders.get(key);
if (value != null) {
if (key.equals(AUTHORIZATION_HEADER)) {
if (!clientType.canLogin) {
Logger.printDebug(() -> "Not including request header: " + key);
continue;
}
}
Logger.printDebug(() -> "Including request header: " + key);
connection.setRequestProperty(key, value);
}
}
@@ -142,8 +145,10 @@ public class StreamingDataRequest {
final int responseCode = connection.getResponseCode();
if (responseCode == 200) return connection;
handleConnectionError(clientTypeName + " not available with response code: "
+ responseCode + " message: " + connection.getResponseMessage(),
// This situation likely means the patches are outdated.
// Use a toast message that suggests updating.
handleConnectionError("Playback error (App is outdated?) " + clientType + ": "
+ responseCode + " response: " + connection.getResponseMessage(),
null, showErrorToasts);
} catch (SocketTimeoutException ex) {
handleConnectionError("Connection timeout", ex, showErrorToasts);
@@ -172,17 +177,19 @@ public class StreamingDataRequest {
try {
// gzip encoding doesn't response with content length (-1),
// but empty response body does.
if (connection.getContentLength() != 0) {
try (InputStream inputStream = new BufferedInputStream(connection.getInputStream())) {
try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
byte[] buffer = new byte[2048];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) >= 0) {
baos.write(buffer, 0, bytesRead);
}
if (connection.getContentLength() == 0) {
Logger.printDebug(() -> "Received empty response for video: " + videoId);
} else {
try (InputStream inputStream = new BufferedInputStream(connection.getInputStream());
ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
return ByteBuffer.wrap(baos.toByteArray());
byte[] buffer = new byte[2048];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) >= 0) {
baos.write(buffer, 0, bytesRead);
}
return ByteBuffer.wrap(baos.toByteArray());
}
}
} catch (IOException ex) {

View File

@@ -1,9 +1,20 @@
package app.revanced.extension.tiktok;
import static app.revanced.extension.shared.Utils.isDarkModeEnabled;
import android.content.Context;
import android.graphics.Color;
import android.view.View;
import android.widget.TextView;
import androidx.annotation.ColorInt;
import app.revanced.extension.shared.settings.StringSetting;
public class Utils {
private static final long[] DEFAULT_MIN_MAX_VALUES = {0L, Long.MAX_VALUE};
// Edit: This could be handled using a custom Setting<Long[]> class
// that saves its value to preferences and JSON using the formatted String created here.
public static long[] parseMinMax(StringSetting setting) {
@@ -20,6 +31,29 @@ public class Utils {
}
setting.save("0-" + Long.MAX_VALUE);
return new long[]{0L, Long.MAX_VALUE};
return DEFAULT_MIN_MAX_VALUES;
}
// Colors picked by hand. These should be replaced with the styled resources TikTok uses.
private static final @ColorInt int TEXT_DARK_MODE_TITLE = Color.WHITE;
private static final @ColorInt int TEXT_DARK_MODE_SUMMARY
= Color.argb(255, 170, 170, 170);
private static final @ColorInt int TEXT_LIGHT_MODE_TITLE = Color.BLACK;
private static final @ColorInt int TEXT_LIGHT_MODE_SUMMARY
= Color.argb(255, 80, 80, 80);
public static void setTitleAndSummaryColor(Context context, View view) {
final boolean darkModeEnabled = isDarkModeEnabled(context);
TextView title = view.findViewById(android.R.id.title);
title.setTextColor(darkModeEnabled
? TEXT_DARK_MODE_TITLE
: TEXT_LIGHT_MODE_TITLE);
TextView summary = view.findViewById(android.R.id.summary);
summary.setTextColor(darkModeEnabled
? TEXT_DARK_MODE_SUMMARY
: TEXT_LIGHT_MODE_SUMMARY);
}
}

View File

@@ -1,17 +1,18 @@
package app.revanced.extension.tiktok.feedfilter;
import app.revanced.extension.tiktok.settings.Settings;
import com.ss.android.ugc.aweme.feed.model.Aweme;
import com.ss.android.ugc.aweme.feed.model.AwemeStatistics;
import static app.revanced.extension.tiktok.Utils.parseMinMax;
import app.revanced.extension.tiktok.Utils;
import app.revanced.extension.tiktok.settings.Settings;
public final class LikeCountFilter implements IFilter {
final long minLike;
final long maxLike;
LikeCountFilter() {
long[] minMax = parseMinMax(Settings.MIN_MAX_LIKES);
long[] minMax = Utils.parseMinMax(Settings.MIN_MAX_LIKES);
minLike = minMax[0];
maxLike = minMax[1];
}

View File

@@ -1,17 +1,17 @@
package app.revanced.extension.tiktok.feedfilter;
import app.revanced.extension.tiktok.Utils;
import app.revanced.extension.tiktok.settings.Settings;
import com.ss.android.ugc.aweme.feed.model.Aweme;
import com.ss.android.ugc.aweme.feed.model.AwemeStatistics;
import static app.revanced.extension.tiktok.Utils.parseMinMax;
public class ViewCountFilter implements IFilter {
final long minView;
final long maxView;
ViewCountFilter() {
long[] minMax = parseMinMax(Settings.MIN_MAX_VIEWS);
long[] minMax = Utils.parseMinMax(Settings.MIN_MAX_VIEWS);
minView = minMax[0];
maxView = minMax[1];
}

View File

@@ -19,7 +19,7 @@ public class Settings extends BaseSettings {
public static final BooleanSetting DOWNLOAD_WATERMARK = new BooleanSetting("down_watermark", TRUE);
public static final BooleanSetting CLEAR_DISPLAY = new BooleanSetting("clear_display", FALSE);
public static final FloatSetting REMEMBERED_SPEED = new FloatSetting("REMEMBERED_SPEED", 1.0f);
public static final BooleanSetting SIM_SPOOF = new BooleanSetting("simspoof", TRUE, true);
public static final BooleanSetting SIM_SPOOF = new BooleanSetting("simspoof", FALSE, true);
public static final StringSetting SIM_SPOOF_ISO = new StringSetting("simspoof_iso", "us");
public static final StringSetting SIMSPOOF_MCCMNC = new StringSetting("simspoof_mccmnc", "310160");
public static final StringSetting SIMSPOOF_OP_NAME = new StringSetting("simspoof_op_name", "T-Mobile");

View File

@@ -16,10 +16,10 @@ import android.widget.RadioButton;
import android.widget.RadioGroup;
import app.revanced.extension.shared.settings.StringSetting;
import app.revanced.extension.tiktok.Utils;
@SuppressWarnings("deprecation")
public class DownloadPathPreference extends DialogPreference {
private final Context context;
private final String[] entryValues = {"DCIM", "Movies", "Pictures"};
private String mValue;
@@ -29,11 +29,10 @@ public class DownloadPathPreference extends DialogPreference {
public DownloadPathPreference(Context context, String title, StringSetting setting) {
super(context);
this.context = context;
this.setTitle(title);
this.setSummary(Environment.getExternalStorageDirectory().getPath() + "/" + setting.get());
this.setKey(setting.key);
this.setValue(setting.get());
setTitle(title);
setSummary(Environment.getExternalStorageDirectory().getPath() + "/" + setting.get());
setKey(setting.key);
setValue(setting.get());
}
public String getValue() {
@@ -59,6 +58,7 @@ public class DownloadPathPreference extends DialogPreference {
childDownloadPath = getValue().substring(getValue().indexOf("/") + 1);
mediaPathIndex = findIndexOf(currentMedia);
Context context = getContext();
LinearLayout dialogView = new LinearLayout(context);
RadioGroup mediaPath = new RadioGroup(context);
mediaPath.setLayoutParams(new RadioGroup.LayoutParams(-1, -2));
@@ -79,12 +79,10 @@ public class DownloadPathPreference extends DialogPreference {
downloadPath.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
@@ -99,6 +97,13 @@ public class DownloadPathPreference extends DialogPreference {
return dialogView;
}
@Override
protected void onBindView(View view) {
super.onBindView(view);
Utils.setTitleAndSummaryColor(getContext(), view);
}
@Override
protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
builder.setTitle("Download Path");

View File

@@ -2,16 +2,26 @@ package app.revanced.extension.tiktok.settings.preference;
import android.content.Context;
import android.preference.EditTextPreference;
import android.view.View;
import app.revanced.extension.shared.settings.StringSetting;
import app.revanced.extension.tiktok.Utils;
@SuppressWarnings("deprecation")
public class InputTextPreference extends EditTextPreference {
public InputTextPreference(Context context, String title, String summary, StringSetting setting) {
super(context);
this.setTitle(title);
this.setSummary(summary);
this.setKey(setting.key);
this.setText(setting.get());
setTitle(title);
setSummary(summary);
setKey(setting.key);
setText(setting.get());
}
@Override
protected void onBindView(View view) {
super.onBindView(view);
Utils.setTitleAndSummaryColor(getContext(), view);
}
}

View File

@@ -1,5 +1,6 @@
package app.revanced.extension.tiktok.settings.preference;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
@@ -14,11 +15,10 @@ import android.widget.LinearLayout;
import android.widget.TextView;
import app.revanced.extension.shared.settings.StringSetting;
import app.revanced.extension.tiktok.Utils;
@SuppressWarnings("deprecation")
public class RangeValuePreference extends DialogPreference {
private final Context context;
private String minValue;
private String maxValue;
@@ -29,7 +29,6 @@ public class RangeValuePreference extends DialogPreference {
public RangeValuePreference(Context context, String title, String summary, StringSetting setting) {
super(context);
this.context = context;
setTitle(title);
setSummary(summary);
setKey(setting.key);
@@ -53,41 +52,52 @@ public class RangeValuePreference extends DialogPreference {
return mValue;
}
@SuppressLint("SetTextI18n")
@Override
protected View onCreateDialogView() {
minValue = getValue().split("-")[0];
maxValue = getValue().split("-")[1];
Context context = getContext();
LinearLayout dialogView = new LinearLayout(context);
dialogView.setOrientation(LinearLayout.VERTICAL);
// Min view
LinearLayout minView = new LinearLayout(context);
minView.setOrientation(LinearLayout.HORIZONTAL);
dialogView.addView(minView);
TextView min = new TextView(context);
min.setText("Min: ");
minView.addView(min);
EditText minEditText = new EditText(context);
minEditText.setInputType(InputType.TYPE_CLASS_NUMBER);
minEditText.setText(minValue);
minView.addView(minEditText);
dialogView.addView(minView);
// Max view
LinearLayout maxView = new LinearLayout(context);
maxView.setOrientation(LinearLayout.HORIZONTAL);
dialogView.addView(maxView);
TextView max = new TextView(context);
max.setText("Max: ");
maxView.addView(max);
EditText maxEditText = new EditText(context);
maxEditText.setInputType(InputType.TYPE_CLASS_NUMBER);
maxEditText.setText(maxValue);
maxView.addView(maxEditText);
dialogView.addView(maxView);
minEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
@@ -98,12 +108,10 @@ public class RangeValuePreference extends DialogPreference {
maxEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
@@ -111,12 +119,21 @@ public class RangeValuePreference extends DialogPreference {
maxValue = editable.toString();
}
});
return dialogView;
}
@Override
protected void onBindView(View view) {
super.onBindView(view);
Utils.setTitleAndSummaryColor(getContext(), view);
}
@Override
protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
builder.setPositiveButton(android.R.string.ok, (dialog, which) -> this.onClick(dialog, DialogInterface.BUTTON_POSITIVE));
builder.setPositiveButton(android.R.string.ok, (dialog, which)
-> this.onClick(dialog, DialogInterface.BUTTON_POSITIVE));
builder.setNegativeButton(android.R.string.cancel, null);
}

View File

@@ -18,14 +18,12 @@ import org.jetbrains.annotations.NotNull;
public class ReVancedPreferenceFragment extends AbstractPreferenceFragment {
@Override
protected void syncSettingWithPreference(@NonNull @NotNull Preference pref,
@NonNull @NotNull Setting<?> setting,
protected void syncSettingWithPreference(@NonNull Preference pref,
@NonNull Setting<?> setting,
boolean applySettingToPreference) {
if (pref instanceof RangeValuePreference) {
RangeValuePreference rangeValuePref = (RangeValuePreference) pref;
if (pref instanceof RangeValuePreference rangeValuePref) {
Setting.privateSetValueFromString(setting, rangeValuePref.getValue());
} else if (pref instanceof DownloadPathPreference) {
DownloadPathPreference downloadPathPref = (DownloadPathPreference) pref;
} else if (pref instanceof DownloadPathPreference downloadPathPref) {
Setting.privateSetValueFromString(setting, downloadPathPref.getValue());
} else {
super.syncSettingWithPreference(pref, setting, applySettingToPreference);

View File

@@ -1,13 +1,15 @@
package app.revanced.extension.tiktok.settings.preference;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import java.util.Map;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.settings.preference.ReVancedAboutPreference;
import app.revanced.extension.tiktok.Utils;
@SuppressWarnings("deprecation")
public class ReVancedTikTokAboutPreference extends ReVancedAboutPreference {
/**
@@ -23,22 +25,11 @@ public class ReVancedTikTokAboutPreference extends ReVancedAboutPreference {
"revanced_settings_about_links_header", "Official links"
);
{
//noinspection deprecation
setTitle("About");
}
public ReVancedTikTokAboutPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
public ReVancedTikTokAboutPreference(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public ReVancedTikTokAboutPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ReVancedTikTokAboutPreference(Context context) {
super(context);
setTitle("About");
setSummary("About ReVanced");
}
@Override
@@ -52,4 +43,11 @@ public class ReVancedTikTokAboutPreference extends ReVancedAboutPreference {
return String.format(format, args);
}
@Override
protected void onBindView(View view) {
super.onBindView(view);
Utils.setTitleAndSummaryColor(getContext(), view);
}
}

View File

@@ -2,16 +2,26 @@ package app.revanced.extension.tiktok.settings.preference;
import android.content.Context;
import android.preference.SwitchPreference;
import android.view.View;
import app.revanced.extension.shared.settings.BooleanSetting;
import app.revanced.extension.tiktok.Utils;
@SuppressWarnings("deprecation")
public class TogglePreference extends SwitchPreference {
public TogglePreference(Context context, String title, String summary, BooleanSetting setting) {
super(context);
this.setTitle(title);
this.setSummary(summary);
this.setKey(setting.key);
this.setChecked(setting.get());
setTitle(title);
setSummary(summary);
setKey(setting.key);
setChecked(setting.get());
}
@Override
protected void onBindView(View view) {
super.onBindView(view);
Utils.setTitleAndSummaryColor(getContext(), view);
}
}

View File

@@ -18,7 +18,7 @@ public final class ChangeStartPagePatch {
/**
* Unmodified type, and same as un-patched.
*/
ORIGINAL("", null),
DEFAULT("", null),
/**
* Browse id.

View File

@@ -30,7 +30,7 @@ public final class MiniplayerPatch {
*/
DISABLED(false, null),
/** Unmodified type, and same as un-patched. */
ORIGINAL(null, null),
DEFAULT(null, null),
/**
* Exactly the same as MINIMAL and only here for migration of user settings.
* Eventually this should be deleted.
@@ -182,7 +182,7 @@ public final class MiniplayerPatch {
* effectively disabling the miniplayer.
*/
public static boolean getMiniplayerOnCloseHandler(boolean original) {
return CURRENT_TYPE == ORIGINAL
return CURRENT_TYPE == DEFAULT
? original
: CURRENT_TYPE == DISABLED;
}
@@ -201,7 +201,7 @@ public final class MiniplayerPatch {
* Injection point.
*/
public static boolean getModernMiniplayerOverride(boolean original) {
return CURRENT_TYPE == ORIGINAL
return CURRENT_TYPE == DEFAULT
? original
: CURRENT_TYPE.isModern();
}
@@ -229,7 +229,7 @@ public final class MiniplayerPatch {
* Injection point.
*/
public static boolean getModernFeatureFlagsActiveOverride(boolean original) {
if (CURRENT_TYPE == ORIGINAL) {
if (CURRENT_TYPE == DEFAULT) {
return original;
}
@@ -240,7 +240,7 @@ public final class MiniplayerPatch {
* Injection point.
*/
public static boolean enableMiniplayerDoubleTapAction(boolean original) {
if (CURRENT_TYPE == ORIGINAL) {
if (CURRENT_TYPE == DEFAULT) {
return original;
}
@@ -251,7 +251,7 @@ public final class MiniplayerPatch {
* Injection point.
*/
public static boolean enableMiniplayerDragAndDrop(boolean original) {
if (CURRENT_TYPE == ORIGINAL) {
if (CURRENT_TYPE == DEFAULT) {
return original;
}

View File

@@ -142,7 +142,7 @@ public class Settings extends BaseSettings {
public static final IntegerSetting PLAYER_OVERLAY_OPACITY = new IntegerSetting("revanced_player_overlay_opacity", 100, true);
public static final BooleanSetting OPEN_VIDEOS_FULLSCREEN_PORTRAIT = new BooleanSetting("revanced_open_videos_fullscreen_portrait", FALSE);
// Miniplayer
public static final EnumSetting<MiniplayerType> MINIPLAYER_TYPE = new EnumSetting<>("revanced_miniplayer_type", MiniplayerType.ORIGINAL, true);
public static final EnumSetting<MiniplayerType> MINIPLAYER_TYPE = new EnumSetting<>("revanced_miniplayer_type", MiniplayerType.DEFAULT, true);
private static final Availability MINIPLAYER_ANY_MODERN = MINIPLAYER_TYPE.availability(MODERN_1, MODERN_2, MODERN_3, MODERN_4);
public static final BooleanSetting MINIPLAYER_DOUBLE_TAP_ACTION = new BooleanSetting("revanced_miniplayer_double_tap_action", TRUE, true, MINIPLAYER_ANY_MODERN);
public static final BooleanSetting MINIPLAYER_DRAG_AND_DROP = new BooleanSetting("revanced_miniplayer_drag_and_drop", TRUE, true, MINIPLAYER_ANY_MODERN);
@@ -204,7 +204,7 @@ public class Settings extends BaseSettings {
public static final BooleanSetting SPOOF_APP_VERSION = new BooleanSetting("revanced_spoof_app_version", FALSE, true, "revanced_spoof_app_version_user_dialog_message");
public static final BooleanSetting TABLET_LAYOUT = new BooleanSetting("revanced_tablet_layout", FALSE, true, "revanced_tablet_layout_user_dialog_message");
public static final BooleanSetting WIDE_SEARCHBAR = new BooleanSetting("revanced_wide_searchbar", FALSE, true);
public static final EnumSetting<StartPage> CHANGE_START_PAGE = new EnumSetting<>("revanced_change_start_page", StartPage.ORIGINAL, true);
public static final EnumSetting<StartPage> CHANGE_START_PAGE = new EnumSetting<>("revanced_change_start_page", StartPage.DEFAULT, true);
public static final StringSetting SPOOF_APP_VERSION_TARGET = new StringSetting("revanced_spoof_app_version_target", IS_19_17_OR_GREATER ? "19.35.36" : "17.33.42", true, parent(SPOOF_APP_VERSION));
// Custom filter
public static final BooleanSetting CUSTOM_FILTER = new BooleanSetting("revanced_custom_filter", FALSE);

View File

@@ -0,0 +1,85 @@
package app.revanced.extension.youtube.settings.preference;
import static app.revanced.extension.shared.StringRef.str;
import android.content.Context;
import android.content.SharedPreferences;
import android.preference.Preference;
import android.preference.PreferenceManager;
import android.util.AttributeSet;
import androidx.annotation.Nullable;
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.Setting;
import app.revanced.extension.shared.spoof.ClientType;
@SuppressWarnings({"deprecation", "unused"})
public class SpoofStreamingDataSideEffectsPreference extends Preference {
@Nullable
private ClientType currentClientType;
private final SharedPreferences.OnSharedPreferenceChangeListener listener = (sharedPreferences, str) -> {
// Because this listener may run before the ReVanced settings fragment updates Settings,
// this could show the prior config and not the current.
//
// Push this call to the end of the main run queue,
// so all other listeners are done and Settings is up to date.
Utils.runOnMainThread(this::updateUI);
};
public SpoofStreamingDataSideEffectsPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
public SpoofStreamingDataSideEffectsPreference(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public SpoofStreamingDataSideEffectsPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SpoofStreamingDataSideEffectsPreference(Context context) {
super(context);
}
private void addChangeListener() {
Setting.preferences.preferences.registerOnSharedPreferenceChangeListener(listener);
}
private void removeChangeListener() {
Setting.preferences.preferences.unregisterOnSharedPreferenceChangeListener(listener);
}
@Override
protected void onAttachedToHierarchy(PreferenceManager preferenceManager) {
super.onAttachedToHierarchy(preferenceManager);
updateUI();
addChangeListener();
}
@Override
protected void onPrepareForRemoval() {
super.onPrepareForRemoval();
removeChangeListener();
}
private void updateUI() {
ClientType clientType = BaseSettings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get();
if (currentClientType == clientType) {
return;
}
Logger.printDebug(() -> "Updating spoof stream side effects preference");
setEnabled(BaseSettings.SPOOF_VIDEO_STREAMS.get());
String key = "revanced_spoof_video_streams_about_"
+ clientType.name().toLowerCase();
setTitle(str(key + "_title"));
setSummary(str(key + "_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.4.0-dev.1
version = 5.4.0-dev.6

View File

@@ -60,6 +60,10 @@ public final class app/revanced/patches/all/misc/directory/ChangeDataDirectoryLo
public static final fun getChangeDataDirectoryLocationPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/all/misc/directory/documentsprovider/ExportInternalDataDocumentsProviderPatchKt {
public static final fun getExportInternalDataDocumentsProviderPatch ()Lapp/revanced/patcher/patch/ResourcePatch;
}
public final class app/revanced/patches/all/misc/hex/HexPatchKt {
public static final fun getHexPatch ()Lapp/revanced/patcher/patch/RawResourcePatch;
}

View File

@@ -1,58 +1,19 @@
package app.revanced.patches.all.misc.directory
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.transformation.transformInstructionsPatch
import app.revanced.util.getReference
import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction35c
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
import com.android.tools.smali.dexlib2.immutable.reference.ImmutableMethodReference
import com.android.tools.smali.dexlib2.util.MethodUtil
import app.revanced.patches.all.misc.directory.documentsprovider.exportInternalDataDocumentsProviderPatch
@Suppress("unused")
@Deprecated(
"Superseded by internalDataDocumentsProviderPatch",
ReplaceWith("internalDataDocumentsProviderPatch"),
)
val changeDataDirectoryLocationPatch = bytecodePatch(
name = "Change data directory location",
// name = "Change data directory location",
description = "Changes the data directory in the application from " +
"the app internal storage directory to /sdcard/android/data accessible by root-less devices." +
"Using this patch can cause unexpected issues with some apps.",
use = false,
) {
dependsOn(
transformInstructionsPatch(
filterMap = filter@{ _, _, instruction, instructionIndex ->
val reference = instruction.getReference<MethodReference>() ?: return@filter null
if (!MethodUtil.methodSignaturesMatch(reference, MethodCall.GetDir.reference)) {
return@filter null
}
return@filter instructionIndex
},
transform = { method, index ->
val getDirInstruction = method.getInstruction<Instruction35c>(index)
val contextRegister = getDirInstruction.registerC
val dataRegister = getDirInstruction.registerD
method.replaceInstruction(
index,
"invoke-virtual { v$contextRegister, v$dataRegister }, " +
"Landroid/content/Context;->getExternalFilesDir(Ljava/lang/String;)Ljava/io/File;",
)
},
),
)
}
private enum class MethodCall(
val reference: MethodReference,
) {
GetDir(
ImmutableMethodReference(
"Landroid/content/Context;",
"getDir",
listOf("Ljava/lang/String;", "I"),
"Ljava/io/File;",
),
),
dependsOn(exportInternalDataDocumentsProviderPatch)
}

View File

@@ -0,0 +1,58 @@
package app.revanced.patches.all.misc.directory.documentsprovider
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patcher.patch.resourcePatch
import app.revanced.util.asSequence
import app.revanced.util.getNode
@Suppress("unused")
val exportInternalDataDocumentsProviderPatch = resourcePatch(
name = "Export internal data documents provider",
description = "Exports a documents provider that grants access to the internal data directory of this app " +
"to file managers and other apps that support the Storage Access Framework.",
use = false,
) {
dependsOn(
bytecodePatch {
extendWith("extensions/all/misc/directory/export-internal-data-documents-provider.rve")
},
)
execute {
val documentsProviderClass =
"app.revanced.extension.all.misc.directory.documentsprovider.InternalDataDocumentsProvider"
document("AndroidManifest.xml").use { document ->
// Check if the provider is already declared
if (document.getElementsByTagName("provider")
.asSequence()
.any { it.attributes.getNamedItem("android:name")?.nodeValue == documentsProviderClass }
) {
return@execute
}
val authority =
document.getNode("manifest").attributes.getNamedItem("package").let {
// Select a URI authority name that is unique to the current app
"${it.nodeValue}.$documentsProviderClass"
}
// Register the documents provider
with(document.getNode("application")) {
document.createElement("provider").apply {
setAttribute("android:name", documentsProviderClass)
setAttribute("android:authorities", authority)
setAttribute("android:exported", "true")
setAttribute("android:grantUriPermissions", "true")
setAttribute("android:permission", "android.permission.MANAGE_DOCUMENTS")
document.createElement("intent-filter").apply {
document.createElement("action").apply {
setAttribute("android:name", "android.content.action.DOCUMENTS_PROVIDER")
}.let(this::appendChild)
}.let(this::appendChild)
}.let(this::appendChild)
}
}
}
}

View File

@@ -1,7 +1,15 @@
package app.revanced.patches.music.misc.spoof
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patches.music.misc.gms.musicActivityOnCreateFingerprint
import app.revanced.patches.shared.misc.spoof.EXTENSION_CLASS_DESCRIPTOR
import app.revanced.patches.shared.misc.spoof.spoofVideoStreamsPatch
val spoofVideoStreamsPatch = spoofVideoStreamsPatch({
compatibleWith("com.google.android.apps.youtube.music")
})
}, {
musicActivityOnCreateFingerprint.method.addInstruction(
0,
"invoke-static { }, $EXTENSION_CLASS_DESCRIPTOR->setClientTypeToAndroidVrNoHl()V"
)
})

View File

@@ -23,7 +23,7 @@ import com.android.tools.smali.dexlib2.iface.reference.MethodReference
import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
import com.android.tools.smali.dexlib2.immutable.ImmutableMethodParameter
private const val EXTENSION_CLASS_DESCRIPTOR =
internal const val EXTENSION_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/shared/spoof/SpoofVideoStreamsPatch;"
fun spoofVideoStreamsPatch(

View File

@@ -45,8 +45,11 @@ val spoofVideoStreamsPatch = spoofVideoStreamsPatch({
summaryKey = null
),
SwitchPreference("revanced_spoof_video_streams_ios_force_avc"),
NonInteractivePreference("revanced_spoof_video_streams_about_android_vr"),
NonInteractivePreference("revanced_spoof_video_streams_about_ios"),
// Preference requires a title but the actual text is chosen at runtime.
NonInteractivePreference(
key = "revanced_spoof_video_streams_about_android_vr",
tag = "app.revanced.extension.youtube.settings.preference.SpoofStreamingDataSideEffectsPreference"
),
),
),
)

View File

@@ -1017,7 +1017,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">تغيير نمط المشغل المصغر داخل التطبيق</string>
<string name="revanced_miniplayer_type_title">نوع المشغل المصغر</string>
<string name="revanced_miniplayer_type_entry_0">معطّل</string>
<string name="revanced_miniplayer_type_entry_1">الأصلي</string>
<string name="revanced_miniplayer_type_entry_1">إفتراضي</string>
<string name="revanced_miniplayer_type_entry_2">الحد الأدنى</string>
<string name="revanced_miniplayer_type_entry_3">الجهاز اللوحي</string>
<string name="revanced_miniplayer_type_entry_4">حديث 1</string>
@@ -1209,11 +1209,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">يتم تحديد رمز الفيديو تلقائياً</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">تمكين هذا قد يحسّن عمر البطارية وإصلاح تشغيل التشغيل.\n\nAVC لها حد أقصى قدره 1080p، رمز الصوت Opus غير متوفر. وسيستخدم تشغيل الفيديو بيانات إنترنت أكثر من VP9 أو AV1.</string>
<string name="revanced_spoof_video_streams_about_ios_title">التأثيرات الجانبية لمحاكاة iOS</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• قد لا يتم تشغيل فيديوهات الأطفال الخاصة\n• تبدأ البثوث المباشرة من البداية\n• قد تنتهي الفيديوهات قبل النهاية بثانية واحدة</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• قد لا تشغل مقاطع فيديو الأطفال الخاصون\n• قد لا تشغل مقاطع الفيديو المقيدة العمر\n• تبدأ Livestreams من بداية\n• تنتهي مقاطع الفيديو 1 ثانية في وقت مبكر</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">التأثيرات الجانبية لمحاكاة Android VR</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• قد لا يتم تشغيل فيديوهات الأطفال\n• قائمة المقطع الصوتي مفقودة\n• مستوى الصوت الثابت غير متوفر</string>
<string name="revanced_spoof_video_streams_language_">يتم تزييف تدفقات الفيديو</string>
<string name="revanced_spoof_video_streams_language_title">لغة البث الصوتي المفضلة</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• قد لا تشغل مقاطع فيديو الأطفال\n• قد لا تشغل مقاطع الفيديو المقيدة العمر\n• تبدأ Livestreams من بداية\n• تنتهي مقاطع الفيديو 1 ثانية في وقت مبكر</string>
<string name="revanced_spoof_video_streams_language_title">لغة البث الصوتي الافتراضية</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">لغة التطبيق</string>
<string name="revanced_spoof_video_streams_language_AR">العربية</string>
<string name="revanced_spoof_video_streams_language_AZ">الأذربيجانية</string>

View File

@@ -710,6 +710,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_player_popup_panels_summary_off">Oynadıcıılan pəncərə panelləri göstərilir</string>
</patch>
<patch id="layout.player.fullscreen.openVideosFullscreen">
<string name="revanced_open_videos_fullscreen_portrait_title">Videoları tam ekran təsvirində aç</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_on">Videolar tam ekranda açılır</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_off">Videolar tam ekranda açılmır</string>
</patch>
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
<string name="revanced_player_overlay_opacity_title">Oynadıcı örtüyünün qeyri-şəffaflığı</string>
@@ -1014,7 +1017,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Tətbiqdə kiçildilən oynadıcı üslubunu dəyişdir</string>
<string name="revanced_miniplayer_type_title">Kiçik oynadıcı növü</string>
<string name="revanced_miniplayer_type_entry_0">Qeyri-aktivdir</string>
<string name="revanced_miniplayer_type_entry_1">Orijinal</string>
<string name="revanced_miniplayer_type_entry_1">İlkin</string>
<string name="revanced_miniplayer_type_entry_2">Ən kiçik</string>
<string name="revanced_miniplayer_type_entry_3">Planşet</string>
<string name="revanced_miniplayer_type_entry_4">Müasir 1</string>
@@ -1202,11 +1205,67 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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_title">İlkin qəbuledici</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Məcburi AVC (H.264)</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 kodlama birbaşa yoxlanılır</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 donmasını düzəldə bilər.\n\nAVC maksimum 1080p görüntü imkanına malikdir, Opus səs kodlama əlçatan deyil və video oynatma VP9 və ya AV1-dən daha çox internet resursu işlədəcək.</string>
<string name="revanced_spoof_video_streams_about_ios_title">iOS saxtakarlığı yan təsirləri</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Uşaq videoları oxudulmaya bilər\n• Canlı yayımlar başdan başlayır\n• Videolar 1 saniyə tez bitə bilər</string>
<string name="revanced_spoof_video_streams_about_ios_summary">Şəxsi uşaq videoları oynadıla bilməz\n• Yaş məhdudiyyətli videolar oynadıla bilməz\n• Canlı yayımlar əvvəldən başlayır\n• Videolar 1 saniyə tez bitir</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Android VR saxtakarlığı yan təsirləri</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">Uşaq videoları oynadılmaya bilər\n• Səs treki menyusu əskikdir\n• Sabit səs həcmi əlçatan deyil</string>
<string name="revanced_spoof_video_streams_language_">Video yayımları saxtalaşdırılır</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">Uşaq videoları oynadıla bilməz\n• Yaş məhdudiyyətli videolar oynadıla bilməz\n• Canlı yayımlar əvvəldən başlayır\n• Videolar 1 saniyə tez bitir</string>
<string name="revanced_spoof_video_streams_language_title">İlkin səs yayımı dili</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">Tətbiq dili</string>
<string name="revanced_spoof_video_streams_language_AR">Ərəbcə</string>
<string name="revanced_spoof_video_streams_language_AZ">Azərbaycanca</string>
<string name="revanced_spoof_video_streams_language_BG">Bolqarca</string>
<string name="revanced_spoof_video_streams_language_BN">Benqalca</string>
<string name="revanced_spoof_video_streams_language_CA">Katalanca</string>
<string name="revanced_spoof_video_streams_language_CS">Çexcə</string>
<string name="revanced_spoof_video_streams_language_DA">Danimarka dili</string>
<string name="revanced_spoof_video_streams_language_DE">Almanca</string>
<string name="revanced_spoof_video_streams_language_EL">Yunanca</string>
<string name="revanced_spoof_video_streams_language_EN">İngiliscə</string>
<string name="revanced_spoof_video_streams_language_ES">İspanca</string>
<string name="revanced_spoof_video_streams_language_ET">Estonca</string>
<string name="revanced_spoof_video_streams_language_FA">Farsca</string>
<string name="revanced_spoof_video_streams_language_FI">Fincə</string>
<string name="revanced_spoof_video_streams_language_FR">Fransızca</string>
<string name="revanced_spoof_video_streams_language_GU">Qücərat dili</string>
<string name="revanced_spoof_video_streams_language_HI">Hindcə</string>
<string name="revanced_spoof_video_streams_language_HR">Xorvatca</string>
<string name="revanced_spoof_video_streams_language_HU">Macarca</string>
<string name="revanced_spoof_video_streams_language_ID">İndoneziya dili</string>
<string name="revanced_spoof_video_streams_language_IT">İtalyanca</string>
<string name="revanced_spoof_video_streams_language_JA">Yaponca</string>
<string name="revanced_spoof_video_streams_language_KK">Qazaxca</string>
<string name="revanced_spoof_video_streams_language_KO">Koreyaca</string>
<string name="revanced_spoof_video_streams_language_LT">Litvaca</string>
<string name="revanced_spoof_video_streams_language_LV">Letonca</string>
<string name="revanced_spoof_video_streams_language_MK">Makedon Dili</string>
<string name="revanced_spoof_video_streams_language_MN">Monqolca</string>
<string name="revanced_spoof_video_streams_language_MR">Marathi dili</string>
<string name="revanced_spoof_video_streams_language_MS">Malay dili</string>
<string name="revanced_spoof_video_streams_language_MY">Birman dili</string>
<string name="revanced_spoof_video_streams_language_NL">Hollandca</string>
<string name="revanced_spoof_video_streams_language_OR">Oriya dili</string>
<string name="revanced_spoof_video_streams_language_PA">Pəncabca</string>
<string name="revanced_spoof_video_streams_language_PL">Polyak dili</string>
<string name="revanced_spoof_video_streams_language_PT_BR">Portuqalca (Braziliya)</string>
<string name="revanced_spoof_video_streams_language_PT_PT">Portuqalca (Portəgiz)</string>
<string name="revanced_spoof_video_streams_language_RO">Rumınca</string>
<string name="revanced_spoof_video_streams_language_RU">Rusca</string>
<string name="revanced_spoof_video_streams_language_SK">Slovak dili</string>
<string name="revanced_spoof_video_streams_language_SL">Sloven dili</string>
<string name="revanced_spoof_video_streams_language_SR">Serbcə</string>
<string name="revanced_spoof_video_streams_language_SV">İsveçcə</string>
<string name="revanced_spoof_video_streams_language_SW">Suahili dili</string>
<string name="revanced_spoof_video_streams_language_TA">Tamilcə</string>
<string name="revanced_spoof_video_streams_language_TE">Teluquca</string>
<string name="revanced_spoof_video_streams_language_TH">Tay dili</string>
<string name="revanced_spoof_video_streams_language_TR">Türkcə</string>
<string name="revanced_spoof_video_streams_language_UK">Ukrayna dili</string>
<string name="revanced_spoof_video_streams_language_UR">Urduca</string>
<string name="revanced_spoof_video_streams_language_VI">Vyetnamca</string>
<string name="revanced_spoof_video_streams_language_ZH">Çincə</string>
</patch>
</app>
<app id="twitch">

View File

@@ -919,7 +919,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Змяніце стыль мінімізаванага плэера ў праграме</string>
<string name="revanced_miniplayer_type_title">Тып мініплэера</string>
<string name="revanced_miniplayer_type_entry_0">Інваліды</string>
<string name="revanced_miniplayer_type_entry_1">Арыгінал</string>
<string name="revanced_miniplayer_type_entry_1">Па змаўчанні</string>
<string name="revanced_miniplayer_type_entry_3">Планшэт</string>
<string name="revanced_miniplayer_type_entry_4">Сучасны 1</string>
<string name="revanced_miniplayer_type_entry_5">Сучасны 2</string>

View File

@@ -710,6 +710,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_player_popup_panels_summary_off">Изскачащите панели на плейъра се показват</string>
</patch>
<patch id="layout.player.fullscreen.openVideosFullscreen">
<string name="revanced_open_videos_fullscreen_portrait_title">Отваряне на видеоклипове в портретен режим на цял екран</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_on">Видеоклиповете се отварят на цял екран</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_off">Видеоклиповете Не се отварят на цял екран</string>
</patch>
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
<string name="revanced_player_overlay_opacity_title">Прозрачност на настройките в Плеара</string>
@@ -1014,7 +1017,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Променете стила на минимизирания екран за възпроизвеждане</string>
<string name="revanced_miniplayer_type_title">Минимизиран тип екран за гледане</string>
<string name="revanced_miniplayer_type_entry_0">Деактивирано</string>
<string name="revanced_miniplayer_type_entry_1">Оригинал</string>
<string name="revanced_miniplayer_type_entry_1">По подразбиране</string>
<string name="revanced_miniplayer_type_entry_2">Минимално</string>
<string name="revanced_miniplayer_type_entry_3">Таблет</string>
<string name="revanced_miniplayer_type_entry_4">Модерен 1</string>
@@ -1202,10 +1205,13 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_user_dialog_message">Деактивирането на тази настройка ще доведе до проблеми с възпроизвеждането на видео.</string>
<string name="revanced_spoof_video_streams_client_title">Клиент по подразбиране</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Принудително 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">Активирането на това може да подобри живота на батерията и да коригира прекъсванията при възпроизвеждане.\n\nAVC има максимална разделителна способност от 1080p, аудиокодек Opus не е наличен и възпроизвеждането на видео ще използва повече интернет данни от VP9 или AV1.</string>
<string name="revanced_spoof_video_streams_about_ios_title">ранични ефекти от подмяната на iOS</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Странични ефекти от подправяне на Android VR</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Детските видеоклипове може да не се възпроизвеждат\n• Липсва менюто за аудио запис\n• Не е налична стабилна сила на звука</string>
<string name="revanced_spoof_video_streams_language_">Видео потоците са подправени</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">Език на приложението</string>
<string name="revanced_spoof_video_streams_language_BG">Български</string>
</patch>
</app>
<app id="twitch">

View File

@@ -910,7 +910,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">অ্যাপের মধ্যকার মিনিমাইজড প্লেয়ার এর ধরণ পরিবর্তন করুন</string>
<string name="revanced_miniplayer_type_title">মিনিপ্লেয়ার ধরণ</string>
<string name="revanced_miniplayer_type_entry_0">নিষ্ক্রিয় হয়েছে</string>
<string name="revanced_miniplayer_type_entry_1">আসল</string>
<string name="revanced_miniplayer_type_entry_1">পূর্ব-নির্ধারিত</string>
<string name="revanced_miniplayer_type_entry_3">ট্যাবলেট</string>
<string name="revanced_miniplayer_type_entry_4">মর্ডান ১</string>
<string name="revanced_miniplayer_type_entry_5">মর্ডান ২</string>
@@ -1068,7 +1068,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_user_dialog_message">এই সেটিংটি বন্ধ করার ফলে ভিডিও প্লেব্যাক ত্রুটি হতে পারে।</string>
<string name="revanced_spoof_video_streams_client_title">ডিফল্ট ক্লায়েন্ট</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">AVC (H.264) ফোর্স করুন</string>
<string name="revanced_spoof_video_streams_language_">ভিডিও স্ট্রিম স্পুফ করা হয়েছে</string>
</patch>
</app>
<app id="twitch">

View File

@@ -1018,7 +1018,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Změnit styl přehrávače minimalizovaného nastavení</string>
<string name="revanced_miniplayer_type_title">Typ minipřehrávače</string>
<string name="revanced_miniplayer_type_entry_0">Vypnuto</string>
<string name="revanced_miniplayer_type_entry_1">Původní</string>
<string name="revanced_miniplayer_type_entry_1">Výchozí</string>
<string name="revanced_miniplayer_type_entry_2">Minimální</string>
<string name="revanced_miniplayer_type_entry_3">Tablet</string>
<string name="revanced_miniplayer_type_entry_4">Moderní 1</string>
@@ -1210,11 +1210,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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 životnost baterie a opravit stahování přehrávání.\n\nAVC má maximální rozlišení 1080p, Opus audio kodek není k dispozici, a přehrávání videa bude používat více dat na internetu než VP9 nebo AV1.</string>
<string name="revanced_spoof_video_streams_about_ios_title">Boční efekty iOS</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Soukromé děti videa nemusí přehrávat\n• Živočišné rekony začínající od začátku\n• Videa mohou skončit 1 sekundu</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Soukromé děti videa nemusí přehrávat\n• Věkově omezená videa nemusí přehrát\n• Živočišné sny začínající od začátku\n• Videa končí 1 sekundu na začátku</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Boční efekty Android VR</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Dětská videa nemusí přehrát\n• Menu zvukové stopy chybí\n• Stabilní hlasitost není k dispozici</string>
<string name="revanced_spoof_video_streams_language_">Video streamy jsou falešné</string>
<string name="revanced_spoof_video_streams_language_title">Preferovaný jazyk audio streamu</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Dětská videa nemusí přehrávat\n• Věkově omezená videa nemusí přehrát\n• Životní sny začínající od začátku\n• Videa ukončí 1 sekundu</string>
<string name="revanced_spoof_video_streams_language_title">Výchozí jazyk audio streamu</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">Jazyk aplikace</string>
<string name="revanced_spoof_video_streams_language_AR">Arabština</string>
<string name="revanced_spoof_video_streams_language_AZ">Ázerbájdžán</string>

View File

@@ -1000,7 +1000,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Ændre stilen for den i app minimeret afspiller</string>
<string name="revanced_miniplayer_type_title">Type af miniplayer</string>
<string name="revanced_miniplayer_type_entry_0">Deaktiveret</string>
<string name="revanced_miniplayer_type_entry_1">Oprindelig</string>
<string name="revanced_miniplayer_type_entry_1">Standard</string>
<string name="revanced_miniplayer_type_entry_2">Minimal</string>
<string name="revanced_miniplayer_type_entry_3">Tablet</string>
<string name="revanced_miniplayer_type_entry_4">Moderne 1</string>
@@ -1192,11 +1192,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Video-codec bestemmes automatisk</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Aktivering af dette kan forbedre batteriets levetid og rette afspilningsstuttering.\n\nAVC har en maksimal opløsning på 1080p, Opus audio codec er ikke tilgængelig, og videoafspilning vil bruge flere internetdata end VP9 eller AV1.</string>
<string name="revanced_spoof_video_streams_about_ios_title">iOS forfalskning bivirkninger</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Private børn videoer kan ikke afspille\n• Livestreams starter fra begyndelsen\n• Videoer kan ende 1 sekund tidlig</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Private børn videoer kan ikke afspille\n• Aldersbegrænsede videoer kan ikke afspille\n• Livestreams starter fra begyndelsen\n• Videoer slutter 1 sekund tidlig</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Android VR spoofing bivirkninger</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Kids videoer afspiller muligvis ikke\n• Menuen for lydspor mangler\n• Stabil lydstyrke er ikke tilgængelig</string>
<string name="revanced_spoof_video_streams_language_">Video streams er spoofed</string>
<string name="revanced_spoof_video_streams_language_title">Foretrukket lyd-stream sprog</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Kids videoer spiller muligvis ikke\n• Aldersbegrænsede videoer spiller muligvis ikke\n• Livestreams starter fra begyndelsen\n• Videoer slutter 1 sekund tidlig</string>
<string name="revanced_spoof_video_streams_language_title">Standard lyd-stream sprog</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">App sprog</string>
<string name="revanced_spoof_video_streams_language_AR">Arabisk</string>
<string name="revanced_spoof_video_streams_language_AZ">Aserbajdsjansk</string>

View File

@@ -1018,7 +1018,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Ändere den Stil des in App minimierten Players</string>
<string name="revanced_miniplayer_type_title">Minispielertyp</string>
<string name="revanced_miniplayer_type_entry_0">Deaktiviert</string>
<string name="revanced_miniplayer_type_entry_1">Original</string>
<string name="revanced_miniplayer_type_entry_1">Standard</string>
<string name="revanced_miniplayer_type_entry_2">Minimal</string>
<string name="revanced_miniplayer_type_entry_3">Tablets</string>
<string name="revanced_miniplayer_type_entry_4">Modern 1</string>
@@ -1210,11 +1210,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Video-Codec wird automatisch bestimmt</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Das Aktivieren kann die Akkulaufzeit verbessern und die Wiedergabe-Stutting beheben.\n\nAVC hat eine maximale Auflösung von 1080p, Opus Audio Codec ist nicht verfügbar und Video-Wiedergabe wird mehr Internet-Daten als VP9 oder AV1 verwenden.</string>
<string name="revanced_spoof_video_streams_about_ios_title">iOS Spoofing Nebeneffekte</string>
<string name="revanced_spoof_video_streams_about_ios_summary">Videos für private Kinder dürfen nicht\nabspielen • Livestreams beginnen von Anfang an\n• Videos können 1 Sekunde früher enden</string>
<string name="revanced_spoof_video_streams_about_ios_summary">Private Kindervideos dürfen nicht\nabspielen • Altersbeschränkte Videos dürfen nicht\n• Livestreams beginnen von Anfang an\n• Videos enden 1 Sekunde früh</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Android VR Spoofing Nebeneffekte</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Kindervideos dürfen nicht\nabspielen • Audiospurmenü fehlt\n• Stabile Lautstärke ist nicht verfügbar</string>
<string name="revanced_spoof_video_streams_language_">Video-Streams sind gefälscht</string>
<string name="revanced_spoof_video_streams_language_title">Bevorzugte Audio-Stream-Sprache</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Kindervideos dürfen nicht\nabspielen • Altersbeschränkte Videos dürfen nicht\n• Livestreams beginnen von Anfang an\n• Videos enden 1 Sekunde früh</string>
<string name="revanced_spoof_video_streams_language_title">Standard Audio Streamsprache</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">App-Sprache</string>
<string name="revanced_spoof_video_streams_language_AR">Arabisch</string>
<string name="revanced_spoof_video_streams_language_AZ">Aserbaidschan</string>

View File

@@ -1017,7 +1017,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Αλλάξτε το στυλ της ελαχιστοποιημένης οθόνης αναπαραγωγής</string>
<string name="revanced_miniplayer_type_title">Τύπος ελαχιστοποιημένης οθόνης αναπαραγωγής</string>
<string name="revanced_miniplayer_type_entry_0">Ανενεργή</string>
<string name="revanced_miniplayer_type_entry_1">Αρχικός</string>
<string name="revanced_miniplayer_type_entry_1">Προεπιλογή</string>
<string name="revanced_miniplayer_type_entry_2">Ελάχιστη</string>
<string name="revanced_miniplayer_type_entry_3">Ταμπλετ</string>
<string name="revanced_miniplayer_type_entry_4">Μοντέρνα 1</string>
@@ -1209,11 +1209,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Ο κωδικοποιητής βίντεο ορίζεται αυτόματα</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Η ενεργοποίηση αυτού μπορεί να βελτιώσει τη διάρκεια ζωής της μπαταρίας και να διορθώσει κολλήματα αναπαραγωγής.\n\nΟ AVC έχει μέγιστη ανάλυση 1080p, ο κωδικοποιητής ήχου Opus δεν είναι διαθέσιμος και η αναπαραγωγή βίντεο θα καταναλώνει περισσότερα δεδομένα internet από τον VP9 ή τον AV1.</string>
<string name="revanced_spoof_video_streams_about_ios_title">Παρενέργειες παραποίησης σε iOS</string>
<string name="revanced_spoof_video_streams_about_ios_summary">Ιδιωτικά βίντεο για παιδιά ενδεχομένως να μην αναπαράγονται\n• Οι ζωντανές μεταδόσεις ξεκινούν από την αρχή\n• Τα βίντεο ενδέχεται να λήξουν 1 δευτερόλεπτο νωρίτερα</string>
<string name="revanced_spoof_video_streams_about_ios_summary">Τα ιδιωτικά βίντεο για παιδιά μπορεί να μην παίζουν\n• Τα βίντεο περιορισμένης ηλικίας μπορεί να μην παίζουν\n• Livestreams ξεκινούν από την αρχή\n• Τα βίντεο λήγουν 1 δευτερόλεπτο νωρίς</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Παρενέργειες παραποίησης σε Android VR</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">Τα βίντεο για παιδιά ενδέχεται να μην αναπαράγονται\n• Το μενού «Κομμάτι ήχου» λείπει\n• Η λειτουργία «Σταθερή ένταση» δεν είναι διαθέσιμη</string>
<string name="revanced_spoof_video_streams_language_">Οι ροές βίντεο παραποιούνται</string>
<string name="revanced_spoof_video_streams_language_title">Προτιμώμενη γλώσσα ροής ήχου</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">Τα βίντεο για παιδιά μπορεί να μην παίζουν\n• Τα βίντεο με περιορισμένη ηλικία δεν μπορούν να παίξουν\n• Livestreams ξεκινούν από την αρχή\n• Τα βίντεο λήγουν 1 δευτερόλεπτο νωρίς</string>
<string name="revanced_spoof_video_streams_language_title">Προεπιλεγμένη γλώσσα ροής ήχου</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">Γλώσσα εφαρμογής</string>
<string name="revanced_spoof_video_streams_language_AR">Αραβικά</string>
<string name="revanced_spoof_video_streams_language_AZ">Αζερμπαϊτζανικά</string>
@@ -1241,9 +1240,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_language_KO">Κορεάτικα</string>
<string name="revanced_spoof_video_streams_language_LT">Λιθουανικά</string>
<string name="revanced_spoof_video_streams_language_LV">Λετονικά</string>
<string name="revanced_spoof_video_streams_language_MK">Σλαβομακεδονικά</string>
<string name="revanced_spoof_video_streams_language_MK">Μακεδονικά</string>
<string name="revanced_spoof_video_streams_language_MN">Μογγολικά</string>
<string name="revanced_spoof_video_streams_language_MR">Μαραθικά</string>
<string name="revanced_spoof_video_streams_language_MR">Μαράτι</string>
<string name="revanced_spoof_video_streams_language_MS">Μαλαισιανά</string>
<string name="revanced_spoof_video_streams_language_MY">Βιρμανικά</string>
<string name="revanced_spoof_video_streams_language_NL">Ολλανδικά</string>

View File

@@ -1017,7 +1017,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Cambiar el estilo del reproductor minimizado de la aplicación</string>
<string name="revanced_miniplayer_type_title">Tipo de minreproductor</string>
<string name="revanced_miniplayer_type_entry_0">Desactivado</string>
<string name="revanced_miniplayer_type_entry_1">Original</string>
<string name="revanced_miniplayer_type_entry_1">Predeterminado</string>
<string name="revanced_miniplayer_type_entry_2">Mínimo</string>
<string name="revanced_miniplayer_type_entry_3">Tablet</string>
<string name="revanced_miniplayer_type_entry_4">Moderna 1</string>
@@ -1209,11 +1209,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">El códec de vídeo se determina automáticamente</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Activar esto puede mejorar la vida de la batería y corregir el retraso en la reproducción.\n\nAVC tiene una resolución máxima de 1080p, el código de audio Opus no está disponible. y la reproducción de vídeo utilizará más datos de Internet que VP9 o AV1.</string>
<string name="revanced_spoof_video_streams_about_ios_title">Efectos secundarios para la falsificación de iOS</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Los vídeos de niños privados no pueden reproducir\n• Livestreams comienzan desde el principio\n• Los vídeos pueden terminar temprano 1 segundo</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Los vídeos de niños privados no pueden reproducir\n• Los vídeos restringidos por edad no pueden reproducir\n• Los Livestreams comienzan desde el principio\n• Los vídeos terminan 1 segundo antes de tiempo</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Efectos secundarios para la falsificación de Android RV</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Los vídeos infantiles no pueden reproducir\n• Falta el menú de pista de audio\n• El volumen estable no está disponible</string>
<string name="revanced_spoof_video_streams_language_">El stream de vídeo está falsificado</string>
<string name="revanced_spoof_video_streams_language_title">Idioma de flujo de audio preferido</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Los vídeos infantiles no pueden reproducir\n• Los vídeos restringidos por edad no pueden reproducir\n• Los Livestreams comienzan desde el principio\n• Los vídeos terminan 1 segundo temprano</string>
<string name="revanced_spoof_video_streams_language_title">Idioma de flujo de audio por defecto</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">Idioma de la aplicación</string>
<string name="revanced_spoof_video_streams_language_AR">Árabe</string>
<string name="revanced_spoof_video_streams_language_AZ">Бессия</string>

View File

@@ -182,6 +182,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="layout.miniplayer.miniplayerPatch">
<string name="revanced_miniplayer_type_entry_0">Väljas</string>
<string name="revanced_miniplayer_type_entry_1">Vaikimisi</string>
</patch>
<patch id="layout.theme.themePatch">
</patch>

View File

@@ -1019,7 +1019,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Muuta sovelluksen tyyliä pienennetyssä soittimessa</string>
<string name="revanced_miniplayer_type_title">Minisoittimen tyyppi</string>
<string name="revanced_miniplayer_type_entry_0">Pois käytöstä</string>
<string name="revanced_miniplayer_type_entry_1">Alkuperäinen</string>
<string name="revanced_miniplayer_type_entry_1">Oletus</string>
<string name="revanced_miniplayer_type_entry_2">Minimaali</string>
<string name="revanced_miniplayer_type_entry_3">Tabletti</string>
<string name="revanced_miniplayer_type_entry_4">Moderni 1</string>
@@ -1211,11 +1211,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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 toistoa stuttering.\n\nAVC on enintään 1080p, Opus audio koodekki ei ole käytettävissä, ja videon toisto käyttää enemmän internet-tietoja kuin VP9 tai AV1.</string>
<string name="revanced_spoof_video_streams_about_ios_title">iOS-naamioinnin haittavaikutukset</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Yksityiset lapset videot eivät välttämättä pelaa\n• Livestreams alkaa alusta\n• Videot saattavat päättyä 1 sekunti aikaisin</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Yksityiset lapset videot eivät välttämättä pelaa\n• Ikä rajoitettu videoita ei voi pelata\n• Livestreams alkaa alusta\n• Videot päättyy 1 sekunti aikaisin</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Android VR -naamioinnin haittavaikutukset</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Lapset videot eivät välttämättä soita\n• Ääniraidan valikko puuttuu\n• Vakaa äänenvoimakkuus ei ole käytettävissä</string>
<string name="revanced_spoof_video_streams_language_">Videostriimit naamioidaan</string>
<string name="revanced_spoof_video_streams_language_title">Ensisijainen äänen suoratoistokieli</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Lapset videot eivät välttämättä pelaa\n• Ikä rajoitettu videot eivät voi pelata\n• Livestreams alkaa alusta\n• Videot päättyy 1 sekunti aikaisin</string>
<string name="revanced_spoof_video_streams_language_title">Äänivirran oletuskieli</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">Sovelluksen kieli</string>
<string name="revanced_spoof_video_streams_language_AR">Arabia</string>
<string name="revanced_spoof_video_streams_language_AZ">Azerbaidžan</string>

View File

@@ -912,7 +912,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Baguhin ang istilo ng in app minimized na player</string>
<string name="revanced_miniplayer_type_title">Uri ng miniplayer</string>
<string name="revanced_miniplayer_type_entry_0">Hindi</string>
<string name="revanced_miniplayer_type_entry_1">Orihinal</string>
<string name="revanced_miniplayer_type_entry_1">Regular</string>
<string name="revanced_miniplayer_type_entry_3">Tableta</string>
<string name="revanced_miniplayer_type_entry_4">Moderno 1</string>
<string name="revanced_miniplayer_type_entry_5">Moderno 2</string>

View File

@@ -1018,7 +1018,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Changer le style du lecteur réduit dans l\'application</string>
<string name="revanced_miniplayer_type_title">Type de Miniplayer</string>
<string name="revanced_miniplayer_type_entry_0">Désactivé</string>
<string name="revanced_miniplayer_type_entry_1">Original</string>
<string name="revanced_miniplayer_type_entry_1">Par défaut</string>
<string name="revanced_miniplayer_type_entry_2">Minimal</string>
<string name="revanced_miniplayer_type_entry_3">Tablette</string>
<string name="revanced_miniplayer_type_entry_4">Moderne 1</string>
@@ -1210,11 +1210,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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 ceci peut améliorer la durée de vie de la batterie et corriger les erreurs de lecture.\n\nAVC a une résolution maximale de 1080p, le codec audio Opus n\'est pas disponible, et la lecture vidéo utilisera plus de données Internet que VP9 ou AV1.</string>
<string name="revanced_spoof_video_streams_about_ios_title">Effets secondaires d\'usurpation iOS</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Les vidéos privées des enfants peuvent ne pas jouer à\n• Les live reams commencent dès le début\n• Les vidéos peuvent se terminer 1 seconde plus tôt</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Les vidéos privées des enfants peuvent ne pas jouer à\n• Les vidéos à l\'âge restreint peuvent ne pas lire\n• Les vidéos en direct commencent dès le début\n• Les vidéos se terminent 1 seconde plus tôt</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Effets secondaires de l\'usurpation VR Android</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Les vidéos des enfants peuvent ne pas lire\n• Le menu de la piste audio manque\n• Le volume stable n\'est pas disponible</string>
<string name="revanced_spoof_video_streams_language_">Les flux vidéo sont falsifiés</string>
<string name="revanced_spoof_video_streams_language_title">Langue préférée du flux audio</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Les vidéos pour enfants ne peuvent pas lire\n• Les vidéos à l\'âge restreint peuvent ne pas lire\n• Les vidéos en direct commencent dès le début\n• Les vidéos se terminent 1 seconde plus tôt</string>
<string name="revanced_spoof_video_streams_language_title">Langue du flux audio par défaut</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">Langue de l\'application</string>
<string name="revanced_spoof_video_streams_language_AR">Arabe</string>
<string name="revanced_spoof_video_streams_language_AZ">Azerbaïdjan</string>

View File

@@ -1014,7 +1014,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Athraigh stíl an imreora íoslaghdaithe san aip</string>
<string name="revanced_miniplayer_type_title">Cineál Miniplayer</string>
<string name="revanced_miniplayer_type_entry_0">Díchumasaithe</string>
<string name="revanced_miniplayer_type_entry_1">Bunaidh</string>
<string name="revanced_miniplayer_type_entry_1">Réamhshocraithe</string>
<string name="revanced_miniplayer_type_entry_2">Íosta</string>
<string name="revanced_miniplayer_type_entry_3">Táibléad</string>
<string name="revanced_miniplayer_type_entry_4">Nua-aimseartha 1</string>
@@ -1203,10 +1203,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_client_title">Cliant réamhshocraithe</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Fórsa AVC (H.264)</string>
<string name="revanced_spoof_video_streams_about_ios_title">Fo-iarsmaí spoofing iOS</string>
<string name="revanced_spoof_video_streams_about_ios_summary">Ní féidir físeáin phríobháideacha do pháistí a sheinm\n• Tosaíonn sruthanna beo ón tús\n• Féadfaidh físeáin críochnú 1 soicind go luath</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Fo-iarsmaí spoofing Android VR</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Ní fhéadfaidh físeáin leanaí a sheinm\n• Tá an roghchlár rian fuaime ar iarraidh\n• Níl an toirt cobhsaí ar fáil</string>
<string name="revanced_spoof_video_streams_language_">Tá sruthanna físe spoofed</string>
</patch>
</app>
<app id="twitch">

View File

@@ -181,6 +181,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="layout.miniplayer.miniplayerPatch">
<string name="revanced_miniplayer_type_entry_0">Onemogućeno</string>
<string name="revanced_miniplayer_type_entry_1">Zadano</string>
</patch>
<patch id="layout.theme.themePatch">
</patch>

View File

@@ -710,6 +710,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_player_popup_panels_summary_off">A lejátszó előugró panelei megjelennek</string>
</patch>
<patch id="layout.player.fullscreen.openVideosFullscreen">
<string name="revanced_open_videos_fullscreen_portrait_title">Nyissa meg a videókat teljes képernyős portréban</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_on">A videók teljes képernyőn nyílnak meg</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_off">A videók nem nyílnak meg teljes képernyőn</string>
</patch>
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
<string name="revanced_player_overlay_opacity_title">Lejátszó fedőrétegének átlátszatlansága</string>
@@ -1014,7 +1017,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Módosítsa az alkalmazáson belüli kisméretű lejátszó stílusát</string>
<string name="revanced_miniplayer_type_title">Minilejátszó típus</string>
<string name="revanced_miniplayer_type_entry_0">Kikapcsolva</string>
<string name="revanced_miniplayer_type_entry_1">Eredeti</string>
<string name="revanced_miniplayer_type_entry_1">Alapértelmezett</string>
<string name="revanced_miniplayer_type_entry_2">Minimális</string>
<string name="revanced_miniplayer_type_entry_3">Tablet</string>
<string name="revanced_miniplayer_type_entry_4">Modern 1</string>
@@ -1202,11 +1205,64 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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_title">Alapértelmezett kliens</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">AVC (H.264) kényszerítése</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.\n\nAz AVC maximális felbontása 1080p, az Opus audiokodek nem érhető el, és a videolejátszás több internetadatot használ, mint a VP9 vagy az AV1.</string>
<string name="revanced_spoof_video_streams_about_ios_title">iOS hamisítási mellékhatások</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Előfordulhat, hogy a privát gyerekeknek szóló videók nem játszhatók le\n• Az élő közvetítések elölről kezdődnek\n• A videók 1 másodperccel korábban véget érhetnek</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Android VR-hamisítási mellékhatások</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Előfordulhat, hogy a gyerekvideókat nem lehet lejátszani\n• Hiányzik a hangsáv menü\n• A stabil hangerő nem érhető el</string>
<string name="revanced_spoof_video_streams_language_">A videó stream hamisítva</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">Alkalmazás nyelve</string>
<string name="revanced_spoof_video_streams_language_AR">Arab</string>
<string name="revanced_spoof_video_streams_language_AZ">Azerbajdzsáni</string>
<string name="revanced_spoof_video_streams_language_BG">Bolgár</string>
<string name="revanced_spoof_video_streams_language_BN">Bengáli</string>
<string name="revanced_spoof_video_streams_language_CA">Katalán</string>
<string name="revanced_spoof_video_streams_language_CS">Cseh</string>
<string name="revanced_spoof_video_streams_language_DA">Dán</string>
<string name="revanced_spoof_video_streams_language_DE">Német</string>
<string name="revanced_spoof_video_streams_language_EL">Görög</string>
<string name="revanced_spoof_video_streams_language_EN">Angol</string>
<string name="revanced_spoof_video_streams_language_ES">Spanyol</string>
<string name="revanced_spoof_video_streams_language_ET">Észt</string>
<string name="revanced_spoof_video_streams_language_FA">Perzsa</string>
<string name="revanced_spoof_video_streams_language_FI">Finn</string>
<string name="revanced_spoof_video_streams_language_FR">Francia</string>
<string name="revanced_spoof_video_streams_language_GU">Gudzsaráti</string>
<string name="revanced_spoof_video_streams_language_HI">Hindi</string>
<string name="revanced_spoof_video_streams_language_HR">Horvát</string>
<string name="revanced_spoof_video_streams_language_HU">Magyar</string>
<string name="revanced_spoof_video_streams_language_ID">Indonéz</string>
<string name="revanced_spoof_video_streams_language_IT">Olasz</string>
<string name="revanced_spoof_video_streams_language_JA">Japán</string>
<string name="revanced_spoof_video_streams_language_KK">Kazah</string>
<string name="revanced_spoof_video_streams_language_KO">Koreai</string>
<string name="revanced_spoof_video_streams_language_LT">Litván</string>
<string name="revanced_spoof_video_streams_language_LV">Lett</string>
<string name="revanced_spoof_video_streams_language_MK">Macedón</string>
<string name="revanced_spoof_video_streams_language_MN">Mongol</string>
<string name="revanced_spoof_video_streams_language_MR">Maráthi</string>
<string name="revanced_spoof_video_streams_language_MS">Maláj</string>
<string name="revanced_spoof_video_streams_language_MY">Burmai</string>
<string name="revanced_spoof_video_streams_language_NL">Holland</string>
<string name="revanced_spoof_video_streams_language_OR">Odia</string>
<string name="revanced_spoof_video_streams_language_PA">Pandzsábi</string>
<string name="revanced_spoof_video_streams_language_PL">Lengyel</string>
<string name="revanced_spoof_video_streams_language_PT_BR">Portugál (Brazil)</string>
<string name="revanced_spoof_video_streams_language_PT_PT">Portugál (Portugália)</string>
<string name="revanced_spoof_video_streams_language_RO">Román</string>
<string name="revanced_spoof_video_streams_language_RU">Orosz</string>
<string name="revanced_spoof_video_streams_language_SK">Szlovák</string>
<string name="revanced_spoof_video_streams_language_SL">Szlovén</string>
<string name="revanced_spoof_video_streams_language_SR">Szerb</string>
<string name="revanced_spoof_video_streams_language_SV">Svéd</string>
<string name="revanced_spoof_video_streams_language_SW">Szuahéli</string>
<string name="revanced_spoof_video_streams_language_TA">Tamil</string>
<string name="revanced_spoof_video_streams_language_TE">Telugu</string>
<string name="revanced_spoof_video_streams_language_TH">Tháj</string>
<string name="revanced_spoof_video_streams_language_TR">Török</string>
<string name="revanced_spoof_video_streams_language_UK">Ukrán</string>
<string name="revanced_spoof_video_streams_language_UR">Urdu</string>
<string name="revanced_spoof_video_streams_language_VI">Vietnámi</string>
<string name="revanced_spoof_video_streams_language_ZH">Kínai</string>
</patch>
</app>
<app id="twitch">

View File

@@ -710,6 +710,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_player_popup_panels_summary_off">Panel popup pemutar ditampilkan</string>
</patch>
<patch id="layout.player.fullscreen.openVideosFullscreen">
<string name="revanced_open_videos_fullscreen_portrait_title">Buka video dalam potret layar penuh</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_on">Video terbuka dalam layar penuh</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_off">Video tidak terbuka dalam layar penuh</string>
</patch>
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
<string name="revanced_player_overlay_opacity_title">Opasitas hamparan pemutar</string>
@@ -1014,7 +1017,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Mengubah gaya pemutar aplikasi saat diciuitkan</string>
<string name="revanced_miniplayer_type_title">Jenis pemutar mini</string>
<string name="revanced_miniplayer_type_entry_0">Nonaktif</string>
<string name="revanced_miniplayer_type_entry_1">Asli</string>
<string name="revanced_miniplayer_type_entry_1">Bawaan</string>
<string name="revanced_miniplayer_type_entry_2">Minimal</string>
<string name="revanced_miniplayer_type_entry_3">Tablet</string>
<string name="revanced_miniplayer_type_entry_4">Modern 1</string>
@@ -1202,11 +1205,64 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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_title">Klien bawaan</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Paksa AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Kodek video dipaksa ke AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Kodek video ditentukan otomatis</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Mengaktifkan ini dapat meningkatkan daya tahan baterai dan memperbaiki pemutaran yang tersendat-sendat.\n\nAVC memiliki resolusi maksimum 1080p, kodek 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_title">Efek samping pemalsuan iOS</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Video privat anak-anak tidak dapat diputar\n• Siaran langsung dimulai dari awal\n• Video akan berakhir 1 detik lebih awal</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Efek samping pemalsuan Android VR</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Video anak-anak mungkin tidak dapat diputar\n• Menu trek audio tidak ada\n• Volume stabil tidak tersedia</string>
<string name="revanced_spoof_video_streams_language_">Aliran video dipalsukan</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">Bahasa aplikasi</string>
<string name="revanced_spoof_video_streams_language_AR">Arab</string>
<string name="revanced_spoof_video_streams_language_AZ">Azerbaijan</string>
<string name="revanced_spoof_video_streams_language_BG">Bulgaria</string>
<string name="revanced_spoof_video_streams_language_BN">Bengali</string>
<string name="revanced_spoof_video_streams_language_CA">Catalan</string>
<string name="revanced_spoof_video_streams_language_CS">Ceko</string>
<string name="revanced_spoof_video_streams_language_DA">Denmark</string>
<string name="revanced_spoof_video_streams_language_DE">Jerman</string>
<string name="revanced_spoof_video_streams_language_EL">Yunani</string>
<string name="revanced_spoof_video_streams_language_EN">Inggris</string>
<string name="revanced_spoof_video_streams_language_ES">Spanyol</string>
<string name="revanced_spoof_video_streams_language_ET">Estonia</string>
<string name="revanced_spoof_video_streams_language_FA">Persia</string>
<string name="revanced_spoof_video_streams_language_FI">Finlandia</string>
<string name="revanced_spoof_video_streams_language_FR">Perancis</string>
<string name="revanced_spoof_video_streams_language_GU">Gujarat</string>
<string name="revanced_spoof_video_streams_language_HI">Hindi</string>
<string name="revanced_spoof_video_streams_language_HR">Kroasia</string>
<string name="revanced_spoof_video_streams_language_HU">Hungaria</string>
<string name="revanced_spoof_video_streams_language_ID">Indonesia</string>
<string name="revanced_spoof_video_streams_language_IT">Italia</string>
<string name="revanced_spoof_video_streams_language_JA">Jepang</string>
<string name="revanced_spoof_video_streams_language_KK">Kazakh</string>
<string name="revanced_spoof_video_streams_language_KO">Korea</string>
<string name="revanced_spoof_video_streams_language_LT">Lithuania</string>
<string name="revanced_spoof_video_streams_language_LV">Latvia</string>
<string name="revanced_spoof_video_streams_language_MK">Makedonia</string>
<string name="revanced_spoof_video_streams_language_MN">Mongolia</string>
<string name="revanced_spoof_video_streams_language_MR">Marathi</string>
<string name="revanced_spoof_video_streams_language_MS">Melayu</string>
<string name="revanced_spoof_video_streams_language_MY">Myanmar</string>
<string name="revanced_spoof_video_streams_language_NL">Belanda</string>
<string name="revanced_spoof_video_streams_language_OR">Oriya</string>
<string name="revanced_spoof_video_streams_language_PA">Punjabi</string>
<string name="revanced_spoof_video_streams_language_PL">Polandia</string>
<string name="revanced_spoof_video_streams_language_PT_BR">Portugis (Brasil)</string>
<string name="revanced_spoof_video_streams_language_PT_PT">Portugis (Portugal)</string>
<string name="revanced_spoof_video_streams_language_RO">Rumania</string>
<string name="revanced_spoof_video_streams_language_RU">Rusia</string>
<string name="revanced_spoof_video_streams_language_SK">Slovakia</string>
<string name="revanced_spoof_video_streams_language_SL">Slovene</string>
<string name="revanced_spoof_video_streams_language_SR">Serbia</string>
<string name="revanced_spoof_video_streams_language_SV">Swedia</string>
<string name="revanced_spoof_video_streams_language_SW">Swahili</string>
<string name="revanced_spoof_video_streams_language_TA">Tamil</string>
<string name="revanced_spoof_video_streams_language_TE">Telugu</string>
<string name="revanced_spoof_video_streams_language_TH">Thai</string>
<string name="revanced_spoof_video_streams_language_TR">Turki</string>
<string name="revanced_spoof_video_streams_language_UK">Ukraina</string>
<string name="revanced_spoof_video_streams_language_UR">Urdu</string>
<string name="revanced_spoof_video_streams_language_VI">Vietnam</string>
<string name="revanced_spoof_video_streams_language_ZH">China</string>
</patch>
</app>
<app id="twitch">

View File

@@ -205,20 +205,20 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_quick_actions_summary_on">Le azioni rapide sono nascoste</string>
<string name="revanced_hide_quick_actions_summary_off">Le azioni rapide sono visibili</string>
<string name="revanced_hide_related_videos_title">Nascondi video correlati nelle azioni rapide</string>
<string name="revanced_hide_related_videos_summary_on">Video correlati nascosti</string>
<string name="revanced_hide_related_videos_summary_on">I video correlati sono nascosti</string>
<string name="revanced_hide_related_videos_summary_off">Video correlati visibili</string>
<string name="revanced_hide_image_shelf_title">Nascondi pubblicità con immagini nei risultati di ricerca</string>
<string name="revanced_hide_image_shelf_summary_on">Le pubblicità con immagini sono nascoste </string>
<string name="revanced_hide_image_shelf_summary_off">Le pubblicità con immagini sono visibili </string>
<string name="revanced_hide_latest_posts_ads_title">Nascondi i post più recenti</string>
<string name="revanced_hide_latest_posts_ads_summary_on">Gli ultimi post sono nascosti</string>
<string name="revanced_hide_latest_posts_ads_summary_off">Gli ultimi post sono mostrati</string>
<string name="revanced_hide_mix_playlists_title">Nascondi playlist mix</string>
<string name="revanced_hide_mix_playlists_summary_on">Le playlist Mix sono nascoste</string>
<string name="revanced_hide_mix_playlists_summary_off">Vengono mostrate playlist di Mix</string>
<string name="revanced_hide_artist_cards_title">Nascondi le carte artista</string>
<string name="revanced_hide_artist_cards_summary_on">Le carte dell\'artista sono nascoste</string>
<string name="revanced_hide_artist_cards_summary_off">Vengono mostrate le carte dell\'artista</string>
<string name="revanced_hide_latest_posts_ads_summary_on">I post più recenti sono nascosti</string>
<string name="revanced_hide_latest_posts_ads_summary_off">I post più recenti sono visibili</string>
<string name="revanced_hide_mix_playlists_title">Nascondi le playlist miste</string>
<string name="revanced_hide_mix_playlists_summary_on">Le playlist miste sono nascoste</string>
<string name="revanced_hide_mix_playlists_summary_off">Le playlist miste sono visibili</string>
<string name="revanced_hide_artist_cards_title">Nascondi le schede artista</string>
<string name="revanced_hide_artist_cards_summary_on">Le schede artista sono nascoste</string>
<string name="revanced_hide_artist_cards_summary_off">Le schede artista sono visibili</string>
<string name="revanced_hide_attributes_section_title">Nascondi la sezione attributi</string>
<string name="revanced_hide_attributes_section_summary_on">Le sezioni \'Luoghi in evidenza\', Giochi e Musica sono nascoste</string>
<string name="revanced_hide_attributes_section_summary_off">Le sezioni \'Luoghi in evidenza\', Giochi e Musica sono visibili</string>
@@ -324,9 +324,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_paid_promotion_label_title">Nascondi etichetta promozione a pagamento</string>
<string name="revanced_hide_paid_promotion_label_summary_on">L\'etichetta della promozione a pagamento è nascosta</string>
<string name="revanced_hide_paid_promotion_label_summary_off">L\'etichetta della promozione a pagamento è visibile</string>
<string name="revanced_hide_self_sponsor_ads_title">Nascondi le carte autosponsorizzate</string>
<string name="revanced_hide_self_sponsor_ads_summary_on">Le carte autosponsorizzate sono nascoste</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">Vengono mostrate le carte autosponsorizzate</string>
<string name="revanced_hide_self_sponsor_ads_title">Nascondi le schede autopromozionali</string>
<string name="revanced_hide_self_sponsor_ads_summary_on">Le schede autopromozionali sono nascoste</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">Le schede autopromozionali sono visibili</string>
<string name="revanced_hide_products_banner_title">Nascondi banner per visualizzare i prodotti</string>
<string name="revanced_hide_products_banner_summary_on">Il banner è nascosto</string>
<string name="revanced_hide_products_banner_summary_off">Il banner è visibile</string>
@@ -710,9 +710,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_player_popup_panels_summary_off">I pannelli popup del player sono visibili</string>
</patch>
<patch id="layout.player.fullscreen.openVideosFullscreen">
<string name="revanced_open_videos_fullscreen_portrait_title">Apri video in verticale a schermo intero</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_on">Video aperti a schermo intero</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_off">I video non aprono schermo intero</string>
<string name="revanced_open_videos_fullscreen_portrait_title">Apri i video in verticale a schermo intero</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_on">I video vengono aperti a schermo intero</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_off">I video non vengono aperti a schermo intero</string>
</patch>
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
<string name="revanced_player_overlay_opacity_title">Opacità sovrapposizione del player</string>
@@ -1017,7 +1017,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Cambia lo stile del miniplayer nell\'app</string>
<string name="revanced_miniplayer_type_title">Tipo di Miniplayer</string>
<string name="revanced_miniplayer_type_entry_0">Disattivato</string>
<string name="revanced_miniplayer_type_entry_1">Originale</string>
<string name="revanced_miniplayer_type_entry_1">Predefinito</string>
<string name="revanced_miniplayer_type_entry_2">Minimale</string>
<string name="revanced_miniplayer_type_entry_3">Tablet</string>
<string name="revanced_miniplayer_type_entry_4">Moderno 1</string>
@@ -1207,16 +1207,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_ios_force_avc_title">Forza 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 viene determinato automaticamente</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Abilitando questo si potrebbe migliorare la durata della batteria e correggere la riproduzione della balbuzia.\n\nAVC ha una risoluzione massima di 1080p, il codec audio Opus non è disponibile, e la riproduzione video utilizzerà più dati internet di VP9 o AV1.</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">L\'attivazione di questa impostazione potrebbe migliorare la durata della batteria e risolvere il problema della riproduzione a scatti.\n\nNota: AVC ha una risoluzione massima di 1080p, il codec Opus non è disponibile e la riproduzione userà più dati internet rispetto a VP9 o AV1.</string>
<string name="revanced_spoof_video_streams_about_ios_title">Effetti collaterali simulazione iOS</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• I video privati per bambini potrebbero non riprodurre\n• Livestreams start from the beginning\n• Video potrebbero terminare 1 secondo presto</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• I video privati per bambini potrebbero non riprodurre\n• I video con limitazioni di età potrebbero non riprodurre\n• I Livestreams iniziano dall\'inizio\n• I video terminano 1 secondo presto</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Effetti collaterali simulazione Android VR</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• I video per bambini potrebbero non riprodurre\n• Il menu traccia audio è mancante\n• Volume stabile non è disponibile</string>
<string name="revanced_spoof_video_streams_language_">Il client del flusso video è simulato</string>
<string name="revanced_spoof_video_streams_language_title">Lingua del flusso audio preferita</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• I video per bambini potrebbero non riprodurre\n• È possibile che i video con limitazioni di età non riproducano\n• Livestreams start from the start\n• Video end 1 second early</string>
<string name="revanced_spoof_video_streams_language_title">Lingua predefinita del flusso audio</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">Lingua app</string>
<string name="revanced_spoof_video_streams_language_AR">Arabo</string>
<string name="revanced_spoof_video_streams_language_AZ">Azerbaigian</string>
<string name="revanced_spoof_video_streams_language_AZ">Azerbaigiano</string>
<string name="revanced_spoof_video_streams_language_BG">Bulgaro</string>
<string name="revanced_spoof_video_streams_language_BN">Bengalese</string>
<string name="revanced_spoof_video_streams_language_CA">Catalano</string>
@@ -1229,7 +1228,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_language_ET">Estone</string>
<string name="revanced_spoof_video_streams_language_FA">Persiano</string>
<string name="revanced_spoof_video_streams_language_FI">Finlandese</string>
<string name="revanced_spoof_video_streams_language_FR">Français</string>
<string name="revanced_spoof_video_streams_language_FR">Francese</string>
<string name="revanced_spoof_video_streams_language_GU">Gujarati</string>
<string name="revanced_spoof_video_streams_language_HI">Hindi</string>
<string name="revanced_spoof_video_streams_language_HR">Croato</string>
@@ -1237,7 +1236,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_language_ID">Indonesiano</string>
<string name="revanced_spoof_video_streams_language_IT">Italiano</string>
<string name="revanced_spoof_video_streams_language_JA">Giapponese</string>
<string name="revanced_spoof_video_streams_language_KK">Kazakh</string>
<string name="revanced_spoof_video_streams_language_KK">Kazako</string>
<string name="revanced_spoof_video_streams_language_KO">Coreano</string>
<string name="revanced_spoof_video_streams_language_LT">Lituano</string>
<string name="revanced_spoof_video_streams_language_LV">Lettone</string>

View File

@@ -35,32 +35,20 @@ This is because Crowdin requires temporarily flattening this file and removing t
<patch id="misc.checks.checkEnvironmentPatch">
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_reset">איפוס</string>
<string name="revanced_settings_restart">הפעלה מחדש</string>
<string name="revanced_settings_import">ייבוא</string>
<string name="revanced_settings_import_copy">העתק</string>
<string name="revanced_settings_import_reset">הגדרות ReVanced אופסו לברירת המחדל</string>
<string name="revanced_pref_import_export_title">יבוא/ ייצוא</string>
<string name="revanced_pref_import_export_summary">יבוא/ ייצוא הגדרות ReVanced</string>
<!-- Settings about dialog. -->
<!-- NOTE: the about strings above are duplicated in the TikTok about screen code,
and changes made here must also be made there. -->
</patch>
<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. -->
<string name="gms_core_dialog_continue_text">המשך</string>
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
<string name="revanced_settings_screen_00_about_title">אודות</string>
<string name="revanced_settings_screen_11_misc_title">שונות</string>
<string name="revanced_settings_screen_12_video_title">וידאו</string>
</patch>
<patch id="misc.backgroundplayback.backgroundPlaybackPatch">
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">איתור באגים</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<!-- 'Join' should be translated using the same localized wording YouTube displays.
@@ -98,7 +86,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<patch id="interaction.seekbar.enableSeekbarTappingPatch">
</patch>
<patch id="interaction.swipecontrols.swipeControlsResourcePatch">
<string name="revanced_swipe_lowest_value_enable_auto_brightness_overlay_text">אוטומטי</string>
</patch>
<patch id="layout.autocaptions.autoCaptionsPatch">
</patch>
@@ -134,8 +121,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
</patch>
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
<string name="revanced_hide_cast_button_summary_on">לחצן שידור מסך מוסתר</string>
<string name="revanced_hide_cast_button_summary_off">לחצן שידור מסך מוצג</string>
<!-- This button does not display any text, but 'captions' should be translated using the same wording used as the translation of 'revanced_hide_player_flyout_captions_title' -->
</patch>
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
@@ -143,8 +128,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<patch id="layout.hide.fullscreenambientmode.disableFullscreenAmbientModePatch">
</patch>
<patch id="layout.hide.infocards.hideInfocardsResourcePatch">
<string name="revanced_hide_info_cards_summary_on">כרטיסי המידע מוסתרים</string>
<string name="revanced_hide_info_cards_summary_off">כרטיסי המידע מוצגים</string>
</patch>
<patch id="layout.hide.rollingnumber.disableRollingNumberAnimationPatch">
</patch>
@@ -172,7 +155,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<!-- Toast shown if network connection times out. Translations of this should not be longer than the original English or the text can be clipped and not entirely shown. -->
<!-- Toast shown if the user enables RYD while a video is opened, and then tries to vote for the video. -->
<!-- Translations should use language similar to 'revanced_sb_enable_compact_skip_button' -->
<string name="revanced_ryd_about">אודות</string>
<!-- Statistic strings are shown in the settings only when ReVanced debug mode is enabled. Typical users will never see these. -->
</patch>
<patch id="layout.searchbar.wideSearchbarPatch">

View File

@@ -997,7 +997,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">アプリの最小化プレイヤーのスタイルを変更する</string>
<string name="revanced_miniplayer_type_title">ミニプレーヤータイプ</string>
<string name="revanced_miniplayer_type_entry_0">無効</string>
<string name="revanced_miniplayer_type_entry_1">オリジナル</string>
<string name="revanced_miniplayer_type_entry_1">既定</string>
<string name="revanced_miniplayer_type_entry_2">最小</string>
<string name="revanced_miniplayer_type_entry_3">タブレット</string>
<string name="revanced_miniplayer_type_entry_4">モダン 1</string>
@@ -1188,8 +1188,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">これを有効にするとバッテリー寿命が延長され、再生が停止する可能性があります。\n\nAVCの最大解像度は1080pで、Opusオーディオコーデックは利用できません。 動画再生は、VP9やAV1よりも多くのインターネットデータを使用します。</string>
<string name="revanced_spoof_video_streams_about_ios_title">iOSのクライアント偽装での副作用</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Android-VR クライアント偽装の副作用</string>
<string name="revanced_spoof_video_streams_language_">ビデオストリームはなりすましています</string>
<string name="revanced_spoof_video_streams_language_title">優先オーディオストリーム言語</string>
<string name="revanced_spoof_video_streams_language_title">デフォルトのオーディオストリーム言語</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">アプリの言語</string>
<string name="revanced_spoof_video_streams_language_AR">アラビア文字</string>
<string name="revanced_spoof_video_streams_language_AZ">アゼルバイジャン語</string>

View File

@@ -711,6 +711,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_player_popup_panels_summary_off">플레이어 팝업 패널이 표시됩니다\n• 재생목록, 실시간 채팅, etc.</string>
</patch>
<patch id="layout.player.fullscreen.openVideosFullscreen">
<string name="revanced_open_videos_fullscreen_portrait_title">동영상을 전체 화면 세로 모드로 열기</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_on">동영상을 전체 화면으로 엽니다</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_off">동영상을 전체 화면으로 열지 않습니다</string>
</patch>
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
<string name="revanced_player_overlay_opacity_title">플레이어 오버레이 불투명도</string>
@@ -965,7 +968,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_app_version_user_dialog_message">앱 버전을 YouTube 이전 앱 버전으로 변경합니다\n\n이 경우 앱 레이아웃과 기능이 변경되지만 알려지지 않은 문제점이 발생할 수 있습니다\n\n나중에 이 설정을 비활성화하면 앱 레이아웃 버그를 방지하기 위해 앱 데이터를 지우는 것이 좋습니다</string>
<!-- It is ideal, but not required, if the text here appears is alphabetically after the text used for 'revanced_spoof_app_version_title'.
This is because the 'General layout' menu uses alphabetic sorting, and it functionally works better if the spoof target selector appears below the 'Spoof app version' UI switch -->
<string name="revanced_spoof_app_version_target_title">변경할 앱 버전 설정</string>
<string name="revanced_spoof_app_version_target_title">변경할 앱 버전</string>
<string name="revanced_spoof_app_version_target_entry_1">19.35.36 - 이전 Shorts 플레이어 아이콘을 복원합니다</string>
<!-- 'RYD' is 'Return YouTube Dislike' -->
<string name="revanced_spoof_app_version_target_legacy_entry_1">18.33.40 - 시크릿 모드에서 Shorts RYD를 복원합니다</string>
@@ -1013,9 +1016,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<patch id="layout.miniplayer.miniplayerPatch">
<string name="revanced_miniplayer_screen_title">미니 플레이어</string>
<string name="revanced_miniplayer_screen_summary">앱 내에서 최소화된 플레이어의 스타일을 변경할 수 있습니다</string>
<string name="revanced_miniplayer_type_title">미니 플레이어 유형 설정</string>
<string name="revanced_miniplayer_type_title">미니 플레이어 유형</string>
<string name="revanced_miniplayer_type_entry_0">비활성화됨</string>
<string name="revanced_miniplayer_type_entry_1">기기 기본값 사용</string>
<string name="revanced_miniplayer_type_entry_1">홈 (기본값)</string>
<string name="revanced_miniplayer_type_entry_2">최소화</string>
<string name="revanced_miniplayer_type_entry_3">태블릿</string>
<string name="revanced_miniplayer_type_entry_4">최신 스타일 1</string>
@@ -1024,18 +1027,18 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_rounded_corners_title">둥근 모서리 활성화하기</string>
<string name="revanced_miniplayer_rounded_corners_summary_on">모서리를 둥글게 활성화합니다</string>
<string name="revanced_miniplayer_rounded_corners_summary_off">모서리를 각지게 활성화합니다</string>
<string name="revanced_miniplayer_double_tap_action_title">두 번 누르기 및 핀치하여 크기 조정 활성화하기</string>
<string name="revanced_miniplayer_double_tap_action_summary_on">두 번 누르기 동작 및 핀치하여 크기 조정을 활성화합니다\n\n• 두 번 눌러서 미니 플레이어 크기를 확대합니다\n• 다시 두 번 눌러서 원래 크기로 복원니다</string>
<string name="revanced_miniplayer_double_tap_action_summary_off">두 번 누르기 동작 및 핀치하여 크기 조정을 비활성화합니다</string>
<string name="revanced_miniplayer_double_tap_action_title">\'두 번 누르기\'\'핀치하여 크기 조정\' 활성화하기</string>
<string name="revanced_miniplayer_double_tap_action_summary_on">\'두 번 누르기 동작\'\'핀치하여 크기 조정\'을 활성화합니다\n\n• 두 번 눌러서 미니 플레이어 크기를 늘릴 수 있습니다\n• 다시 두 번 누르면 원래 크기로 복원니다</string>
<string name="revanced_miniplayer_double_tap_action_summary_off">\'두 번 누르기 동작\'\'핀치하여 크기 조정\'을 비활성화합니다</string>
<string name="revanced_miniplayer_drag_and_drop_title">드래그 &amp; 드롭 활성화하기</string>
<string name="revanced_miniplayer_drag_and_drop_summary_on">드래그 &amp; 드롭을 활성화합니다\n\n• 미니 플레이어를 화면의 어느 곳이든 드래그할 수 있습니다</string>
<string name="revanced_miniplayer_drag_and_drop_summary_off">드래그 &amp; 드롭을 비활성화합니다</string>
<string name="revanced_miniplayer_horizontal_drag_title">수평 드래그 제스처 활성화하기</string>
<string name="revanced_miniplayer_horizontal_drag_summary_on">수평 드래그 제스처를 활성화합니다\n\n미니 플레이어 절반 정도를 왼쪽 밖 또는 오른쪽 밖으로 드래그하여 숨길 수 있습니다</string>
<string name="revanced_miniplayer_horizontal_drag_summary_off">수평 드래그 제스처를 비활성화합니다</string>
<string name="revanced_miniplayer_hide_expand_close_title">닫기 버튼 숨기기</string>
<string name="revanced_miniplayer_hide_expand_close_summary_on">닫기 버튼이 숨겨집니다</string>
<string name="revanced_miniplayer_hide_expand_close_summary_off">닫기 버튼이 표시됩니다</string>
<string name="revanced_miniplayer_hide_expand_close_title">\'닫기\' 버튼 숨기기</string>
<string name="revanced_miniplayer_hide_expand_close_summary_on">\'닫기\' 버튼이 숨겨집니다</string>
<string name="revanced_miniplayer_hide_expand_close_summary_off">\'닫기\' 버튼이 표시됩니다</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_title">\'펼치기\' &amp; \'닫기\' 버튼 숨기기</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">\'펼치기\' &amp; \'닫기\' 버튼이 숨겨집니다\n\n• 스와이프하여 미니 플레이어를 펼치거나 닫을 수 있습니다</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_off">\'펼치기\' &amp; \'닫기\' 버튼이 표시됩니다</string>
@@ -1061,7 +1064,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_seekbar_custom_color_title">사용자 정의 재생바 색상 활성화하기</string>
<string name="revanced_seekbar_custom_color_summary_on">사용자 정의 재생바 색상을 활성화합니다</string>
<string name="revanced_seekbar_custom_color_summary_off">기본 재생바 색상을 활성화합니다</string>
<string name="revanced_seekbar_custom_color_value_title">사용자 정의 재생바 색상 설정</string>
<string name="revanced_seekbar_custom_color_value_title">사용자 정의 재생바 색상</string>
<string name="revanced_seekbar_custom_color_value_summary">재생바 색상</string>
<string name="revanced_seekbar_custom_color_invalid">잘못된 재생바 색상값입니다</string>
</patch>
@@ -1083,14 +1086,14 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_alt_thumbnail_options_entry_2">DeArrow &amp; 기본 썸네일</string>
<string name="revanced_alt_thumbnail_options_entry_3">DeArrow &amp; 스틸 컷 썸네일</string>
<string name="revanced_alt_thumbnail_options_entry_4">스틸 컷 썸네일</string>
<string name="revanced_alt_thumbnail_dearrow_about_summary">DeArrow는 YouTube 동영상에 크라우드 소싱된 썸네일을 제공합니다. 이러한 썸네일은 YouTube에서 제공하는 썸네일보다 관련성이 높은 경우가 많습니다\n\n이 설정을 활성화하면 동영상 URL이 API 서버로 전송되며 다른 데이터는 전송되지 않습니다. 동영상에 DeArrow 썸네일이 없는 경우에는 기본 썸네일 또는 스틸 컷 썸네일이 표시됩니다\n\nDeArrow에 대해 자세히 알아보려면 여기를 누르세요</string>
<string name="revanced_alt_thumbnail_dearrow_about_summary">DeArrow는 YouTube 동영상에 크라우드 소싱된 썸네일을 제공합니다. 이러한 썸네일은 YouTube에서 제공하는 썸네일보다 관련성이 높은 경우가 많습니다\n\n이 설정을 활성화하면 동영상 URL이 API 서버로 전송되며, 다른 데이터는 전송되지 않습니다. 동영상에 DeArrow 썸네일이 없는 경우에는 기본 썸네일 또는 스틸 컷 썸네일이 표시됩니다\n\nDeArrow에 대해 자세히 알아보려면 여기를 누르세요</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_title">API를 사용할 수 없을 때, 팝업 메시지 표시하기</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_on">DeArrow를 사용할 수 없을 때, 팝업 메시지를 표시합니다</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_off">DeArrow를 사용할 수 없을 때, 팝업 메시지를 표시하지 않습니다</string>
<string name="revanced_alt_thumbnail_dearrow_api_url_title">DeArrow API 엔드포인트</string>
<string name="revanced_alt_thumbnail_dearrow_api_url_summary">DeArrow 썸네일 캐시 엔드포인트 URL입니다. 이것이 무슨 역할을 하는지 모르는 경우에는 이 URL을 변경하지 마세요</string>
<string name="revanced_alt_thumbnail_stills_about_title">스틸 컷 썸네일</string>
<string name="revanced_alt_thumbnail_stills_about_summary">스틸 컷 썸네일은 각 동영상의 시작 / 중간 / 끝 부분에서 캡쳐된 이미지입니다. 이러한 이미지는 YouTube에 내장되어 있으며 외부 API는 사용되지 않습니다</string>
<string name="revanced_alt_thumbnail_stills_about_summary">스틸 컷 썸네일은 각 동영상의 시작 / 중간 / 끝 부분에서 캡쳐된 이미지입니다. 이러한 이미지는 YouTube에 내장되어 있으며, 외부 API는 사용되지 않습니다</string>
<string name="revanced_alt_thumbnail_stills_fast_title">일반화질 스틸 컷 썸네일 표시하기</string>
<string name="revanced_alt_thumbnail_stills_fast_summary_on">일반화질 스틸 컷 썸네일을 표시합니다. 썸네일을 빠르게 불러오지만 실시간 스트림, 비공개, 오래된 동영상에서는 아무것도 표시되지 않은 썸네일이 표시될 수 있습니다</string>
<string name="revanced_alt_thumbnail_stills_fast_summary_off">고화질 스틸 컷 썸네일을 표시합니다</string>
@@ -1122,7 +1125,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
<string name="revanced_spoof_device_dimensions_title">기기 크기 정보 변경하기</string>
<string name="revanced_spoof_device_dimensions_summary_on">기기 크기 정보를 변경합니다\n\n이 설정을 활성화하면 더 높은 화질 동영상 값을 잠금 해제할 수 있지만, 동영상 재생이 끊기거나 배터리 수명이 단축될 수 있으며 알려지지 않은 문제점도 발생할 수 있습니다</string>
<string name="revanced_spoof_device_dimensions_summary_on">기기 크기 정보를 변경합니다\n\n이 설정을 활성화하면 더 높은 화질 동영상 값을 잠금 해제할 수 있지만, 동영상 재생이 끊기거나 배터리 수명이 단축될 수 있으며, 알려지지 않은 문제점도 발생할 수 있습니다</string>
<string name="revanced_spoof_device_dimensions_summary_off">기기 크기 정보를 변경하지 않습니다\n\n이 설정을 활성화하면 더 높은 화질 동영상 값을 잠금 해제할 수 있습니다</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">이 설정을 활성화하면 동영상 재생이 끊기거나 배터리 수명이 단축되고 알려지지 않은 문제점이 발생할 수 있습니다</string>
</patch>
@@ -1203,11 +1206,67 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_user_dialog_message">이 설정을 비활성화하면 동영상 재생 문제가 발생할 수 있습니다</string>
<string name="revanced_spoof_video_streams_client_title">기본 클라이언트</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">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">이 기능을 활성화하면 배터리 수명이 향상되고 재생 끊김 현상이 해결될 수 있습니다\n\nAVC (H.264)의 최대 화질 값은 1080p이며, OPUS 오디오 코덱을 사용할 수 없고, 동영상 재생 시 VP9 또는 AV1보다 더 많은 모바일 데이터가 사용되오니 주의하세요</string>
<string name="revanced_spoof_video_streams_about_ios_title">\'iOS로 변경\'의 알려진 문제점</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• 비공개 Kids 동영상이 재생되지 않을 수 있습니다\n• 일부 실시간 스트림이 처음부터 재생될 수 있습니다\n• 동영상이 1초 일찍 종료될 수 있습니다</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• 비공개 Kids 동영상이 재생되지 않을 수 있습니다\n• 연령 제한 동영상이 재생되지 않을 수 있습니다\n• 일부 라이브 스트림이 처음부터 재생될 수 있습니다\n• 동영상이 1초 일찍 종료될 수 있습니다</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">\'Android VR로 변경\'의 알려진 문제점</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Kids 동영상이 재생되지 않을 수 있습니다\n• 오디오 트랙 메뉴가 표시되지 않습니다\n• 안정적인 볼륨 메뉴가 비활성화된 채로 잠겨있습니다</string>
<string name="revanced_spoof_video_streams_language_">스트리밍 데이터를 변경합니다</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Kids 동영상이 재생되지 않을 수 있습니다\n• 연령 제한 동영상이 재생되지 않을 수 있습니다\n• 일부 라이브 스트림이 처음부터 재생될 수 있습니다\n• 동영상이 1초 일찍 종료될 수 있습니다</string>
<string name="revanced_spoof_video_streams_language_title">기본 오디오 트랙 언어</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">앱 언어</string>
<string name="revanced_spoof_video_streams_language_AR">아랍어</string>
<string name="revanced_spoof_video_streams_language_AZ">아제르바니잔어</string>
<string name="revanced_spoof_video_streams_language_BG">불가리아어</string>
<string name="revanced_spoof_video_streams_language_BN">뱅골어</string>
<string name="revanced_spoof_video_streams_language_CA">카타로니아어</string>
<string name="revanced_spoof_video_streams_language_CS">체코어</string>
<string name="revanced_spoof_video_streams_language_DA">덴마크어</string>
<string name="revanced_spoof_video_streams_language_DE">독일어</string>
<string name="revanced_spoof_video_streams_language_EL">그리스어</string>
<string name="revanced_spoof_video_streams_language_EN">영어</string>
<string name="revanced_spoof_video_streams_language_ES">스페인어</string>
<string name="revanced_spoof_video_streams_language_ET">에스토니아어</string>
<string name="revanced_spoof_video_streams_language_FA">페르시아어</string>
<string name="revanced_spoof_video_streams_language_FI">핀란드어</string>
<string name="revanced_spoof_video_streams_language_FR">프랑스어</string>
<string name="revanced_spoof_video_streams_language_GU">구자라트어</string>
<string name="revanced_spoof_video_streams_language_HI">힌디어</string>
<string name="revanced_spoof_video_streams_language_HR">크로아티아어</string>
<string name="revanced_spoof_video_streams_language_HU">헝가리어</string>
<string name="revanced_spoof_video_streams_language_ID">인도네시아어</string>
<string name="revanced_spoof_video_streams_language_IT">이틸리아어</string>
<string name="revanced_spoof_video_streams_language_JA">일본어</string>
<string name="revanced_spoof_video_streams_language_KK">키자흐스탄어</string>
<string name="revanced_spoof_video_streams_language_KO">한국어</string>
<string name="revanced_spoof_video_streams_language_LT">리투아니아어</string>
<string name="revanced_spoof_video_streams_language_LV">라트비아어</string>
<string name="revanced_spoof_video_streams_language_MK">마케도니아어</string>
<string name="revanced_spoof_video_streams_language_MN">몽골어</string>
<string name="revanced_spoof_video_streams_language_MR">마라티어</string>
<string name="revanced_spoof_video_streams_language_MS">말레이어</string>
<string name="revanced_spoof_video_streams_language_MY">버마어</string>
<string name="revanced_spoof_video_streams_language_NL">네덜란드어</string>
<string name="revanced_spoof_video_streams_language_OR">오리야어</string>
<string name="revanced_spoof_video_streams_language_PA">펀잡어</string>
<string name="revanced_spoof_video_streams_language_PL">폴란드어</string>
<string name="revanced_spoof_video_streams_language_PT_BR">포르투갈어 (브라질)</string>
<string name="revanced_spoof_video_streams_language_PT_PT">포르투갈어 (포르트갈)</string>
<string name="revanced_spoof_video_streams_language_RO">루마니아어</string>
<string name="revanced_spoof_video_streams_language_RU">러시아어</string>
<string name="revanced_spoof_video_streams_language_SK">슬로바키아어</string>
<string name="revanced_spoof_video_streams_language_SL">슬로베니아어</string>
<string name="revanced_spoof_video_streams_language_SR">세르비아어</string>
<string name="revanced_spoof_video_streams_language_SV">스웨덴어</string>
<string name="revanced_spoof_video_streams_language_SW">스와힐리어</string>
<string name="revanced_spoof_video_streams_language_TA">타밀어</string>
<string name="revanced_spoof_video_streams_language_TE">텔루구어</string>
<string name="revanced_spoof_video_streams_language_TH">태국어</string>
<string name="revanced_spoof_video_streams_language_TR">터키어</string>
<string name="revanced_spoof_video_streams_language_UK">우크라이나어</string>
<string name="revanced_spoof_video_streams_language_UR">우르두어</string>
<string name="revanced_spoof_video_streams_language_VI">베트남어</string>
<string name="revanced_spoof_video_streams_language_ZH">중국어</string>
</patch>
</app>
<app id="twitch">

View File

@@ -185,6 +185,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="layout.miniplayer.miniplayerPatch">
<string name="revanced_miniplayer_type_entry_0">Išjungta</string>
<string name="revanced_miniplayer_type_entry_1">Numatytasis</string>
</patch>
<patch id="layout.theme.themePatch">
</patch>

View File

@@ -182,6 +182,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="layout.miniplayer.miniplayerPatch">
<string name="revanced_miniplayer_type_entry_0">Atspējots</string>
<string name="revanced_miniplayer_type_entry_1">Noklusējums</string>
</patch>
<patch id="layout.theme.themePatch">
</patch>

View File

@@ -990,7 +990,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Endre stil på appen til den minimerte spilleren</string>
<string name="revanced_miniplayer_type_title">Type Minispiller</string>
<string name="revanced_miniplayer_type_entry_0">Deaktivert</string>
<string name="revanced_miniplayer_type_entry_1">Opprinnelig</string>
<string name="revanced_miniplayer_type_entry_2">Minimalt</string>
<string name="revanced_miniplayer_type_entry_3">Nettbrett</string>
<string name="revanced_miniplayer_type_entry_4">Moderne 1</string>
@@ -1179,11 +1178,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Videokodek bestemmes automatisk</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Aktivering av dette kan forbedre batterilevetiden og korrigere avspilling med avvik.\n\nAVC har en maksimal oppløsning på 1080p, Opus lydkodek er ikke tilgjengelig. og videoavspilling vil bruke flere Internett-data enn VP9 eller AV1.</string>
<string name="revanced_spoof_video_streams_about_ios_title">iOS med bivirkninger</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Private kids-videoer spiller kanskje ikke\n• Livestreams start fra begynnelsen\n• Videoer kan ende med 1 andre tidlig</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Private kids-videoer spiller kanskje ikke\n• Alder begrensede videoer spiller kanskje ikke\n• direktestrømming starter på begynnelsen\n• Videoer slutter 1 sekund tidlig</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Android VR opplever bivirkninger</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Barn kan ikke spille\n• Lydspormeny mangler\n• Stabilt volum er ikke tilgjengelig</string>
<string name="revanced_spoof_video_streams_language_">Videostrømmer er skjevet</string>
<string name="revanced_spoof_video_streams_language_title">Foretrukket lydstrømsspråk</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Barn som ikke spiller\n• Alder begrensede videoer kan kanskje ikke spille\n• direktestrømming starter på begynnelsen\n• Videoer slutten 1 sekund tidlig</string>
<string name="revanced_spoof_video_streams_language_title">Standard lydstrømmespråk</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">App språk</string>
<string name="revanced_spoof_video_streams_language_AR">Arabisk</string>
<string name="revanced_spoof_video_streams_language_AZ">Aserbajdsjansk</string>

View File

@@ -1002,7 +1002,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">De stijl van de in de app geminimaliseerde speler wijzigen</string>
<string name="revanced_miniplayer_type_title">Miniplayer type</string>
<string name="revanced_miniplayer_type_entry_0">Uitgeschakeld</string>
<string name="revanced_miniplayer_type_entry_1">Origineel</string>
<string name="revanced_miniplayer_type_entry_1">Standaard</string>
<string name="revanced_miniplayer_type_entry_2">Minimaal</string>
<string name="revanced_miniplayer_type_entry_3">Telefoon</string>
<string name="revanced_miniplayer_type_entry_4">Moderne 1</string>
@@ -1194,11 +1194,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Videocodec wordt automatisch bepaald</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Het inschakelen hiervan kan de batterijduur verbeteren en het terugspringen corrigeren.\n\nAVC heeft een maximale resolutie van 1080p, Opus audiocodec is niet beschikbaar. en afspelen van video\'s zal meer internetgegevens gebruiken dan VP9 of AV1.</string>
<string name="revanced_spoof_video_streams_about_ios_title">iOS vervalste bijwerkingen</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Privé-kinderen video\'s mogen niet afspelen\n• Livestreams beginnen vanaf het begin\n• Video\'s kunnen 1 seconde vroeg eindigen</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Privé-kinderen video\'s kunnen mogelijk niet afspelen\n• Leeftijd beperkte video\'s kunnen mogelijk niet afspelen\n• Livestreams starten vanaf het begin\n• Video\'s eindigen 1 seconde eerder</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Android VR vervalste bijeffecten</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Kids video\'s mogen niet afspelen\n• Audio track menu ontbreekt\n• Stabiel volume is niet beschikbaar</string>
<string name="revanced_spoof_video_streams_language_">Videostreams zijn vervalst</string>
<string name="revanced_spoof_video_streams_language_title">Voorkeurstaal audio stream</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Kids video\'s mogen niet afspelen\n• Leeftijd beperkte video\'s mogen niet afspelen\n• Livestreams beginnen vanaf het begin\n• Video\'s eindigen 1 seconde eerder</string>
<string name="revanced_spoof_video_streams_language_title">Standaard taal audio stream</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">App taal</string>
<string name="revanced_spoof_video_streams_language_AR">Arabisch</string>
<string name="revanced_spoof_video_streams_language_AZ">Azerbeidzjaans</string>

View File

@@ -711,8 +711,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_player_popup_panels_summary_off">Wyskakujące panele odtwarzacza są widoczne</string>
</patch>
<patch id="layout.player.fullscreen.openVideosFullscreen">
<string name="revanced_open_videos_fullscreen_portrait_title">Otwórz filmy w trybie pełnoekranowym</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_on">Filmy otwarte w trybie pełnoekranowym</string>
<string name="revanced_open_videos_fullscreen_portrait_title">Filmy w trybie pełnoekranowym</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_on">Filmy otwierają się w trybie pełnoekranowym</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_off">Filmy nie otwierają się w trybie pełnoekranowym</string>
</patch>
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
@@ -1018,7 +1018,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Zmień styl zminimalizowanego odtwarzacza aplikacji</string>
<string name="revanced_miniplayer_type_title">Typ miniodtwarzacza</string>
<string name="revanced_miniplayer_type_entry_0">Wyłączony</string>
<string name="revanced_miniplayer_type_entry_1">Oryginalny</string>
<string name="revanced_miniplayer_type_entry_1">Domyślny</string>
<string name="revanced_miniplayer_type_entry_2">Minimalny</string>
<string name="revanced_miniplayer_type_entry_3">Tabletowy</string>
<string name="revanced_miniplayer_type_entry_4">Nowoczesny 1</string>
@@ -1206,68 +1206,67 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_user_dialog_message">Wyłączenie tej opcji może spowodować problemy z odtwarzaniem filmów.</string>
<string name="revanced_spoof_video_streams_client_title">Domyślny klient</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Wymuś AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Kodek wideo jest wymuszone do AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Kodek wideo jest ustawiany automatycznie</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Włączenie tego może poprawić żywotność baterii i naprawić stłuczenie odtwarzania.\n\nAVC ma maksymalną rozdzielczość 1080p, kodek audio Opus jest niedostępny, a odtwarzanie wideo wykorzysta więcej danych internetowych niż VP9 lub AV1.</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Kodek filmu jest wymuszony do AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Kodek filmu jest ustawiany automatycznie</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Włączenie tej opcji może poprawić żywotność baterii i wyeliminować zacinanie się odtwarzania.\n\nAVC ma maksymalną rozdzielczość 1080p, kodek Opus nie jest dostępny, a odtwarzanie wideo zużywa więcej danych internetowych niż VP9 czy AV1.</string>
<string name="revanced_spoof_video_streams_about_ios_title">Efekty uboczne spoofingu iOS</string>
<string name="revanced_spoof_video_streams_about_ios_summary">Prywatne filmy dla dzieci mogą się nie odtwarzać\n• Transmisje na żywo rozpoczynają się od początku\n• Filmy mogą zakończ się o sekundę wcześniej</string>
<string name="revanced_spoof_video_streams_about_ios_summary">Filmy prywatne dzieci mogą nie odtwarzać\n• Filmy ograniczone wiekiem mogą nie odtwarzać\n• Livestreams zaczynają się od początku\n• Filmy kończą się 1 sekundą na początku</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Efekty uboczne spoofingu Android VR</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Filmy dla dzieci mogą się nie odtwarzać\n• Brakuje menu od ścieżki dźwiękowej\n• Stabilna głośność jest niedostępna</string>
<string name="revanced_spoof_video_streams_language_">Oszukiwanie strumienia jest włączone</string>
<string name="revanced_spoof_video_streams_language_title">Preferowany język strumienia audio</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Filmy dziecięce mogą nie odtwarzać\n• Filmy ograniczone wiekiem mogą nie odtwarzać\n• Livestreams zaczynają się od początku\n• Filmy kończą się 1 sekundą na początku</string>
<string name="revanced_spoof_video_streams_language_title">Domyślny język strumienia dźwięku</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">Język aplikacji</string>
<string name="revanced_spoof_video_streams_language_AR">arabski</string>
<string name="revanced_spoof_video_streams_language_AZ">Azerbejdżański</string>
<string name="revanced_spoof_video_streams_language_AZ">azerbejdżański</string>
<string name="revanced_spoof_video_streams_language_BG">bułgarski</string>
<string name="revanced_spoof_video_streams_language_BN">Bengali</string>
<string name="revanced_spoof_video_streams_language_BN">bengalski</string>
<string name="revanced_spoof_video_streams_language_CA">kataloński</string>
<string name="revanced_spoof_video_streams_language_CS">czeski</string>
<string name="revanced_spoof_video_streams_language_DA">duński</string>
<string name="revanced_spoof_video_streams_language_DE">niemiecki</string>
<string name="revanced_spoof_video_streams_language_EL">grecki</string>
<string name="revanced_spoof_video_streams_language_EN">Angielski</string>
<string name="revanced_spoof_video_streams_language_EN">angielski</string>
<string name="revanced_spoof_video_streams_language_ES">hiszpański</string>
<string name="revanced_spoof_video_streams_language_ET">estoński</string>
<string name="revanced_spoof_video_streams_language_FA">perski</string>
<string name="revanced_spoof_video_streams_language_FI">fiński</string>
<string name="revanced_spoof_video_streams_language_FR">Francuski</string>
<string name="revanced_spoof_video_streams_language_GU">Gujarati</string>
<string name="revanced_spoof_video_streams_language_HI">Hindi</string>
<string name="revanced_spoof_video_streams_language_FR">francuski</string>
<string name="revanced_spoof_video_streams_language_GU">gudżaracki</string>
<string name="revanced_spoof_video_streams_language_HI">hinduski</string>
<string name="revanced_spoof_video_streams_language_HR">chorwacki</string>
<string name="revanced_spoof_video_streams_language_HU">węgierski</string>
<string name="revanced_spoof_video_streams_language_ID">indonezyjski</string>
<string name="revanced_spoof_video_streams_language_IT">włoski</string>
<string name="revanced_spoof_video_streams_language_JA">japoński</string>
<string name="revanced_spoof_video_streams_language_KK">Kazakh</string>
<string name="revanced_spoof_video_streams_language_KK">kazachski</string>
<string name="revanced_spoof_video_streams_language_KO">koreański</string>
<string name="revanced_spoof_video_streams_language_LT">litewski</string>
<string name="revanced_spoof_video_streams_language_LV">łotewski</string>
<string name="revanced_spoof_video_streams_language_MK">macedoński</string>
<string name="revanced_spoof_video_streams_language_MN">mongolski</string>
<string name="revanced_spoof_video_streams_language_MR">Marathi</string>
<string name="revanced_spoof_video_streams_language_MS">Malajski</string>
<string name="revanced_spoof_video_streams_language_MY">Burmese</string>
<string name="revanced_spoof_video_streams_language_NL">Holenderski</string>
<string name="revanced_spoof_video_streams_language_OR">Odia</string>
<string name="revanced_spoof_video_streams_language_PA">Punjabi</string>
<string name="revanced_spoof_video_streams_language_MR">maratyjski</string>
<string name="revanced_spoof_video_streams_language_MS">malajski</string>
<string name="revanced_spoof_video_streams_language_MY">birmański</string>
<string name="revanced_spoof_video_streams_language_NL">holenderski</string>
<string name="revanced_spoof_video_streams_language_OR">Orija</string>
<string name="revanced_spoof_video_streams_language_PA">pendżabski</string>
<string name="revanced_spoof_video_streams_language_PL">polski</string>
<string name="revanced_spoof_video_streams_language_PT_BR">Portugalski (Brazylia)</string>
<string name="revanced_spoof_video_streams_language_PT_PT">Portugalski (Portugalia)</string>
<string name="revanced_spoof_video_streams_language_PT_BR">portugalski (Brazylia)</string>
<string name="revanced_spoof_video_streams_language_PT_PT">portugalski (Portugalia)</string>
<string name="revanced_spoof_video_streams_language_RO">rumuński</string>
<string name="revanced_spoof_video_streams_language_RU">rosyjski</string>
<string name="revanced_spoof_video_streams_language_SK">Słowacki</string>
<string name="revanced_spoof_video_streams_language_SL">Slovene</string>
<string name="revanced_spoof_video_streams_language_SK">słowacki</string>
<string name="revanced_spoof_video_streams_language_SL">słoweński</string>
<string name="revanced_spoof_video_streams_language_SR">serbski</string>
<string name="revanced_spoof_video_streams_language_SV">Szwedzki</string>
<string name="revanced_spoof_video_streams_language_SW">Sahili</string>
<string name="revanced_spoof_video_streams_language_TA">Tamil</string>
<string name="revanced_spoof_video_streams_language_SV">szwedzki</string>
<string name="revanced_spoof_video_streams_language_SW">suahilijski</string>
<string name="revanced_spoof_video_streams_language_TA">tamilski</string>
<string name="revanced_spoof_video_streams_language_TE">Telugu</string>
<string name="revanced_spoof_video_streams_language_TH">tajski</string>
<string name="revanced_spoof_video_streams_language_TR">turecki</string>
<string name="revanced_spoof_video_streams_language_UK">ukraiński</string>
<string name="revanced_spoof_video_streams_language_UR">Urdu</string>
<string name="revanced_spoof_video_streams_language_VI">Vietnamese</string>
<string name="revanced_spoof_video_streams_language_ZH">Chiński</string>
<string name="revanced_spoof_video_streams_language_VI">wietnamski</string>
<string name="revanced_spoof_video_streams_language_ZH">chiński</string>
</patch>
</app>
<app id="twitch">

View File

@@ -1015,7 +1015,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Alterar o estilo do player minimizado no aplicativo</string>
<string name="revanced_miniplayer_type_title">Tipo de miniplayer</string>
<string name="revanced_miniplayer_type_entry_0">Desativado</string>
<string name="revanced_miniplayer_type_entry_1">Original</string>
<string name="revanced_miniplayer_type_entry_1">Padrão</string>
<string name="revanced_miniplayer_type_entry_2">Mínimo</string>
<string name="revanced_miniplayer_type_entry_3">Tablet</string>
<string name="revanced_miniplayer_type_entry_4">Moderno 1</string>
@@ -1204,10 +1204,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_client_title">Cliente padrão</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Forçar AVC (H.264)</string>
<string name="revanced_spoof_video_streams_about_ios_title">Efeitos colaterais do spoofing de iOS</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Vídeos privados para crianças não podem ser reproduzidos\n• As transmissões ao vivo começam do início\n• Os vídeos podem terminar 1 segundo antes</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Efeitos colaterais do spoofing de Android VR</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Os vídeos infantis podem não ser reproduzidos\n• O menu da faixa de áudio está ausente\n• O volume estável não está disponível</string>
<string name="revanced_spoof_video_streams_language_">Fluxo de vídeo spoofado</string>
<string name="revanced_spoof_video_streams_language_EN">Inglês</string>
</patch>
</app>

View File

@@ -1017,7 +1017,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Alterar o estilo do player minimizado no aplicativo</string>
<string name="revanced_miniplayer_type_title">Tipo de minijogador</string>
<string name="revanced_miniplayer_type_entry_0">Desativado</string>
<string name="revanced_miniplayer_type_entry_1">Original</string>
<string name="revanced_miniplayer_type_entry_1">Padrão</string>
<string name="revanced_miniplayer_type_entry_2">Mínimo</string>
<string name="revanced_miniplayer_type_entry_3">Tábua</string>
<string name="revanced_miniplayer_type_entry_4">Moderno 1</string>
@@ -1209,11 +1209,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Codec de vídeo é determinado automaticamente</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Habilitar isso pode melhorar a duração da bateria e corrigir travamentos na reprodução.\n\nAVC tem uma resolução máxima de 1080p, codec de áudio de Opus não está disponível, e a reprodução de vídeo usará mais dados na internet do que VP9 ou AV1.</string>
<string name="revanced_spoof_video_streams_about_ios_title">Efeitos colaterais de iOS</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Crianças privadas podem não reproduzir\n• Livestreams iniciados desde o início\n• Vídeos podem terminar 1 segundo cedo</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Crianças privadas podem não reproduzir\n• Vídeos com restrições de idade podem não reproduzir\n• Livestreams começando desde o início\n• Vídeos terminam 1 segundo mais cedo</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Android VR efeito de spoofing side</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• As crianças podem não reproduzir\n• O menu da faixa de áudio está faltando\n• Volume estável não está disponível</string>
<string name="revanced_spoof_video_streams_language_">Fluxos de vídeo são falsificados</string>
<string name="revanced_spoof_video_streams_language_title">Idioma preferencial do áudio stream</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• As crianças podem não reproduzir\n• A idade de vídeos pode não reproduzir\n• Livestreams iniciando desde o início\n• Vídeos terminam 1 segundo mais cedo</string>
<string name="revanced_spoof_video_streams_language_title">Idioma padrão do fluxo de áudio</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">Idioma do aplicativo</string>
<string name="revanced_spoof_video_streams_language_AR">Arábico</string>
<string name="revanced_spoof_video_streams_language_AZ">azerbaijano</string>

View File

@@ -991,7 +991,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Schimbă stilul aplicaţiei minimizat jucătorul</string>
<string name="revanced_miniplayer_type_title">Tip minijucător</string>
<string name="revanced_miniplayer_type_entry_0">Dezactivat</string>
<string name="revanced_miniplayer_type_entry_1">Originală</string>
<string name="revanced_miniplayer_type_entry_1">Implicit</string>
<string name="revanced_miniplayer_type_entry_2">Minimă</string>
<string name="revanced_miniplayer_type_entry_3">Tabletă</string>
<string name="revanced_miniplayer_type_entry_4">Modern 1</string>
@@ -1170,10 +1170,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Codecul video este forţat să facă AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Codecul video este determinat automat</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Activarea acestei funcții ar putea îmbunătăți durata de viață a bateriei și repara blocajul de redare.\n\nAVC are o rezoluție maximă de 1080p, codec audio Opus nu este disponibil, iar redarea video va utiliza mai multe date internet decât VP9 sau AV1.</string>
<string name="revanced_spoof_video_streams_about_ios_summary">Este posibil ca videoclipurile private pentru copii să nu se redea\n• Livestream-urile încep de la începutul\n• Videoclipurile se pot termina cu o secundă mai devreme</string>
<string name="revanced_spoof_video_streams_about_ios_summary">Videoclipurile private pentru copii ar putea să nu redea\n• Vârsta limitată a videoclipurilor ar putea să nu redea\n• Livestreams începe de la începutul\n• Videoclipuri sfârșit cu 1 secundă mai devreme</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Reacţii adverse de spoofing Android VR</string>
<string name="revanced_spoof_video_streams_language_">Fluxurile video sunt falsificate</string>
<string name="revanced_spoof_video_streams_language_title">Limba de transmisiune audio preferată</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Este posibil ca videoclipurile cu copii să nu redea\n• Vârsta limitată a videoclipurilor ar putea să nu redea\n• Livestreams începe de la începutul\n• Videoclipuri sfârșit de 1 secundă mai devreme</string>
<string name="revanced_spoof_video_streams_language_title">Limbă implicită flux audio</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">Limba aplicației</string>
<string name="revanced_spoof_video_streams_language_AR">Arabă</string>
<string name="revanced_spoof_video_streams_language_AZ">Azerbaidjan</string>

View File

@@ -82,7 +82,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_settings_screen_03_feed_title">Лента</string>
<string name="revanced_settings_screen_04_player_title">Плеер</string>
<string name="revanced_settings_screen_05_general_title">Основной интерфейс</string>
<string name="revanced_settings_screen_07_seekbar_title">Прогресс воспроизведения</string>
<string name="revanced_settings_screen_07_seekbar_title">Полоса прогресса</string>
<string name="revanced_settings_screen_08_swipe_controls_title">Управление жестами</string>
<string name="revanced_settings_screen_11_misc_title">Прочие</string>
<string name="revanced_settings_screen_12_video_title">Видео</string>
@@ -275,7 +275,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_doodles_title">YouTube Doodles</string>
<string name="revanced_hide_doodles_summary_on">Doodles на панели поиска скрыты</string>
<string name="revanced_hide_doodles_summary_off">Doodles на панели поиска отображены</string>
<string name="revanced_hide_doodles_user_dialog_message">YouTube Doodles появляются несколько дней в году.\n\nЕсли в Вашем регионе в настоящее время показывается Doodle, и этот параметр скрытия включен, то панель фильтров под панелью поиска будет также скрыта.</string>
<string name="revanced_hide_doodles_user_dialog_message">YouTube Doodles появляются несколько дней в году.\n\nЕсли в Вашем регионе в настоящее время показывается Doodle, и данная опция скрытия активна, то панель фильтров под панелью поиска будет также скрыта.</string>
<string name="revanced_custom_filter_screen_title">Пользовательский фильтр</string>
<string name="revanced_custom_filter_screen_summary">Скрыть компоненты с помощью пользовательских фильтров</string>
<string name="revanced_custom_filter_title">Пользовательский фильтр</string>
@@ -397,8 +397,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="interaction.seekbar.enableSeekbarTappingPatch">
<string name="revanced_seekbar_tapping_title">Перемотка нажатием</string>
<string name="revanced_seekbar_tapping_summary_on">Перемотка нажатием на прогресс воспроизведения включена</string>
<string name="revanced_seekbar_tapping_summary_off">Перемотка нажатием на прогресс воспроизведения отключена</string>
<string name="revanced_seekbar_tapping_summary_on">Перемотка нажатием на полосу прогресса включена</string>
<string name="revanced_seekbar_tapping_summary_off">Перемотка нажатием на полосу прогресса отключена</string>
</patch>
<patch id="interaction.swipecontrols.swipeControlsResourcePatch">
<string name="revanced_swipe_brightness_title">Регулировка яркости жестом</string>
@@ -588,12 +588,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_disable_rolling_number_animations_summary_off">Анимированные счетчики просмотров, лайков и дизлайков включены</string>
</patch>
<patch id="layout.hide.seekbar.hideSeekbarPatch">
<string name="revanced_hide_seekbar_title">Прогресс воспроизведения</string>
<string name="revanced_hide_seekbar_summary_on">Прогресс воспроизведения в плеере скрыт</string>
<string name="revanced_hide_seekbar_summary_off">Прогресс воспроизведения в плеере отображен</string>
<string name="revanced_hide_seekbar_thumbnail_title">Миниатюры</string>
<string name="revanced_hide_seekbar_thumbnail_summary_on">Миниатюры прогресса воспроизведения скрыты</string>
<string name="revanced_hide_seekbar_thumbnail_summary_off">Миниатюры прогресса воспроизведения отображены</string>
<string name="revanced_hide_seekbar_title">Полоса прогресса в плеере</string>
<string name="revanced_hide_seekbar_summary_on">Полоса прогресса в плеере скрыта</string>
<string name="revanced_hide_seekbar_summary_off">Полоса прогресса в плеере отображена</string>
<string name="revanced_hide_seekbar_thumbnail_title">Полоса прогресса в миниатюрах</string>
<string name="revanced_hide_seekbar_thumbnail_summary_on">Полоса прогресса в миниатюрах скрыта</string>
<string name="revanced_hide_seekbar_thumbnail_summary_off">Полоса прогресса в миниатюрах отображена</string>
</patch>
<patch id="layout.hide.shorts.hideShortsComponentsResourcePatch">
<string name="revanced_shorts_player_screen_title">Плеер Shorts</string>
@@ -623,7 +623,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_shop_button_title">Кнопка \"Магазин\"</string>
<string name="revanced_hide_shorts_shop_button_summary_on">Кнопка \"Магазин\" в Shorts скрыта</string>
<string name="revanced_hide_shorts_shop_button_summary_off">Кнопка \"Магазин\" в Shorts отображена</string>
<string name="revanced_hide_shorts_super_thanks_button_title">Скрыть кнопку \"Супер спасибо\"</string>
<string name="revanced_hide_shorts_super_thanks_button_title">Кнопка \"Супер спасибо\"</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Кнопка \"Супер спасибо\" скрыта</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Кнопка \"Супер спасибо\" показывается</string>
<string name="revanced_hide_shorts_tagged_products_title">Товары с тегом</string>
@@ -711,9 +711,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_player_popup_panels_summary_off">Автоматически всплывающие панели (плейлист или живой чат) в плеере отображены</string>
</patch>
<patch id="layout.player.fullscreen.openVideosFullscreen">
<string name="revanced_open_videos_fullscreen_portrait_title">Открыть видео в полноэкранном портрете</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_on">Видео открыть полноэкранный режим</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_off">Видео не открывают полноэкранный режим</string>
<string name="revanced_open_videos_fullscreen_portrait_title">Видео в полноэкранном портрете</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_on">Видео открываются в полноэкранном портретном режиме</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_off">Видео не открываются в полноэкранном портретном режиме</string>
</patch>
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
<string name="revanced_player_overlay_opacity_title">Непрозрачность оверлея плеера</string>
@@ -771,14 +771,14 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="layout.seekbar.seekbarThumbnailsPatch">
<string name="revanced_seekbar_thumbnails_high_quality_title">Миниатюры высокого качества</string>
<string name="revanced_seekbar_thumbnails_high_quality_summary_on">Миниатюры прогресса воспроизведения высокого качества</string>
<string name="revanced_seekbar_thumbnails_high_quality_summary_off">Миниатюры прогресса воспроизведения среднего качества</string>
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_on">Полноэкранные миниатюры прогресса воспроизведения высокого качества</string>
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_off">Полноэкранные миниатюры прогресса воспроизведения среднего качества</string>
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">Данная опция также восстановит миниатюры в прямых трансляциях, у которых они отсутствуют в прогрессе воспроизведения.\n\nМиниатюры прогресса воспроизведения будут использовать такое же качество, как и текущее видео.\n\nДанная опция работает лучше с качеством видео 720p или ниже, и при использовании очень быстрого подключения к Интернету.</string>
<string name="revanced_restore_old_seekbar_thumbnails_title">Восстановление старых миниатюр</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">Старые миниатюры восстановлены - миниатюры прогресса воспроизведения отображаются над ним</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">Миниатюры прогресса воспроизведения отображаются в полноэкранном режиме</string>
<string name="revanced_seekbar_thumbnails_high_quality_summary_on">Миниатюры полосы прогресса высокого качества</string>
<string name="revanced_seekbar_thumbnails_high_quality_summary_off">Миниатюры полосы прогресса среднего качества</string>
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_on">Полноэкранные миниатюры полосы прогресса высокого качества</string>
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_off">Полноэкранные миниатюры полосы прогресса среднего качества</string>
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">Данная опция также восстановит миниатюры в прямых трансляциях, которые не имеют миниатюр полосы прогресса.\n\nМиниатюры полосы прогресса будут использовать такое же качество, как и текущее видео.\n\nДанная опция работает лучше с качеством видео 720p или ниже, и при использовании очень быстрого подключения к Интернету.</string>
<string name="revanced_restore_old_seekbar_thumbnails_title">Старые миниатюры</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">Миниатюры полосы прогресса отображаются над полосой прогресса</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">Миниатюры полосы прогресса отображаются в полноэкранном режиме</string>
</patch>
<patch id="layout.sponsorblock.sponsorBlockResourcePatch">
<string name="revanced_sb_enable_sb">Включить SponsorBlock</string>
@@ -893,7 +893,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_skip_automatically">Пропускать автоматически</string>
<string name="revanced_sb_skip_automatically_once">Пропускать автоматически один раз</string>
<string name="revanced_sb_skip_showbutton">Кнопка пропуска</string>
<string name="revanced_sb_skip_seekbaronly">Отображать в прогрессе воспроизведения</string>
<string name="revanced_sb_skip_seekbaronly">Отображать в полосе прогресса</string>
<string name="revanced_sb_skip_ignore">Отключить</string>
<string name="revanced_sb_submit_failed_invalid">Не удалось отправить сегмент: %s</string>
<string name="revanced_sb_submit_failed_timeout">SponsorBlock временно не работает</string>
@@ -1018,7 +1018,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Стиль свернутого мини-плеера </string>
<string name="revanced_miniplayer_type_title">Тип мини-плеера</string>
<string name="revanced_miniplayer_type_entry_0">Отключено</string>
<string name="revanced_miniplayer_type_entry_1">Оригинал</string>
<string name="revanced_miniplayer_type_entry_1">По умолчанию</string>
<string name="revanced_miniplayer_type_entry_2">Минимальный</string>
<string name="revanced_miniplayer_type_entry_3">Планшет</string>
<string name="revanced_miniplayer_type_entry_4">Современный 1</string>
@@ -1042,9 +1042,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_hide_expand_close_legacy_title">Кнопки \"Развернуть\" и \"Закрыть\"</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">Кнопки скрыты\n\nПроведите по мини-плееру для разворачивания или закрытия</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_off">Кнопки разворачивания и закрытия отображены</string>
<string name="revanced_miniplayer_hide_subtext_title">Скрыть подтексты</string>
<string name="revanced_miniplayer_hide_subtext_summary_on">Субтексты скрыты</string>
<string name="revanced_miniplayer_hide_subtext_summary_off">Подтексты показаны</string>
<string name="revanced_miniplayer_hide_subtext_title">Подтексты</string>
<string name="revanced_miniplayer_hide_subtext_summary_on">Подтексты скрыты</string>
<string name="revanced_miniplayer_hide_subtext_summary_off">Подтексты отображены</string>
<string name="revanced_miniplayer_hide_rewind_forward_title">Кнопки перемотки</string>
<string name="revanced_miniplayer_hide_rewind_forward_summary_on">Кнопки перемотки вперед и назад скрыты</string>
<string name="revanced_miniplayer_hide_rewind_forward_summary_off">Кнопки перемотки вперед и назад отображены</string>
@@ -1061,12 +1061,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_gradient_loading_screen_summary_off">Экран загрузки имеет сплошной фон</string>
</patch>
<patch id="layout.theme.themeResourcePatch">
<string name="revanced_seekbar_custom_color_title">Цвет прогресса воспроизведения</string>
<string name="revanced_seekbar_custom_color_summary_on">Пользовательский цвет прогресса воспроизведения отображен</string>
<string name="revanced_seekbar_custom_color_summary_off">Оригинальный цвет прогресса воспроизведения отображен</string>
<string name="revanced_seekbar_custom_color_title">Цвет полосы прогресса</string>
<string name="revanced_seekbar_custom_color_summary_on">Пользовательский цвет полосы прогресса отображен</string>
<string name="revanced_seekbar_custom_color_summary_off">Оригинальный цвет полосы прогресса отображен</string>
<string name="revanced_seekbar_custom_color_value_title">Пользовательский цвет</string>
<string name="revanced_seekbar_custom_color_value_summary">Редактировать цвет прогресса воспроизведения</string>
<string name="revanced_seekbar_custom_color_invalid">Неверное значение цвета прогресса воспроизведения</string>
<string name="revanced_seekbar_custom_color_value_summary">Редактировать цвет полосы прогресса</string>
<string name="revanced_seekbar_custom_color_invalid">Неверное значение цвета полосы прогресса</string>
</patch>
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
<string name="revanced_bypass_image_region_restrictions_title">Обход ограничений региона</string>
@@ -1115,7 +1115,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Внимание</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Ваша история просмотра не сохраняется.&lt;br&gt;&lt;br&gt;Скорее всего, это из-за блокировщика рекламы DNS или сетевого прокси.&lt;br&gt;&lt;br&gt;Чтобы это исправить, добавьте &lt;b&gt;s.youtube.com&lt;/b&gt; в белый список блокировщика или отключите все блокировщики DNS и прокси.</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Ваша история просмотра не сохраняется.&lt;br&gt;&lt;br&gt;Вероятнее всего это вызвано DNS блокировщиком рекламы или сетевым прокси.&lt;br&gt;&lt;br&gt;Чтобы это исправить, добавьте &lt;b&gt;s.youtube.com&lt;/b&gt; в белый список блокировщика рекламы или отключите все блокировщики DNS и прокси.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Не показывать снова</string>
</patch>
<patch id="misc.autorepeat.autoRepeatPatch">
@@ -1206,21 +1206,18 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_user_dialog_message">Отключение этой настройки может вызвать проблемы с воспроизведением видео.</string>
<string name="revanced_spoof_video_streams_client_title">Клиент по умолчанию</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Принудительно 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_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">Включение этого параметра может улучшить время работы батареи и исправить затяжку воспроизведения.\n\nAVC имеет максимальное разрешение 1080p, аудио кодек Opus недоступен, и воспроизведение видео будет использовать больше интернет-данных, чем VP9 или AV1.</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Активация данной опции может улучшить время работы батареи и исправить задержки воспроизведения.\n\nAVC имеет максимальное разрешение 1080p, аудио кодек Opus недоступен, и воспроизведение видео будет использовать больше интернет данных в сравнении с VP9 или AV1.</string>
<string name="revanced_spoof_video_streams_about_ios_title">Побочные эффекты подмены на iOS</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Видео частных детей не могут играть\n• Livestreams начинается с начала\n• Видео может закончиться 1 секунду рано</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Побочные эффекты подмены на Android VR</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Детские видео могут не воспроизводиться\n• Пункт меню \"Звуковая дорожка\" отсутвтует\n• Пункт меню \"Постоянный уровень громкости\" недоступен</string>
<string name="revanced_spoof_video_streams_language_">Видеопотоки подменены</string>
<string name="revanced_spoof_video_streams_language_title">Предпочитаемый язык аудио потока</string>
<string name="revanced_spoof_video_streams_language_title">Язык аудио потока по умолчанию</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">Язык приложения</string>
<string name="revanced_spoof_video_streams_language_AR">Арабский</string>
<string name="revanced_spoof_video_streams_language_AZ">Азербайджан</string>
<string name="revanced_spoof_video_streams_language_AZ">Азербайджанский</string>
<string name="revanced_spoof_video_streams_language_BG">Болгарский</string>
<string name="revanced_spoof_video_streams_language_BN">Бенгальский</string>
<string name="revanced_spoof_video_streams_language_CA">Каталанский</string>
<string name="revanced_spoof_video_streams_language_CA">Каталонский</string>
<string name="revanced_spoof_video_streams_language_CS">Чешский</string>
<string name="revanced_spoof_video_streams_language_DA">Датский</string>
<string name="revanced_spoof_video_streams_language_DE">Немецкий</string>
@@ -1231,42 +1228,42 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_language_FA">Персидский</string>
<string name="revanced_spoof_video_streams_language_FI">Финский</string>
<string name="revanced_spoof_video_streams_language_FR">Французский</string>
<string name="revanced_spoof_video_streams_language_GU">Gujarati</string>
<string name="revanced_spoof_video_streams_language_GU">Гуджарати</string>
<string name="revanced_spoof_video_streams_language_HI">Хинди</string>
<string name="revanced_spoof_video_streams_language_HR">Хорватский</string>
<string name="revanced_spoof_video_streams_language_HU">Венгерский</string>
<string name="revanced_spoof_video_streams_language_ID">Индонезийский</string>
<string name="revanced_spoof_video_streams_language_IT">Итальянский</string>
<string name="revanced_spoof_video_streams_language_JA">Японский</string>
<string name="revanced_spoof_video_streams_language_KK">Kazakh</string>
<string name="revanced_spoof_video_streams_language_KK">Казахский</string>
<string name="revanced_spoof_video_streams_language_KO">Корейский</string>
<string name="revanced_spoof_video_streams_language_LT">Литовский</string>
<string name="revanced_spoof_video_streams_language_LV">Латышский</string>
<string name="revanced_spoof_video_streams_language_MK">Македонский</string>
<string name="revanced_spoof_video_streams_language_MN">Монгольский</string>
<string name="revanced_spoof_video_streams_language_MR">Маратти</string>
<string name="revanced_spoof_video_streams_language_MS">Малай</string>
<string name="revanced_spoof_video_streams_language_MY">Burmese</string>
<string name="revanced_spoof_video_streams_language_MR">Маратхи</string>
<string name="revanced_spoof_video_streams_language_MS">Малайский</string>
<string name="revanced_spoof_video_streams_language_MY">Бирманский</string>
<string name="revanced_spoof_video_streams_language_NL">Голландский</string>
<string name="revanced_spoof_video_streams_language_OR">Odia</string>
<string name="revanced_spoof_video_streams_language_PA">Punjabi</string>
<string name="revanced_spoof_video_streams_language_OR">Одиа</string>
<string name="revanced_spoof_video_streams_language_PA">Панджаби</string>
<string name="revanced_spoof_video_streams_language_PL">Польский</string>
<string name="revanced_spoof_video_streams_language_PT_BR">Португальский (Бразилия)</string>
<string name="revanced_spoof_video_streams_language_PT_PT">Португальский (Португалия)</string>
<string name="revanced_spoof_video_streams_language_RO">Румынский</string>
<string name="revanced_spoof_video_streams_language_RU">Русский</string>
<string name="revanced_spoof_video_streams_language_SK">Словацкий</string>
<string name="revanced_spoof_video_streams_language_SL">Slovene</string>
<string name="revanced_spoof_video_streams_language_SL">Словенский</string>
<string name="revanced_spoof_video_streams_language_SR">Сербский</string>
<string name="revanced_spoof_video_streams_language_SV">Шведский</string>
<string name="revanced_spoof_video_streams_language_SW">Суахили</string>
<string name="revanced_spoof_video_streams_language_TA">Tamil</string>
<string name="revanced_spoof_video_streams_language_TE">Telugu</string>
<string name="revanced_spoof_video_streams_language_TA">Тамильский</string>
<string name="revanced_spoof_video_streams_language_TE">Телугу</string>
<string name="revanced_spoof_video_streams_language_TH">Тайский</string>
<string name="revanced_spoof_video_streams_language_TR">Турецкий</string>
<string name="revanced_spoof_video_streams_language_UK">Украинский</string>
<string name="revanced_spoof_video_streams_language_UR">Урду</string>
<string name="revanced_spoof_video_streams_language_VI">Vietnamese</string>
<string name="revanced_spoof_video_streams_language_VI">Вьетнамский</string>
<string name="revanced_spoof_video_streams_language_ZH">Китайский</string>
</patch>
</app>

View File

@@ -923,7 +923,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Zmeňte štýl minimalizovaného prehrávača v aplikácii</string>
<string name="revanced_miniplayer_type_title">Typ miniprehrávača</string>
<string name="revanced_miniplayer_type_entry_0">Vypnuté</string>
<string name="revanced_miniplayer_type_entry_1">Originál</string>
<string name="revanced_miniplayer_type_entry_1">Predvolené</string>
<string name="revanced_miniplayer_type_entry_4">Moderné 1</string>
<string name="revanced_miniplayer_type_entry_5">Moderné 2</string>
<string name="revanced_miniplayer_type_entry_6">Moderné 3</string>

View File

@@ -40,22 +40,53 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_settings_restart_title">Osvežitev in ponovni zagon</string>
<string name="revanced_settings_restart">Ponovni zagon</string>
<string name="revanced_settings_import">Uvoz</string>
<string name="revanced_pref_import_export_title">Uvoz in izvoz</string>
<string name="revanced_pref_import_export_summary">Uvoz oz. izvoz nastavitev za ReVanced</string>
<!-- Settings about dialog. -->
<string name="revanced_settings_about_links_body">Uporabljate verzijo &lt;i&gt;%s&lt;/i&gt; ReVanced popravkov</string>
<string name="revanced_settings_about_links_dev_header">Opomba</string>
<string name="revanced_settings_about_links_dev_body">Ta verzija je predrazličica, posledično vas lahko doletijo nepričakovane težave</string>
<string name="revanced_settings_about_links_header">Uradne povezave</string>
<!-- NOTE: the about strings above are duplicated in the TikTok about screen code,
and changes made here must also be made there. -->
</patch>
<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. -->
<string name="gms_core_toast_not_installed_message">MicroG GmsCore ni nameščen. Namestite ga.</string>
<string name="gms_core_dialog_title">Ukrepanje je potrebno</string>
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">MicroG GmsCore nima dovoljenj za poganjanje v ozadju.\n\nSledite navodilom \"Don\'t kill my app\" za vaš telefon in jih opravite za vašo MicroG namestitev.\n\nTo je zahtevano za večino aplikacij, da lahko delujejo.</string>
<string name="gms_core_dialog_open_website_text">Odprite spletno stran</string>
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">Optimizacije baterije za MicroG GmsCore morajo biti izklopljene, da se prepreči težave.\n\nKliknite na gumb za nadaljevanje in izklopite optimizacije baterije.</string>
<string name="gms_core_dialog_continue_text">Naprej</string>
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
<string name="revanced_settings_screen_00_about_title">O programu</string>
<string name="revanced_settings_screen_01_ads_title">Oglasi</string>
<string name="revanced_settings_screen_02_alt_thumbnails_title">Alternativne sličice</string>
<string name="revanced_settings_screen_03_feed_title">Pregled</string>
<string name="revanced_settings_screen_04_player_title">Predvajalnik</string>
<string name="revanced_settings_screen_05_general_title">Splošna postavitev</string>
<string name="revanced_settings_screen_07_seekbar_title">Časovna vrstica</string>
<string name="revanced_settings_screen_08_swipe_controls_title">Nastavitve drsanja</string>
<string name="revanced_settings_screen_11_misc_title">Razno</string>
<string name="revanced_settings_screen_12_video_title">Video</string>
</patch>
<patch id="misc.backgroundplayback.backgroundPlaybackPatch">
<string name="revanced_shorts_disable_background_playback_title">Izključite predvajanje Shortsev v ozadju</string>
<string name="revanced_shorts_disable_background_playback_summary_on">Predvajanje Shortsev v ozadju je izključeno</string>
<string name="revanced_shorts_disable_background_playback_summary_off">Predvajanje Shortsev v ozadju je vključeno</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Razhroščevanje</string>
<string name="revanced_debug_screen_summary">Vključite oz. izključite razvijalske možnosti</string>
<string name="revanced_debug_title">Razhroščevalno beleženje</string>
<string name="revanced_debug_summary_on">Razhroščevalno beleženje je vključeno</string>
<string name="revanced_debug_summary_off">Razhroščevalno beleženje je izključeno</string>
<string name="revanced_debug_protobuffer_title">Beleženje protocol bufferjev</string>
<string name="revanced_debug_protobuffer_summary_on">Razhroščevalne beležnice vključujejo protocol bufferje</string>
<string name="revanced_debug_protobuffer_summary_off">Razhroščevalne beležnice ne vključujejo protocol bufferjev</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<!-- 'Join' should be translated using the same localized wording YouTube displays.
@@ -194,6 +225,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="layout.miniplayer.miniplayerPatch">
<string name="revanced_miniplayer_type_entry_0">Onemogočeno</string>
<string name="revanced_miniplayer_type_entry_1">Privzeto</string>
</patch>
<patch id="layout.theme.themePatch">
</patch>

View File

@@ -711,6 +711,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_player_popup_panels_summary_off">Iskačuće table u plejeru su prikazane</string>
</patch>
<patch id="layout.player.fullscreen.openVideosFullscreen">
<string name="revanced_open_videos_fullscreen_portrait_title">Otvori videe preko celog ekrana uspravno</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_on">Videi se otvaraju preko celog ekrana uspravno</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_off">Videi se ne otvaraju preko celog ekrana uspravno</string>
</patch>
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
<string name="revanced_player_overlay_opacity_title">Neprozirnost preklopa plejera</string>
@@ -1015,7 +1018,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Promenite stil minimiziranog plejera u aplikaciji</string>
<string name="revanced_miniplayer_type_title">Tip mini-plejera</string>
<string name="revanced_miniplayer_type_entry_0">Onemogućeno</string>
<string name="revanced_miniplayer_type_entry_1">Originalni</string>
<string name="revanced_miniplayer_type_entry_1">Podrazumevana</string>
<string name="revanced_miniplayer_type_entry_2">Minimalan</string>
<string name="revanced_miniplayer_type_entry_3">Tablet</string>
<string name="revanced_miniplayer_type_entry_4">Moderan 1</string>
@@ -1203,12 +1206,67 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_user_dialog_message">Isključivanje ove opcije će možda izazvati probleme sa reprodukcijom videa.</string>
<string name="revanced_spoof_video_streams_client_title">Podrazumevani klijent</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Prisili AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Video kodek je prisilno podešen na AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Video kodek je određen automatski</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Ako ovo omogućite, možda će se produžiti trajanje baterije i popraviti zastoj pri reprodukciji.\n\nAVC ima maksimalnu rezoluciju od 1080p, audio kodek Opus nije dostupan i reprodukcija videa će koristiti više internet podataka nego VP9 ili AV1.</string>
<string name="revanced_spoof_video_streams_about_ios_title">Neželjeni efekti lažiranja na iOS</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Privatni dečji videi se možda neće puštati\n• Strimovi uživo počinju od početka\n• Videi će se možda završiti 1 sekundu ranije</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Privatni dečji videi se možda neće puštati\n• Starosno ograničeni videi se možda neće puštati\n• Strimovi uživo počinju od početka\n• Videi će se završiti 1 sekundu ranije</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Neželjeni efekti lažiranja na Android VR</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Dečji videi se možda neće puštati\n• Meni „Audio snimak” nedostaje\n• Ujednačena jačina zvuka nije dostupna</string>
<string name="revanced_spoof_video_streams_language_">Video strimovi su lažirani</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Dečji videi se možda neće puštati\n• Starosno ograničeni videi se možda neće puštati\n• Strimovi uživo počinju od početka\n• Videi će se završiti 1 sekundu ranije</string>
<string name="revanced_spoof_video_streams_language_title">Podrazumevani jezik audio strima</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">Jezik aplikacije</string>
<string name="revanced_spoof_video_streams_language_AR">arapski</string>
<string name="revanced_spoof_video_streams_language_AZ">azerbejdžanski</string>
<string name="revanced_spoof_video_streams_language_BG">bugarski</string>
<string name="revanced_spoof_video_streams_language_BN">bengalski</string>
<string name="revanced_spoof_video_streams_language_CA">katalonski</string>
<string name="revanced_spoof_video_streams_language_CS">češki</string>
<string name="revanced_spoof_video_streams_language_DA">danski</string>
<string name="revanced_spoof_video_streams_language_DE">nemački</string>
<string name="revanced_spoof_video_streams_language_EL">grčki</string>
<string name="revanced_spoof_video_streams_language_EN">engleski</string>
<string name="revanced_spoof_video_streams_language_ES">španski</string>
<string name="revanced_spoof_video_streams_language_ET">estonski</string>
<string name="revanced_spoof_video_streams_language_FA">persijski</string>
<string name="revanced_spoof_video_streams_language_FI">finski</string>
<string name="revanced_spoof_video_streams_language_FR">francuski</string>
<string name="revanced_spoof_video_streams_language_GU">gudžarati</string>
<string name="revanced_spoof_video_streams_language_HI">hindi</string>
<string name="revanced_spoof_video_streams_language_HR">hrvatski</string>
<string name="revanced_spoof_video_streams_language_HU">mađarski</string>
<string name="revanced_spoof_video_streams_language_ID">indonežanski</string>
<string name="revanced_spoof_video_streams_language_IT">italijanski</string>
<string name="revanced_spoof_video_streams_language_JA">japanski</string>
<string name="revanced_spoof_video_streams_language_KK">kazaški</string>
<string name="revanced_spoof_video_streams_language_KO">korejski</string>
<string name="revanced_spoof_video_streams_language_LT">litvanski</string>
<string name="revanced_spoof_video_streams_language_LV">letonski</string>
<string name="revanced_spoof_video_streams_language_MK">makedonski</string>
<string name="revanced_spoof_video_streams_language_MN">mongolski</string>
<string name="revanced_spoof_video_streams_language_MR">marati</string>
<string name="revanced_spoof_video_streams_language_MS">malajski</string>
<string name="revanced_spoof_video_streams_language_MY">burmanski</string>
<string name="revanced_spoof_video_streams_language_NL">holandski</string>
<string name="revanced_spoof_video_streams_language_OR">odija</string>
<string name="revanced_spoof_video_streams_language_PA">pandžapski</string>
<string name="revanced_spoof_video_streams_language_PL">poljski</string>
<string name="revanced_spoof_video_streams_language_PT_BR">portugalski (Brazil)</string>
<string name="revanced_spoof_video_streams_language_PT_PT">portugalski (Portugalija)</string>
<string name="revanced_spoof_video_streams_language_RO">rumunski</string>
<string name="revanced_spoof_video_streams_language_RU">ruski</string>
<string name="revanced_spoof_video_streams_language_SK">slovački</string>
<string name="revanced_spoof_video_streams_language_SL">slovenački</string>
<string name="revanced_spoof_video_streams_language_SR">srpski</string>
<string name="revanced_spoof_video_streams_language_SV">švedski</string>
<string name="revanced_spoof_video_streams_language_SW">svahili</string>
<string name="revanced_spoof_video_streams_language_TA">tamilski</string>
<string name="revanced_spoof_video_streams_language_TE">telugu</string>
<string name="revanced_spoof_video_streams_language_TH">tajski</string>
<string name="revanced_spoof_video_streams_language_TR">turski</string>
<string name="revanced_spoof_video_streams_language_UK">ukrajinski</string>
<string name="revanced_spoof_video_streams_language_UR">urdu</string>
<string name="revanced_spoof_video_streams_language_VI">vijetnamski</string>
<string name="revanced_spoof_video_streams_language_ZH">kineski</string>
</patch>
</app>
<app id="twitch">

View File

@@ -711,6 +711,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_player_popup_panels_summary_off">Искачуће табле у плејеру су приказане</string>
</patch>
<patch id="layout.player.fullscreen.openVideosFullscreen">
<string name="revanced_open_videos_fullscreen_portrait_title">Отвори видее преко целог екрана усправно</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_on">Видеи се отварају преко целог екрана усправно</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_off">Видеи се не отварају преко целог екрана усправно</string>
</patch>
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
<string name="revanced_player_overlay_opacity_title">Непрозирност преклопа плејера</string>
@@ -1015,7 +1018,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Промените стил минимизираног плејера у апликацији</string>
<string name="revanced_miniplayer_type_title">Тип мини-плејера</string>
<string name="revanced_miniplayer_type_entry_0">Онемогућено</string>
<string name="revanced_miniplayer_type_entry_1">Оригинални</string>
<string name="revanced_miniplayer_type_entry_1">Подразумевана</string>
<string name="revanced_miniplayer_type_entry_2">Минималан</string>
<string name="revanced_miniplayer_type_entry_3">Таблет</string>
<string name="revanced_miniplayer_type_entry_4">Модеран 1</string>
@@ -1203,12 +1206,67 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_user_dialog_message">Искључивање ове опције ће можда изазвати проблеме са репродукцијом видеа.</string>
<string name="revanced_spoof_video_streams_client_title">Подразумевани клијент</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Присили 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">Ако ово омогућите, можда ће се продужити трајање батерије и поправити застој при репродукцији.\n\nAVC има максималну резолуцију од 1080p, аудио кодек Opus није доступан и репродукција видеа ће користити више интернет података него VP9 или AV1.</string>
<string name="revanced_spoof_video_streams_about_ios_title">Нежељени ефекти лажирања на iOS</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Приватни дечји видеи се можда неће пуштати\n• Стримови уживо почињу од почетка\n• Видеи ће се можда завршити 1 секунду раније</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Приватни дечји видеи се можда неће пуштати\n• Старосно ограничени видеи се можда неће пуштати\n• Стримови уживо почињу од почетка\n• Видеи ће се завршити 1 секунду раније</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Нежељени ефекти лажирања на Android VR</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Дечји видеи се можда неће пуштати\n• Мени „Аудио снимак” недостаје\n• Уједначена јачина звука није доступна</string>
<string name="revanced_spoof_video_streams_language_">Видео стримови су лажирани</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Дечји видеи се можда неће пуштати\n• Старосно ограничени видеи се можда неће пуштати\n• Стримови уживо почињу од почетка\n• Видеи ће се завршити 1 секунду раније</string>
<string name="revanced_spoof_video_streams_language_title">Подразумевани језик аудио стрима</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">Језик апликације</string>
<string name="revanced_spoof_video_streams_language_AR">арапски</string>
<string name="revanced_spoof_video_streams_language_AZ">азербејџански</string>
<string name="revanced_spoof_video_streams_language_BG">бугарски</string>
<string name="revanced_spoof_video_streams_language_BN">бенгалски</string>
<string name="revanced_spoof_video_streams_language_CA">каталонски</string>
<string name="revanced_spoof_video_streams_language_CS">чешки</string>
<string name="revanced_spoof_video_streams_language_DA">дански</string>
<string name="revanced_spoof_video_streams_language_DE">немачки</string>
<string name="revanced_spoof_video_streams_language_EL">грчки</string>
<string name="revanced_spoof_video_streams_language_EN">енглески</string>
<string name="revanced_spoof_video_streams_language_ES">шпански</string>
<string name="revanced_spoof_video_streams_language_ET">естонски</string>
<string name="revanced_spoof_video_streams_language_FA">персијски</string>
<string name="revanced_spoof_video_streams_language_FI">фински</string>
<string name="revanced_spoof_video_streams_language_FR">француски</string>
<string name="revanced_spoof_video_streams_language_GU">гуџарати</string>
<string name="revanced_spoof_video_streams_language_HI">хинди</string>
<string name="revanced_spoof_video_streams_language_HR">хрватски</string>
<string name="revanced_spoof_video_streams_language_HU">мађарски</string>
<string name="revanced_spoof_video_streams_language_ID">индонежански</string>
<string name="revanced_spoof_video_streams_language_IT">италијански</string>
<string name="revanced_spoof_video_streams_language_JA">јапански</string>
<string name="revanced_spoof_video_streams_language_KK">казашки</string>
<string name="revanced_spoof_video_streams_language_KO">корејски</string>
<string name="revanced_spoof_video_streams_language_LT">литвански</string>
<string name="revanced_spoof_video_streams_language_LV">летонски</string>
<string name="revanced_spoof_video_streams_language_MK">македонски</string>
<string name="revanced_spoof_video_streams_language_MN">монголски</string>
<string name="revanced_spoof_video_streams_language_MR">марати</string>
<string name="revanced_spoof_video_streams_language_MS">малајски</string>
<string name="revanced_spoof_video_streams_language_MY">бурмански</string>
<string name="revanced_spoof_video_streams_language_NL">холандски</string>
<string name="revanced_spoof_video_streams_language_OR">одија</string>
<string name="revanced_spoof_video_streams_language_PA">панџапски</string>
<string name="revanced_spoof_video_streams_language_PL">пољски</string>
<string name="revanced_spoof_video_streams_language_PT_BR">португалски (Бразил)</string>
<string name="revanced_spoof_video_streams_language_PT_PT">португалски (Португалија)</string>
<string name="revanced_spoof_video_streams_language_RO">румунски</string>
<string name="revanced_spoof_video_streams_language_RU">руски</string>
<string name="revanced_spoof_video_streams_language_SK">словачки</string>
<string name="revanced_spoof_video_streams_language_SL">словеначки</string>
<string name="revanced_spoof_video_streams_language_SR">српски</string>
<string name="revanced_spoof_video_streams_language_SV">шведски</string>
<string name="revanced_spoof_video_streams_language_SW">свахили</string>
<string name="revanced_spoof_video_streams_language_TA">тамилски</string>
<string name="revanced_spoof_video_streams_language_TE">телугу</string>
<string name="revanced_spoof_video_streams_language_TH">тајски</string>
<string name="revanced_spoof_video_streams_language_TR">турски</string>
<string name="revanced_spoof_video_streams_language_UK">украјински</string>
<string name="revanced_spoof_video_streams_language_UR">урду</string>
<string name="revanced_spoof_video_streams_language_VI">вијетнамски</string>
<string name="revanced_spoof_video_streams_language_ZH">кинески</string>
</patch>
</app>
<app id="twitch">

View File

@@ -1017,7 +1017,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Ändra stilen på appen minimerad spelare</string>
<string name="revanced_miniplayer_type_title">Miniplayer typ</string>
<string name="revanced_miniplayer_type_entry_0">Inaktiverad</string>
<string name="revanced_miniplayer_type_entry_1">Ursprunglig</string>
<string name="revanced_miniplayer_type_entry_1">Standard</string>
<string name="revanced_miniplayer_type_entry_2">Minimal</string>
<string name="revanced_miniplayer_type_entry_3">Surfplatta</string>
<string name="revanced_miniplayer_type_entry_4">Modern 1</string>
@@ -1209,11 +1209,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Video-codec bestäms automatiskt</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Aktivering av detta kan förbättra batteriets livslängd och åtgärda uppspelningshjälp.\n\nAVC har en maximal upplösning på 1080p, Opus audio codec är inte tillgänglig, och videouppspelning kommer att använda mer internetdata än VP9 eller AV1.</string>
<string name="revanced_spoof_video_streams_about_ios_title">iOS förfalskning biverkningar</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Privata barn videor får inte spela\n• Livestreams börjar från början\n• Videor kan sluta 1 sekund tidigt</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Privata barnvideor kanske inte spelar\n• Åldersbegränsade videor kanske inte spelar\n• Livestreams börjar från början\n• Videor slutar 1 sekund tidigt</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Android VR förfalskning biverkningar</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Barnvideor kanske inte spelar\n• Ljudspårsmenyn saknas\n• Stabil volym är inte tillgänglig</string>
<string name="revanced_spoof_video_streams_language_">Videoströmmar är förfalskade</string>
<string name="revanced_spoof_video_streams_language_title">Föredraget ljudströmspråk</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Barnvideor kanske inte spelar\n• Åldersbegränsade videor kanske inte spelar\n• Livestreams börjar från början\n• Videor slutar 1 sekund tidigt</string>
<string name="revanced_spoof_video_streams_language_title">Standard ljudströmningsspråk</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">Appens språk</string>
<string name="revanced_spoof_video_streams_language_AR">Arabiska</string>
<string name="revanced_spoof_video_streams_language_AZ">Azerbajdzjanska</string>

View File

@@ -194,6 +194,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="layout.miniplayer.miniplayerPatch">
<string name="revanced_miniplayer_type_entry_0">முடக்கப்பட்டது</string>
<string name="revanced_miniplayer_type_entry_1">இயல்புநிலை</string>
</patch>
<patch id="layout.theme.themePatch">
</patch>

View File

@@ -253,6 +253,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="layout.miniplayer.miniplayerPatch">
<string name="revanced_miniplayer_type_entry_0">ปิดการใช้งานอยู่</string>
<string name="revanced_miniplayer_type_entry_1">ค่าเริ่มต้น</string>
</patch>
<patch id="layout.theme.themePatch">
</patch>

View File

@@ -710,6 +710,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_player_popup_panels_summary_off">Oynatıcıılır panelleri gösteriliyor</string>
</patch>
<patch id="layout.player.fullscreen.openVideosFullscreen">
<string name="revanced_open_videos_fullscreen_portrait_title">Videoları tam ekran portre modunda aç</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_on">Videolar tam ekranda açılır</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_off">Videolar tam ekranda açılmaz</string>
</patch>
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
<string name="revanced_player_overlay_opacity_title">Oynatıcı opaklığı</string>
@@ -1014,7 +1017,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Uygulama içi küçültülmüş oynatıcının tarzını değiştir</string>
<string name="revanced_miniplayer_type_title">Mini oynatıcı tipi</string>
<string name="revanced_miniplayer_type_entry_0">Devre dışı</string>
<string name="revanced_miniplayer_type_entry_1">Orijinal</string>
<string name="revanced_miniplayer_type_entry_1">Varsayılan</string>
<string name="revanced_miniplayer_type_entry_2">Minimal</string>
<string name="revanced_miniplayer_type_entry_3">Tablet</string>
<string name="revanced_miniplayer_type_entry_4">Modern 1</string>
@@ -1202,10 +1205,64 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_user_dialog_message">Bu ayarı devre dışı bırakmak video oynatma sorunlarına yol açabilir.</string>
<string name="revanced_spoof_video_streams_client_title">Varsayılan istemci</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">AVC\'yi (H.264) zorla</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Video kodeği AVC\'ye zorlanıyor (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Video kodeği otomatik olarak ayarlanır</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Bunu etkinleştirmek batarya ömrünü iyileştirebilir ve oynatma takılmalarını düzeltebilir.\n\nAVC\'de maksimum 1080p çözünürlük vardır, Opus ses kodeği kullanılamaz ve video oynatma VP9 veya AV1\'e göre daha fazla internet verisi kullanır.</string>
<string name="revanced_spoof_video_streams_about_ios_title">iOS taklidi yan etkileri</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Android VR taklidi yan etkileri</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Çocuklara özel videolar oynatılamayabilir\n• Ses parçası menüsü eksik\n• Sabit ses özelliği kullanılamaz</string>
<string name="revanced_spoof_video_streams_language_">Video akışları taklit ediliyor</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">Uygulama dili</string>
<string name="revanced_spoof_video_streams_language_AR">Arapça</string>
<string name="revanced_spoof_video_streams_language_AZ">Azerbaycanca</string>
<string name="revanced_spoof_video_streams_language_BG">Bulgarca</string>
<string name="revanced_spoof_video_streams_language_BN">Bengalce</string>
<string name="revanced_spoof_video_streams_language_CA">Katalanca</string>
<string name="revanced_spoof_video_streams_language_CS">Çekçe</string>
<string name="revanced_spoof_video_streams_language_DA">Danca</string>
<string name="revanced_spoof_video_streams_language_DE">Almanca</string>
<string name="revanced_spoof_video_streams_language_EL">Yunanca</string>
<string name="revanced_spoof_video_streams_language_EN">İngilizce</string>
<string name="revanced_spoof_video_streams_language_ES">İspanyolca</string>
<string name="revanced_spoof_video_streams_language_ET">Estonca</string>
<string name="revanced_spoof_video_streams_language_FA">Farsça</string>
<string name="revanced_spoof_video_streams_language_FI">Fince</string>
<string name="revanced_spoof_video_streams_language_FR">Fransızca</string>
<string name="revanced_spoof_video_streams_language_GU">Guceratça</string>
<string name="revanced_spoof_video_streams_language_HI">Hintçe</string>
<string name="revanced_spoof_video_streams_language_HR">Hırvatça</string>
<string name="revanced_spoof_video_streams_language_HU">Macarca</string>
<string name="revanced_spoof_video_streams_language_ID">Endonezce</string>
<string name="revanced_spoof_video_streams_language_IT">İtalyanca</string>
<string name="revanced_spoof_video_streams_language_JA">Japonca</string>
<string name="revanced_spoof_video_streams_language_KK">Kazakça</string>
<string name="revanced_spoof_video_streams_language_KO">Korece</string>
<string name="revanced_spoof_video_streams_language_LT">Litvanca</string>
<string name="revanced_spoof_video_streams_language_LV">Letonca</string>
<string name="revanced_spoof_video_streams_language_MK">Makedonca</string>
<string name="revanced_spoof_video_streams_language_MN">Moğolca</string>
<string name="revanced_spoof_video_streams_language_MR">Marathice</string>
<string name="revanced_spoof_video_streams_language_MS">Malayca</string>
<string name="revanced_spoof_video_streams_language_MY">Birmanca</string>
<string name="revanced_spoof_video_streams_language_NL">Flemenkçe</string>
<string name="revanced_spoof_video_streams_language_OR">Odiyaca</string>
<string name="revanced_spoof_video_streams_language_PA">Pencapça</string>
<string name="revanced_spoof_video_streams_language_PL">Lehçe</string>
<string name="revanced_spoof_video_streams_language_PT_BR">Portekizce (Brezilya)</string>
<string name="revanced_spoof_video_streams_language_PT_PT">Portekizce (Portekiz)</string>
<string name="revanced_spoof_video_streams_language_RO">Romence</string>
<string name="revanced_spoof_video_streams_language_RU">Rusça</string>
<string name="revanced_spoof_video_streams_language_SK">Slovakça</string>
<string name="revanced_spoof_video_streams_language_SL">Slovence</string>
<string name="revanced_spoof_video_streams_language_SR">Sırpça</string>
<string name="revanced_spoof_video_streams_language_SV">İsveççe</string>
<string name="revanced_spoof_video_streams_language_SW">Svahilice</string>
<string name="revanced_spoof_video_streams_language_TA">Tamilce</string>
<string name="revanced_spoof_video_streams_language_TE">Teluguca</string>
<string name="revanced_spoof_video_streams_language_TH">Taylandca</string>
<string name="revanced_spoof_video_streams_language_TR">Türkçe</string>
<string name="revanced_spoof_video_streams_language_UK">Ukraynaca</string>
<string name="revanced_spoof_video_streams_language_UR">Urduca</string>
<string name="revanced_spoof_video_streams_language_VI">Vietnamca</string>
<string name="revanced_spoof_video_streams_language_ZH">Çince</string>
</patch>
</app>
<app id="twitch">

View File

@@ -711,8 +711,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="layout.player.fullscreen.openVideosFullscreen">
<string name="revanced_open_videos_fullscreen_portrait_title">Відкривати відео в портретному режимі</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_on">Відео відкриваються в повноекранному режимі</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_off">Відео не відкривають на весь екран</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_on">Відео відкриваються в повноекранному портретному режимі</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_off">Відео не відкриваються в повноекранному портретному режимі</string>
</patch>
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
<string name="revanced_player_overlay_opacity_title">Затемнення плеєра при натисканні</string>
@@ -1017,7 +1017,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Змінити стиль згорнутого мініплеєра</string>
<string name="revanced_miniplayer_type_title">Тип мініплеєра</string>
<string name="revanced_miniplayer_type_entry_0">Вимкнуто</string>
<string name="revanced_miniplayer_type_entry_1">Оригінальний</string>
<string name="revanced_miniplayer_type_entry_1">Стандартний</string>
<string name="revanced_miniplayer_type_entry_2">Мінімальний</string>
<string name="revanced_miniplayer_type_entry_3">Планшетний</string>
<string name="revanced_miniplayer_type_entry_4">Новітній 1</string>
@@ -1205,16 +1205,13 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_user_dialog_message">Вимкнення цього параметра може спричинити проблеми відтворення відео.</string>
<string name="revanced_spoof_video_streams_client_title">Клієнт за замовчуванням</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Примусово 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_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">Увімкнення цієї функції може збільшити час роботи акумулятора та виправити режим зупинки відтворення.\n\nAVC має максимальну роздільну здатність 1080p, відсутній аудіо-кодек Opus і відтворення відео буде використовувати більше даних Інтернету, ніж VP9 або AV1.</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Увімкнення цієї опції може збільшити час роботи від акумулятора та виправити затримки відтворення.\n\nAVC має максимальну роздільну здатність 1080p, відсутній аудіо кодек OPUS, а відтворення відео використовуватиме більше інтернет-даних, ніж на кодеках VP9 або AV1.</string>
<string name="revanced_spoof_video_streams_about_ios_title">Побічні ефекти підробки iOS:</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Приватні дитячі відео можуть не відтворюватися\n• Прямі трансляції починаються з початку\n• Відео можуть закінчуватися на 1 секунду раніше</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Побічні ефекти підробки Android VR:</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Дитячі відео можуть не відтворюватися\n• Меню звукової доріжки відсутнє\n• Меню стабілізації гучності недоступне</string>
<string name="revanced_spoof_video_streams_language_">Відеопотоки підроблено</string>
<string name="revanced_spoof_video_streams_language_title">Бажана мова аудіо-потоків</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">Мова додатку</string>
<string name="revanced_spoof_video_streams_language_title">Мова аудіо-потоків за замовчуванням</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">Мова застосунку</string>
<string name="revanced_spoof_video_streams_language_AR">Арабська</string>
<string name="revanced_spoof_video_streams_language_AZ">Азербайджанська</string>
<string name="revanced_spoof_video_streams_language_BG">Болгарська</string>
@@ -1227,45 +1224,45 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_language_EN">Англійська</string>
<string name="revanced_spoof_video_streams_language_ES">Іспанська</string>
<string name="revanced_spoof_video_streams_language_ET">Естонська</string>
<string name="revanced_spoof_video_streams_language_FA">Фарсі</string>
<string name="revanced_spoof_video_streams_language_FA">Перська</string>
<string name="revanced_spoof_video_streams_language_FI">Фінська</string>
<string name="revanced_spoof_video_streams_language_FR">Français</string>
<string name="revanced_spoof_video_streams_language_GU">Gujarati</string>
<string name="revanced_spoof_video_streams_language_HI">Гінді</string>
<string name="revanced_spoof_video_streams_language_FR">Французька</string>
<string name="revanced_spoof_video_streams_language_GU">Гуджараті</string>
<string name="revanced_spoof_video_streams_language_HI">Хінді</string>
<string name="revanced_spoof_video_streams_language_HR">Хорватська</string>
<string name="revanced_spoof_video_streams_language_HU">Угорська</string>
<string name="revanced_spoof_video_streams_language_ID">Індонезійська</string>
<string name="revanced_spoof_video_streams_language_IT">Італійська</string>
<string name="revanced_spoof_video_streams_language_JA">Японська</string>
<string name="revanced_spoof_video_streams_language_KK">Kazakh</string>
<string name="revanced_spoof_video_streams_language_KK">Казахська</string>
<string name="revanced_spoof_video_streams_language_KO">Корейська</string>
<string name="revanced_spoof_video_streams_language_LT">Литовська</string>
<string name="revanced_spoof_video_streams_language_LV">Латиська</string>
<string name="revanced_spoof_video_streams_language_LV">Латвійська</string>
<string name="revanced_spoof_video_streams_language_MK">Македонська</string>
<string name="revanced_spoof_video_streams_language_MN">Монгольська</string>
<string name="revanced_spoof_video_streams_language_MR">Маратхі</string>
<string name="revanced_spoof_video_streams_language_MS">Малайська</string>
<string name="revanced_spoof_video_streams_language_MY">Burmese</string>
<string name="revanced_spoof_video_streams_language_MY">Бірманська</string>
<string name="revanced_spoof_video_streams_language_NL">Голландська</string>
<string name="revanced_spoof_video_streams_language_OR">Odia</string>
<string name="revanced_spoof_video_streams_language_PA">Punjabi</string>
<string name="revanced_spoof_video_streams_language_OR">Одійська</string>
<string name="revanced_spoof_video_streams_language_PA">Пенджабі</string>
<string name="revanced_spoof_video_streams_language_PL">Польська</string>
<string name="revanced_spoof_video_streams_language_PT_BR">Португальська (Бразилія)</string>
<string name="revanced_spoof_video_streams_language_PT_PT">Португальська (Португалія)</string>
<string name="revanced_spoof_video_streams_language_RO">Румунська</string>
<string name="revanced_spoof_video_streams_language_RU">Російська</string>
<string name="revanced_spoof_video_streams_language_SK">Словацька</string>
<string name="revanced_spoof_video_streams_language_SL">Slovene</string>
<string name="revanced_spoof_video_streams_language_SL">Словенська</string>
<string name="revanced_spoof_video_streams_language_SR">Сербська</string>
<string name="revanced_spoof_video_streams_language_SV">Шведська</string>
<string name="revanced_spoof_video_streams_language_SW">Суахілі</string>
<string name="revanced_spoof_video_streams_language_TA">Tamil</string>
<string name="revanced_spoof_video_streams_language_TE">Telugu</string>
<string name="revanced_spoof_video_streams_language_TA">Тамільська</string>
<string name="revanced_spoof_video_streams_language_TE">Телугу</string>
<string name="revanced_spoof_video_streams_language_TH">Тайська</string>
<string name="revanced_spoof_video_streams_language_TR">Турецька</string>
<string name="revanced_spoof_video_streams_language_UK">Українська</string>
<string name="revanced_spoof_video_streams_language_UR">Урду</string>
<string name="revanced_spoof_video_streams_language_VI">Vietnamese</string>
<string name="revanced_spoof_video_streams_language_VI">В\'єтнамська</string>
<string name="revanced_spoof_video_streams_language_ZH">Китайська</string>
</patch>
</app>

View File

@@ -1014,7 +1014,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Thay đổi kiểu trình phát thu nhỏ trong ứng dụng</string>
<string name="revanced_miniplayer_type_title">Loại trình phát thu nhỏ</string>
<string name="revanced_miniplayer_type_entry_0">Đã tắt</string>
<string name="revanced_miniplayer_type_entry_1">Nguyên bản</string>
<string name="revanced_miniplayer_type_entry_1">Mặc định</string>
<string name="revanced_miniplayer_type_entry_2">Thu gọn</string>
<string name="revanced_miniplayer_type_entry_3">Máy tính bảng</string>
<string name="revanced_miniplayer_type_entry_4">Hiện đại 1</string>
@@ -1204,8 +1204,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_ios_force_avc_title">AVC (H.264) ép buộc</string>
<string name="revanced_spoof_video_streams_about_ios_title">Tác dụng phụ của giả mạo iOS</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Tác dụng phụ của giả mạo Android VR</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Video trẻ em có thể không phát được \n • Menu chọn bản âm thanh không khả dụng \n • Âm lượng ổn định không có sẵn</string>
<string name="revanced_spoof_video_streams_language_">Luồng video đã được giả mạo</string>
</patch>
</app>
<app id="twitch">

View File

@@ -1000,7 +1000,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">更改应用最小化播放器中的样式</string>
<string name="revanced_miniplayer_type_title">最小播放器类型</string>
<string name="revanced_miniplayer_type_entry_0">已禁用</string>
<string name="revanced_miniplayer_type_entry_1">原始文件</string>
<string name="revanced_miniplayer_type_entry_1">默认</string>
<string name="revanced_miniplayer_type_entry_2">最小化</string>
<string name="revanced_miniplayer_type_entry_3">平板电脑</string>
<string name="revanced_miniplayer_type_entry_4">现代1</string>
@@ -1191,11 +1191,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">视频编解码器自动确定</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">启用这可能会改善电池寿命并修复播放停顿。\n\nAVC 最大分辨率为1080p, Opus 音频编解码器不可用。 视频播放将使用比VP9或AV1更多的网络数据。</string>
<string name="revanced_spoof_video_streams_about_ios_title">iOS 伪装副作用</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• 私人孩子视频可能无法播放\n• 生命线从开头开始\n• 视频可能提前结束 1 秒</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• 私人孩子视频可能无法播放\n• 受年龄限制的视频可能无法播放\n• Livestreams 开始于开头\n• 视频结束后1秒。</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Android VR 伪装副作用</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• 儿童视频可能无法播放\n• 音轨菜单丢失\n• 稳定音量</string>
<string name="revanced_spoof_video_streams_language_">视频流已被破坏了</string>
<string name="revanced_spoof_video_streams_language_title">首选音频流语言</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• 儿童视频可能无法播放\n• 年龄限制视频可能无法播放\n• Livestreams 开始于开始于\n• 视频结束1</string>
<string name="revanced_spoof_video_streams_language_title">默认音频流语言</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">应用语言</string>
<string name="revanced_spoof_video_streams_language_AR">阿拉伯语</string>
<string name="revanced_spoof_video_streams_language_AZ">阿塞拜疆文</string>

View File

@@ -1014,7 +1014,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">更改應用程式內縮小播放器的樣式</string>
<string name="revanced_miniplayer_type_title">迷你播放器類型</string>
<string name="revanced_miniplayer_type_entry_0">已停用</string>
<string name="revanced_miniplayer_type_entry_1">原始</string>
<string name="revanced_miniplayer_type_entry_1">預設</string>
<string name="revanced_miniplayer_type_entry_2">最小化</string>
<string name="revanced_miniplayer_type_entry_3">平板</string>
<string name="revanced_miniplayer_type_entry_4">現代樣式 1</string>
@@ -1203,11 +1203,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_user_dialog_message">關閉此設定可能會導致影片播放發生問題</string>
<string name="revanced_spoof_video_streams_client_title">預設用戶端</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">強制 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">啟用此功能可能會改善電池續航力並修復播放卡頓問題。\n\nAVC 的最大解析度為 1080p且影片播放將使用比 VP9 或 AV1 更多的網路數據(音源解碼器暫不可用)。</string>
<string name="revanced_spoof_video_streams_about_ios_title">iOS 欺騙副作用</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• 私人的兒童影片有可能不會播放\n• 從直播起始處播放\n• 影片可能會提早一秒結束</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Android VR 欺騙副作用</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• 私人的兒童影片有可能不會播放\n• 找不到音樂曲目選單\n• 音量平衡不可用</string>
<string name="revanced_spoof_video_streams_language_">已欺騙影片串流</string>
<string name="revanced_spoof_video_streams_language_EN">英文</string>
</patch>
</app>

View File

@@ -155,7 +155,7 @@
<string-array name="revanced_miniplayer_type_entry_values">
<!-- Enum names from the extension. -->
<item>DISABLED</item>
<item>ORIGINAL</item>
<item>DEFAULT</item>
<item>MINIMAL</item>
<item>TABLET</item>
<item>MODERN_1</item>
@@ -172,7 +172,7 @@
</string-array>
<string-array name="revanced_miniplayer_type_legacy_entry_values">
<!-- Enum names from the extension. -->
<item>ORIGINAL</item>
<item>DEFAULT</item>
<item>MINIMAL</item>
<item>TABLET</item>
<item>MODERN_1</item>
@@ -201,7 +201,7 @@
</string-array>
<string-array name="revanced_change_start_page_entry_values">
<!-- Enum names from extension -->
<item>ORIGINAL</item>
<item>DEFAULT</item>
<!-- Intent Action -->
<item>SEARCH</item>
<item>SHORTS</item>

View File

@@ -1028,7 +1028,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Change the style of the in app minimized player</string>
<string name="revanced_miniplayer_type_title">Miniplayer type</string>
<string name="revanced_miniplayer_type_entry_0">Disabled</string>
<string name="revanced_miniplayer_type_entry_1">Original</string>
<string name="revanced_miniplayer_type_entry_1">Default</string>
<string name="revanced_miniplayer_type_entry_2">Minimal</string>
<string name="revanced_miniplayer_type_entry_3">Tablet</string>
<string name="revanced_miniplayer_type_entry_4">Modern 1</string>
@@ -1229,11 +1229,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Video codec is determined automatically</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Enabling this might improve battery life and fix playback stuttering.\n\nAVC has a maximum resolution of 1080p, Opus audio codec is not available, and video playback will use more internet data than VP9 or AV1.</string>
<string name="revanced_spoof_video_streams_about_ios_title">iOS spoofing side effects</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Private kids videos may not play\n• Livestreams start from the beginning\n• Videos may end 1 second early</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Private kids videos may not play\n• Livestreams start from the beginning\n• Videos end 1 second early</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Android VR spoofing side effects</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Kids videos may not play\n• Audio track menu is missing\n• Stable volume is not available</string>
<string name="revanced_spoof_video_streams_language_">Video streams are spoofed</string>
<string name="revanced_spoof_video_streams_language_title">Preferred audio stream language</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Kids videos may not play\n• Livestreams start from the beginning\n• Videos end 1 second early</string>
<string name="revanced_spoof_video_streams_language_title">Default audio stream language</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">App language</string>
<string name="revanced_spoof_video_streams_language_AR">Arabic</string>
<string name="revanced_spoof_video_streams_language_AZ">Azerbaijani</string>