Merge branch 'main' into ci/github-attest-slsa-l2

This commit is contained in:
Pun Butrach 2024-11-13 22:55:21 +07:00 committed by GitHub
commit d9f0da461d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
82 changed files with 608 additions and 575 deletions

View File

@ -55,7 +55,7 @@ jobs:
- name: Setup keystore - name: Setup keystore
run: | run: |
echo "${{ secrets.KEYSTORE }}" | base64 --decode > "keystore.jks" echo "${{ secrets.KEYSTORE }}" | base64 --decode > "android/app/keystore.jks"
- name: Release - name: Release
env: env:

View File

@ -7,7 +7,7 @@ plugins {
android { android {
namespace = "app.revanced.manager.flutter" namespace = "app.revanced.manager.flutter"
compileSdk = 34 compileSdk = 35
ndkVersion = "27.0.12077973" ndkVersion = "27.0.12077973"
compileOptions { compileOptions {
@ -24,9 +24,19 @@ android {
defaultConfig { defaultConfig {
applicationId = "app.revanced.manager.flutter" applicationId = "app.revanced.manager.flutter"
minSdk = 26 minSdk = 26
targetSdk = 34 targetSdk = 35
versionCode = flutter.versionCode versionCode = flutter.versionCode
versionName = flutter.versionName versionName = flutter.versionName
resValue("string", "app_name", "ReVanced Manager")
}
applicationVariants.all {
outputs.all {
this as com.android.build.gradle.internal.api.ApkVariantOutputImpl
outputFileName = "revanced-manager-$versionName.apk"
}
} }
buildTypes { buildTypes {
@ -37,7 +47,6 @@ android {
signingConfig = signingConfigs["debug"] signingConfig = signingConfigs["debug"]
ndk.abiFilters += setOf("armeabi-v7a", "arm64-v8a", "x86_64") ndk.abiFilters += setOf("armeabi-v7a", "arm64-v8a", "x86_64")
setProperty("archivesBaseName", "revanced-manager-v${flutter.versionName}")
} }
release { release {
@ -52,19 +61,21 @@ android {
keyAlias = System.getenv("KEYSTORE_ENTRY_ALIAS") keyAlias = System.getenv("KEYSTORE_ENTRY_ALIAS")
keyPassword = System.getenv("KEYSTORE_ENTRY_PASSWORD") keyPassword = System.getenv("KEYSTORE_ENTRY_PASSWORD")
} }
resValue("string", "app_name", "ReVanced Manager")
} else { } else {
resValue("string", "app_name", "ReVanced Manager (Debug)")
applicationIdSuffix = ".debug" applicationIdSuffix = ".debug"
signingConfig = signingConfigs["debug"] signingConfig = signingConfigs["debug"]
}
resValue("string", "app_name", "ReVanced Manager") resValue("string", "app_name", "ReVanced Manager (Debug signed)")
}
} }
debug { debug {
resValue("string", "app_name", "ReVanced Manager (Debug)")
applicationIdSuffix = ".debug" applicationIdSuffix = ".debug"
resValue("string", "app_name", "ReVanced Manager (Debug)")
} }
} }
@ -80,6 +91,7 @@ android {
} }
} }
flutter { flutter {
source = "../.." source = "../.."
} }

View File

@ -3,7 +3,6 @@ package app.revanced.manager.flutter
import android.app.Activity import android.app.Activity
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.pm.PackageInfo
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.os.Bundle import android.os.Bundle
import android.util.Base64 import android.util.Base64
@ -17,9 +16,8 @@ import java.security.MessageDigest
class ExportSettingsActivity : Activity() { class ExportSettingsActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
val callingPackageName = getCallingPackage()!!
if (getFingerprint(callingPackageName) == getFingerprint(getPackageName())) { if (getFingerprint(callingPackage!!) == getFingerprint(packageName)) {
// Create JSON Object // Create JSON Object
val json = JSONObject() val json = JSONObject()
@ -64,7 +62,7 @@ class ExportSettingsActivity : Activity() {
fun getFingerprint(packageName: String): String { fun getFingerprint(packageName: String): String {
// Get the signature of the app that matches the package name // Get the signature of the app that matches the package name
val packageInfo = packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES) val packageInfo = packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES)
val signature = packageInfo.signatures[0] val signature = packageInfo.signatures!![0]
// Get the raw certificate data // Get the raw certificate data
val rawCert = signature.toByteArray() val rawCert = signature.toByteArray()

View File

@ -9,14 +9,15 @@ import android.os.Handler
import android.os.Looper import android.os.Looper
import app.revanced.library.ApkUtils import app.revanced.library.ApkUtils
import app.revanced.library.ApkUtils.applyTo import app.revanced.library.ApkUtils.applyTo
import app.revanced.library.installation.installer.LocalInstaller
import app.revanced.manager.flutter.utils.Aapt import app.revanced.manager.flutter.utils.Aapt
import app.revanced.manager.flutter.utils.packageInstaller.InstallerReceiver import app.revanced.manager.flutter.utils.packageInstaller.InstallerReceiver
import app.revanced.manager.flutter.utils.packageInstaller.UninstallerReceiver import app.revanced.manager.flutter.utils.packageInstaller.UninstallerReceiver
import app.revanced.patcher.PatchBundleLoader
import app.revanced.patcher.PatchSet
import app.revanced.patcher.Patcher import app.revanced.patcher.Patcher
import app.revanced.patcher.PatcherConfig import app.revanced.patcher.PatcherConfig
import app.revanced.patcher.patch.Patch
import app.revanced.patcher.patch.PatchResult import app.revanced.patcher.patch.PatchResult
import app.revanced.patcher.patch.loadPatchesFromDex
import io.flutter.embedding.android.FlutterActivity import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel import io.flutter.plugin.common.MethodChannel
@ -37,7 +38,7 @@ class MainActivity : FlutterActivity() {
private var cancel: Boolean = false private var cancel: Boolean = false
private var stopResult: MethodChannel.Result? = null private var stopResult: MethodChannel.Result? = null
private lateinit var patches: PatchSet private lateinit var patches: Set<Patch<*>>
override fun configureFlutterEngine(flutterEngine: FlutterEngine) { override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine) super.configureFlutterEngine(flutterEngine)
@ -70,7 +71,6 @@ class MainActivity : FlutterActivity() {
"runPatcher" -> { "runPatcher" -> {
val inFilePath = call.argument<String>("inFilePath") val inFilePath = call.argument<String>("inFilePath")
val outFilePath = call.argument<String>("outFilePath") val outFilePath = call.argument<String>("outFilePath")
val integrationsPath = call.argument<String>("integrationsPath")
val selectedPatches = call.argument<List<String>>("selectedPatches") val selectedPatches = call.argument<List<String>>("selectedPatches")
val options = call.argument<Map<String, Map<String, Any>>>("options") val options = call.argument<Map<String, Map<String, Any>>>("options")
val tmpDirPath = call.argument<String>("tmpDirPath") val tmpDirPath = call.argument<String>("tmpDirPath")
@ -80,7 +80,6 @@ class MainActivity : FlutterActivity() {
if ( if (
inFilePath != null && inFilePath != null &&
outFilePath != null && outFilePath != null &&
integrationsPath != null &&
selectedPatches != null && selectedPatches != null &&
options != null && options != null &&
tmpDirPath != null && tmpDirPath != null &&
@ -92,14 +91,17 @@ class MainActivity : FlutterActivity() {
result, result,
inFilePath, inFilePath,
outFilePath, outFilePath,
integrationsPath,
selectedPatches, selectedPatches,
options, options,
tmpDirPath, tmpDirPath,
keyStoreFilePath, keyStoreFilePath,
keystorePassword keystorePassword
) )
} else result.notImplemented() } else result.error(
"INVALID_ARGUMENTS",
"Invalid arguments",
"One or more arguments are missing"
)
} }
"stopPatcher" -> { "stopPatcher" -> {
@ -113,14 +115,16 @@ class MainActivity : FlutterActivity() {
try { try {
val patchBundleFile = File(patchBundleFilePath) val patchBundleFile = File(patchBundleFilePath)
patchBundleFile.setWritable(false) patchBundleFile.setWritable(false)
patches = PatchBundleLoader.Dex( patches = loadPatchesFromDex(
patchBundleFile, setOf(patchBundleFile),
optimizedDexDirectory = codeCacheDir optimizedDexDirectory = codeCacheDir
) )
} catch (ex: Exception) { } catch (t: Throwable) {
return@setMethodCallHandler result.notImplemented() return@setMethodCallHandler result.error(
} catch (err: Error) { "PATCH_BUNDLE_ERROR",
return@setMethodCallHandler result.notImplemented() "Failed to load patch bundle",
t.stackTraceToString()
)
} }
JSONArray().apply { JSONArray().apply {
@ -130,13 +134,13 @@ class MainActivity : FlutterActivity() {
put("description", it.description) put("description", it.description)
put("excluded", !it.use) put("excluded", !it.use)
put("compatiblePackages", JSONArray().apply { put("compatiblePackages", JSONArray().apply {
it.compatiblePackages?.forEach { compatiblePackage -> it.compatiblePackages?.forEach { (name, versions) ->
val compatiblePackageJson = JSONObject().apply { val compatiblePackageJson = JSONObject().apply {
put("name", compatiblePackage.name) put("name", name)
put( put(
"versions", "versions",
JSONArray().apply { JSONArray().apply {
compatiblePackage.versions?.forEach { version -> versions?.forEach { version ->
put(version) put(version)
} }
}) })
@ -172,7 +176,7 @@ class MainActivity : FlutterActivity() {
} }
}) })
} ?: put("values", null) } ?: put("values", null)
put("valueType", option.valueType) put("type", option.type)
}.let(::put) }.let(::put)
} }
}) })
@ -211,7 +215,6 @@ class MainActivity : FlutterActivity() {
result: MethodChannel.Result, result: MethodChannel.Result,
inFilePath: String, inFilePath: String,
outFilePath: String, outFilePath: String,
integrationsPath: String,
selectedPatches: List<String>, selectedPatches: List<String>,
options: Map<String, Map<String, Any>>, options: Map<String, Map<String, Any>>,
tmpDirPath: String, tmpDirPath: String,
@ -223,7 +226,6 @@ class MainActivity : FlutterActivity() {
inFile.setWritable(true) inFile.setWritable(true)
inFile.setReadable(true) inFile.setReadable(true)
val outFile = File(outFilePath) val outFile = File(outFilePath)
val integrations = File(integrationsPath)
val keyStoreFile = File(keyStoreFilePath) val keyStoreFile = File(keyStoreFilePath)
val tmpDir = File(tmpDirPath) val tmpDir = File(tmpDirPath)
@ -281,7 +283,6 @@ class MainActivity : FlutterActivity() {
tmpDir, tmpDir,
Aapt.binary(applicationContext).absolutePath, Aapt.binary(applicationContext).absolutePath,
tmpDir.path, tmpDir.path,
true // TODO: Add option to disable this
) )
) )
@ -289,8 +290,8 @@ class MainActivity : FlutterActivity() {
updateProgress(0.02, "Loading patches...", "Loading patches") updateProgress(0.02, "Loading patches...", "Loading patches")
val patches = patches.filter { patch -> val patches = patches.filter { patch ->
val isCompatible = patch.compatiblePackages?.any { val isCompatible = patch.compatiblePackages?.any { (name, _) ->
it.name == patcher.context.packageMetadata.packageName name == patcher.context.packageMetadata.packageName
} ?: false } ?: false
val compatibleOrUniversal = val compatibleOrUniversal =
@ -307,10 +308,7 @@ class MainActivity : FlutterActivity() {
updateProgress(0.05, "Executing...", "") updateProgress(0.05, "Executing...", "")
val patcherResult = patcher.use { val patcherResult = patcher.use {
patcher.apply { it += patches
acceptIntegrations(setOf(integrations))
acceptPatches(patches)
}
runBlocking { runBlocking {
// Update the progress bar every time a patch is executed from 0.15 to 0.7 // Update the progress bar every time a patch is executed from 0.15 to 0.7
@ -318,7 +316,7 @@ class MainActivity : FlutterActivity() {
val progressStep = 0.55 / totalPatchesCount val progressStep = 0.55 / totalPatchesCount
var progress = 0.05 var progress = 0.05
patcher.apply(false).collect(FlowCollector { patchResult: PatchResult -> patcher().collect(FlowCollector { patchResult: PatchResult ->
if (cancel(patcher::close)) return@FlowCollector if (cancel(patcher::close)) return@FlowCollector
val msg = patchResult.exception?.let { val msg = patchResult.exception?.let {
@ -346,10 +344,11 @@ class MainActivity : FlutterActivity() {
if (cancel(patcher::close)) return@Thread if (cancel(patcher::close)) return@Thread
ApkUtils.sign( ApkUtils.signApk(
inFile, inFile,
outFile, outFile,
ApkUtils.SigningOptions( "ReVanced",
ApkUtils.KeyStoreDetails(
keyStoreFile, keyStoreFile,
keystorePassword, keystorePassword,
"alias", "alias",

View File

@ -1,4 +1,5 @@
import com.android.build.api.dsl.CommonExtension import com.android.build.api.dsl.CommonExtension
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
allprojects { allprojects {
repositories { repositories {
@ -17,10 +18,19 @@ allprojects {
layout.buildDirectory = File("../build") layout.buildDirectory = File("../build")
project(":screenshot_callback") {
tasks.withType<KotlinCompile>().configureEach {
kotlinOptions {
jvmTarget = "17"
}
}
}
subprojects { subprojects {
afterEvaluate { afterEvaluate {
extensions.findByName("android")?.let { extensions.findByName("android")?.let {
it as CommonExtension<*, *, *, *, *, *> it as CommonExtension<*, *, *, *, *, *>
if (it.compileSdk != null && it.compileSdk!! < 31)
it.compileSdk = 34 it.compileSdk = 34
} }
} }

View File

@ -3,6 +3,5 @@ android.useAndroidX=true
org.gradle.parallel=true org.gradle.parallel=true
org.gradle.daemon=true org.gradle.daemon=true
org.gradle.caching=true org.gradle.caching=true
android.defaults.buildfeatures.buildconfig=true
android.nonTransitiveRClass=false android.nonTransitiveRClass=false
android.nonFinalResIds=false android.nonFinalResIds=false

View File

@ -1,7 +1,7 @@
[versions] [versions]
revanced-patcher = "19.3.1" # TODO: Update to non-dev revanced-patcher = "21.0.0"
revanced-library = "2.2.1" revanced-library = "3.0.2"
desugar_jdk_libs = "2.1.2" desugar_jdk_libs = "2.1.3"
[libraries] [libraries]
revanced-patcher = { module = "app.revanced:revanced-patcher", version.ref = "revanced-patcher" } revanced-patcher = { module = "app.revanced:revanced-patcher", version.ref = "revanced-patcher" }

View File

@ -17,7 +17,7 @@ pluginManagement {
plugins { plugins {
id("dev.flutter.flutter-plugin-loader") version "1.0.0" id("dev.flutter.flutter-plugin-loader") version "1.0.0"
id("com.android.application") version "8.7.0" apply false id("com.android.application") version "8.7.2" apply false
id("org.jetbrains.kotlin.android") version "2.0.20" apply false id("org.jetbrains.kotlin.android") version "2.0.20" apply false
} }

View File

@ -158,20 +158,18 @@
"languageLabel": "Language", "languageLabel": "Language",
"languageUpdated": "Language updated", "languageUpdated": "Language updated",
"sourcesLabel": "Alternative sources", "sourcesLabel": "Alternative sources",
"sourcesLabelHint": "Configure the alternative sources for ReVanced Patches and ReVanced Integrations", "sourcesLabelHint": "Configure the alternative sources for ReVanced Patches",
"sourcesIntegrationsLabel": "Integrations source",
"useAlternativeSources": "Use alternative sources", "useAlternativeSources": "Use alternative sources",
"useAlternativeSourcesHint": "Use alternative sources for ReVanced Patches and ReVanced Integrations instead of the API", "useAlternativeSourcesHint": "Use alternative sources for ReVanced Patches instead of the API",
"sourcesResetDialogTitle": "Reset", "sourcesResetDialogTitle": "Reset",
"sourcesResetDialogText": "Are you sure you want to reset your sources to their default values?", "sourcesResetDialogText": "Are you sure you want to reset your sources to their default values?",
"apiURLResetDialogText": "Are you sure you want to reset your API URL to its default value?", "apiURLResetDialogText": "Are you sure you want to reset your API URL to its default value?",
"sourcesUpdateNote": "Note: This will automatically download ReVanced Patches and ReVanced Integrations from the alternative sources.\n\nThis will connect you to the alternative source.", "sourcesUpdateNote": "Note: This will automatically download ReVanced Patches from the alternative sources.\n\nThis will connect you to the alternative source.",
"apiURLLabel": "API URL", "apiURLLabel": "API URL",
"apiURLHint": "Configure the API URL of ReVanced Manager", "apiURLHint": "Configure the API URL of ReVanced Manager",
"selectApiURL": "API URL", "selectApiURL": "API URL",
"orgPatchesLabel": "Patches organization", "orgPatchesLabel": "Patches organization",
"sourcesPatchesLabel": "Patches source", "sourcesPatchesLabel": "Patches source",
"orgIntegrationsLabel": "Integrations organization",
"contributorsLabel": "Contributors", "contributorsLabel": "Contributors",
"contributorsHint": "A list of contributors of ReVanced", "contributorsHint": "A list of contributors of ReVanced",
"logsLabel": "Share logs", "logsLabel": "Share logs",
@ -199,6 +197,12 @@
"deleteTempDirLabel": "Delete temporary files", "deleteTempDirLabel": "Delete temporary files",
"deleteTempDirHint": "Delete unused temporary files", "deleteTempDirHint": "Delete unused temporary files",
"deletedTempDir": "Temporary files deleted", "deletedTempDir": "Temporary files deleted",
"exportSettingsLabel": "Export settings",
"exportSettingsHint": "Export settings to a JSON file",
"exportedSettings": "Settings exported",
"importSettingsLabel": "Import settings",
"importSettingsHint": "Import settings from a JSON file",
"importedSettings": "Settings imported",
"exportPatchesLabel": "Export patch selection", "exportPatchesLabel": "Export patch selection",
"exportPatchesHint": "Export patch selection to a JSON file", "exportPatchesHint": "Export patch selection to a JSON file",
"exportedPatches": "Patch selection exported", "exportedPatches": "Patch selection exported",

View File

@ -158,20 +158,18 @@
"languageLabel": "اللغة", "languageLabel": "اللغة",
"languageUpdated": "تم تحديث اللغة", "languageUpdated": "تم تحديث اللغة",
"sourcesLabel": "مصادر بديلة", "sourcesLabel": "مصادر بديلة",
"sourcesLabelHint": "قم بتكوين المصادر البديلة لتعديلات ReVanced وتكاملات ReVanced", "sourcesLabelHint": "تكوين المصادر البديلة لتعديلات ReVanced",
"sourcesIntegrationsLabel": "مصدر الـدمج",
"useAlternativeSources": "استخدام مصادر بديلة", "useAlternativeSources": "استخدام مصادر بديلة",
"useAlternativeSourcesHint": "استخدم مصادر بديلة لتعديلات ReVanced وعمليات التكامل ReVanced بدلاً من API", "useAlternativeSourcesHint": "استخدام مصادر بديلة لتعديلات ReVanced بدلاً من واجهة برمجة التطبيقات",
"sourcesResetDialogTitle": "إعادة التعيين", "sourcesResetDialogTitle": "إعادة التعيين",
"sourcesResetDialogText": "هل أنت متأكد من أنك تريد إعادة تعيين المصادر الخاصة بك إلى قيمها الافتراضية؟", "sourcesResetDialogText": "هل أنت متأكد من أنك تريد إعادة تعيين المصادر الخاصة بك إلى قيمها الافتراضية؟",
"apiURLResetDialogText": "هل أنت متأكد من أنك تريد إعادة تعيين رابط API الخاص بك إلى قيمته الافتراضية؟", "apiURLResetDialogText": "هل أنت متأكد من أنك تريد إعادة تعيين رابط API الخاص بك إلى قيمته الافتراضية؟",
"sourcesUpdateNote": "ملاحظة: سيؤدي هذا إلى تنزيل تعديلات ReVanced وتكاملات ReVanced تلقائيًا من المصادر البديلة.\n\nسيؤدي هذا إلى توصيلك بالمصدر البديل.", "sourcesUpdateNote": "ملاحظة: سيؤدي هذا إلى تنزيل تعديلات ReVanced تلقائيًا من المصادر البديلة.\n\nسيؤدي هذا إلى توصيلك بالمصدر البديل.",
"apiURLLabel": "رابط API", "apiURLLabel": "رابط API",
"apiURLHint": "تكوين عنوان URL لواجهة برمجة التطبيقات الخاصة بـ ReVanced Manager", "apiURLHint": "تكوين عنوان URL لواجهة برمجة التطبيقات الخاصة بـ ReVanced Manager",
"selectApiURL": "رابط API", "selectApiURL": "رابط API",
"orgPatchesLabel": "تنظيم التعديلات", "orgPatchesLabel": "تنظيم التعديلات",
"sourcesPatchesLabel": "مصدر التعديلات", "sourcesPatchesLabel": "مصدر التعديلات",
"orgIntegrationsLabel": "تنظيم الدمج",
"contributorsLabel": "المساهمون", "contributorsLabel": "المساهمون",
"contributorsHint": "قائمة المساهمين في ReVanced", "contributorsHint": "قائمة المساهمين في ReVanced",
"logsLabel": "مشاركة السجلات", "logsLabel": "مشاركة السجلات",
@ -199,6 +197,12 @@
"deleteTempDirLabel": "حذف الملفات المؤقتة", "deleteTempDirLabel": "حذف الملفات المؤقتة",
"deleteTempDirHint": "حذف الملفات المؤقتة غير المستخدمة", "deleteTempDirHint": "حذف الملفات المؤقتة غير المستخدمة",
"deletedTempDir": "تم حذف الملفات المؤقتة", "deletedTempDir": "تم حذف الملفات المؤقتة",
"exportSettingsLabel": "تصدير الإعدادات",
"exportSettingsHint": "تصدير الإعدادات إلى ملف JSON",
"exportedSettings": "تم تصدير الإعدادات",
"importSettingsLabel": "استيراد الإعدادات",
"importSettingsHint": "استيراد الإعدادات من ملف JSON",
"importedSettings": "تم استيراد الإعدادات",
"exportPatchesLabel": "تصدير التعديل المحدد", "exportPatchesLabel": "تصدير التعديل المحدد",
"exportPatchesHint": "تصدير التعديل المحدد إلى مِلَفّ JSON", "exportPatchesHint": "تصدير التعديل المحدد إلى مِلَفّ JSON",
"exportedPatches": "تم تصدير التعديل المحدد", "exportedPatches": "تم تصدير التعديل المحدد",

View File

@ -158,20 +158,18 @@
"languageLabel": "Dil", "languageLabel": "Dil",
"languageUpdated": "Dil yeniləndi", "languageUpdated": "Dil yeniləndi",
"sourcesLabel": "Seçmə mənbələr", "sourcesLabel": "Seçmə mənbələr",
"sourcesLabelHint": "ReVanced Yamaqları və ReVanced İnteqrasiyaları üçün seçmə mənbələri konfiqurasiya edin", "sourcesLabelHint": "ReVanced Patches üçün alternativ mənbələri konfiqurasiya et",
"sourcesIntegrationsLabel": "İnteqrasiya mənbəyi",
"useAlternativeSources": "Seçmə mənbələri istifadə et", "useAlternativeSources": "Seçmə mənbələri istifadə et",
"useAlternativeSourcesHint": "ReVanced Yamaqları və ReVanced İnteqrasiyaları üçün API əvəzinə seçmə mənbələri istifadə et", "useAlternativeSourcesHint": "API əvəzinə ReVanced Patches üçün alternativ mənbələr istifadə et",
"sourcesResetDialogTitle": "Sıfırla", "sourcesResetDialogTitle": "Sıfırla",
"sourcesResetDialogText": "Mənbələrinizi ilkin dəyərlərinə sıfırlamaq istədiyinizə əminsiniz?", "sourcesResetDialogText": "Mənbələrinizi ilkin dəyərlərinə sıfırlamaq istədiyinizə əminsiniz?",
"apiURLResetDialogText": "API URL-nizi ilkin dəyərinə sıfırlamaq istədiyinizə əminsiz?", "apiURLResetDialogText": "API URL-nizi ilkin dəyərinə sıfırlamaq istədiyinizə əminsiz?",
"sourcesUpdateNote": "Qeyd: Bu, ReVanced Yamaqları və ReVanced İnteqrasiyalarını seçmə mənbələrdən avtomatik olaraq yükləyəcək.\n\nBu, sizi seçmə mənbəyə yönləndirəcək.", "sourcesUpdateNote": "Qeyd: Bu, ReVanced Yamaqlarını birbaşa seçmə mənbələrdən yükləyəcək.\n\nBu sizi alternativ mənbəyə bağlayacaq.",
"apiURLLabel": "API URL", "apiURLLabel": "API URL",
"apiURLHint": "\"ReVacned Manager\"in API URL-sini konfiqurasiya et", "apiURLHint": "\"ReVacned Manager\"in API URL-sini konfiqurasiya et",
"selectApiURL": "API URL", "selectApiURL": "API URL",
"orgPatchesLabel": "Yamaq qurumu", "orgPatchesLabel": "Yamaq qurumu",
"sourcesPatchesLabel": "Yamaqların mənbəyi", "sourcesPatchesLabel": "Yamaqların mənbəyi",
"orgIntegrationsLabel": "İnteqrasiya qurumu",
"contributorsLabel": "Töhfə verənlər", "contributorsLabel": "Töhfə verənlər",
"contributorsHint": "ReVanced-ə töhfə verənlərin siyahısı", "contributorsHint": "ReVanced-ə töhfə verənlərin siyahısı",
"logsLabel": "Jurnalları paylaş", "logsLabel": "Jurnalları paylaş",
@ -199,6 +197,12 @@
"deleteTempDirLabel": "Müvəqqəti faylları sil", "deleteTempDirLabel": "Müvəqqəti faylları sil",
"deleteTempDirHint": "İstifadəsiz, müvəqqəti faylları sil", "deleteTempDirHint": "İstifadəsiz, müvəqqəti faylları sil",
"deletedTempDir": "Müvəqqəti fayllar silindi", "deletedTempDir": "Müvəqqəti fayllar silindi",
"exportSettingsLabel": "Tənzimləmələri köçür",
"exportSettingsHint": "Tənzimləmələri JSON faylına köçür",
"exportedSettings": "Tənzimləmələr ixrac edildi",
"importSettingsLabel": "Tənzimləmələri idxal et",
"importSettingsHint": "Tənzimləmələri JSON faylından idxal et",
"importedSettings": "Tənzimləmələr idxal edildi",
"exportPatchesLabel": "Yamaq seçimini ixrac et", "exportPatchesLabel": "Yamaq seçimini ixrac et",
"exportPatchesHint": "Yamaq seçimini JSON faylına köçür", "exportPatchesHint": "Yamaq seçimini JSON faylına köçür",
"exportedPatches": "Yamaq seçimi ixrac edildi", "exportedPatches": "Yamaq seçimi ixrac edildi",

View File

@ -156,20 +156,15 @@
"languageLabel": "Мова", "languageLabel": "Мова",
"languageUpdated": "Мова абноўлена", "languageUpdated": "Мова абноўлена",
"sourcesLabel": "Альтэрнатыўныя крыніцы", "sourcesLabel": "Альтэрнатыўныя крыніцы",
"sourcesLabelHint": "Сканфігурыраваць альтэрнатыўныя крыніцы для ReVanced Patches і ReVanced Integrations",
"sourcesIntegrationsLabel": "Крыніца інтэграцый",
"useAlternativeSources": "Выкарыстоўваць альтэрнатыўныя крыніцы", "useAlternativeSources": "Выкарыстоўваць альтэрнатыўныя крыніцы",
"useAlternativeSourcesHint": "Выкарыстоўваць альтэрнатыўныя крыніцы для ReVanced Patches і ReVanced Integrations замест API",
"sourcesResetDialogTitle": "Скінуць", "sourcesResetDialogTitle": "Скінуць",
"sourcesResetDialogText": "Вы сапраўды хочаце скінуць свае крыніцы да іх прадвызначаных значэнняў?", "sourcesResetDialogText": "Вы сапраўды хочаце скінуць свае крыніцы да іх прадвызначаных значэнняў?",
"apiURLResetDialogText": "Вы сапраўды хочаце скінуць свае API URL да іх прадвызначаных значэнняў?", "apiURLResetDialogText": "Вы сапраўды хочаце скінуць свае API URL да іх прадвызначаных значэнняў?",
"sourcesUpdateNote": "Нататка: Гэта аўтаматычна спампуе ReVanced Patches і ReVanced Integrations з альтэрнатыўных крыніц.\n\nГэта падключыць вас да альтэрнатыўнай крыніцы.",
"apiURLLabel": "API URL", "apiURLLabel": "API URL",
"apiURLHint": "Сканфігурыруйце URL API для ReVanced Manager", "apiURLHint": "Сканфігурыруйце URL API для ReVanced Manager",
"selectApiURL": "URL-адрас API", "selectApiURL": "URL-адрас API",
"orgPatchesLabel": "Арганізацыя выпраўленняў", "orgPatchesLabel": "Арганізацыя выпраўленняў",
"sourcesPatchesLabel": "Крыніца выпраўленняў", "sourcesPatchesLabel": "Крыніца выпраўленняў",
"orgIntegrationsLabel": "Арганізацыя інтэграцый",
"contributorsLabel": "Удзельнікі", "contributorsLabel": "Удзельнікі",
"contributorsHint": "Спіс усіх удзельнікаў праекта ReVanced", "contributorsHint": "Спіс усіх удзельнікаў праекта ReVanced",
"logsLabel": "Абагуліць журнал", "logsLabel": "Абагуліць журнал",

View File

@ -158,20 +158,18 @@
"languageLabel": "Език", "languageLabel": "Език",
"languageUpdated": "Езикът е обновен", "languageUpdated": "Езикът е обновен",
"sourcesLabel": "Алтернативни източници", "sourcesLabel": "Алтернативни източници",
"sourcesLabelHint": "Конфигурирайте алтернативните източници за ReVanced Patches и ReVanced Integrations", "sourcesLabelHint": "Конфигурирайте алтернативните източници за ReVanced Patches",
"sourcesIntegrationsLabel": "Източник на интеграциите",
"useAlternativeSources": "Използвайте алтернативни източници", "useAlternativeSources": "Използвайте алтернативни източници",
"useAlternativeSourcesHint": "Използвайте алтернативни източници за ReVanced Patches и ReVanced Integrations вместо тези от ППИ-я (API)", "useAlternativeSourcesHint": "Използвайте алтернативни източници за ReVanced Patches вместо API",
"sourcesResetDialogTitle": "Нулиране", "sourcesResetDialogTitle": "Нулиране",
"sourcesResetDialogText": "Искате ли да възстановите източниците до стойностите им по подразбиране?", "sourcesResetDialogText": "Искате ли да възстановите източниците до стойностите им по подразбиране?",
"apiURLResetDialogText": "Сигурни ли сте, че искате да възстановите адреса на ППИ (API) до стойността му по подразбиране?", "apiURLResetDialogText": "Сигурни ли сте, че искате да възстановите адреса на ППИ (API) до стойността му по подразбиране?",
"sourcesUpdateNote": "Забележка: Това автоматично ще изтегли ReVanced Patches и ReVanced Integrations от алтернативните източници.\n\nТова ще ви свърже с алтернативния източник.", "sourcesUpdateNote": "Забележка: Това автоматично ще изтегли ReVanced Patches от алтернативните източници.\n\nТова ще ви свърже с алтернативния източник.",
"apiURLLabel": "API линк", "apiURLLabel": "API линк",
"apiURLHint": "Конфигуриране на URL адреса на ППИ (API) на ReVanced Manager", "apiURLHint": "Конфигуриране на URL адреса на ППИ (API) на ReVanced Manager",
"selectApiURL": "API линк", "selectApiURL": "API линк",
"orgPatchesLabel": "Организация на модификациите", "orgPatchesLabel": "Организация на модификациите",
"sourcesPatchesLabel": "Източник на модификациите", "sourcesPatchesLabel": "Източник на модификациите",
"orgIntegrationsLabel": "Организация на интеграциите",
"contributorsLabel": "Хора, които допринесоха", "contributorsLabel": "Хора, които допринесоха",
"contributorsHint": "Списък с хората, допринесли за ReVanced", "contributorsHint": "Списък с хората, допринесли за ReVanced",
"logsLabel": "Сподели дневника", "logsLabel": "Сподели дневника",
@ -199,6 +197,12 @@
"deleteTempDirLabel": "Изтриване на временни файлове", "deleteTempDirLabel": "Изтриване на временни файлове",
"deleteTempDirHint": "Изтриване на неизползвани временни файлове", "deleteTempDirHint": "Изтриване на неизползвани временни файлове",
"deletedTempDir": "Временните файлове са изтрити", "deletedTempDir": "Временните файлове са изтрити",
"exportSettingsLabel": "Експорт на настройките",
"exportSettingsHint": "Експорт на настройки в JSON файл",
"exportedSettings": "Настройките са съхранени",
"importSettingsLabel": "Внасяне на настройки",
"importSettingsHint": "Внасяне на настройки в JSON файл",
"importedSettings": "Настройките са импортирани",
"exportPatchesLabel": "Експортиране на избраните актуализации", "exportPatchesLabel": "Експортиране на избраните актуализации",
"exportPatchesHint": "Експортиране на избраните модификации в JSON файл", "exportPatchesHint": "Експортиране на избраните модификации в JSON файл",
"exportedPatches": "Избраните модификации са експортирани", "exportedPatches": "Избраните модификации са експортирани",

View File

@ -156,20 +156,15 @@
"languageLabel": "ভাষা", "languageLabel": "ভাষা",
"languageUpdated": "ভাষা হালনাগাদ করা হয়েছে", "languageUpdated": "ভাষা হালনাগাদ করা হয়েছে",
"sourcesLabel": "বিকল্প উৎস", "sourcesLabel": "বিকল্প উৎস",
"sourcesLabelHint": "ReVanced প্যাচ ও ReVanced ইন্ট্রিগ্রেশনের জন্য বিকল্প উৎস কনফিগার করুন",
"sourcesIntegrationsLabel": "ইন্ট্রিগেশনের উৎস",
"useAlternativeSources": "বিকল্প উৎস ব্যবহার করুন", "useAlternativeSources": "বিকল্প উৎস ব্যবহার করুন",
"useAlternativeSourcesHint": "ReVanced প্যাচ ও ReVanced ইন্ট্রিগ্রেশনের জন্য API এর পরিবর্তে বিকল্প উৎস ব্যবহার করুন",
"sourcesResetDialogTitle": "পুনরায় সেট করুন", "sourcesResetDialogTitle": "পুনরায় সেট করুন",
"sourcesResetDialogText": "আপনি কি নিশ্চিতভাবে আপনার উৎসগুলোকে পূর্বনির্ধারিত উৎসে ফিরিয়ে নিতে চান?", "sourcesResetDialogText": "আপনি কি নিশ্চিতভাবে আপনার উৎসগুলোকে পূর্বনির্ধারিত উৎসে ফিরিয়ে নিতে চান?",
"apiURLResetDialogText": "আপনি কি নিশ্চিতভাবে আপনার API URL কে তার মূল ভ্যালুতে পুনরায় সেট করতে চান?", "apiURLResetDialogText": "আপনি কি নিশ্চিতভাবে আপনার API URL কে তার মূল ভ্যালুতে পুনরায় সেট করতে চান?",
"sourcesUpdateNote": "বি:দ্র: এটি স্বয়ংক্রিয়ভাবে বিকল্প উৎস থেকে ReVanced প্যাচ ও ReVanced ইন্ট্রিগ্রেশন ডাউনলোড করবে।\n\nএটি আপনাকে বিকল্প উৎসের সাথে সংযুক্ত করবে।",
"apiURLLabel": "API URL", "apiURLLabel": "API URL",
"apiURLHint": "ReVanced Manager এর API URL কনফিগার করুন", "apiURLHint": "ReVanced Manager এর API URL কনফিগার করুন",
"selectApiURL": "API URL", "selectApiURL": "API URL",
"orgPatchesLabel": "প্যাচ এর উদ্ভাবক", "orgPatchesLabel": "প্যাচ এর উদ্ভাবক",
"sourcesPatchesLabel": "প্যাচ এর উৎস", "sourcesPatchesLabel": "প্যাচ এর উৎস",
"orgIntegrationsLabel": "ইন্ট্রিগেশনের উদ্ভাবক",
"contributorsLabel": "অবদানকারীগণ", "contributorsLabel": "অবদানকারীগণ",
"contributorsHint": "ReVanced-এ অবদানকারীদের তালিকা", "contributorsHint": "ReVanced-এ অবদানকারীদের তালিকা",
"logsLabel": "লগ শেয়ার করুন", "logsLabel": "লগ শেয়ার করুন",

View File

@ -78,13 +78,11 @@
"exportSectionTitle": "Importar i exportar", "exportSectionTitle": "Importar i exportar",
"dynamicThemeHint": "Gaudeixi d'una experiència més acord al seu dispositiu", "dynamicThemeHint": "Gaudeixi d'una experiència més acord al seu dispositiu",
"languageLabel": "Llengua", "languageLabel": "Llengua",
"sourcesIntegrationsLabel": "Font de les integracions",
"sourcesResetDialogTitle": "Restablir", "sourcesResetDialogTitle": "Restablir",
"apiURLLabel": "Direcció URL de la API", "apiURLLabel": "Direcció URL de la API",
"selectApiURL": "URL de l'API", "selectApiURL": "URL de l'API",
"orgPatchesLabel": "Organització dels pedaços", "orgPatchesLabel": "Organització dels pedaços",
"sourcesPatchesLabel": "Font dels pedaços", "sourcesPatchesLabel": "Font dels pedaços",
"orgIntegrationsLabel": "Organització de les integracions",
"contributorsLabel": "Col·laboradors", "contributorsLabel": "Col·laboradors",
"contributorsHint": "Una llista de col·laboradors de ReVanced", "contributorsHint": "Una llista de col·laboradors de ReVanced",
"aboutLabel": "Quant a", "aboutLabel": "Quant a",

View File

@ -158,20 +158,18 @@
"languageLabel": "Jazyk", "languageLabel": "Jazyk",
"languageUpdated": "Jazyk aktualizován", "languageUpdated": "Jazyk aktualizován",
"sourcesLabel": "Alternativní zdroje", "sourcesLabel": "Alternativní zdroje",
"sourcesLabelHint": "Konfigurace alternativních zdrojů pro vylepšené úpravy a zdokonalené integrace", "sourcesLabelHint": "Konfigurace alternativních zdrojů pro vylepšené úpravy",
"sourcesIntegrationsLabel": "Zdroj integrace",
"useAlternativeSources": "Použít alternativní zdroje", "useAlternativeSources": "Použít alternativní zdroje",
"useAlternativeSourcesHint": "Použít alternativní zdroje pro vylepšené úpravy a vylepšené integrace namísto API", "useAlternativeSourcesHint": "Použít alternativní zdroje pro vylepšené úpravy namísto API",
"sourcesResetDialogTitle": "Obnovit", "sourcesResetDialogTitle": "Obnovit",
"sourcesResetDialogText": "Jste si jisti, že chcete obnovit zdroje na jejich výchozí hodnoty?", "sourcesResetDialogText": "Jste si jisti, že chcete obnovit zdroje na jejich výchozí hodnoty?",
"apiURLResetDialogText": "Jste si jisti, že chcete resetovat URL API na výchozí hodnotu?", "apiURLResetDialogText": "Jste si jisti, že chcete resetovat URL API na výchozí hodnotu?",
"sourcesUpdateNote": "Poznámka: Toto automaticky stáhne reVanced Patches and ReVanced Integrations z alternativních zdrojů.\n\nToto vás připojí k alternativnímu zdroji.", "sourcesUpdateNote": "Poznámka: Toto automaticky stáhne reVanced Patches z alternativních zdrojů.\n\nToto vás připojí k alternativnímu zdroji.",
"apiURLLabel": "API URL", "apiURLLabel": "API URL",
"apiURLHint": "Konfigurace URL API ReVanced Manager", "apiURLHint": "Konfigurace URL API ReVanced Manager",
"selectApiURL": "API URL", "selectApiURL": "API URL",
"orgPatchesLabel": "Organizace patchů", "orgPatchesLabel": "Organizace patchů",
"sourcesPatchesLabel": "Zdroj patchů", "sourcesPatchesLabel": "Zdroj patchů",
"orgIntegrationsLabel": "Autor integrace",
"contributorsLabel": "Přispěvatelé", "contributorsLabel": "Přispěvatelé",
"contributorsHint": "Seznam přispěvatelů ReVanced", "contributorsHint": "Seznam přispěvatelů ReVanced",
"logsLabel": "Sdílet záznamy", "logsLabel": "Sdílet záznamy",
@ -199,6 +197,12 @@
"deleteTempDirLabel": "Odstranit dočasné soubory", "deleteTempDirLabel": "Odstranit dočasné soubory",
"deleteTempDirHint": "Odstranit nepoužívané dočasné soubory", "deleteTempDirHint": "Odstranit nepoužívané dočasné soubory",
"deletedTempDir": "Dočasné soubory byly smazány", "deletedTempDir": "Dočasné soubory byly smazány",
"exportSettingsLabel": "Exportovat nastavení",
"exportSettingsHint": "Exportovat nastavení do souboru JSON",
"exportedSettings": "Nastavení exportováno",
"importSettingsLabel": "Importovat nastavení",
"importSettingsHint": "Importovat nastavení ze souboru JSON",
"importedSettings": "Nastavení importováno",
"exportPatchesLabel": "Exportovat záplatu", "exportPatchesLabel": "Exportovat záplatu",
"exportPatchesHint": "Exportovat výběr patch do souboru JSON", "exportPatchesHint": "Exportovat výběr patch do souboru JSON",
"exportedPatches": "Výběr patch exportován", "exportedPatches": "Výběr patch exportován",

View File

@ -158,20 +158,18 @@
"languageLabel": "Sprog", "languageLabel": "Sprog",
"languageUpdated": "Sprog opdateret", "languageUpdated": "Sprog opdateret",
"sourcesLabel": "Alternative kilder", "sourcesLabel": "Alternative kilder",
"sourcesLabelHint": "Konfigurer de alternative kilder til ReVanced Patches og ReVanced Integrations", "sourcesLabelHint": "Indstil alternative kilder for ReVanced Patches",
"sourcesIntegrationsLabel": "Kilde til Integrationer",
"useAlternativeSources": "Brug alternative kilder", "useAlternativeSources": "Brug alternative kilder",
"useAlternativeSourcesHint": "Brug alternative kilder til ReVanced Patches og ReVanced Integrations i stedet for API'en", "useAlternativeSourcesHint": "Brug alternative kilder til ReVanced Patches i stedet for API",
"sourcesResetDialogTitle": "Nulstil", "sourcesResetDialogTitle": "Nulstil",
"sourcesResetDialogText": "Er du sikker på, at du vil nulstille dine kilder til deres standardværdier?", "sourcesResetDialogText": "Er du sikker på, at du vil nulstille dine kilder til deres standardværdier?",
"apiURLResetDialogText": "Er du sikker på, at du vil nulstille API URL til dens standardværdi?", "apiURLResetDialogText": "Er du sikker på, at du vil nulstille API URL til dens standardværdi?",
"sourcesUpdateNote": "Bemærk: Dette vil automatisk downloade ReVanced Patches og ReVanced Integrations fra de alternative kilder.\n\nDette vil forbinde dig til den alternative kilde.", "sourcesUpdateNote": "Bemærk: Dette vil automatisk hente ReVanced Patches fra de alternative kilder.\n\nDette vil forbinde dig til den alternative kilde.",
"apiURLLabel": "API URL", "apiURLLabel": "API URL",
"apiURLHint": "Konfigurer API-URL'en til ReVanced Manager", "apiURLHint": "Konfigurer API-URL'en til ReVanced Manager",
"selectApiURL": "API URL", "selectApiURL": "API URL",
"orgPatchesLabel": "Organisation for Patches", "orgPatchesLabel": "Organisation for Patches",
"sourcesPatchesLabel": "Kilde til Patches", "sourcesPatchesLabel": "Kilde til Patches",
"orgIntegrationsLabel": "Organisation for Integrationer",
"contributorsLabel": "Medvirkende", "contributorsLabel": "Medvirkende",
"contributorsHint": "En liste over medvirkende til ReVanced", "contributorsHint": "En liste over medvirkende til ReVanced",
"logsLabel": "Del logs", "logsLabel": "Del logs",
@ -199,6 +197,12 @@
"deleteTempDirLabel": "Slet midlertidige filer", "deleteTempDirLabel": "Slet midlertidige filer",
"deleteTempDirHint": "Slet ubrugte midlertidige filer", "deleteTempDirHint": "Slet ubrugte midlertidige filer",
"deletedTempDir": "Midlertidige filer slettet", "deletedTempDir": "Midlertidige filer slettet",
"exportSettingsLabel": "Eksporter indstillinger",
"exportSettingsHint": "Eksporter indstillinger til en JSON-fil",
"exportedSettings": "Indstillinger eksporteret",
"importSettingsLabel": "Importer indstillinger",
"importSettingsHint": "Importer indstillinger fra en JSON-fil",
"importedSettings": "Indstillinger importeret",
"exportPatchesLabel": "Eksportér patch valg", "exportPatchesLabel": "Eksportér patch valg",
"exportPatchesHint": "Eksportér patch valg til en JSON- fil", "exportPatchesHint": "Eksportér patch valg til en JSON- fil",
"exportedPatches": "Patch valg eksporteret", "exportedPatches": "Patch valg eksporteret",

View File

@ -158,20 +158,18 @@
"languageLabel": "Sprache", "languageLabel": "Sprache",
"languageUpdated": "Sprache aktualisiert", "languageUpdated": "Sprache aktualisiert",
"sourcesLabel": "Alternative Quellen", "sourcesLabel": "Alternative Quellen",
"sourcesLabelHint": "Konfiguriere die alternativen Quellen für ReVanced Patches und ReVanced Integrations", "sourcesLabelHint": "Konfigurieren Sie die alternativen Quellen für überarbeitete Patches",
"sourcesIntegrationsLabel": "Quelle für Integrationen",
"useAlternativeSources": "Benutze alternative Quellen", "useAlternativeSources": "Benutze alternative Quellen",
"useAlternativeSourcesHint": "Verwenden alternative Quellen für ReVanced Patches und ReVanced Integrationen anstelle der API", "useAlternativeSourcesHint": "Verwende alternative Quellen für überarbeitete Patches anstelle der API",
"sourcesResetDialogTitle": "Zurücksetzen", "sourcesResetDialogTitle": "Zurücksetzen",
"sourcesResetDialogText": "Bist du dir sicher, dass du die benutzerdefinierten Quellen auf ihre Standardwerte zurücksetzen möchtest?", "sourcesResetDialogText": "Bist du dir sicher, dass du die benutzerdefinierten Quellen auf ihre Standardwerte zurücksetzen möchtest?",
"apiURLResetDialogText": "Bist du dir sicher, dass du die API-URL auf ihren Standardwert zurücksetzen möchtest?", "apiURLResetDialogText": "Bist du dir sicher, dass du die API-URL auf ihren Standardwert zurücksetzen möchtest?",
"sourcesUpdateNote": "Hinweis: Dadurch werden ReVanced Patches und ReVanced Integrationen automatisch von der alternativen Quelle heruntergeladen.\n\nDies wird dich mit der alternativen Quelle verbinden.", "sourcesUpdateNote": "Hinweis: Dies wird automatisch ReVanced Patches von den alternativen Quellen herunterladen.\n\nDies verbindet Sie mit der alternativen Quelle.",
"apiURLLabel": "API-URL", "apiURLLabel": "API-URL",
"apiURLHint": "Konfigurieren die API URL von ReVanced Manager", "apiURLHint": "Konfigurieren die API URL von ReVanced Manager",
"selectApiURL": "API-URL", "selectApiURL": "API-URL",
"orgPatchesLabel": "Patches Organisation", "orgPatchesLabel": "Patches Organisation",
"sourcesPatchesLabel": "Patches Quelle", "sourcesPatchesLabel": "Patches Quelle",
"orgIntegrationsLabel": "Integrationen Organisation",
"contributorsLabel": "Mitwirkende", "contributorsLabel": "Mitwirkende",
"contributorsHint": "Eine Liste der Mitwirkenden von ReVanced", "contributorsHint": "Eine Liste der Mitwirkenden von ReVanced",
"logsLabel": "Logs teilen", "logsLabel": "Logs teilen",
@ -199,6 +197,12 @@
"deleteTempDirLabel": "Lösche temporäre Dateien", "deleteTempDirLabel": "Lösche temporäre Dateien",
"deleteTempDirHint": "Unbenutzte temporäre Dateien löschen", "deleteTempDirHint": "Unbenutzte temporäre Dateien löschen",
"deletedTempDir": "Temporäre Dateien wurden gelöscht", "deletedTempDir": "Temporäre Dateien wurden gelöscht",
"exportSettingsLabel": "Export-Einstellungen",
"exportSettingsHint": "Einstellungen in eine JSON-Datei exportieren",
"exportedSettings": "Einstellungen exportiert",
"importSettingsLabel": "Import-Einstellungen",
"importSettingsHint": "Einstellungen aus einer JSON-Datei importieren",
"importedSettings": "Einstellungen importiert",
"exportPatchesLabel": "Patchauswahl exportieren", "exportPatchesLabel": "Patchauswahl exportieren",
"exportPatchesHint": "Patch-Auswahl in eine JSON-Datei exportieren", "exportPatchesHint": "Patch-Auswahl in eine JSON-Datei exportieren",
"exportedPatches": "Patch-Auswahl exportiert", "exportedPatches": "Patch-Auswahl exportiert",

View File

@ -158,20 +158,18 @@
"languageLabel": "Γλώσσα", "languageLabel": "Γλώσσα",
"languageUpdated": "Η γλώσσα ενημερώθηκε", "languageUpdated": "Η γλώσσα ενημερώθηκε",
"sourcesLabel": "Εναλλακτικές πηγές", "sourcesLabel": "Εναλλακτικές πηγές",
"sourcesLabelHint": "Ρυθμίστε τις εναλλακτικές πηγές για τις τροποποιήσεις ReVanced και τις ενσωματώσεις ReVanced", "sourcesLabelHint": "Ρυθμίστε τις εναλλακτικές πηγές για τις τροποποιήσεις ReVanced",
"sourcesIntegrationsLabel": "Πηγή ενσωματώσεων",
"useAlternativeSources": "Χρήση εναλλακτικών πηγών", "useAlternativeSources": "Χρήση εναλλακτικών πηγών",
"useAlternativeSourcesHint": "Χρήση εναλλακτικών πηγών για τις τροποποιήσεις και τις ενσωματώσεις ReVanced αντί του API", "useAlternativeSourcesHint": "Χρήση εναλλακτικών πηγών για τις τροποποιήσεις ReVanced αντί του API",
"sourcesResetDialogTitle": "Επαναφορά", "sourcesResetDialogTitle": "Επαναφορά",
"sourcesResetDialogText": "Είστε βέβαιοι ότι θέλετε να επαναφέρετε τις πηγές σας στις προεπιλεγμένες τιμές τους;", "sourcesResetDialogText": "Είστε βέβαιοι ότι θέλετε να επαναφέρετε τις πηγές σας στις προεπιλεγμένες τιμές τους;",
"apiURLResetDialogText": "Είστε βέβαιοι ότι θέλετε να επαναφέρετε την API URL σας στην προεπιλεγμένη τιμή της;", "apiURLResetDialogText": "Είστε βέβαιοι ότι θέλετε να επαναφέρετε την API URL σας στην προεπιλεγμένη τιμή της;",
"sourcesUpdateNote": "Σημείωση: Θα γίνεται αυτόματη λήψη των τροποποιήσεων και των ενσωματώσεων ReVanced από τις εναλλακτικές πηγές.\n\nΟπότε θα συνδέεστε με τις εναλλακτικές πηγές.", "sourcesUpdateNote": "Σημείωση: Θα γίνεται αυτόματη λήψη των τροποποιήσεων ReVanced από τις εναλλακτικές πηγές.\n\nΟπότε θα συνδέεστε με τις εναλλακτικές πηγές.",
"apiURLLabel": "API URL", "apiURLLabel": "API URL",
"apiURLHint": "Ρύθμιση διεύθυνσης URL του API του ReVanced Manager", "apiURLHint": "Ρύθμιση διεύθυνσης URL του API του ReVanced Manager",
"selectApiURL": "API URL", "selectApiURL": "API URL",
"orgPatchesLabel": "Οργάνωση τροποποιήσεων", "orgPatchesLabel": "Οργάνωση τροποποιήσεων",
"sourcesPatchesLabel": "Πηγή τροποποιήσεων", "sourcesPatchesLabel": "Πηγή τροποποιήσεων",
"orgIntegrationsLabel": "Οργάνωση ενσωματώσεων",
"contributorsLabel": "Συνεισφέροντες", "contributorsLabel": "Συνεισφέροντες",
"contributorsHint": "Λίστα με όσους έχουν συμβάλει στο ReVanced", "contributorsHint": "Λίστα με όσους έχουν συμβάλει στο ReVanced",
"logsLabel": "Κοινοποίηση αρχείων καταγραφής", "logsLabel": "Κοινοποίηση αρχείων καταγραφής",
@ -199,6 +197,12 @@
"deleteTempDirLabel": "Διαγραφή προσωρινών αρχείων", "deleteTempDirLabel": "Διαγραφή προσωρινών αρχείων",
"deleteTempDirHint": "Διαγραφή των αχρησιμοποίητων προσωρινών αρχείων", "deleteTempDirHint": "Διαγραφή των αχρησιμοποίητων προσωρινών αρχείων",
"deletedTempDir": "Τα προσωρινά αρχεία διαγράφηκαν", "deletedTempDir": "Τα προσωρινά αρχεία διαγράφηκαν",
"exportSettingsLabel": "Εξαγωγή ρυθμίσεων",
"exportSettingsHint": "Εξαγωγή ρυθμίσεων σε αρχείο JSON",
"exportedSettings": "Οι ρυθμίσεις εξήχθησαν",
"importSettingsLabel": "Εισαγωγή ρυθμίσεων",
"importSettingsHint": "Εισαγωγή ρυθμίσεων από ένα αρχείο JSON",
"importedSettings": "Οι ρυθμίσεις εισήχθησαν",
"exportPatchesLabel": "Εξαγωγή των επιλεγμένων τροποποιήσεων", "exportPatchesLabel": "Εξαγωγή των επιλεγμένων τροποποιήσεων",
"exportPatchesHint": "Εξαγωγή των επιλεγμένων τροποποιήσεων σε ένα αρχείο JSON", "exportPatchesHint": "Εξαγωγή των επιλεγμένων τροποποιήσεων σε ένα αρχείο JSON",
"exportedPatches": "Η εξαγωγή των επιλεγμένων τροποποιήσεων ολοκληρώθηκε", "exportedPatches": "Η εξαγωγή των επιλεγμένων τροποποιήσεων ολοκληρώθηκε",

View File

@ -155,7 +155,6 @@
"languageUpdated": "Idioma actualizado", "languageUpdated": "Idioma actualizado",
"sourcesLabel": "Fuentes alternativas", "sourcesLabel": "Fuentes alternativas",
"sourcesLabelHint": "Configurá las fuentes alternativas para ReVanced Patches y ReVanced Integrations", "sourcesLabelHint": "Configurá las fuentes alternativas para ReVanced Patches y ReVanced Integrations",
"sourcesIntegrationsLabel": "Fuente de las integraciones",
"useAlternativeSources": "Usar fuentes alternativas", "useAlternativeSources": "Usar fuentes alternativas",
"useAlternativeSourcesHint": "Usá fuentes alternativas para ReVanced Patches y ReVanced Integrations en lugar de la API", "useAlternativeSourcesHint": "Usá fuentes alternativas para ReVanced Patches y ReVanced Integrations en lugar de la API",
"sourcesResetDialogTitle": "Resetear", "sourcesResetDialogTitle": "Resetear",
@ -167,7 +166,6 @@
"selectApiURL": "URL de la API", "selectApiURL": "URL de la API",
"orgPatchesLabel": "Organización de los parches", "orgPatchesLabel": "Organización de los parches",
"sourcesPatchesLabel": "Fuente de los parches", "sourcesPatchesLabel": "Fuente de los parches",
"orgIntegrationsLabel": "Organización de las integraciones",
"contributorsLabel": "Contribuidores", "contributorsLabel": "Contribuidores",
"contributorsHint": "Una lista de los contribuidores de ReVanced", "contributorsHint": "Una lista de los contribuidores de ReVanced",
"logsLabel": "Compartir registros", "logsLabel": "Compartir registros",

View File

@ -158,20 +158,18 @@
"languageLabel": "Idioma", "languageLabel": "Idioma",
"languageUpdated": "Idioma actualizado", "languageUpdated": "Idioma actualizado",
"sourcesLabel": "Fuentes alternativas", "sourcesLabel": "Fuentes alternativas",
"sourcesLabelHint": "Configurar las fuentes alternativas para Parches de ReVanced e Integraciones ReVanced", "sourcesLabelHint": "Configurar las fuentes alternativas para los parches reVanced",
"sourcesIntegrationsLabel": "Fuente de las integraciones",
"useAlternativeSources": "Usar fuentes alternativas", "useAlternativeSources": "Usar fuentes alternativas",
"useAlternativeSourcesHint": "Usar fuentes alternativas para Parches de ReVanced e Integraciones ReVanced en lugar de la API", "useAlternativeSourcesHint": "Usar fuentes alternativas para Parches ReVanced en lugar de la API",
"sourcesResetDialogTitle": "Restablecer", "sourcesResetDialogTitle": "Restablecer",
"sourcesResetDialogText": "¿Estás seguro de que quieres restablecer tus fuentes a sus valores predeterminados?", "sourcesResetDialogText": "¿Estás seguro de que quieres restablecer tus fuentes a sus valores predeterminados?",
"apiURLResetDialogText": "¿Estás seguro de que quieres restablecer la URL de tu API a su valor predeterminado?", "apiURLResetDialogText": "¿Estás seguro de que quieres restablecer la URL de tu API a su valor predeterminado?",
"sourcesUpdateNote": "Nota: Esto automáticamente descargará Parches ReVanced e Integraciones ReVanced desde las fuentes alternativas.\n\nEsto lo conectará a la fuente alternativa.", "sourcesUpdateNote": "Nota: Esto descargará automáticamente los Parches ReVanced desde las fuentes alternativas.\n\nEsto te conectará a la fuente alternativa.",
"apiURLLabel": "URL de la API", "apiURLLabel": "URL de la API",
"apiURLHint": "Configurar la URL de API del ReVanced Manager", "apiURLHint": "Configurar la URL de API del ReVanced Manager",
"selectApiURL": "URL de la API", "selectApiURL": "URL de la API",
"orgPatchesLabel": "Organización de los parches", "orgPatchesLabel": "Organización de los parches",
"sourcesPatchesLabel": "Fuente de los parches", "sourcesPatchesLabel": "Fuente de los parches",
"orgIntegrationsLabel": "Organización de integraciones",
"contributorsLabel": "Contribuidores", "contributorsLabel": "Contribuidores",
"contributorsHint": "Una lista de contribuidores de ReVanced", "contributorsHint": "Una lista de contribuidores de ReVanced",
"logsLabel": "Compartir registros", "logsLabel": "Compartir registros",
@ -199,6 +197,12 @@
"deleteTempDirLabel": "Borrar archivos temporales", "deleteTempDirLabel": "Borrar archivos temporales",
"deleteTempDirHint": "Eliminar archivos temporales no utilizados", "deleteTempDirHint": "Eliminar archivos temporales no utilizados",
"deletedTempDir": "Archivos temporales eliminados", "deletedTempDir": "Archivos temporales eliminados",
"exportSettingsLabel": "Exportar ajustes",
"exportSettingsHint": "Exportar ajustes a un archivo JSON",
"exportedSettings": "Ajustes exportados",
"importSettingsLabel": "Importar ajustes",
"importSettingsHint": "Importar ajustes desde un archivo JSON",
"importedSettings": "Ajustes importados",
"exportPatchesLabel": "Exportar la selección de parches", "exportPatchesLabel": "Exportar la selección de parches",
"exportPatchesHint": "Exportar la selección de parches a un archivo JSON", "exportPatchesHint": "Exportar la selección de parches a un archivo JSON",
"exportedPatches": "Selección de parches exportada", "exportedPatches": "Selección de parches exportada",

View File

@ -155,7 +155,6 @@
"languageUpdated": "Idioma actualizado", "languageUpdated": "Idioma actualizado",
"sourcesLabel": "Fuentes alternativas", "sourcesLabel": "Fuentes alternativas",
"sourcesLabelHint": "Configura las fuentes alternativas para ReVanced Patches y ReVanced Integrations", "sourcesLabelHint": "Configura las fuentes alternativas para ReVanced Patches y ReVanced Integrations",
"sourcesIntegrationsLabel": "Fuente de integraciones",
"useAlternativeSources": "Usar fuentes alternativas", "useAlternativeSources": "Usar fuentes alternativas",
"useAlternativeSourcesHint": "Usa fuentes alternativas para ReVanced Patches y ReVanced Integrations en lugar de la API", "useAlternativeSourcesHint": "Usa fuentes alternativas para ReVanced Patches y ReVanced Integrations en lugar de la API",
"sourcesResetDialogTitle": "Reiniciar", "sourcesResetDialogTitle": "Reiniciar",
@ -167,7 +166,6 @@
"selectApiURL": "URL de la API", "selectApiURL": "URL de la API",
"orgPatchesLabel": "Organización de parches", "orgPatchesLabel": "Organización de parches",
"sourcesPatchesLabel": "Fuente de los parches", "sourcesPatchesLabel": "Fuente de los parches",
"orgIntegrationsLabel": "Organización de integraciones",
"contributorsLabel": "Contribuidores", "contributorsLabel": "Contribuidores",
"contributorsHint": "Lista de contribuidores de ReVanced", "contributorsHint": "Lista de contribuidores de ReVanced",
"logsLabel": "Compartir registros", "logsLabel": "Compartir registros",

View File

@ -113,13 +113,11 @@
"exportSectionTitle": "Import & eksport", "exportSectionTitle": "Import & eksport",
"dynamicThemeHint": "Nautige kogemust oma seadmele lähemal", "dynamicThemeHint": "Nautige kogemust oma seadmele lähemal",
"languageLabel": "Keel", "languageLabel": "Keel",
"sourcesIntegrationsLabel": "Integratsioonide allikas",
"sourcesResetDialogTitle": "Lähtesta", "sourcesResetDialogTitle": "Lähtesta",
"apiURLLabel": "API URL", "apiURLLabel": "API URL",
"selectApiURL": "API URL", "selectApiURL": "API URL",
"orgPatchesLabel": "Plaastrite organisatsioon", "orgPatchesLabel": "Plaastrite organisatsioon",
"sourcesPatchesLabel": "Plaastrite allikas", "sourcesPatchesLabel": "Plaastrite allikas",
"orgIntegrationsLabel": "Integratsiooni organisatsioon",
"contributorsLabel": "Panustajad", "contributorsLabel": "Panustajad",
"contributorsHint": "Revancedi kaasautorite nimekiri", "contributorsHint": "Revancedi kaasautorite nimekiri",
"aboutLabel": "Teave", "aboutLabel": "Teave",

View File

@ -98,13 +98,11 @@
"dynamicThemeLabel": "Material You", "dynamicThemeLabel": "Material You",
"dynamicThemeHint": "یک تجربه نزدیکتر به دستگاهتان را داشته باشید", "dynamicThemeHint": "یک تجربه نزدیکتر به دستگاهتان را داشته باشید",
"languageLabel": "زبان", "languageLabel": "زبان",
"sourcesIntegrationsLabel": "منبع یکپارچه سازی",
"sourcesResetDialogTitle": "تنظیم مجدد", "sourcesResetDialogTitle": "تنظیم مجدد",
"apiURLLabel": "آدرس API", "apiURLLabel": "آدرس API",
"selectApiURL": "آدرس API", "selectApiURL": "آدرس API",
"orgPatchesLabel": "سازمان پچ‌ها(وصله ها)", "orgPatchesLabel": "سازمان پچ‌ها(وصله ها)",
"sourcesPatchesLabel": "منبع پچ ها", "sourcesPatchesLabel": "منبع پچ ها",
"orgIntegrationsLabel": "سازمان یکپارچه سازی",
"contributorsLabel": "مشارکت کنندگان", "contributorsLabel": "مشارکت کنندگان",
"contributorsHint": "لیست مشارکت‌کنندگان ریونسد", "contributorsHint": "لیست مشارکت‌کنندگان ریونسد",
"aboutLabel": "درباره ما", "aboutLabel": "درباره ما",

View File

@ -157,20 +157,18 @@
"languageLabel": "Kieli", "languageLabel": "Kieli",
"languageUpdated": "Kieli on vaihdettu", "languageUpdated": "Kieli on vaihdettu",
"sourcesLabel": "Vaihtoehtoiset lähteet", "sourcesLabel": "Vaihtoehtoiset lähteet",
"sourcesLabelHint": "Määritä käytöstä poistettujen kohteiden ja käytöstä poistettujen integraatioiden vaihtoehtoiset lähteet", "sourcesLabelHint": "Määritä käytöstä poistettujen paikkojen vaihtoehtoiset lähteet",
"sourcesIntegrationsLabel": "Integraatioiden lähde",
"useAlternativeSources": "Käytä vaihtoehtoisia lähteitä", "useAlternativeSources": "Käytä vaihtoehtoisia lähteitä",
"useAlternativeSourcesHint": "Käytä vaihtoehtoisia lähteitä ReVanced Patches ja ReVanced Integrations sijasta API", "useAlternativeSourcesHint": "Käytä vaihtoehtoisia lähteitä ReVanced Patches sijasta API",
"sourcesResetDialogTitle": "Palauta", "sourcesResetDialogTitle": "Palauta",
"sourcesResetDialogText": "Haluatko varmasti palauttaa oletuslähteet?", "sourcesResetDialogText": "Haluatko varmasti palauttaa oletuslähteet?",
"apiURLResetDialogText": "Haluatko varmasti palauttaa oletusarvoisen API:n URL-osoitteen?", "apiURLResetDialogText": "Haluatko varmasti palauttaa oletusarvoisen API:n URL-osoitteen?",
"sourcesUpdateNote": "Huomautus: Tämä lataa automaattisesti ReVanced Patches ja ReVanced Integrations vaihtoehtoisista lähteistä.\n\nTämä yhdistää sinut vaihtoehtoiseen lähdekoodiin.", "sourcesUpdateNote": "Huomautus: Tämä lataa automaattisesti ReVanced Patches vaihtoehtoisista lähteistä.\n\nTämä yhdistää sinut vaihtoehtoiseen lähteeseen.",
"apiURLLabel": "API:n URL-osoite", "apiURLLabel": "API:n URL-osoite",
"apiURLHint": "Määritä ReVanced Managerin API:N URL-osoite", "apiURLHint": "Määritä ReVanced Managerin API:N URL-osoite",
"selectApiURL": "API:n URL-osoite", "selectApiURL": "API:n URL-osoite",
"orgPatchesLabel": "Paikkauksien organisaatio", "orgPatchesLabel": "Paikkauksien organisaatio",
"sourcesPatchesLabel": "Paikkauksien lähde", "sourcesPatchesLabel": "Paikkauksien lähde",
"orgIntegrationsLabel": "Integraatioiden organisaatio",
"contributorsLabel": "Osallistujat", "contributorsLabel": "Osallistujat",
"contributorsHint": "Listaus ReVancedin kehitykseen osallistuneista", "contributorsHint": "Listaus ReVancedin kehitykseen osallistuneista",
"logsLabel": "Jaa lokit", "logsLabel": "Jaa lokit",
@ -198,6 +196,12 @@
"deleteTempDirLabel": "Poista väliaikaistiedostot", "deleteTempDirLabel": "Poista väliaikaistiedostot",
"deleteTempDirHint": "Poista käyttämättömät väliaikaistiedostot", "deleteTempDirHint": "Poista käyttämättömät väliaikaistiedostot",
"deletedTempDir": "Väliaikaistiedostot poistettiin", "deletedTempDir": "Väliaikaistiedostot poistettiin",
"exportSettingsLabel": "Vie asetukset",
"exportSettingsHint": "Vie asetukset JSON tiedostoon",
"exportedSettings": "Asetukset viety",
"importSettingsLabel": "Tuo asetukset",
"importSettingsHint": "Tuo asetukset JSON tiedostosta",
"importedSettings": "Asetukset tuotu",
"exportPatchesLabel": "Vie paikkausvalikoima", "exportPatchesLabel": "Vie paikkausvalikoima",
"exportPatchesHint": "Vie paikkausvalikoima JSON-tiedostoon", "exportPatchesHint": "Vie paikkausvalikoima JSON-tiedostoon",
"exportedPatches": "Paikkausvalikoima vietiin", "exportedPatches": "Paikkausvalikoima vietiin",

View File

@ -147,16 +147,12 @@
"languageLabel": "Wika", "languageLabel": "Wika",
"languageUpdated": "Wika na-update na", "languageUpdated": "Wika na-update na",
"sourcesLabel": "Iba pang mga sources ", "sourcesLabel": "Iba pang mga sources ",
"sourcesLabelHint": "I-set up ang mga alternatibong sources para sa mga ReVanced Patches at ReVanced Integrations",
"sourcesIntegrationsLabel": "Pinanggalingan ng mga integrasyon",
"useAlternativeSources": "Gumamit ng alternatibong mga sources ", "useAlternativeSources": "Gumamit ng alternatibong mga sources ",
"useAlternativeSourcesHint": "Gamitin ang mga alternatibong sources para sa mga ReVanced Patches at ReVanced Integrations sa halip ng API",
"sourcesResetDialogTitle": "I-reset", "sourcesResetDialogTitle": "I-reset",
"apiURLLabel": "URL ng API", "apiURLLabel": "URL ng API",
"selectApiURL": "URL ng API", "selectApiURL": "URL ng API",
"orgPatchesLabel": "Pagsasaayos ng mga pantapal", "orgPatchesLabel": "Pagsasaayos ng mga pantapal",
"sourcesPatchesLabel": "Pinanggalingan ng mga pantapal", "sourcesPatchesLabel": "Pinanggalingan ng mga pantapal",
"orgIntegrationsLabel": "Pagsasaayos ng mga integrasyon",
"contributorsLabel": "Mga nag-ambag", "contributorsLabel": "Mga nag-ambag",
"contributorsHint": "Listahan ng mga tumulong sa ReVanced", "contributorsHint": "Listahan ng mga tumulong sa ReVanced",
"aboutLabel": "Tungkol", "aboutLabel": "Tungkol",

View File

@ -158,20 +158,18 @@
"languageLabel": "Langue", "languageLabel": "Langue",
"languageUpdated": "Langue mise à jour", "languageUpdated": "Langue mise à jour",
"sourcesLabel": "Sources alternatives", "sourcesLabel": "Sources alternatives",
"sourcesLabelHint": "Configure les sources alternatives pour les correctifs et les intégrations ReVanced", "sourcesLabelHint": "Configurer les sources alternatives pour les correctifs ReVanced",
"sourcesIntegrationsLabel": "Source des intégrations",
"useAlternativeSources": "Utiliser les sources alternatives", "useAlternativeSources": "Utiliser les sources alternatives",
"useAlternativeSourcesHint": "Utilise les sources alternatives pour les correctifs et les intégrations ReVanced à la place de l'API", "useAlternativeSourcesHint": "Utiliser des sources alternatives pour les correctifs ReVanced au lieu de l'API",
"sourcesResetDialogTitle": "Réinitialiser", "sourcesResetDialogTitle": "Réinitialiser",
"sourcesResetDialogText": "Êtes-vous sûr de vouloir réinitialiser vos sources à leurs valeurs par défaut ?", "sourcesResetDialogText": "Êtes-vous sûr de vouloir réinitialiser vos sources à leurs valeurs par défaut ?",
"apiURLResetDialogText": "Êtes-vous sûr de vouloir réinitialiser l'URL d'API à sa valeur par défaut ?", "apiURLResetDialogText": "Êtes-vous sûr de vouloir réinitialiser l'URL d'API à sa valeur par défaut ?",
"sourcesUpdateNote": "Note : Cela téléchargera automatiquement les correctifs et les intégrations ReVanced depuis les sources alternatives.\n\nCela vous connectera à la source alternative.", "sourcesUpdateNote": "Remarque : Cela téléchargera automatiquement les correctifs ReVanced à partir des sources alternatives.\n\nCela vous connectera à la source alternative.",
"apiURLLabel": "URL de l'API", "apiURLLabel": "URL de l'API",
"apiURLHint": "Configurer l'URL de l'API de ReVanced Manager", "apiURLHint": "Configurer l'URL de l'API de ReVanced Manager",
"selectApiURL": "URL de l'API", "selectApiURL": "URL de l'API",
"orgPatchesLabel": "Organisation des correctifs", "orgPatchesLabel": "Organisation des correctifs",
"sourcesPatchesLabel": "Source des patchs", "sourcesPatchesLabel": "Source des patchs",
"orgIntegrationsLabel": "Organisation des intégrations",
"contributorsLabel": "Contributeurs", "contributorsLabel": "Contributeurs",
"contributorsHint": "Liste des contributeurs de ReVanced", "contributorsHint": "Liste des contributeurs de ReVanced",
"logsLabel": "Partager les journaux", "logsLabel": "Partager les journaux",
@ -199,6 +197,12 @@
"deleteTempDirLabel": "Supprimer les fichiers temporaires", "deleteTempDirLabel": "Supprimer les fichiers temporaires",
"deleteTempDirHint": "Supprimer les fichiers temporaires inutilisés", "deleteTempDirHint": "Supprimer les fichiers temporaires inutilisés",
"deletedTempDir": "Fichiers temporaires supprimés", "deletedTempDir": "Fichiers temporaires supprimés",
"exportSettingsLabel": "Exporter les paramètres",
"exportSettingsHint": "Exporter les paramètres vers un fichier JSON",
"exportedSettings": "Paramètres exportés",
"importSettingsLabel": "Importer les paramètres",
"importSettingsHint": "Importer les paramètres depuis un fichier JSON",
"importedSettings": "Paramètres importés",
"exportPatchesLabel": "Exporter la sélection de correctifs", "exportPatchesLabel": "Exporter la sélection de correctifs",
"exportPatchesHint": "Exporter la sélection de correctifs vers un fichier JSON", "exportPatchesHint": "Exporter la sélection de correctifs vers un fichier JSON",
"exportedPatches": "Sélection de correctifs exportée", "exportedPatches": "Sélection de correctifs exportée",

View File

@ -55,6 +55,8 @@
"widgetTitle": "Paisteálaí", "widgetTitle": "Paisteálaí",
"patchButton": "Paiste", "patchButton": "Paiste",
"incompatibleArchWarningDialogText": "Níl paisteáil ar an ailtireacht seo tacaítear leis go fóill agus dfhéadfadh sé teip. Lean ar aghaidh fós?", "incompatibleArchWarningDialogText": "Níl paisteáil ar an ailtireacht seo tacaítear leis go fóill agus dfhéadfadh sé teip. Lean ar aghaidh fós?",
"removedPatchesWarningDialogText": "Paistí bainte ón uair dheireanach a ndearna tú paistí ar an aip seo:\n\n${patches}\n\n${newPatches}An bhfuil fonn ort leanúint ar aghaidh mar sin féin?",
"addedPatchesDialogText": "Cuireadh paistí leis ón uair dheireanach a ndearna tú paistí ar an aip seo:\n\n${addedPatches}\n\n",
"requiredOptionDialogText": "Caithfear roinnt roghanna paiste a shocrú." "requiredOptionDialogText": "Caithfear roinnt roghanna paiste a shocrú."
}, },
"appSelectorCard": { "appSelectorCard": {
@ -156,20 +158,18 @@
"languageLabel": "Teanga", "languageLabel": "Teanga",
"languageUpdated": "Teanga nuashonraithe", "languageUpdated": "Teanga nuashonraithe",
"sourcesLabel": "Foinsí malartacha", "sourcesLabel": "Foinsí malartacha",
"sourcesLabelHint": "Cumraigh na foinsí malartacha le haghaidh Paistí ReVanced agus Comhtháthaithe ReVanced", "sourcesLabelHint": "Cumraigh na foinsí malartacha le haghaidh Paistí ReVanced",
"sourcesIntegrationsLabel": "Foinse comhtháthaithe",
"useAlternativeSources": "Úsáid foinsí malartacha", "useAlternativeSources": "Úsáid foinsí malartacha",
"useAlternativeSourcesHint": "Úsáid foinsí malartacha le haghaidh Paistí ReVanced agus Comhtháthaithe ReVanced in ionad an API", "useAlternativeSourcesHint": "Úsáid foinsí eile le haghaidh ReVanced Patches in ionad an API",
"sourcesResetDialogTitle": "Athshocraigh", "sourcesResetDialogTitle": "Athshocraigh",
"sourcesResetDialogText": "An bhfuil tú cinnte gur mhaith leat do fhoinsí a athshocrú go dtí a luachanna réamhshocraithe?", "sourcesResetDialogText": "An bhfuil tú cinnte gur mhaith leat do fhoinsí a athshocrú go dtí a luachanna réamhshocraithe?",
"apiURLResetDialogText": "An bhfuil tú cinnte gur mhaith leat do URL API a athshocrú go dtí a luach réamhshocraithe?", "apiURLResetDialogText": "An bhfuil tú cinnte gur mhaith leat do URL API a athshocrú go dtí a luach réamhshocraithe?",
"sourcesUpdateNote": "Nóta: Íoslódálfaidh sé seo Paistí ReVanced agus Comhtháthú ReVanced go huathoibríoch ó na foinsí malartacha.\n\nCeanglóidh sé seo tú leis an bhfoinse mhalartach.", "sourcesUpdateNote": "Nóta: Íoslódálfaidh sé seo Paistí ReVanced go huathoibríoch ó na foinsí eile.\n\nNascfaidh sé seo tú leis an bhfoinse eile.",
"apiURLLabel": "UIRL API", "apiURLLabel": "UIRL API",
"apiURLHint": "Cumraigh URL API de Bhainisteoir ReVanced", "apiURLHint": "Cumraigh URL API de Bhainisteoir ReVanced",
"selectApiURL": "UIRL API", "selectApiURL": "UIRL API",
"orgPatchesLabel": "Eagraíocht paistí", "orgPatchesLabel": "Eagraíocht paistí",
"sourcesPatchesLabel": "Foinse paistí", "sourcesPatchesLabel": "Foinse paistí",
"orgIntegrationsLabel": "Eagraíocht comhtháthaithe",
"contributorsLabel": "Rannpháirtithe", "contributorsLabel": "Rannpháirtithe",
"contributorsHint": "Liosta de rannpháirtithe ReVanced", "contributorsHint": "Liosta de rannpháirtithe ReVanced",
"logsLabel": "Comhroinn logaí", "logsLabel": "Comhroinn logaí",
@ -197,6 +197,12 @@
"deleteTempDirLabel": "Scrios comhaid shealadacha", "deleteTempDirLabel": "Scrios comhaid shealadacha",
"deleteTempDirHint": "Scrios comhaid shealadacha gan úsáid", "deleteTempDirHint": "Scrios comhaid shealadacha gan úsáid",
"deletedTempDir": "Scriosta comhaid shealadacha", "deletedTempDir": "Scriosta comhaid shealadacha",
"exportSettingsLabel": "Socruithe easpórtála",
"exportSettingsHint": "Easpórtáil socruithe go comhad JSON",
"exportedSettings": "Socruithe easpórtáilte",
"importSettingsLabel": "Socruithe a allmhairiú",
"importSettingsHint": "Iompórtáil socruithe ó chomhad JSON",
"importedSettings": "Socruithe allmhairithe",
"exportPatchesLabel": "Rogha paiste easpórtála", "exportPatchesLabel": "Rogha paiste easpórtála",
"exportPatchesHint": "Roghnú paiste a easpórtáil chuig comhad JSON", "exportPatchesHint": "Roghnú paiste a easpórtáil chuig comhad JSON",
"exportedPatches": "Easpórtáil an roghnú paistí", "exportedPatches": "Easpórtáil an roghnú paistí",

View File

@ -23,7 +23,10 @@
"refreshSuccess": "רוענן בהצלחה", "refreshSuccess": "רוענן בהצלחה",
"widgetTitle": "לוח בקרה", "widgetTitle": "לוח בקרה",
"updatesSubtitle": "עדכונים", "updatesSubtitle": "עדכונים",
"lastPatchedAppSubtitle": "תיקון אפליקציה אחרון",
"patchedSubtitle": "אפליקציות מותקנות",
"changeLaterSubtitle": "ניתן לשנות זאת בהגדרות מאוחר יותר.", "changeLaterSubtitle": "ניתן לשנות זאת בהגדרות מאוחר יותר.",
"noSavedAppFound": "לא נמצאו אפליקציות",
"noInstallations": "אין אפליקציות מתוקנת מותקנות", "noInstallations": "אין אפליקציות מתוקנת מותקנות",
"installUpdate": "המשך להתקין את העדכון?", "installUpdate": "המשך להתקין את העדכון?",
"updateSheetTitle": "עדכן את ReVanced Manager", "updateSheetTitle": "עדכן את ReVanced Manager",
@ -51,6 +54,7 @@
"patcherView": { "patcherView": {
"widgetTitle": "Patcher", "widgetTitle": "Patcher",
"patchButton": "תיקון", "patchButton": "תיקון",
"incompatibleArchWarningDialogText": "תיקון בארכיטקטורה זו לא נתמך עדיין ועלול להיכשל. להמשיך בכל זאת?",
"requiredOptionDialogText": "כמה אפשרויות תיקון חייבות להיקבע." "requiredOptionDialogText": "כמה אפשרויות תיקון חייבות להיקבע."
}, },
"appSelectorCard": { "appSelectorCard": {
@ -101,6 +105,7 @@
"setToNull": "השמה לnull", "setToNull": "השמה לnull",
"viewTitle": "אפשרויות תיקון", "viewTitle": "אפשרויות תיקון",
"saveOptions": "שמור", "saveOptions": "שמור",
"unselectPatch": "בטל את בחירת התיקון",
"tooltip": "אפשרויות קלט נוספות", "tooltip": "אפשרויות קלט נוספות",
"selectFilePath": "בחר נתיב קובץ", "selectFilePath": "בחר נתיב קובץ",
"selectFolder": "בחר תיקייה", "selectFolder": "בחר תיקייה",
@ -146,21 +151,22 @@
"dynamicThemeHint": "תהנה/י מחוויה קרובה יותר למכשיר שלך", "dynamicThemeHint": "תהנה/י מחוויה קרובה יותר למכשיר שלך",
"languageLabel": "שפה", "languageLabel": "שפה",
"languageUpdated": "עדכוני שפה", "languageUpdated": "עדכוני שפה",
"sourcesIntegrationsLabel": "מקור אינטגרציות",
"sourcesResetDialogTitle": "איפוס", "sourcesResetDialogTitle": "איפוס",
"sourcesResetDialogText": "האם אתה בטוח שברצונך לאפס את המקורות לערכי ברירת המחדל שלהם?", "sourcesResetDialogText": "האם אתה בטוח שברצונך לאפס את המקורות לערכי ברירת המחדל שלהם?",
"apiURLResetDialogText": "האם אתה בטוח שברצונך לאפס את כתובת הAPI לערך ברירת המחדל?", "apiURLResetDialogText": "האם אתה בטוח שברצונך לאפס את כתובת הAPI לערך ברירת המחדל?",
"apiURLLabel": "כתובת API", "apiURLLabel": "כתובת API",
"apiURLHint": "הגדר את כתובת ה-API של ReVanced Manager",
"selectApiURL": "כתובת API", "selectApiURL": "כתובת API",
"orgPatchesLabel": "ארגון תיקונים", "orgPatchesLabel": "ארגון תיקונים",
"sourcesPatchesLabel": "מקור התיקונים", "sourcesPatchesLabel": "מקור התיקונים",
"orgIntegrationsLabel": "ארגון אינטגרציות",
"contributorsLabel": "תורמים", "contributorsLabel": "תורמים",
"contributorsHint": "רשימת התורמים לReVanced", "contributorsHint": "רשימת התורמים לReVanced",
"logsLabel": "שתף לוג", "logsLabel": "שתף לוג",
"logsHint": "שתף ReVanced Manager לוג",
"disablePatchesSelectionWarningText": "אתה עומד לכבות את שינוי בחירת התיקונים.\nהבחירה ברירת המחדל של התיקונים תשוחזר.\n\nלכבות בכל מקרה?", "disablePatchesSelectionWarningText": "אתה עומד לכבות את שינוי בחירת התיקונים.\nהבחירה ברירת המחדל של התיקונים תשוחזר.\n\nלכבות בכל מקרה?",
"autoUpdatePatchesLabel": "עדכון תיקונים באופן אוטומטי", "autoUpdatePatchesLabel": "עדכון תיקונים באופן אוטומטי",
"autoUpdatePatchesHint": "עדכן אוטומטית את התיקונים לגרסה העדכנית ביותר", "autoUpdatePatchesHint": "עדכן אוטומטית את התיקונים לגרסה העדכנית ביותר",
"showUpdateDialogLabel": "הצג תיבת עדכון",
"universalPatchesLabel": "הצג תיקונים אוניברסליים", "universalPatchesLabel": "הצג תיקונים אוניברסליים",
"universalPatchesHint": "הצג את כל האפליקציות והתיקונים האוניברסליים (עשוי להאט את רשימת האפליקציות)", "universalPatchesHint": "הצג את כל האפליקציות והתיקונים האוניברסליים (עשוי להאט את רשימת האפליקציות)",
"versionCompatibilityCheckLabel": "בדיקת תאימות לגרסה", "versionCompatibilityCheckLabel": "בדיקת תאימות לגרסה",
@ -243,6 +249,7 @@
"status_failure_timeout_description": "ההתקנה לקחה יותר מדי זמן לסיום.\n\nהאם ברצונך לנסות שוב?", "status_failure_timeout_description": "ההתקנה לקחה יותר מדי זמן לסיום.\n\nהאם ברצונך לנסות שוב?",
"status_failure_storage_description": "ההתקנה נכשלה עקב אחסון לא מספיק.\n\nפנה קצת מקום ונסה שוב.", "status_failure_storage_description": "ההתקנה נכשלה עקב אחסון לא מספיק.\n\nפנה קצת מקום ונסה שוב.",
"status_failure_invalid_description": "ההתקנה נכשלה בגלל שהאפליקציה המתוקנת לא חוקית.\n\nלהסיר את האפליקציה ולנסות שוב?", "status_failure_invalid_description": "ההתקנה נכשלה בגלל שהאפליקציה המתוקנת לא חוקית.\n\nלהסיר את האפליקציה ולנסות שוב?",
"status_failure_incompatible_description": "האפליקציה אינה תואמת למכשיר זה.\n\nהשתמש ב-APK שנתמך על ידי מכשיר זה ונסה שוב.",
"status_failure_conflict_description": "ההתקנה נמנעה על ידי התקנה קיימת של האפליקציה.\n\nלהסיר את ההתקנה של האפליקציה המותקנת ולנסות שוב?", "status_failure_conflict_description": "ההתקנה נמנעה על ידי התקנה קיימת של האפליקציה.\n\nלהסיר את ההתקנה של האפליקציה המותקנת ולנסות שוב?",
"status_failure_blocked_description": "ההתקנה נחסמה על ידי ${packageName}.\n\nשנה את הגדרות האבטחה שלך ונסה שוב.", "status_failure_blocked_description": "ההתקנה נחסמה על ידי ${packageName}.\n\nשנה את הגדרות האבטחה שלך ונסה שוב.",
"install_failed_verification_failure_description": "ההתקנה נכשלה עקב בעיית אימות.\n\nשנה את הגדרות האבטחה שלך ונסה שוב.", "install_failed_verification_failure_description": "ההתקנה נכשלה עקב בעיית אימות.\n\nשנה את הגדרות האבטחה שלך ונסה שוב.",

View File

@ -103,13 +103,11 @@
"dynamicThemeLabel": "मेटीरियल यू", "dynamicThemeLabel": "मेटीरियल यू",
"dynamicThemeHint": "अपने डिवाइस के करीब एक अनुभव का आनंद लें", "dynamicThemeHint": "अपने डिवाइस के करीब एक अनुभव का आनंद लें",
"languageLabel": "भाषा", "languageLabel": "भाषा",
"sourcesIntegrationsLabel": "एकीकरण स्रोत",
"sourcesResetDialogTitle": "रीसेट करें", "sourcesResetDialogTitle": "रीसेट करें",
"apiURLLabel": "API URL", "apiURLLabel": "API URL",
"selectApiURL": "API URL", "selectApiURL": "API URL",
"orgPatchesLabel": "पैच संगठन", "orgPatchesLabel": "पैच संगठन",
"sourcesPatchesLabel": "पैच स्रोत", "sourcesPatchesLabel": "पैच स्रोत",
"orgIntegrationsLabel": "एकीकरण संगठन",
"contributorsLabel": "योगदान कर्ता", "contributorsLabel": "योगदान कर्ता",
"contributorsHint": "ReVanced के योगदानकर्ताओ की सूची", "contributorsHint": "ReVanced के योगदानकर्ताओ की सूची",
"aboutLabel": "विवरण", "aboutLabel": "विवरण",

View File

@ -93,13 +93,11 @@
"darkThemeLabel": "Tamni način", "darkThemeLabel": "Tamni način",
"dynamicThemeHint": "Uživajte u iskustvu prilagođenom vašem uređaju", "dynamicThemeHint": "Uživajte u iskustvu prilagođenom vašem uređaju",
"languageLabel": "Jezik", "languageLabel": "Jezik",
"sourcesIntegrationsLabel": "Izvori ugradnje",
"sourcesResetDialogTitle": "Ponovno postavljanje", "sourcesResetDialogTitle": "Ponovno postavljanje",
"apiURLLabel": "API URL", "apiURLLabel": "API URL",
"selectApiURL": "API URL", "selectApiURL": "API URL",
"orgPatchesLabel": "Autori zakrpa", "orgPatchesLabel": "Autori zakrpa",
"sourcesPatchesLabel": "Izvor zakrpa", "sourcesPatchesLabel": "Izvor zakrpa",
"orgIntegrationsLabel": "Organizacije za ugradnju",
"contributorsLabel": "Pridonositelji", "contributorsLabel": "Pridonositelji",
"contributorsHint": "Popis suradnika ReVanceda", "contributorsHint": "Popis suradnika ReVanceda",
"aboutLabel": "O aplikaciji", "aboutLabel": "O aplikaciji",

View File

@ -158,20 +158,18 @@
"languageLabel": "Nyelv", "languageLabel": "Nyelv",
"languageUpdated": "Nyelv frissítve", "languageUpdated": "Nyelv frissítve",
"sourcesLabel": "Alternatív források", "sourcesLabel": "Alternatív források",
"sourcesLabelHint": "Állítsa be a ReVanced Patchek és ReVanced Integrációk alternatív forrásait", "sourcesLabelHint": "Egyéni lejátszási sebesség hozzáadása vagy módosítása",
"sourcesIntegrationsLabel": "Integrációk - forrás",
"useAlternativeSources": "Alternatív források használata", "useAlternativeSources": "Alternatív források használata",
"useAlternativeSourcesHint": "Használjon alternatív forrásokat a ReVanced Patchekhez és a ReVanced Integrációhoz az API helyett", "useAlternativeSourcesHint": "Használjon alternatív forrásokat a ReVanced Patch-ekhez az API helyett",
"sourcesResetDialogTitle": "Visszaállítás", "sourcesResetDialogTitle": "Visszaállítás",
"sourcesResetDialogText": "Biztosan vissza szeretné állítani a forrásokat az alapértelmezett értékekre?", "sourcesResetDialogText": "Biztosan vissza szeretné állítani a forrásokat az alapértelmezett értékekre?",
"apiURLResetDialogText": "Biztosan vissza szeretné állítani az API URL-jét az alapértelmezett értékre?", "apiURLResetDialogText": "Biztosan vissza szeretné állítani az API URL-jét az alapértelmezett értékre?",
"sourcesUpdateNote": "Megjegyzés: Ez automatikusan letölti a ReVanced Patcheket és a ReVanced Integrációkat az alternatív forrásokból.\n\nEzzel csatlakozik az alternatív forráshoz.", "sourcesUpdateNote": "Megjegyzés: Ez automatikusan letölti a ReVanced Patch-eket az alternatív forrásokból.\n\nEzzel csatlakozik az alternatív forráshoz.",
"apiURLLabel": "API URL", "apiURLLabel": "API URL",
"apiURLHint": "Konfigurálja a ReVanced Manager API URL-jét", "apiURLHint": "Konfigurálja a ReVanced Manager API URL-jét",
"selectApiURL": "API link", "selectApiURL": "API link",
"orgPatchesLabel": "Patchek - szervezet", "orgPatchesLabel": "Patchek - szervezet",
"sourcesPatchesLabel": "Patchek - forrás", "sourcesPatchesLabel": "Patchek - forrás",
"orgIntegrationsLabel": "Integrációk - szervezet",
"contributorsLabel": "Közreműködők", "contributorsLabel": "Közreműködők",
"contributorsHint": "A ReVanced közreműködőinek listája", "contributorsHint": "A ReVanced közreműködőinek listája",
"logsLabel": "Naplók megosztása", "logsLabel": "Naplók megosztása",
@ -199,6 +197,12 @@
"deleteTempDirLabel": "Ideiglenes fájlok törlése", "deleteTempDirLabel": "Ideiglenes fájlok törlése",
"deleteTempDirHint": "Nem használt ideiglenes fájlok törlése", "deleteTempDirHint": "Nem használt ideiglenes fájlok törlése",
"deletedTempDir": "Ideiglenes fájlok törölve", "deletedTempDir": "Ideiglenes fájlok törölve",
"exportSettingsLabel": "Beállítások exportálása",
"exportSettingsHint": "A beállítások exportálása JSON-fájlba",
"exportedSettings": "Beállítások exportálva",
"importSettingsLabel": "Beállítások importálása",
"importSettingsHint": "Beállítások importálása JSON-fájlból",
"importedSettings": "Beállítások importálva",
"exportPatchesLabel": "Kijelölt patchek exportálása", "exportPatchesLabel": "Kijelölt patchek exportálása",
"exportPatchesHint": "Exportálja a kijelölt patcheket egy JSON-fájlba", "exportPatchesHint": "Exportálja a kijelölt patcheket egy JSON-fájlba",
"exportedPatches": "Kijelölt patchek exportálva", "exportedPatches": "Kijelölt patchek exportálva",

View File

@ -158,20 +158,18 @@
"languageLabel": "Bahasa", "languageLabel": "Bahasa",
"languageUpdated": "Bahasa diperbarui", "languageUpdated": "Bahasa diperbarui",
"sourcesLabel": "Sumber alternatif", "sourcesLabel": "Sumber alternatif",
"sourcesLabelHint": "Atur sumber alternatif untuk ReVanced Patches dan ReVanced Integrations", "sourcesLabelHint": "Konfigurasikan sumber alternatif untuk Patch ReVanced",
"sourcesIntegrationsLabel": "Sumber Integrasi",
"useAlternativeSources": "Gunakan sumber alternatif", "useAlternativeSources": "Gunakan sumber alternatif",
"useAlternativeSourcesHint": "Gunakan sumber alternatif untuk ReVanced Patches dan ReVanced Integrations daripada API", "useAlternativeSourcesHint": "Gunakan sumber alternatif untuk Patch ReVanced, bukan API",
"sourcesResetDialogTitle": "Atur ulang", "sourcesResetDialogTitle": "Atur ulang",
"sourcesResetDialogText": "Apakah Anda yakin ingin mengatur ulang sumber khusus ke sumber bawaan?", "sourcesResetDialogText": "Apakah Anda yakin ingin mengatur ulang sumber khusus ke sumber bawaan?",
"apiURLResetDialogText": "Apakah Anda yakin ingin mengatur ulang URL API ke bawaan?", "apiURLResetDialogText": "Apakah Anda yakin ingin mengatur ulang URL API ke bawaan?",
"sourcesUpdateNote": "Catatan: Ini akan secara otomatis mengunduh ReVanced Patches dan ReVanced Integrations dari sumber alternatif.\n\nIni akan menghubungkan Anda ke sumber alternatif.", "sourcesUpdateNote": "Catatan: Ini akan secara otomatis mengunduh Patch ReVanced dari sumber alternatif.\n\nIni akan menghubungkan Anda ke sumber alternatif.",
"apiURLLabel": "URL API", "apiURLLabel": "URL API",
"apiURLHint": "Atur URL API dari ReVanced Manager", "apiURLHint": "Atur URL API dari ReVanced Manager",
"selectApiURL": "URL API", "selectApiURL": "URL API",
"orgPatchesLabel": "Organisasi tambalan", "orgPatchesLabel": "Organisasi tambalan",
"sourcesPatchesLabel": "Sumber tambalan", "sourcesPatchesLabel": "Sumber tambalan",
"orgIntegrationsLabel": "Organisasi Integrasi",
"contributorsLabel": "Kontributor", "contributorsLabel": "Kontributor",
"contributorsHint": "Daftar kontributor ReVanced", "contributorsHint": "Daftar kontributor ReVanced",
"logsLabel": "Bagikan log", "logsLabel": "Bagikan log",
@ -199,6 +197,12 @@
"deleteTempDirLabel": "Hapus berkas sementara", "deleteTempDirLabel": "Hapus berkas sementara",
"deleteTempDirHint": "Hapus berkas sementara yang tidak dipakai", "deleteTempDirHint": "Hapus berkas sementara yang tidak dipakai",
"deletedTempDir": "Berkas sementara dihapus", "deletedTempDir": "Berkas sementara dihapus",
"exportSettingsLabel": "Ekspor pengaturan",
"exportSettingsHint": "Ekspor pengaturan ke berkas JSON",
"exportedSettings": "Pengaturan berhasil diekspor",
"importSettingsLabel": "Impor pengaturan",
"importSettingsHint": "Impor pengaturan dari berkas JSON",
"importedSettings": "Pengaturan berhasil diimpor",
"exportPatchesLabel": "Ekspor pilihan tambalan", "exportPatchesLabel": "Ekspor pilihan tambalan",
"exportPatchesHint": "Ekspor pilihan tambalan ke berkas JSON", "exportPatchesHint": "Ekspor pilihan tambalan ke berkas JSON",
"exportedPatches": "Tambalan terpilih diekspor", "exportedPatches": "Tambalan terpilih diekspor",

View File

@ -158,20 +158,18 @@
"languageLabel": "Lingua", "languageLabel": "Lingua",
"languageUpdated": "Lingua aggiornata", "languageUpdated": "Lingua aggiornata",
"sourcesLabel": "Sorgenti alternative", "sourcesLabel": "Sorgenti alternative",
"sourcesLabelHint": "Configura fonti alternative per ReVanced Patches e ReVanced Integrations", "sourcesLabelHint": "Configurare le fonti alternative per le patch avanzate",
"sourcesIntegrationsLabel": "Sorgente Integrazioni",
"useAlternativeSources": "Usa sorgenti alternative", "useAlternativeSources": "Usa sorgenti alternative",
"useAlternativeSourcesHint": "Usa sorgenti alternative per ReVanced Patches e ReVanced Integrations invece delle API", "useAlternativeSourcesHint": "Usa fonti alternative per le patch avanzate invece che per le API",
"sourcesResetDialogTitle": "Reimposta", "sourcesResetDialogTitle": "Reimposta",
"sourcesResetDialogText": "Sei sicuro di voler reimpostare le sorgenti ai valori predefiniti?", "sourcesResetDialogText": "Sei sicuro di voler reimpostare le sorgenti ai valori predefiniti?",
"apiURLResetDialogText": "Sicuro di voler ripristinare l'URL API al valore predefinito?", "apiURLResetDialogText": "Sicuro di voler ripristinare l'URL API al valore predefinito?",
"sourcesUpdateNote": "Nota: Questo scaricherà automaticamente ReVanced Patches e ReVanced Integrations dalle sorgenti alternative.\n\nQuesto ti collegherà alla sorgente alternativa.", "sourcesUpdateNote": "Nota: Questo scaricherà automaticamente le patch avanzate dalle fonti alternative.\n\nQuesto ti collegherà alla sorgente alternativa.",
"apiURLLabel": "URL API", "apiURLLabel": "URL API",
"apiURLHint": "Configura l'URL API di ReVanced Manager", "apiURLHint": "Configura l'URL API di ReVanced Manager",
"selectApiURL": "URL API", "selectApiURL": "URL API",
"orgPatchesLabel": "Organizzazione Patch", "orgPatchesLabel": "Organizzazione Patch",
"sourcesPatchesLabel": "Sorgente Patch", "sourcesPatchesLabel": "Sorgente Patch",
"orgIntegrationsLabel": "Organizzazione Integrazioni",
"contributorsLabel": "Contributori", "contributorsLabel": "Contributori",
"contributorsHint": "Lista dei contributori di ReVanced", "contributorsHint": "Lista dei contributori di ReVanced",
"logsLabel": "Condividi i log", "logsLabel": "Condividi i log",
@ -199,6 +197,12 @@
"deleteTempDirLabel": "Elimina file temporanei", "deleteTempDirLabel": "Elimina file temporanei",
"deleteTempDirHint": "Elimina i file temporanei non utilizzati", "deleteTempDirHint": "Elimina i file temporanei non utilizzati",
"deletedTempDir": "File temporanei eliminati", "deletedTempDir": "File temporanei eliminati",
"exportSettingsLabel": "Esporta impostazioni",
"exportSettingsHint": "Esporta le impostazioni in un file JSON",
"exportedSettings": "Impostazioni esportate",
"importSettingsLabel": "Importa impostazioni",
"importSettingsHint": "Importa le impostazioni da un file JSON",
"importedSettings": "Impostazioni importate",
"exportPatchesLabel": "Esporta selezione patch", "exportPatchesLabel": "Esporta selezione patch",
"exportPatchesHint": "Esporta selezione patch in un file JSON", "exportPatchesHint": "Esporta selezione patch in un file JSON",
"exportedPatches": "Selezione patch esportata", "exportedPatches": "Selezione patch esportata",

View File

@ -158,20 +158,18 @@
"languageLabel": "言語", "languageLabel": "言語",
"languageUpdated": "言語が更新されました", "languageUpdated": "言語が更新されました",
"sourcesLabel": "代替ソース", "sourcesLabel": "代替ソース",
"sourcesLabelHint": "ReVanded PatchesとReVanced Integrationsの代替ソースを設定", "sourcesLabelHint": "ReVanded Patches の代替ソースを構成する",
"sourcesIntegrationsLabel": "Integrations のソース",
"useAlternativeSources": "他のソースを使用", "useAlternativeSources": "他のソースを使用",
"useAlternativeSourcesHint": "APIの代わりにReVanced PatchesとReVanced Integrationsの他のソースを使用する", "useAlternativeSourcesHint": "APIの代わりにReVended Patchesの代替ソースを使用する",
"sourcesResetDialogTitle": "リセット", "sourcesResetDialogTitle": "リセット",
"sourcesResetDialogText": "ソースをデフォルト値にリセットしてもよろしいですか?", "sourcesResetDialogText": "ソースをデフォルト値にリセットしてもよろしいですか?",
"apiURLResetDialogText": "API の URL をデフォルト値にリセットしてもよろしいですか?", "apiURLResetDialogText": "API の URL をデフォルト値にリセットしてもよろしいですか?",
"sourcesUpdateNote": "注: ReVanced PatchesとReVanced Integrationsを代替ソースから自動的にダウンロードします。\n\nこれにより、代替ソースとの通信が発生します。", "sourcesUpdateNote": "注:ReVincedパッチは自動的に別のソースからダウンロードされます。\n\nこれにより、別のソースに接続されます。",
"apiURLLabel": "API の URL", "apiURLLabel": "API の URL",
"apiURLHint": "ReVanced ManagerのAPIのURLを設定する", "apiURLHint": "ReVanced ManagerのAPIのURLを設定する",
"selectApiURL": "API の URL", "selectApiURL": "API の URL",
"orgPatchesLabel": "Patches の組織", "orgPatchesLabel": "Patches の組織",
"sourcesPatchesLabel": "Patches のソース", "sourcesPatchesLabel": "Patches のソース",
"orgIntegrationsLabel": "Integrations の組織",
"contributorsLabel": "貢献者", "contributorsLabel": "貢献者",
"contributorsHint": "ReVancedの貢献者一覧", "contributorsHint": "ReVancedの貢献者一覧",
"logsLabel": "ログを共有", "logsLabel": "ログを共有",
@ -199,6 +197,12 @@
"deleteTempDirLabel": "一時ファイルを削除", "deleteTempDirLabel": "一時ファイルを削除",
"deleteTempDirHint": "未使用の一時ファイルを削除", "deleteTempDirHint": "未使用の一時ファイルを削除",
"deletedTempDir": "一時ファイルを削除しました", "deletedTempDir": "一時ファイルを削除しました",
"exportSettingsLabel": "設定をエクスポート",
"exportSettingsHint": "設定を JSON ファイルにエクスポート",
"exportedSettings": "設定をエクスポートしました",
"importSettingsLabel": "設定をインポート",
"importSettingsHint": "JSONファイルから設定をインポート",
"importedSettings": "設定がインポートされました",
"exportPatchesLabel": "パッチ選択をエクスポート", "exportPatchesLabel": "パッチ選択をエクスポート",
"exportPatchesHint": "パッチ選択を JSON ファイルにエクスポートします", "exportPatchesHint": "パッチ選択を JSON ファイルにエクスポートします",
"exportedPatches": "パッチ選択をエクスポートしました", "exportedPatches": "パッチ選択をエクスポートしました",

View File

@ -85,7 +85,7 @@
"downloadToast": "다운로드 기능은 아직 사용할 수 없습니다", "downloadToast": "다운로드 기능은 아직 사용할 수 없습니다",
"requireSuggestedAppVersionDialogText": "선택한 앱 버전이 권장 앱 버전과 일치하지 않아서 예상되지 않은 문제점이 발생할 수 있습니다. 권장 앱 버전을 사용하세요.\n\n선택한 앱 버전: ${selected}\n권장 앱 버전: ${suggested}\n\n계속하려면 설정에서 '권장 앱 버전 요구'를 비활성화하세요.", "requireSuggestedAppVersionDialogText": "선택한 앱 버전이 권장 앱 버전과 일치하지 않아서 예상되지 않은 문제점이 발생할 수 있습니다. 권장 앱 버전을 사용하세요.\n\n선택한 앱 버전: ${selected}\n권장 앱 버전: ${suggested}\n\n계속하려면 설정에서 '권장 앱 버전 요구'를 비활성화하세요.",
"featureNotAvailable": "기능이 구현되지 않았습니다", "featureNotAvailable": "기능이 구현되지 않았습니다",
"featureNotAvailableText": "이 앱은 분할 APK이며 Root 권한으로 마운트해야만 안정적으로 패치 및 설치할 수 있습니다. 그러나 저장소에서 완전한 APK를 선택하여 패치 및 설치할 수 있습니다." "featureNotAvailableText": "이 기기에서 추출할 수 있는 앱이 분할된 APK 파일이므로 Root 권한으로 마운트해야만 안정적으로 패치 및 설치할 수 있습니다. 그러나 Non-Root 사용자는 기기 저장소에서 '외부에서 다운로드한 완전한 APK 파일'을 선택하여 패치 및 설치할 수 있습니다."
}, },
"patchesSelectorView": { "patchesSelectorView": {
"viewTitle": "패치 선택하기", "viewTitle": "패치 선택하기",
@ -158,20 +158,18 @@
"languageLabel": "앱 언어", "languageLabel": "앱 언어",
"languageUpdated": "앱 언어를 변경하였습니다", "languageUpdated": "앱 언어를 변경하였습니다",
"sourcesLabel": "대체 소스", "sourcesLabel": "대체 소스",
"sourcesLabelHint": "ReVanced Patches 및 ReVanced Integrations의 대체 소스를 설정할 수 있습니다", "sourcesLabelHint": "ReVanced Patches의 대체 소스를 설정할 수 있습니다",
"sourcesIntegrationsLabel": "Integrations 소스",
"useAlternativeSources": "대체 소스 사용", "useAlternativeSources": "대체 소스 사용",
"useAlternativeSourcesHint": "공식 소스가 아닌 ReVanced Patches 및 ReVanced Integrations의 대체 소스를 사용합니다", "useAlternativeSourcesHint": "API를 대신하여 ReVanced Patches의 대체 소스를 사용합니다",
"sourcesResetDialogTitle": "초기화", "sourcesResetDialogTitle": "초기화",
"sourcesResetDialogText": "정말 사용자 정의 소스를 기본값으로 초기화하시겠습니까?", "sourcesResetDialogText": "정말 사용자 정의 소스를 기본값으로 초기화하시겠습니까?",
"apiURLResetDialogText": "정말 API URL을 기본값으로 초기화하시겠습니까?", "apiURLResetDialogText": "정말 API URL을 기본값으로 초기화하시겠습니까?",
"sourcesUpdateNote": "알림: 변경하면 대체 소스에서 ReVanced Patches 및 ReVanced Integrations이 자동으로 다운로드됩니다. \n\n그 이후에는 대체 소스로 연결됩니다.", "sourcesUpdateNote": "알림: 변경하면 대체 소스에서 ReVanced Patches가 자동으로 다운로드됩니다.\n\n그 이후에는 대체 소스로 연결됩니다.",
"apiURLLabel": "API URL", "apiURLLabel": "API URL",
"apiURLHint": "ReVanced Manager의 API URL를 설정할 수 있습니다.", "apiURLHint": "ReVanced Manager의 API URL를 설정할 수 있습니다.",
"selectApiURL": "API URL", "selectApiURL": "API URL",
"orgPatchesLabel": "Patches 구성", "orgPatchesLabel": "Patches 구성",
"sourcesPatchesLabel": "Patches 소스", "sourcesPatchesLabel": "Patches 소스",
"orgIntegrationsLabel": "Integrations 구성",
"contributorsLabel": "도움을 주신 분들", "contributorsLabel": "도움을 주신 분들",
"contributorsHint": "ReVanced 개발에 도움을 주신 분들", "contributorsHint": "ReVanced 개발에 도움을 주신 분들",
"logsLabel": "로그 공유하기", "logsLabel": "로그 공유하기",
@ -199,6 +197,12 @@
"deleteTempDirLabel": "임시 파일 제거", "deleteTempDirLabel": "임시 파일 제거",
"deleteTempDirHint": "사용하지 않는 임시 파일을 제거합니다", "deleteTempDirHint": "사용하지 않는 임시 파일을 제거합니다",
"deletedTempDir": "임시 파일을 제거하였습니다", "deletedTempDir": "임시 파일을 제거하였습니다",
"exportSettingsLabel": "설정 내보내기",
"exportSettingsHint": "설정을 JSON 파일로 내보낼 수 있습니다",
"exportedSettings": "설정을 내보냈습니다",
"importSettingsLabel": "설정 가져오기",
"importSettingsHint": "설정을 JSON 파일에서 가져올 수 있습니다",
"importedSettings": "설정을 가져왔습니다",
"exportPatchesLabel": "패치 선택목록 내보내기", "exportPatchesLabel": "패치 선택목록 내보내기",
"exportPatchesHint": "패치 선택목록을 JSON 파일로 내보냅니다", "exportPatchesHint": "패치 선택목록을 JSON 파일로 내보냅니다",
"exportedPatches": "패치 선택목록을 내보냈습니다", "exportedPatches": "패치 선택목록을 내보냈습니다",

View File

@ -132,7 +132,6 @@
"dynamicThemeHint": "Mėgaukis patirtimi artimiau tavo įrenginiui", "dynamicThemeHint": "Mėgaukis patirtimi artimiau tavo įrenginiui",
"languageLabel": "Kalba", "languageLabel": "Kalba",
"languageUpdated": "Kalba atnaujinta", "languageUpdated": "Kalba atnaujinta",
"sourcesIntegrationsLabel": "Integracijų šaltinis",
"sourcesResetDialogTitle": "Nustatyti iš naujo", "sourcesResetDialogTitle": "Nustatyti iš naujo",
"sourcesResetDialogText": "Ar tikrai norite iš naujo nustatyti savo šaltinius į numatytąsias vertes?", "sourcesResetDialogText": "Ar tikrai norite iš naujo nustatyti savo šaltinius į numatytąsias vertes?",
"apiURLResetDialogText": "Ar tikrai norite iš naujo nustatyti savo API URL adresą į numatytąją vertę?", "apiURLResetDialogText": "Ar tikrai norite iš naujo nustatyti savo API URL adresą į numatytąją vertę?",
@ -140,7 +139,6 @@
"selectApiURL": "API URL", "selectApiURL": "API URL",
"orgPatchesLabel": "Modifikacijų organizacija", "orgPatchesLabel": "Modifikacijų organizacija",
"sourcesPatchesLabel": "Modifikacijų šaltinis", "sourcesPatchesLabel": "Modifikacijų šaltinis",
"orgIntegrationsLabel": "Integracijų organizacija",
"contributorsLabel": "Prisidėjusieji žmonės", "contributorsLabel": "Prisidėjusieji žmonės",
"contributorsHint": "Žmonės prisidėję prie ReVanced", "contributorsHint": "Žmonės prisidėję prie ReVanced",
"logsLabel": "Dalytis įrašais", "logsLabel": "Dalytis įrašais",

View File

@ -114,13 +114,11 @@
"dynamicThemeLabel": "Materiāls izskats", "dynamicThemeLabel": "Materiāls izskats",
"dynamicThemeHint": "Izbaudi pieredzi personalizētu tavai ierīcei", "dynamicThemeHint": "Izbaudi pieredzi personalizētu tavai ierīcei",
"languageLabel": "Valoda", "languageLabel": "Valoda",
"sourcesIntegrationsLabel": "Integrācijas avots",
"sourcesResetDialogTitle": "Atiestatīt", "sourcesResetDialogTitle": "Atiestatīt",
"apiURLLabel": "API Saite", "apiURLLabel": "API Saite",
"selectApiURL": "API Saite", "selectApiURL": "API Saite",
"orgPatchesLabel": "Paču autori", "orgPatchesLabel": "Paču autori",
"sourcesPatchesLabel": "Paču avots", "sourcesPatchesLabel": "Paču avots",
"orgIntegrationsLabel": "Integrāciju autori",
"contributorsLabel": "Autori", "contributorsLabel": "Autori",
"contributorsHint": "ReVanced ieguldītāji", "contributorsHint": "ReVanced ieguldītāji",
"aboutLabel": "Par", "aboutLabel": "Par",

View File

@ -73,11 +73,9 @@
"exportSectionTitle": "Import & Eksport", "exportSectionTitle": "Import & Eksport",
"dynamicThemeHint": "Nikmati tema yang lebih serasi dengan anda", "dynamicThemeHint": "Nikmati tema yang lebih serasi dengan anda",
"languageLabel": "Bahasa", "languageLabel": "Bahasa",
"sourcesIntegrationsLabel": "Sumber Integrasi",
"sourcesResetDialogTitle": "Set semula", "sourcesResetDialogTitle": "Set semula",
"orgPatchesLabel": "Pengarang Modifikasi", "orgPatchesLabel": "Pengarang Modifikasi",
"sourcesPatchesLabel": "Sumber Modifikasi", "sourcesPatchesLabel": "Sumber Modifikasi",
"orgIntegrationsLabel": "Pengarang Integrasi",
"contributorsLabel": "Penyumbang", "contributorsLabel": "Penyumbang",
"contributorsHint": "Senarai penyokong ReVanced", "contributorsHint": "Senarai penyokong ReVanced",
"aboutLabel": "Tentang", "aboutLabel": "Tentang",

View File

@ -158,20 +158,18 @@
"languageLabel": "Språk", "languageLabel": "Språk",
"languageUpdated": "Språk oppdatert", "languageUpdated": "Språk oppdatert",
"sourcesLabel": "Alternative kilder", "sourcesLabel": "Alternative kilder",
"sourcesLabelHint": "Konfigurer alternative kilder for ReVanced Patches og ReVanced Integrations", "sourcesLabelHint": "Konfigurer alternative kilder for ReVanced Patches",
"sourcesIntegrationsLabel": "Integrasjoner kilde",
"useAlternativeSources": "Bruk alternative kilder", "useAlternativeSources": "Bruk alternative kilder",
"useAlternativeSourcesHint": "Bruk alternative kilder for ReVanced Patches and ReVanced Integrations i stedet for API", "useAlternativeSourcesHint": "Bruk alternative kilder for ReVanced Patches i stedet for API",
"sourcesResetDialogTitle": "Reset", "sourcesResetDialogTitle": "Reset",
"sourcesResetDialogText": "Er du sikker på at du vil tilbakestille kildene til standardverdiene?", "sourcesResetDialogText": "Er du sikker på at du vil tilbakestille kildene til standardverdiene?",
"apiURLResetDialogText": "Er du sikker på at du vil nullstille API URL til standardverdien?", "apiURLResetDialogText": "Er du sikker på at du vil nullstille API URL til standardverdien?",
"sourcesUpdateNote": "Merk: Dette vil automatisk laste ned ReVanced Patches og ReVanced Integrations fra de alternative kildene.\n\nDette vil koble deg til den alternative kilden.", "sourcesUpdateNote": "Merk: Dette vil automatisk laste ned ReVanced Patches fra de alternative kildene.\n\nDette vil koble deg til den alternative kilden.",
"apiURLLabel": "API URL", "apiURLLabel": "API URL",
"apiURLHint": "Konfigurere API URL til ReVanced Manager", "apiURLHint": "Konfigurere API URL til ReVanced Manager",
"selectApiURL": "API URL", "selectApiURL": "API URL",
"orgPatchesLabel": "Fikser organisasjon", "orgPatchesLabel": "Fikser organisasjon",
"sourcesPatchesLabel": "Patches source", "sourcesPatchesLabel": "Patches source",
"orgIntegrationsLabel": "Integrasjonsorganisasjon",
"contributorsLabel": "Bidragsytere", "contributorsLabel": "Bidragsytere",
"contributorsHint": "En liste over bidragsytere av ReVanced", "contributorsHint": "En liste over bidragsytere av ReVanced",
"logsLabel": "Del logger", "logsLabel": "Del logger",
@ -198,6 +196,12 @@
"deleteTempDirLabel": "Slett midlertidige filer", "deleteTempDirLabel": "Slett midlertidige filer",
"deleteTempDirHint": "Slett ubrukte midlertidige filer", "deleteTempDirHint": "Slett ubrukte midlertidige filer",
"deletedTempDir": "Midlertidige filer slettet", "deletedTempDir": "Midlertidige filer slettet",
"exportSettingsLabel": "Eksporter innstillingene",
"exportSettingsHint": "Eksporter innstillingene til en JSON-fil",
"exportedSettings": "Innstillinger eksportert",
"importSettingsLabel": "Importer innstillinger",
"importSettingsHint": "Importer innstillinger fra en JSON-fil",
"importedSettings": "Innstillinger importert",
"exportPatchesLabel": "Eksport patch valg", "exportPatchesLabel": "Eksport patch valg",
"exportPatchesHint": "Eksporter patch valg til en JSON-fil", "exportPatchesHint": "Eksporter patch valg til en JSON-fil",
"exportedPatches": "Patch utvalg eksportert", "exportedPatches": "Patch utvalg eksportert",

View File

@ -158,20 +158,18 @@
"languageLabel": "Taal", "languageLabel": "Taal",
"languageUpdated": "Taal bijgewerkt", "languageUpdated": "Taal bijgewerkt",
"sourcesLabel": "Alternatieve bronnen", "sourcesLabel": "Alternatieve bronnen",
"sourcesLabelHint": "Configureer de alternatieve bronnen voor ReVanced Patches en ReVanced Integrations", "sourcesLabelHint": "De alternatieve bronnen voor verbeterde patches configureren",
"sourcesIntegrationsLabel": "Integratiebronnen",
"useAlternativeSources": "Gebruik alternatieve bronnen", "useAlternativeSources": "Gebruik alternatieve bronnen",
"useAlternativeSourcesHint": "Gebruik alternatieve bronnen voor ReVanced Patches en ReVanced Integrations in plaats van de API", "useAlternativeSourcesHint": "Gebruik alternatieve bronnen voor ReVanced Patches in plaats van de API",
"sourcesResetDialogTitle": "Herstellen naar standaard", "sourcesResetDialogTitle": "Herstellen naar standaard",
"sourcesResetDialogText": "Weet u zeker dat u uw bronnen op hun standaardwaarden wilt herstellen?", "sourcesResetDialogText": "Weet u zeker dat u uw bronnen op hun standaardwaarden wilt herstellen?",
"apiURLResetDialogText": "Weet u zeker dat u uw API-URL wilt resetten naar de standaardwaarde?", "apiURLResetDialogText": "Weet u zeker dat u uw API-URL wilt resetten naar de standaardwaarde?",
"sourcesUpdateNote": "Opmerking: Dit zal automatisch ReVanced Patches en Revanced Integrations uit de alternatieve bronnen downloaden.\n\nDit zal je verbinden met de alternatieve bron.", "sourcesUpdateNote": "Opmerking: Dit zal automatisch ReVanceerde Patches uit de alternatieve bronnen downloaden.\n\nDit verbindt je met de alternatieve bron.",
"apiURLLabel": "API URL", "apiURLLabel": "API URL",
"apiURLHint": "Configureer de API URL van ReVanced Manager", "apiURLHint": "Configureer de API URL van ReVanced Manager",
"selectApiURL": "API URL", "selectApiURL": "API URL",
"orgPatchesLabel": "Beheer van patches", "orgPatchesLabel": "Beheer van patches",
"sourcesPatchesLabel": "Bronnen voor patches", "sourcesPatchesLabel": "Bronnen voor patches",
"orgIntegrationsLabel": "Integraties organisatie",
"contributorsLabel": "Bijdragers", "contributorsLabel": "Bijdragers",
"contributorsHint": "Een lijst met bijdragers van ReVanced", "contributorsHint": "Een lijst met bijdragers van ReVanced",
"logsLabel": "Deel logs", "logsLabel": "Deel logs",
@ -199,6 +197,12 @@
"deleteTempDirLabel": "Tijdelijke bestanden verwijderen", "deleteTempDirLabel": "Tijdelijke bestanden verwijderen",
"deleteTempDirHint": "Ongebruikte tijdelijke bestanden verwijderen", "deleteTempDirHint": "Ongebruikte tijdelijke bestanden verwijderen",
"deletedTempDir": "Tijdelijke bestanden verwijderd", "deletedTempDir": "Tijdelijke bestanden verwijderd",
"exportSettingsLabel": "Exporteer instellingen",
"exportSettingsHint": "Instellingen exporteren naar een JSON-bestand",
"exportedSettings": "Instellingen geëxporteerd",
"importSettingsLabel": "Instellingen importeren",
"importSettingsHint": "Instellingen importeren uit een JSON-bestand",
"importedSettings": "Instellingen geïmporteerd",
"exportPatchesLabel": "Exporteer patch selectie", "exportPatchesLabel": "Exporteer patch selectie",
"exportPatchesHint": "Exporteer patch selectie naar een JSON bestand", "exportPatchesHint": "Exporteer patch selectie naar een JSON bestand",
"exportedPatches": "Patch selectie geëxporteerd", "exportedPatches": "Patch selectie geëxporteerd",

View File

@ -58,11 +58,9 @@
"darkThemeLabel": "Mørk modus", "darkThemeLabel": "Mørk modus",
"dynamicThemeHint": "Nyt en erfaring nærmere din enhet", "dynamicThemeHint": "Nyt en erfaring nærmere din enhet",
"languageLabel": "Språk", "languageLabel": "Språk",
"sourcesIntegrationsLabel": "Integrasjoner kilde",
"sourcesResetDialogTitle": "Tilbakestill", "sourcesResetDialogTitle": "Tilbakestill",
"orgPatchesLabel": "Patches organisasjon", "orgPatchesLabel": "Patches organisasjon",
"sourcesPatchesLabel": "Patches kilde", "sourcesPatchesLabel": "Patches kilde",
"orgIntegrationsLabel": "Integrasjonsorganisasjon",
"contributorsLabel": "Medvirkende", "contributorsLabel": "Medvirkende",
"contributorsHint": "En liste med bidragsytere til ReVanced" "contributorsHint": "En liste med bidragsytere til ReVanced"
} }

View File

@ -158,20 +158,18 @@
"languageLabel": "Język", "languageLabel": "Język",
"languageUpdated": "Zaktualizowano język", "languageUpdated": "Zaktualizowano język",
"sourcesLabel": "Alternatywne źródło", "sourcesLabel": "Alternatywne źródło",
"sourcesLabelHint": "Skonfiguruj alternatywne źródła dla Łatek ReVanced i Integracji ReVanced", "sourcesLabelHint": "Skonfiguruj alternatywne źródła dla ulepszonych patchów",
"sourcesIntegrationsLabel": "Źródło integracji",
"useAlternativeSources": "Używaj alternatywnych źródeł", "useAlternativeSources": "Używaj alternatywnych źródeł",
"useAlternativeSourcesHint": "Używaj alternatywnych źródeł dla Łatek ReVanced i Integracji ReVanced zamiast API", "useAlternativeSourcesHint": "Użyj alternatywnych źródeł dla ulepszonych patchów zamiast API",
"sourcesResetDialogTitle": "Zresetuj", "sourcesResetDialogTitle": "Zresetuj",
"sourcesResetDialogText": "Czy na pewno chcesz przywrócić źródła niestandardowe do ich wartości domyślnych?", "sourcesResetDialogText": "Czy na pewno chcesz przywrócić źródła niestandardowe do ich wartości domyślnych?",
"apiURLResetDialogText": "Czy jesteś pewien, że chcesz przywrócić wszystkie adresy API do domyślnych wartości?", "apiURLResetDialogText": "Czy jesteś pewien, że chcesz przywrócić wszystkie adresy API do domyślnych wartości?",
"sourcesUpdateNote": "Uwaga: To automatycznie pobierze Łatki ReVanced i Integracje ReVanced z alternatywnych źródeł.\n\nTo połączy cię z alternatywnym źródłem.", "sourcesUpdateNote": "Uwaga: Spowoduje to automatyczne pobranie ulepszonych Patchów z alternatywnych źródeł.\n\nTo połączy Cię z alternatywnym źródłem.",
"apiURLLabel": "Adres API", "apiURLLabel": "Adres API",
"apiURLHint": "Skonfiguruj adres API Menedżera ReVanced", "apiURLHint": "Skonfiguruj adres API Menedżera ReVanced",
"selectApiURL": "Adres API", "selectApiURL": "Adres API",
"orgPatchesLabel": "Organizacja łatek", "orgPatchesLabel": "Organizacja łatek",
"sourcesPatchesLabel": "Źródło łatek", "sourcesPatchesLabel": "Źródło łatek",
"orgIntegrationsLabel": "Organizacja integracji",
"contributorsLabel": "Współtwórcy", "contributorsLabel": "Współtwórcy",
"contributorsHint": "Lista współtwórców ReVanced", "contributorsHint": "Lista współtwórców ReVanced",
"logsLabel": "Udostępnij logi", "logsLabel": "Udostępnij logi",
@ -199,6 +197,12 @@
"deleteTempDirLabel": "Usuń pliki tymczasowe", "deleteTempDirLabel": "Usuń pliki tymczasowe",
"deleteTempDirHint": "Usuń nieużywane pliki tymczasowe", "deleteTempDirHint": "Usuń nieużywane pliki tymczasowe",
"deletedTempDir": "Pliki tymczasowe zostały usunięte", "deletedTempDir": "Pliki tymczasowe zostały usunięte",
"exportSettingsLabel": "Eksportuj ustawienia",
"exportSettingsHint": "Eksportuj ustawienia do pliku JSON",
"exportedSettings": "Ustawienia wyeksportowane",
"importSettingsLabel": "Importuj ustawienia",
"importSettingsHint": "Importuj ustawienia z pliku JSON",
"importedSettings": "Ustawienia zaimportowane",
"exportPatchesLabel": "Eksportuj wybór łatek", "exportPatchesLabel": "Eksportuj wybór łatek",
"exportPatchesHint": "Eksportuj wybór łatek do pliku JSON", "exportPatchesHint": "Eksportuj wybór łatek do pliku JSON",
"exportedPatches": "Wyeksportowano wybór łatek", "exportedPatches": "Wyeksportowano wybór łatek",

View File

@ -156,20 +156,15 @@
"languageLabel": "Idioma", "languageLabel": "Idioma",
"languageUpdated": "Idioma atualizado", "languageUpdated": "Idioma atualizado",
"sourcesLabel": "Fontes alternativas", "sourcesLabel": "Fontes alternativas",
"sourcesLabelHint": "Configure as fontes alternativas para Patches ReVanced e Integrações ReVanced",
"sourcesIntegrationsLabel": "Fonte das integrações",
"useAlternativeSources": "Usar fontes alternativas", "useAlternativeSources": "Usar fontes alternativas",
"useAlternativeSourcesHint": "Use fontes alternativas para Patches ReVanced e Integrações ReVanced em vez da API",
"sourcesResetDialogTitle": "Redefinir", "sourcesResetDialogTitle": "Redefinir",
"sourcesResetDialogText": "Você tem certeza que quer redefinir as fontes para o padrão?", "sourcesResetDialogText": "Você tem certeza que quer redefinir as fontes para o padrão?",
"apiURLResetDialogText": "Tem certeza de que quer redefinir o URL da API para o padrão?", "apiURLResetDialogText": "Tem certeza de que quer redefinir o URL da API para o padrão?",
"sourcesUpdateNote": "Nota: Isso irá baixar automaticamente os Patches ReVanced e as Integrações ReVanced de fontes alternativas.\n\nIsso irá conectá-lo à fonte alternativa.",
"apiURLLabel": "URL da API", "apiURLLabel": "URL da API",
"apiURLHint": "Configure o URL da API do ReVanced Manager", "apiURLHint": "Configure o URL da API do ReVanced Manager",
"selectApiURL": "URL da API", "selectApiURL": "URL da API",
"orgPatchesLabel": "Organização dos patches", "orgPatchesLabel": "Organização dos patches",
"sourcesPatchesLabel": "Fonte dos patches", "sourcesPatchesLabel": "Fonte dos patches",
"orgIntegrationsLabel": "Organização das integrações",
"contributorsLabel": "Contribuidores", "contributorsLabel": "Contribuidores",
"contributorsHint": "Uma lista de contribuidores do ReVanced", "contributorsHint": "Uma lista de contribuidores do ReVanced",
"logsLabel": "Compartilhar logs", "logsLabel": "Compartilhar logs",

View File

@ -158,20 +158,17 @@
"languageLabel": "Idioma", "languageLabel": "Idioma",
"languageUpdated": "Idioma atualizado", "languageUpdated": "Idioma atualizado",
"sourcesLabel": "Fontes alternativas", "sourcesLabel": "Fontes alternativas",
"sourcesLabelHint": "Configurar as fontes alternativas para as Modificações ReVanced e Integrações ReVanced", "sourcesLabelHint": "Configure as fontes alternativas para Correções ReVanced",
"sourcesIntegrationsLabel": "Fonte das Integrações",
"useAlternativeSources": "Usar fontes alternativas", "useAlternativeSources": "Usar fontes alternativas",
"useAlternativeSourcesHint": "Usar fontes alternativas para as Modificações ReVanced e as Integrações ReVanced em vez da API", "useAlternativeSourcesHint": "Usar fontes alternativas para correções redistribuídas em vez da API",
"sourcesResetDialogTitle": "Repor", "sourcesResetDialogTitle": "Repor",
"sourcesResetDialogText": "Tens a certeza de que pretendes repor os valores predefinidos das fontes?", "sourcesResetDialogText": "Tens a certeza de que pretendes repor os valores predefinidos das fontes?",
"apiURLResetDialogText": "Tens a certeza de que pretendes repor a URL da API para o seu valor predefinido?", "apiURLResetDialogText": "Tens a certeza de que pretendes repor a URL da API para o seu valor predefinido?",
"sourcesUpdateNote": "Nota: Esta ação descarrega automaticamente as Modificações do ReVanced e as Integrações do ReVanced das fontes alternativas.\n\nIsto irá conectar-te com a fonte alternativa.",
"apiURLLabel": "URL da API", "apiURLLabel": "URL da API",
"apiURLHint": "Configurar a URL da API do Gestor ReVanced", "apiURLHint": "Configurar a URL da API do Gestor ReVanced",
"selectApiURL": "URL da API", "selectApiURL": "URL da API",
"orgPatchesLabel": "Organização de Modificações", "orgPatchesLabel": "Organização de Modificações",
"sourcesPatchesLabel": "Fonte das Modificações", "sourcesPatchesLabel": "Fonte das Modificações",
"orgIntegrationsLabel": "Organização de Integrações",
"contributorsLabel": "Contribuidores", "contributorsLabel": "Contribuidores",
"contributorsHint": "Uma lista de contribuidores do ReVanced", "contributorsHint": "Uma lista de contribuidores do ReVanced",
"logsLabel": "Partilhar registos", "logsLabel": "Partilhar registos",
@ -199,6 +196,12 @@
"deleteTempDirLabel": "Apagar arquivos temporários", "deleteTempDirLabel": "Apagar arquivos temporários",
"deleteTempDirHint": "Apagar arquivos temporários não utilizados", "deleteTempDirHint": "Apagar arquivos temporários não utilizados",
"deletedTempDir": "Arquivos temporários apagados", "deletedTempDir": "Arquivos temporários apagados",
"exportSettingsLabel": "Exportar configurações",
"exportSettingsHint": "Exportar configurações para um arquivo JSON",
"exportedSettings": "Configurações exportadas",
"importSettingsLabel": "Importar configurações",
"importSettingsHint": "Importar configurações de um arquivo JSON",
"importedSettings": "Configurações importadas",
"exportPatchesLabel": "Exportar a seleção de Modificações", "exportPatchesLabel": "Exportar a seleção de Modificações",
"exportPatchesHint": "Exportar a seleção de Modificações para um ficheiro JSON", "exportPatchesHint": "Exportar a seleção de Modificações para um ficheiro JSON",
"exportedPatches": "Seleção de Modificações exportada", "exportedPatches": "Seleção de Modificações exportada",

View File

@ -158,20 +158,18 @@
"languageLabel": "Limbă", "languageLabel": "Limbă",
"languageUpdated": "Limbă actualizată", "languageUpdated": "Limbă actualizată",
"sourcesLabel": "Surse alternative", "sourcesLabel": "Surse alternative",
"sourcesLabelHint": "Configurați sursele alternative pentru patch-urile ReVanced și Integrările ReVanced", "sourcesLabelHint": "Configurați sursele alternative pentru patch-urile revanced",
"sourcesIntegrationsLabel": "Sursă integrări",
"useAlternativeSources": "Folosiți surse alternative", "useAlternativeSources": "Folosiți surse alternative",
"useAlternativeSourcesHint": "Utilizați surse alternative pentru patch-urile revanced și Integrările ReVanced în loc de API", "useAlternativeSourcesHint": "Folosiți surse alternative pentru paturile revanced în loc de API",
"sourcesResetDialogTitle": "Resetează", "sourcesResetDialogTitle": "Resetează",
"sourcesResetDialogText": "Sunteți sigur că doriți să resetați sursele la valorile lor implicite?", "sourcesResetDialogText": "Sunteți sigur că doriți să resetați sursele la valorile lor implicite?",
"apiURLResetDialogText": "Sunteţi sigur că doriţi să resetaţi URL-ul API la valoarea sa implicită?", "apiURLResetDialogText": "Sunteţi sigur că doriţi să resetaţi URL-ul API la valoarea sa implicită?",
"sourcesUpdateNote": "Notă: Acest lucru va descărca automat patch-urile ReVanced și Integrările ReVanced din sursele alternative.\n\nAceasta vă va conecta la sursa alternativă.", "sourcesUpdateNote": "Notă: Aceasta va descărca automat plasturii ReVanced din sursele alternative.\n\nAceasta vă va conecta la sursa alternativă.",
"apiURLLabel": "API URL", "apiURLLabel": "API URL",
"apiURLHint": "Configurați URL-ul API al Managerului ReVanced", "apiURLHint": "Configurați URL-ul API al Managerului ReVanced",
"selectApiURL": "API URL", "selectApiURL": "API URL",
"orgPatchesLabel": "Organizarea patch-urilor", "orgPatchesLabel": "Organizarea patch-urilor",
"sourcesPatchesLabel": "Sursă patch-uri", "sourcesPatchesLabel": "Sursă patch-uri",
"orgIntegrationsLabel": "Organizare integrări",
"contributorsLabel": "Contribuitori", "contributorsLabel": "Contribuitori",
"contributorsHint": "O listă cu contribuitorii ReVanced", "contributorsHint": "O listă cu contribuitorii ReVanced",
"logsLabel": "Partajare jurnale", "logsLabel": "Partajare jurnale",
@ -199,6 +197,12 @@
"deleteTempDirLabel": "Ștergeți fișierele temporare", "deleteTempDirLabel": "Ștergeți fișierele temporare",
"deleteTempDirHint": "Șterge fișierele temporare neutilizate", "deleteTempDirHint": "Șterge fișierele temporare neutilizate",
"deletedTempDir": "Fișierele temporare au fost șterse", "deletedTempDir": "Fișierele temporare au fost șterse",
"exportSettingsLabel": "Exportă setările",
"exportSettingsHint": "Exportă setările într-un fișier JSON",
"exportedSettings": "Setări exportate",
"importSettingsLabel": "Importă setări",
"importSettingsHint": "Importă setările dintr-un fișier JSON",
"importedSettings": "Setări importate",
"exportPatchesLabel": "Exportați selecția patch-urilor", "exportPatchesLabel": "Exportați selecția patch-urilor",
"exportPatchesHint": "Exportați selecția patch-urilor într-un fișier JSON", "exportPatchesHint": "Exportați selecția patch-urilor într-un fișier JSON",
"exportedPatches": "Selecția patch-urilor a fost exportată", "exportedPatches": "Selecția patch-urilor a fost exportată",

View File

@ -158,20 +158,18 @@
"languageLabel": "Язык", "languageLabel": "Язык",
"languageUpdated": "Язык обновлен", "languageUpdated": "Язык обновлен",
"sourcesLabel": "Альтернативные источники", "sourcesLabel": "Альтернативные источники",
"sourcesLabelHint": "Настроить альтернативные источники для патчей и интеграций ReVanced", "sourcesLabelHint": "Настроить альтернативные источники для ReVanced Patches",
"sourcesIntegrationsLabel": "Репозиторий интеграций",
"useAlternativeSources": "Использовать альтернативные источники", "useAlternativeSources": "Использовать альтернативные источники",
"useAlternativeSourcesHint": "Использовать альтернативные источники для патчей и интеграций ReVanced вместо API", "useAlternativeSourcesHint": "Использовать альтернативные источники для ReVanced Patches вместо API",
"sourcesResetDialogTitle": "Сброс", "sourcesResetDialogTitle": "Сброс",
"sourcesResetDialogText": "Вы уверены, что хотите сбросить ваши источники до значений по умолчанию?", "sourcesResetDialogText": "Вы уверены, что хотите сбросить ваши источники до значений по умолчанию?",
"apiURLResetDialogText": "Вы уверены, что хотите сбросить API-ссылку до значения по умолчанию?", "apiURLResetDialogText": "Вы уверены, что хотите сбросить API-ссылку до значения по умолчанию?",
"sourcesUpdateNote": "Примечание: при этом будут автоматически загружены патчи и интеграции ReVanced из альтернативных источников.\n\nЭто соединит вас с альтернативным источником.", "sourcesUpdateNote": "Примечание: Это автоматически загрузит ReVanced Patches из альтернативных источников.\n\nЭто соединит вас с альтернативным источником.",
"apiURLLabel": "API-ссылка", "apiURLLabel": "API-ссылка",
"apiURLHint": "Настройте URL-адрес API ReVanced Менеджера", "apiURLHint": "Настройте URL-адрес API ReVanced Менеджера",
"selectApiURL": "API-ссылка", "selectApiURL": "API-ссылка",
"orgPatchesLabel": "Организация патчей", "orgPatchesLabel": "Организация патчей",
"sourcesPatchesLabel": "Репозиторий патчей", "sourcesPatchesLabel": "Репозиторий патчей",
"orgIntegrationsLabel": "Организация интеграций",
"contributorsLabel": "Соучастники проекта", "contributorsLabel": "Соучастники проекта",
"contributorsHint": "Список соучастников ReVanced", "contributorsHint": "Список соучастников ReVanced",
"logsLabel": "Поделиться логами", "logsLabel": "Поделиться логами",
@ -199,6 +197,12 @@
"deleteTempDirLabel": "Удалить временные файлы", "deleteTempDirLabel": "Удалить временные файлы",
"deleteTempDirHint": "Удалить неиспользуемые временные файлы", "deleteTempDirHint": "Удалить неиспользуемые временные файлы",
"deletedTempDir": "Временные файлы удалены", "deletedTempDir": "Временные файлы удалены",
"exportSettingsLabel": "Настройки экспорта",
"exportSettingsHint": "Экспорт настроек в JSON файл",
"exportedSettings": "Настройки экспортированы",
"importSettingsLabel": "Импорт настроек",
"importSettingsHint": "Импорт настроек из файла JSON",
"importedSettings": "Настройки импортированы",
"exportPatchesLabel": "Экспорт выборки патчей", "exportPatchesLabel": "Экспорт выборки патчей",
"exportPatchesHint": "Экспортировать выборку патчей в JSON файл", "exportPatchesHint": "Экспортировать выборку патчей в JSON файл",
"exportedPatches": "Выборка патчей экспортирована", "exportedPatches": "Выборка патчей экспортирована",

View File

@ -111,13 +111,11 @@
"dynamicThemeLabel": "Material You", "dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Užite si tému bližíe prispôsobenú vášmu zariadeniu", "dynamicThemeHint": "Užite si tému bližíe prispôsobenú vášmu zariadeniu",
"languageLabel": "Jazyk", "languageLabel": "Jazyk",
"sourcesIntegrationsLabel": "Zdroj integrácie",
"sourcesResetDialogTitle": "Resetovať", "sourcesResetDialogTitle": "Resetovať",
"apiURLLabel": "URL API", "apiURLLabel": "URL API",
"selectApiURL": "URL API", "selectApiURL": "URL API",
"orgPatchesLabel": "Autor záplaty", "orgPatchesLabel": "Autor záplaty",
"sourcesPatchesLabel": "Zdroj záplaty", "sourcesPatchesLabel": "Zdroj záplaty",
"orgIntegrationsLabel": "Autor integrácie",
"contributorsLabel": "Prispievatelia", "contributorsLabel": "Prispievatelia",
"contributorsHint": "Zoznam prispievateľov projektu ReVanced", "contributorsHint": "Zoznam prispievateľov projektu ReVanced",
"disablePatchesSelectionWarningText": "Chystáte sa zakázať zmenu výberu záplat. \nPredvolený výber záplat bude obnovený.\n\nZakázať aj napriek tomu?", "disablePatchesSelectionWarningText": "Chystáte sa zakázať zmenu výberu záplat. \nPredvolený výber záplat bude obnovený.\n\nZakázať aj napriek tomu?",

View File

@ -119,20 +119,15 @@
"languageLabel": "Jezik", "languageLabel": "Jezik",
"languageUpdated": "Jezik je posodobljen", "languageUpdated": "Jezik je posodobljen",
"sourcesLabel": "Alternativni viri", "sourcesLabel": "Alternativni viri",
"sourcesLabelHint": "Nastavite alternativne vire za ReVanced Patches in ReVanced Integrations",
"sourcesIntegrationsLabel": "Vir integracij",
"useAlternativeSources": "Uporabi alternativne vire", "useAlternativeSources": "Uporabi alternativne vire",
"useAlternativeSourcesHint": "Namesto API-ja uporabi alternativne vire za ReVanced Patches in ReVanced Integrations",
"sourcesResetDialogTitle": "Ponastavi", "sourcesResetDialogTitle": "Ponastavi",
"sourcesResetDialogText": "Ali ste prepričani, da želite ponastaviti svoje vire na privzete vrednosti?", "sourcesResetDialogText": "Ali ste prepričani, da želite ponastaviti svoje vire na privzete vrednosti?",
"apiURLResetDialogText": "Ali ste prepričani, da želite ponastaviti svojo povezavo do API-ja na privzeto vrednost?", "apiURLResetDialogText": "Ali ste prepričani, da želite ponastaviti svojo povezavo do API-ja na privzeto vrednost?",
"sourcesUpdateNote": "Pozor: ReVanced Patches in ReVanced Integrations se bosta privzeto prenesla iz alternativnih virov.\n\nTa nastavitev bo vzpostavila povezavo na alternativni vir.",
"apiURLLabel": "URL API-ja", "apiURLLabel": "URL API-ja",
"apiURLHint": "Nastavi naslov URL za API ReVanced Managerja", "apiURLHint": "Nastavi naslov URL za API ReVanced Managerja",
"selectApiURL": "URL API-ja", "selectApiURL": "URL API-ja",
"orgPatchesLabel": "Organizacija popravkov", "orgPatchesLabel": "Organizacija popravkov",
"sourcesPatchesLabel": "Vir popravkov", "sourcesPatchesLabel": "Vir popravkov",
"orgIntegrationsLabel": "Organizacija integracij",
"contributorsLabel": "Sodelujoči", "contributorsLabel": "Sodelujoči",
"contributorsHint": "Seznam sodelujočih pri projektu ReVanced", "contributorsHint": "Seznam sodelujočih pri projektu ReVanced",
"logsLabel": "Deli dnevniške podatke", "logsLabel": "Deli dnevniške podatke",

View File

@ -76,11 +76,9 @@
"dynamicThemeLabel": "Materiali Ti", "dynamicThemeLabel": "Materiali Ti",
"dynamicThemeHint": "Shijo një përvojë më të afërt me pajisjen tënde", "dynamicThemeHint": "Shijo një përvojë më të afërt me pajisjen tënde",
"languageLabel": "Gjuha", "languageLabel": "Gjuha",
"sourcesIntegrationsLabel": "Burimi i integrimeve",
"sourcesResetDialogTitle": "Rivendos", "sourcesResetDialogTitle": "Rivendos",
"orgPatchesLabel": "Organizimi i modifikimeve", "orgPatchesLabel": "Organizimi i modifikimeve",
"sourcesPatchesLabel": "Burimi i modifikuesëve", "sourcesPatchesLabel": "Burimi i modifikuesëve",
"orgIntegrationsLabel": "Organizimi i integrimeve",
"contributorsLabel": "Kontribuesit", "contributorsLabel": "Kontribuesit",
"contributorsHint": "Lista e kontribuesve të ReVanced", "contributorsHint": "Lista e kontribuesve të ReVanced",
"aboutLabel": "Rreth nesh", "aboutLabel": "Rreth nesh",

View File

@ -158,20 +158,18 @@
"languageLabel": "Jezik", "languageLabel": "Jezik",
"languageUpdated": "Jezik je promenjen", "languageUpdated": "Jezik je promenjen",
"sourcesLabel": "Alternativni izvori", "sourcesLabel": "Alternativni izvori",
"sourcesLabelHint": "Podesite alternativne izvore za ReVanced pečeve i integracije", "sourcesLabelHint": "Podesite alternativne izvore za ReVanced pečeve",
"sourcesIntegrationsLabel": "Izvor integracija",
"useAlternativeSources": "Koristi alternativne izvore", "useAlternativeSources": "Koristi alternativne izvore",
"useAlternativeSourcesHint": "Koristite alternativne izvore za ReVanced pečeve i integracije umesto API-ja", "useAlternativeSourcesHint": "Koristite alternativne izvore za ReVanced pečeve umesto API-ja",
"sourcesResetDialogTitle": "Resetovanje", "sourcesResetDialogTitle": "Resetovanje",
"sourcesResetDialogText": "Želite li zaista da vratite izvore na podrazumevane vrednosti?", "sourcesResetDialogText": "Želite li zaista da vratite izvore na podrazumevane vrednosti?",
"apiURLResetDialogText": "Želite li zaista da vratite URL API-ja na podrazumevanu vrednost?", "apiURLResetDialogText": "Želite li zaista da vratite URL API-ja na podrazumevanu vrednost?",
"sourcesUpdateNote": "Napomena: Ovo će automatski preuzeti ReVanced pečeve i integracije iz alternativnih izvora.\n\nBićete povezani sa alternativnim izvorom.", "sourcesUpdateNote": "Napomena: Ovo će automatski preuzeti ReVanced pečeve iz alternativnih izvora.\n\nBićete povezani sa alternativnim izvorom.",
"apiURLLabel": "URL API-ja", "apiURLLabel": "URL API-ja",
"apiURLHint": "Podesite URL API-ja za ReVanced Manager", "apiURLHint": "Podesite URL API-ja za ReVanced Manager",
"selectApiURL": "URL API-ja", "selectApiURL": "URL API-ja",
"orgPatchesLabel": "Organizacija za pečeve", "orgPatchesLabel": "Organizacija za pečeve",
"sourcesPatchesLabel": "Izvor pečeva", "sourcesPatchesLabel": "Izvor pečeva",
"orgIntegrationsLabel": "Organizacija za integracije",
"contributorsLabel": "Saradnici", "contributorsLabel": "Saradnici",
"contributorsHint": "Lista saradnika na ReVancedu", "contributorsHint": "Lista saradnika na ReVancedu",
"logsLabel": "Deli evidencije", "logsLabel": "Deli evidencije",
@ -199,6 +197,12 @@
"deleteTempDirLabel": "Izbriši privremene fajlove", "deleteTempDirLabel": "Izbriši privremene fajlove",
"deleteTempDirHint": "Izbrišite nekorišćene privremene fajlove", "deleteTempDirHint": "Izbrišite nekorišćene privremene fajlove",
"deletedTempDir": "Privremeni fajlovi su izbrisani", "deletedTempDir": "Privremeni fajlovi su izbrisani",
"exportSettingsLabel": "Izvezi podešavanja",
"exportSettingsHint": "Izvezite podešavanja u JSON fajl",
"exportedSettings": "Podešavanja su izvezena",
"importSettingsLabel": "Uvezi podešavanja",
"importSettingsHint": "Uvezite podešavanja iz JSON fajla",
"importedSettings": "Podešavanja su uvezena",
"exportPatchesLabel": "Izvezi izbor pečeva", "exportPatchesLabel": "Izvezi izbor pečeva",
"exportPatchesHint": "Izvezite izbor pečeva u JSON fajl", "exportPatchesHint": "Izvezite izbor pečeva u JSON fajl",
"exportedPatches": "Izbor pečeva je izvezen", "exportedPatches": "Izbor pečeva je izvezen",

View File

@ -158,20 +158,18 @@
"languageLabel": "Језик", "languageLabel": "Језик",
"languageUpdated": "Језик је промењен", "languageUpdated": "Језик је промењен",
"sourcesLabel": "Алтернативни извори", "sourcesLabel": "Алтернативни извори",
"sourcesLabelHint": "Подесите алтернативне изворе за ReVanced печеве и интеграције", "sourcesLabelHint": "Подесите алтернативне изворе за ReVanced печеве",
"sourcesIntegrationsLabel": "Извор интеграција",
"useAlternativeSources": "Користи алтернативне изворе", "useAlternativeSources": "Користи алтернативне изворе",
"useAlternativeSourcesHint": "Користите алтернативне изворе за ReVanced печеве и интеграције уместо API-ја", "useAlternativeSourcesHint": "Користите алтернативне изворе за ReVanced печеве уместо API-ја",
"sourcesResetDialogTitle": "Ресетовање", "sourcesResetDialogTitle": "Ресетовање",
"sourcesResetDialogText": "Желите ли заиста да вратите изворе на подразумеване вредности?", "sourcesResetDialogText": "Желите ли заиста да вратите изворе на подразумеване вредности?",
"apiURLResetDialogText": "Желите ли заиста да вратите URL API-ја на подразумевану вредност?", "apiURLResetDialogText": "Желите ли заиста да вратите URL API-ја на подразумевану вредност?",
"sourcesUpdateNote": "Напомена: Ово ће аутоматски преузети ReVanced печеве и интеграције из алтернативних извора.\n\nБићете повезани са алтернативним извором.", "sourcesUpdateNote": "Напомена: Ово ће аутоматски преузети ReVanced печеве из алтернативних извора.\n\nБићете повезани са алтернативним извором.",
"apiURLLabel": "URL API-ја", "apiURLLabel": "URL API-ја",
"apiURLHint": "Подесите URL API-ја за ReVanced Manager", "apiURLHint": "Подесите URL API-ја за ReVanced Manager",
"selectApiURL": "URL API-ја", "selectApiURL": "URL API-ја",
"orgPatchesLabel": "Организација за печеве", "orgPatchesLabel": "Организација за печеве",
"sourcesPatchesLabel": "Извор печева", "sourcesPatchesLabel": "Извор печева",
"orgIntegrationsLabel": "Организација за интеграције",
"contributorsLabel": "Сарадници", "contributorsLabel": "Сарадници",
"contributorsHint": "Листа сарадника на ReVanced-у", "contributorsHint": "Листа сарадника на ReVanced-у",
"logsLabel": "Дели евиденције", "logsLabel": "Дели евиденције",
@ -199,6 +197,12 @@
"deleteTempDirLabel": "Избриши привремене фајлове", "deleteTempDirLabel": "Избриши привремене фајлове",
"deleteTempDirHint": "Избришите некоришћене привремене фајлове", "deleteTempDirHint": "Избришите некоришћене привремене фајлове",
"deletedTempDir": "Привремени фајлови су избрисани", "deletedTempDir": "Привремени фајлови су избрисани",
"exportSettingsLabel": "Извези подешавања",
"exportSettingsHint": "Извезите подешавања у JSON фајл",
"exportedSettings": "Подешавања су извезена",
"importSettingsLabel": "Увези подешавања",
"importSettingsHint": "Увезите подешавања из JSON фајла",
"importedSettings": "Подешавања су увезена",
"exportPatchesLabel": "Извези избор печева", "exportPatchesLabel": "Извези избор печева",
"exportPatchesHint": "Извезите избор печева у JSON фајл", "exportPatchesHint": "Извезите избор печева у JSON фајл",
"exportedPatches": "Избор печева је извезен", "exportedPatches": "Избор печева је извезен",

View File

@ -158,20 +158,18 @@
"languageLabel": "Språk", "languageLabel": "Språk",
"languageUpdated": "Språket uppdaterat", "languageUpdated": "Språket uppdaterat",
"sourcesLabel": "Alternativa källor", "sourcesLabel": "Alternativa källor",
"sourcesLabelHint": "Konfigurera alternativa källor för ReVanced patches och ReVanced integrations", "sourcesLabelHint": "Konfigurera alternativa källor för ReVanced Patches",
"sourcesIntegrationsLabel": "Källa för integrationer",
"useAlternativeSources": "Använd alternativa källor", "useAlternativeSources": "Använd alternativa källor",
"useAlternativeSourcesHint": "Använd alternativa källor för ReVanced patches och ReVanced integrationer i stället för API", "useAlternativeSourcesHint": "Använd alternativa källor för ReVanced Patches istället för API",
"sourcesResetDialogTitle": "Återställ", "sourcesResetDialogTitle": "Återställ",
"sourcesResetDialogText": "Är du säker på att du vill återställa dina källorna till deras standardvärden?", "sourcesResetDialogText": "Är du säker på att du vill återställa dina källorna till deras standardvärden?",
"apiURLResetDialogText": "Är du säker att du vill återställa API-webbadressen till standardvärdet?", "apiURLResetDialogText": "Är du säker att du vill återställa API-webbadressen till standardvärdet?",
"sourcesUpdateNote": "Obs: Detta kommer automatiskt att ladda ner ReVanced patches och ReVanced integrationer från alternativa källor.\n\nDetta kommer att ansluta dig till den alternativa källan.", "sourcesUpdateNote": "Obs: Detta kommer automatiskt att ladda ner ReVanced Patches från de alternativa källorna.\n\nDetta kommer att ansluta dig till den alternativa källan.",
"apiURLLabel": "API-webbadress", "apiURLLabel": "API-webbadress",
"apiURLHint": "Konfigurera API-webbadressen för ReVanced-hanterare", "apiURLHint": "Konfigurera API-webbadressen för ReVanced-hanterare",
"selectApiURL": "API-webbadress", "selectApiURL": "API-webbadress",
"orgPatchesLabel": "Organisation för patchar", "orgPatchesLabel": "Organisation för patchar",
"sourcesPatchesLabel": "Källa för patchar", "sourcesPatchesLabel": "Källa för patchar",
"orgIntegrationsLabel": "Organisation för integrationer",
"contributorsLabel": "Medverkande", "contributorsLabel": "Medverkande",
"contributorsHint": "En lista över medverkare för ReVanced", "contributorsHint": "En lista över medverkare för ReVanced",
"logsLabel": "Dela loggar", "logsLabel": "Dela loggar",
@ -199,6 +197,12 @@
"deleteTempDirLabel": "Ta bort temporära filer", "deleteTempDirLabel": "Ta bort temporära filer",
"deleteTempDirHint": "Ta bort oanvända temporära filer", "deleteTempDirHint": "Ta bort oanvända temporära filer",
"deletedTempDir": "Temporära filer borttagna", "deletedTempDir": "Temporära filer borttagna",
"exportSettingsLabel": "Exportera inställningar",
"exportSettingsHint": "Exportera inställningar till en JSON-fil",
"exportedSettings": "Inställningar exporterade",
"importSettingsLabel": "Importera inställningar",
"importSettingsHint": "Importera inställningar från en JSON-fil",
"importedSettings": "Inställningar importerade",
"exportPatchesLabel": "Exportera valda patchar", "exportPatchesLabel": "Exportera valda patchar",
"exportPatchesHint": "Exportera valda patchar till en JSON-fil", "exportPatchesHint": "Exportera valda patchar till en JSON-fil",
"exportedPatches": "Valda patchar exporterade", "exportedPatches": "Valda patchar exporterade",

View File

@ -135,11 +135,9 @@
"dynamicThemeLabel": "Material You", "dynamicThemeLabel": "Material You",
"dynamicThemeHint": "உங்கள் கருவிக்கு நெருக்கமான அனுபவத்தை அனுபவிக்கவும்", "dynamicThemeHint": "உங்கள் கருவிக்கு நெருக்கமான அனுபவத்தை அனுபவிக்கவும்",
"languageLabel": "மொழி", "languageLabel": "மொழி",
"sourcesIntegrationsLabel": "ஒருங்கிணைப்புகளின் மூலம்",
"sourcesResetDialogTitle": "மறுஅமை", "sourcesResetDialogTitle": "மறுஅமை",
"orgPatchesLabel": "இணைப்புகளின் அமைப்பு", "orgPatchesLabel": "இணைப்புகளின் அமைப்பு",
"sourcesPatchesLabel": "இணைப்புகளின் மூலம்", "sourcesPatchesLabel": "இணைப்புகளின் மூலம்",
"orgIntegrationsLabel": "ஒருங்கிணைப்புகளின் அமைப்பு",
"contributorsLabel": "பங்களிப்பாளர்கள்", "contributorsLabel": "பங்களிப்பாளர்கள்",
"contributorsHint": "ReVancedற்குப் பங்களித்தோர் பட்டியல்", "contributorsHint": "ReVancedற்குப் பங்களித்தோர் பட்டியல்",
"aboutLabel": "இதைப் பற்றி", "aboutLabel": "இதைப் பற்றி",

View File

@ -4,7 +4,7 @@
"dismissButton": "ปิด", "dismissButton": "ปิด",
"quitButton": "ออก", "quitButton": "ออก",
"updateButton": "อัปเดต", "updateButton": "อัปเดต",
"suggested": "แนะนำ ${version}", "suggested": "แนะนำ: ${version}",
"yesButton": "ใช่", "yesButton": "ใช่",
"noButton": "ไม่", "noButton": "ไม่",
"warning": "คำเตือน", "warning": "คำเตือน",
@ -103,13 +103,11 @@
"dynamicThemeHint": "เพลิดเพลินกับประสบการณ์ที่ใกล้ชิดกับอุปกรณ์ของคุณมากขึ้น", "dynamicThemeHint": "เพลิดเพลินกับประสบการณ์ที่ใกล้ชิดกับอุปกรณ์ของคุณมากขึ้น",
"languageLabel": "ภาษา", "languageLabel": "ภาษา",
"languageUpdated": "อัพเดตภาษาแล้ว", "languageUpdated": "อัพเดตภาษาแล้ว",
"sourcesIntegrationsLabel": "ที่มาของส่วนเสริม",
"sourcesResetDialogTitle": "รีเซ็ต", "sourcesResetDialogTitle": "รีเซ็ต",
"apiURLLabel": "ลิงค์ของ API", "apiURLLabel": "ลิงค์ของ API",
"selectApiURL": "ลิงค์ของ API", "selectApiURL": "ลิงค์ของ API",
"orgPatchesLabel": "ผู้ดูแลการดัดแปลง", "orgPatchesLabel": "ผู้ดูแลการดัดแปลง",
"sourcesPatchesLabel": "ที่มาของการดัดแปลง", "sourcesPatchesLabel": "ที่มาของการดัดแปลง",
"orgIntegrationsLabel": "ผู้ดูแลส่วนเสริม",
"contributorsLabel": "ผู้ช่วยเหลือโปรเจกต์", "contributorsLabel": "ผู้ช่วยเหลือโปรเจกต์",
"contributorsHint": "รายชื่อผู้ที่ช่วยเหลือกับโปรเจ็กต์ ReVanced", "contributorsHint": "รายชื่อผู้ที่ช่วยเหลือกับโปรเจ็กต์ ReVanced",
"aboutLabel": "เกี่ยวกับ", "aboutLabel": "เกี่ยวกับ",
@ -119,6 +117,8 @@
"deleteTempDirHint": "ลบไฟล์ชั่วคราวที่ไม่ได้ใช้งาน", "deleteTempDirHint": "ลบไฟล์ชั่วคราวที่ไม่ได้ใช้งาน",
"deletedTempDir": "ลบไฟล์ชั่วคราวแล้ว", "deletedTempDir": "ลบไฟล์ชั่วคราวแล้ว",
"deletedLogs": "ลบบันทึกแล้ว", "deletedLogs": "ลบบันทึกแล้ว",
"regenerateKeystoreLabel": "สร้าง Keystore ใหม่",
"regenerateKeystoreDialogTitle": "สร้าง Keystore ใหม่",
"exportKeystoreLabel": "ส่งออก keystore", "exportKeystoreLabel": "ส่งออก keystore",
"exportedKeystore": "ส่งออก keystore แล้ว", "exportedKeystore": "ส่งออก keystore แล้ว",
"noKeystoreExportFileFound": "ไม่มี keystore ให้ส่งออก", "noKeystoreExportFileFound": "ไม่มี keystore ให้ส่งออก",
@ -132,6 +132,8 @@
"openButton": "เปิด", "openButton": "เปิด",
"installButton": "ติดตั้ง", "installButton": "ติดตั้ง",
"uninstallButton": "ถอนการติดตั้ง", "uninstallButton": "ถอนการติดตั้ง",
"exportButton": "ส่งออก",
"deleteButton": "ลบ",
"rootDialogTitle": "ข้อผิดพลาด", "rootDialogTitle": "ข้อผิดพลาด",
"rootDialogText": "แอปได้รับการติดตั้งด้วยสิทธิ์ผู้ใช้ขั้นสูงแต่ ReVanced Manager ปัจจุบันยังไม่ได้รับสิทธิ์\nโปรดอนุญาตสิทธิ์ผู้ใช้ขั้นสูงก่อน", "rootDialogText": "แอปได้รับการติดตั้งด้วยสิทธิ์ผู้ใช้ขั้นสูงแต่ ReVanced Manager ปัจจุบันยังไม่ได้รับสิทธิ์\nโปรดอนุญาตสิทธิ์ผู้ใช้ขั้นสูงก่อน",
"packageNameLabel": "ชื่อแพ็กเกจ", "packageNameLabel": "ชื่อแพ็กเกจ",

View File

@ -158,20 +158,18 @@
"languageLabel": "Dil", "languageLabel": "Dil",
"languageUpdated": "Dil güncellendi", "languageUpdated": "Dil güncellendi",
"sourcesLabel": "Alternatif kaynaklar", "sourcesLabel": "Alternatif kaynaklar",
"sourcesLabelHint": "ReVanced Patches ve ReVanced Integrations için alternatif kaynakları ayarlayın", "sourcesLabelHint": "ReVanced Yamaları için alternatif kaynakları yapılandırın",
"sourcesIntegrationsLabel": "Integrations source",
"useAlternativeSources": "Alternatif kaynakları kullan", "useAlternativeSources": "Alternatif kaynakları kullan",
"useAlternativeSourcesHint": "ReVanced Patches ve ReVanced Integrations için API yerine alternatif kaynakları kullanın", "useAlternativeSourcesHint": "ReVanced Yamaları için API yerine alternatif kaynakları kullanın",
"sourcesResetDialogTitle": "Sıfırla", "sourcesResetDialogTitle": "Sıfırla",
"sourcesResetDialogText": "Kaynaklarınızı varsayılan değerlerine sıfırlamak istediğinizden emin misiniz?", "sourcesResetDialogText": "Kaynaklarınızı varsayılan değerlerine sıfırlamak istediğinizden emin misiniz?",
"apiURLResetDialogText": "API URL'nizi varsayılan değerine sıfırlamak istediğinizden emin misiniz?", "apiURLResetDialogText": "API URL'nizi varsayılan değerine sıfırlamak istediğinizden emin misiniz?",
"sourcesUpdateNote": "Not: Bu, ReVanced Patches'ı ve ReVanced Integrations'ı otomatik olarak alternatif kaynaklardan indirecektir.\n\nBu sizi alternatif kaynağa bağlayacaktır.", "sourcesUpdateNote": "Not: Bu, ReVanced Yamalarını otomatik olarak alternatif kaynaklardan indirecektir.\n\nBu sizi alternatif kaynağa bağlayacaktır.",
"apiURLLabel": "API URL'si", "apiURLLabel": "API URL'si",
"apiURLHint": "ReVanced Manager'in API URL'sini ayarlayın", "apiURLHint": "ReVanced Manager'in API URL'sini ayarlayın",
"selectApiURL": "API URL'si", "selectApiURL": "API URL'si",
"orgPatchesLabel": "Patches organization", "orgPatchesLabel": "Patches organization",
"sourcesPatchesLabel": "Patches source", "sourcesPatchesLabel": "Patches source",
"orgIntegrationsLabel": "Integrations organization",
"contributorsLabel": "Katkıda bulunanlar", "contributorsLabel": "Katkıda bulunanlar",
"contributorsHint": "ReVanced'a katkıda bulunanların listesi", "contributorsHint": "ReVanced'a katkıda bulunanların listesi",
"logsLabel": "Logları paylaş", "logsLabel": "Logları paylaş",
@ -199,6 +197,12 @@
"deleteTempDirLabel": "Geçici dosyaları sil", "deleteTempDirLabel": "Geçici dosyaları sil",
"deleteTempDirHint": "Kullanılmayan geçici dosyaları silin", "deleteTempDirHint": "Kullanılmayan geçici dosyaları silin",
"deletedTempDir": "Geçici dosyalar silindi", "deletedTempDir": "Geçici dosyalar silindi",
"exportSettingsLabel": "Ayarları dışa aktar",
"exportSettingsHint": "Ayarları JSON dosyasına aktar",
"exportedSettings": "Ayarlar dışa aktarıldı",
"importSettingsLabel": "Ayarları içe aktar",
"importSettingsHint": "Ayarları JSON dosyasından içe aktar",
"importedSettings": "Ayarlar içe aktarıldı",
"exportPatchesLabel": "Yama seçimini dışa aktar", "exportPatchesLabel": "Yama seçimini dışa aktar",
"exportPatchesHint": "Yama seçimini bir JSON dosyasına kaydedin", "exportPatchesHint": "Yama seçimini bir JSON dosyasına kaydedin",
"exportedPatches": "Yama seçimi dışa aktarıldı", "exportedPatches": "Yama seçimi dışa aktarıldı",

View File

@ -158,20 +158,18 @@
"languageLabel": "Мова", "languageLabel": "Мова",
"languageUpdated": "Мову застосунку оновлено", "languageUpdated": "Мову застосунку оновлено",
"sourcesLabel": "Альтернативні джерела", "sourcesLabel": "Альтернативні джерела",
"sourcesLabelHint": "Налаштувати альтернативні джерела для ReVanced Patches та ReVanced Integrations", "sourcesLabelHint": "Налаштувати альтернативні джерела для ReVanced Patches",
"sourcesIntegrationsLabel": "Integrations source",
"useAlternativeSources": "Використовувати альтернативні джерела", "useAlternativeSources": "Використовувати альтернативні джерела",
"useAlternativeSourcesHint": "Використовувати альтернативні джерела для ReVanced Patches та ReVanced Integrations замість API", "useAlternativeSourcesHint": "Використовувати альтернативні джерела для ReVanced Patches замість API",
"sourcesResetDialogTitle": "Скинути", "sourcesResetDialogTitle": "Скинути",
"sourcesResetDialogText": "Ви дійсно бажаєте відновити стандартні значення джерел?", "sourcesResetDialogText": "Ви дійсно бажаєте відновити стандартні значення джерел?",
"apiURLResetDialogText": "Ви дійсно бажаєте відновити API URL до стандартного значення?", "apiURLResetDialogText": "Ви дійсно бажаєте відновити API URL до стандартного значення?",
"sourcesUpdateNote": "Примітка. Це автоматично завантажить ReVanced Patches і ReVanced Integrations з альтернативних джерел.\n\nЦе під'єднає Вас до альтернативного джерела.", "sourcesUpdateNote": "Примітка: Це автоматично завантажить ReVanced Patches з альтернативних джерел.\n\nЦе під'єднає Вас до альтернативного джерела.",
"apiURLLabel": "URL-адреса API", "apiURLLabel": "URL-адреса API",
"apiURLHint": "Налаштувати API URL для ReVanced Manager", "apiURLHint": "Налаштувати API URL для ReVanced Manager",
"selectApiURL": "URL-адреса API", "selectApiURL": "URL-адреса API",
"orgPatchesLabel": "Patches organization", "orgPatchesLabel": "Patches organization",
"sourcesPatchesLabel": "Patches source", "sourcesPatchesLabel": "Patches source",
"orgIntegrationsLabel": "Integrations organization",
"contributorsLabel": "Розробники", "contributorsLabel": "Розробники",
"contributorsHint": "Список розробників ReVanced", "contributorsHint": "Список розробників ReVanced",
"logsLabel": "Поділитися журналами", "logsLabel": "Поділитися журналами",
@ -199,6 +197,12 @@
"deleteTempDirLabel": "Видалити тимчасові файли", "deleteTempDirLabel": "Видалити тимчасові файли",
"deleteTempDirHint": "Видалити невикористані тимчасові файли", "deleteTempDirHint": "Видалити невикористані тимчасові файли",
"deletedTempDir": "Тимчасові файли видалено", "deletedTempDir": "Тимчасові файли видалено",
"exportSettingsLabel": "Експортувати налаштування",
"exportSettingsHint": "Експортувати налаштування у файл JSON",
"exportedSettings": "Налаштування експортовано",
"importSettingsLabel": "Імпортувати налаштування",
"importSettingsHint": "Імпортувати налаштування з файлу JSON",
"importedSettings": "Налаштування імпортовано",
"exportPatchesLabel": "Експортувати вибір патчів", "exportPatchesLabel": "Експортувати вибір патчів",
"exportPatchesHint": "Експортувати вибір патчів у файл JSON", "exportPatchesHint": "Експортувати вибір патчів у файл JSON",
"exportedPatches": "Вибір патчів експортовано", "exportedPatches": "Вибір патчів експортовано",

View File

@ -68,12 +68,10 @@
"settingsView": { "settingsView": {
"widgetTitle": "Sozlamalar", "widgetTitle": "Sozlamalar",
"exportSectionTitle": "Import & eksport", "exportSectionTitle": "Import & eksport",
"sourcesIntegrationsLabel": "Integratsiyani manbai",
"sourcesResetDialogTitle": "Oddiy holga qaytarish", "sourcesResetDialogTitle": "Oddiy holga qaytarish",
"apiURLLabel": "API URL", "apiURLLabel": "API URL",
"selectApiURL": "API URL", "selectApiURL": "API URL",
"sourcesPatchesLabel": "Patchlarni manbai", "sourcesPatchesLabel": "Patchlarni manbai",
"orgIntegrationsLabel": "Integratsiyani tashkiloti",
"contributorsLabel": "Yordamchilar", "contributorsLabel": "Yordamchilar",
"contributorsHint": "ReVanced yordamchilani royxati", "contributorsHint": "ReVanced yordamchilani royxati",
"aboutLabel": "Haqida", "aboutLabel": "Haqida",

View File

@ -156,20 +156,15 @@
"languageLabel": "Ngôn ngữ", "languageLabel": "Ngôn ngữ",
"languageUpdated": "Ngôn ngữ đã cập nhập", "languageUpdated": "Ngôn ngữ đã cập nhập",
"sourcesLabel": "Nguồn thay thế", "sourcesLabel": "Nguồn thay thế",
"sourcesLabelHint": "Cấu hình nguồn thay thế cho Bản vá ReVanced và Tích hợp ReVanced",
"sourcesIntegrationsLabel": "Nguồn tích hợp",
"useAlternativeSources": "Dùng nguồn thay thế", "useAlternativeSources": "Dùng nguồn thay thế",
"useAlternativeSourcesHint": "Dùng nguồn thay thế cho Bản vá ReVanced và Tích hợp ReVanced thay cho API",
"sourcesResetDialogTitle": "Đặt lại", "sourcesResetDialogTitle": "Đặt lại",
"sourcesResetDialogText": "Bạn có chắc chắn muốn đặt lại nguồn của mình về giá trị mặc định không?", "sourcesResetDialogText": "Bạn có chắc chắn muốn đặt lại nguồn của mình về giá trị mặc định không?",
"apiURLResetDialogText": "Bạn có chắc bạn muốn đặt lại API URL của bạn về giá trị mặc định của nó không?", "apiURLResetDialogText": "Bạn có chắc bạn muốn đặt lại API URL của bạn về giá trị mặc định của nó không?",
"sourcesUpdateNote": "Lưu ý: Việc này sẽ tự động tải Bản vá ReVanced và Tích hợp ReVanced từ nguồn thay thế.",
"apiURLLabel": "Địa chỉ URL của API", "apiURLLabel": "Địa chỉ URL của API",
"apiURLHint": "Cấu hình địa chỉ URL API của ReVanced Manager", "apiURLHint": "Cấu hình địa chỉ URL API của ReVanced Manager",
"selectApiURL": "Địa chỉ URL của API", "selectApiURL": "Địa chỉ URL của API",
"orgPatchesLabel": "Tác giả bản vá", "orgPatchesLabel": "Tác giả bản vá",
"sourcesPatchesLabel": "Nguồn bản vá", "sourcesPatchesLabel": "Nguồn bản vá",
"orgIntegrationsLabel": "Tác giá bản tích hợp",
"contributorsLabel": "Những người đóng góp", "contributorsLabel": "Những người đóng góp",
"contributorsHint": "Danh sách những người đóng góp cho ReVanced", "contributorsHint": "Danh sách những người đóng góp cho ReVanced",
"logsLabel": "Chia sẻ nhật ký", "logsLabel": "Chia sẻ nhật ký",

View File

@ -156,20 +156,18 @@
"languageLabel": "语言", "languageLabel": "语言",
"languageUpdated": "语言已更新", "languageUpdated": "语言已更新",
"sourcesLabel": "其他来源", "sourcesLabel": "其他来源",
"sourcesLabelHint": "配置 ReVanced 补丁和 ReVanced 集成的替代源", "sourcesLabelHint": "配置替代补丁来源",
"sourcesIntegrationsLabel": "集成源",
"useAlternativeSources": "使用其他来源", "useAlternativeSources": "使用其他来源",
"useAlternativeSourcesHint": "使用 ReVanced 补丁和 ReVanced 集成的替代来源而不是 API", "useAlternativeSourcesHint": "使用 ReVic Patches 替代API 的其他来源",
"sourcesResetDialogTitle": "重置", "sourcesResetDialogTitle": "重置",
"sourcesResetDialogText": "您确定要将源重置为默认值吗?", "sourcesResetDialogText": "您确定要将源重置为默认值吗?",
"apiURLResetDialogText": "您确定要重置你的 API URL 为默认值吗?", "apiURLResetDialogText": "您确定要重置你的 API URL 为默认值吗?",
"sourcesUpdateNote": "注意:这将自动从其他来源下载 ReVanced 补丁和 ReVanced 集成。\n\n这将连接到替代源。", "sourcesUpdateNote": "注意:这将自动从备选来源下载ReVanced 补丁。\n\n这将连接到您的备用源。",
"apiURLLabel": "API 地址", "apiURLLabel": "API 地址",
"apiURLHint": "配置 ReVanced Manager 的 API URL", "apiURLHint": "配置 ReVanced Manager 的 API URL",
"selectApiURL": "API 地址", "selectApiURL": "API 地址",
"orgPatchesLabel": "补丁组织", "orgPatchesLabel": "补丁组织",
"sourcesPatchesLabel": "补丁来源", "sourcesPatchesLabel": "补丁来源",
"orgIntegrationsLabel": "集成组织",
"contributorsLabel": "贡献者", "contributorsLabel": "贡献者",
"contributorsHint": "ReVanced 贡献者列表", "contributorsHint": "ReVanced 贡献者列表",
"logsLabel": "分享日志", "logsLabel": "分享日志",
@ -197,6 +195,12 @@
"deleteTempDirLabel": "删除临时文件", "deleteTempDirLabel": "删除临时文件",
"deleteTempDirHint": "删除未使用的临时文件", "deleteTempDirHint": "删除未使用的临时文件",
"deletedTempDir": "已删除临时文件", "deletedTempDir": "已删除临时文件",
"exportSettingsLabel": "导出设置",
"exportSettingsHint": "导出设置到 JSON 文件",
"exportedSettings": "设置已导出",
"importSettingsLabel": "导入设置",
"importSettingsHint": "从 JSON 文件导入设置",
"importedSettings": "已导入设置",
"exportPatchesLabel": "导出选择的补丁", "exportPatchesLabel": "导出选择的补丁",
"exportPatchesHint": "将选择的补丁导出到 JSON 文件", "exportPatchesHint": "将选择的补丁导出到 JSON 文件",
"exportedPatches": "导出选择的修补程序", "exportedPatches": "导出选择的修补程序",

View File

@ -90,7 +90,6 @@
"noSavedPatches": "冇保存咗嘅補丁選擇俾呢個應用。\n撳\"完成\"嚟保存當前嘅選擇。", "noSavedPatches": "冇保存咗嘅補丁選擇俾呢個應用。\n撳\"完成\"嚟保存當前嘅選擇。",
"noPatchesFound": "冇補丁俾呢個揀咗嘅應用。" "noPatchesFound": "冇補丁俾呢個揀咗嘅應用。"
}, },
"patchOptionsView": {},
"patchItem": { "patchItem": {
"unsupportedDialogText": "揀咗哩種修改可能會導致修改錯誤\n\nApp 版本: ${packageVersion}\n現時支援嘅版本: \n${supportedVersions}" "unsupportedDialogText": "揀咗哩種修改可能會導致修改錯誤\n\nApp 版本: ${packageVersion}\n現時支援嘅版本: \n${supportedVersions}"
}, },
@ -111,7 +110,6 @@
"dynamicThemeLabel": "Material You", "dynamicThemeLabel": "Material You",
"dynamicThemeHint": "享受一個更貼近你裝置嘅體驗", "dynamicThemeHint": "享受一個更貼近你裝置嘅體驗",
"languageLabel": "語言", "languageLabel": "語言",
"sourcesIntegrationsLabel": "項目整合來源",
"sourcesResetDialogTitle": "重設", "sourcesResetDialogTitle": "重設",
"sourcesResetDialogText": "真喺要重新設定你嘅來源返去預設值?", "sourcesResetDialogText": "真喺要重新設定你嘅來源返去預設值?",
"apiURLResetDialogText": "真喺要重新設定 API URL 返去預設值?", "apiURLResetDialogText": "真喺要重新設定 API URL 返去預設值?",
@ -119,7 +117,6 @@
"selectApiURL": "API 网址", "selectApiURL": "API 网址",
"orgPatchesLabel": "修補檔組織", "orgPatchesLabel": "修補檔組織",
"sourcesPatchesLabel": "修補檔來源", "sourcesPatchesLabel": "修補檔來源",
"orgIntegrationsLabel": "項目整合組織",
"contributorsLabel": "貢獻者", "contributorsLabel": "貢獻者",
"contributorsHint": "ReVanced 貢獻者列表", "contributorsHint": "ReVanced 貢獻者列表",
"logsLabel": "分享記錄檔", "logsLabel": "分享記錄檔",
@ -155,6 +152,5 @@
}, },
"contributorsView": { "contributorsView": {
"widgetTitle": "貢獻者" "widgetTitle": "貢獻者"
}, }
"installErrorDialog": {}
} }

View File

@ -36,7 +36,7 @@
"updateDialogText": "${file} 有新的更新可用。\n\n目前安裝的版本是 ${version}。", "updateDialogText": "${file} 有新的更新可用。\n\n目前安裝的版本是 ${version}。",
"downloadConsentDialogTitle": "需要下載必要檔案嗎?", "downloadConsentDialogTitle": "需要下載必要檔案嗎?",
"downloadConsentDialogText": "ReVanced Manager 需要下載必要檔案才能正常執行。", "downloadConsentDialogText": "ReVanced Manager 需要下載必要檔案才能正常執行。",
"downloadConsentDialogText2": "這項操作將連結至 ${url}。", "downloadConsentDialogText2": "這將帶您前往至 ${url}。",
"downloadingMessage": "正在下載更新...", "downloadingMessage": "正在下載更新...",
"downloadedMessage": "已下載更新", "downloadedMessage": "已下載更新",
"installingMessage": "正在安裝更新...", "installingMessage": "正在安裝更新...",
@ -53,7 +53,7 @@
}, },
"patcherView": { "patcherView": {
"widgetTitle": "修補工具", "widgetTitle": "修補工具",
"patchButton": "補", "patchButton": "",
"incompatibleArchWarningDialogText": "此架構尚未支援修補,可能會失敗。仍要繼續嗎?", "incompatibleArchWarningDialogText": "此架構尚未支援修補,可能會失敗。仍要繼續嗎?",
"removedPatchesWarningDialogText": "自您上次修補此應用程式以來移除的修補程式:\n\n${patches}\n\n${newPatches}仍要繼續嗎?", "removedPatchesWarningDialogText": "自您上次修補此應用程式以來移除的修補程式:\n\n${patches}\n\n${newPatches}仍要繼續嗎?",
"addedPatchesDialogText": "自您上次修補此應用程式以來新增的修補程式:\n\n${addedPatches}", "addedPatchesDialogText": "自您上次修補此應用程式以來新增的修補程式:\n\n${addedPatches}",
@ -158,20 +158,18 @@
"languageLabel": "語言", "languageLabel": "語言",
"languageUpdated": "已更新語言", "languageUpdated": "已更新語言",
"sourcesLabel": "替代來源", "sourcesLabel": "替代來源",
"sourcesLabelHint": "設定 ReVanced 修補和 ReVanced 整合的備用來源", "sourcesLabelHint": "為 ReVanced 修補檔設定備用來源",
"sourcesIntegrationsLabel": "整合來源",
"useAlternativeSources": "使用替代來源", "useAlternativeSources": "使用替代來源",
"useAlternativeSourcesHint": "改用 ReVanced 修補檔和 ReVanced 整合的替代來源,而不是 API", "useAlternativeSourcesHint": "使用 ReVanced 修補檔備用來源以取代 API",
"sourcesResetDialogTitle": "重設", "sourcesResetDialogTitle": "重設",
"sourcesResetDialogText": "確定要將來源重設為預設值嗎?", "sourcesResetDialogText": "確定要將來源重設為預設值嗎?",
"apiURLResetDialogText": "確定要還原 API URL 至預設值嗎?", "apiURLResetDialogText": "確定要還原 API URL 至預設值嗎?",
"sourcesUpdateNote": "注意:這項操作操作將自動從備用來源下載 ReVanced 修補檔和 ReVanced 整合。\n\n這項操作將連結至備用來源。", "sourcesUpdateNote": "注意: 本操作將自動從備用來源下載 ReVanced 修補檔。\n\n本操作將連線至備用來源。",
"apiURLLabel": "API URL", "apiURLLabel": "API URL",
"apiURLHint": "設定 ReVanced Manager 的 API URL", "apiURLHint": "設定 ReVanced Manager 的 API URL",
"selectApiURL": "API URL", "selectApiURL": "API URL",
"orgPatchesLabel": "修補檔組織", "orgPatchesLabel": "修補檔組織",
"sourcesPatchesLabel": "修補檔來源", "sourcesPatchesLabel": "修補檔來源",
"orgIntegrationsLabel": "整合組織",
"contributorsLabel": "貢獻者", "contributorsLabel": "貢獻者",
"contributorsHint": "ReVanced 貢獻者清單", "contributorsHint": "ReVanced 貢獻者清單",
"logsLabel": "分享記錄檔", "logsLabel": "分享記錄檔",
@ -199,6 +197,12 @@
"deleteTempDirLabel": "刪除暫存檔案", "deleteTempDirLabel": "刪除暫存檔案",
"deleteTempDirHint": "刪除未使用的暫存檔案", "deleteTempDirHint": "刪除未使用的暫存檔案",
"deletedTempDir": "已刪除暫存檔案", "deletedTempDir": "已刪除暫存檔案",
"exportSettingsLabel": "匯出設定",
"exportSettingsHint": "匯出設定至 JSON 檔",
"exportedSettings": "已匯出設定",
"importSettingsLabel": "匯入設定",
"importSettingsHint": "從 JSON 檔匯入設定",
"importedSettings": "已匯入設定",
"exportPatchesLabel": "匯出修補選取", "exportPatchesLabel": "匯出修補選取",
"exportPatchesHint": "匯出修補選取到 JSON 檔案", "exportPatchesHint": "匯出修補選取到 JSON 檔案",
"exportedPatches": "已匯出修補選取", "exportedPatches": "已匯出修補選取",

View File

@ -50,6 +50,7 @@ Learn how to configure ReVanced Manager.
- 🔑 Keystore used to sign patched apps - 🔑 Keystore used to sign patched apps
- 📄 Remembered selection of patches for each app - 📄 Remembered selection of patches for each app
- ⚙️ Remembered patch options - ⚙️ Remembered patch options
- 🛠️ Remembered settings
> Note > Note
> These can be used to backup and restore or reset settings to default in case of issues. > These can be used to backup and restore or reset settings to default in case of issues.

View File

@ -62,11 +62,12 @@ class Option {
required this.value, required this.value,
required this.values, required this.values,
required this.required, required this.required,
required this.valueType, required this.type,
}); });
factory Option.fromJson(Map<String, dynamic> json) { factory Option.fromJson(Map<String, dynamic> json) {
_migrateV17ToV19(json); _migrateV17ToV19(json);
_migrateV19ToV20(json);
return _$OptionFromJson(json); return _$OptionFromJson(json);
} }
@ -83,13 +84,25 @@ class Option {
} }
} }
static void _migrateV19ToV20(Map<String, dynamic> json) {
if (json['valueType'] != null) {
final String type = json['valueType'];
json['type'] = type.endsWith('Array')
? 'kotlin.collections.List<kotlin.${type.replaceAll('Array', '')}>'
: 'kotlin.$type';
json['valueType'] = null;
}
}
final String key; final String key;
final String title; final String title;
final String description; final String description;
final dynamic value; final dynamic value;
final Map<String, dynamic>? values; final Map<String, dynamic>? values;
final bool required; final bool required;
final String valueType; final String type;
Map toJson() => _$OptionToJson(this); Map toJson() => _$OptionToJson(this);
} }

View File

@ -111,11 +111,7 @@ class GithubAPI {
); );
if (asset != null) { if (asset != null) {
final String downloadUrl = asset['browser_download_url']; final String downloadUrl = asset['browser_download_url'];
if (extension == '.apk') {
_managerAPI.setIntegrationsDownloadURL(downloadUrl);
} else {
_managerAPI.setPatchesDownloadURL(downloadUrl); _managerAPI.setPatchesDownloadURL(downloadUrl);
}
return await _downloadManager.getSingleFile( return await _downloadManager.getSingleFile(
downloadUrl, downloadUrl,
); );

View File

@ -30,6 +30,7 @@ class ManagerAPI {
final String patcherRepo = 'revanced-patcher'; final String patcherRepo = 'revanced-patcher';
final String cliRepo = 'revanced-cli'; final String cliRepo = 'revanced-cli';
late SharedPreferences _prefs; late SharedPreferences _prefs;
Map<String, List>? contributors;
List<Patch> patches = []; List<Patch> patches = [];
List<Option> options = []; List<Option> options = [];
Patch? selectedPatch; Patch? selectedPatch;
@ -44,15 +45,13 @@ class ManagerAPI {
String keystoreFile = String keystoreFile =
'/sdcard/Android/data/app.revanced.manager.flutter/files/revanced-manager.keystore'; '/sdcard/Android/data/app.revanced.manager.flutter/files/revanced-manager.keystore';
String defaultKeystorePassword = 's3cur3p@ssw0rd'; String defaultKeystorePassword = 's3cur3p@ssw0rd';
String defaultApiUrl = 'https://api.revanced.app/'; String defaultApiUrl = 'https://api.revanced.app/v4';
String defaultRepoUrl = 'https://api.github.com'; String defaultRepoUrl = 'https://api.github.com';
String defaultPatcherRepo = 'revanced/revanced-patcher'; String defaultPatcherRepo = 'revanced/revanced-patcher';
String defaultPatchesRepo = 'revanced/revanced-patches'; String defaultPatchesRepo = 'revanced/revanced-patches';
String defaultIntegrationsRepo = 'revanced/revanced-integrations';
String defaultCliRepo = 'revanced/revanced-cli'; String defaultCliRepo = 'revanced/revanced-cli';
String defaultManagerRepo = 'revanced/revanced-manager'; String defaultManagerRepo = 'revanced/revanced-manager';
String? patchesVersion = ''; String? patchesVersion = '';
String? integrationsVersion = '';
Future<void> initialize() async { Future<void> initialize() async {
_prefs = await SharedPreferences.getInstance(); _prefs = await SharedPreferences.getInstance();
@ -68,14 +67,24 @@ class ManagerAPI {
releaseBuild = !(await getCurrentManagerVersion()).contains('-dev'); releaseBuild = !(await getCurrentManagerVersion()).contains('-dev');
} }
// Migrate to new API URL if not done yet as the old one is sunset. final hasMigratedToNewMigrationSystem = _prefs.getBool('migratedToNewApiPrefSystem') ?? false;
final bool hasMigratedToNewApi = if (!hasMigratedToNewMigrationSystem) {
_prefs.getBool('migratedToNewApiUrl') ?? false; final apiUrl = getApiUrl().toLowerCase();
if (!hasMigratedToNewApi) {
final String apiUrl = getApiUrl().toLowerCase(); final isReleases = apiUrl.contains('releases.revanced.app');
if (apiUrl.contains('releases.revanced.app')) { final isDomain = apiUrl.endsWith('api.revanced.app');
await setApiUrl(''); // Reset to default. final isV2 = apiUrl.contains('api.revanced.app/v2');
_prefs.setBool('migratedToNewApiUrl', true); final isV3 = apiUrl.contains('api.revanced.app/v3');
if (isReleases || isDomain || isV2 || isV3) {
await resetApiUrl();
// At this point, the preference is removed.
// Now, no more migration is needed because:
// If the user touches the API URL,
// it will be remembered forever as intended.
// On the other hand, if the user resets it or sets it to the default,
// the URL will be updated whenever the app is updated.
_prefs.setBool('migratedToNewApiPrefSystem', true);
} }
} }
@ -83,10 +92,8 @@ class ManagerAPI {
_prefs.getBool('migratedToAlternativeSource') ?? false; _prefs.getBool('migratedToAlternativeSource') ?? false;
if (!hasMigratedToAlternativeSource) { if (!hasMigratedToAlternativeSource) {
final String patchesRepo = getPatchesRepo(); final String patchesRepo = getPatchesRepo();
final String integrationsRepo = getIntegrationsRepo();
final bool usingAlternativeSources = final bool usingAlternativeSources =
patchesRepo.toLowerCase() != defaultPatchesRepo || patchesRepo.toLowerCase() != defaultPatchesRepo;
integrationsRepo.toLowerCase() != defaultIntegrationsRepo;
_prefs.setBool('useAlternativeSources', usingAlternativeSources); _prefs.setBool('useAlternativeSources', usingAlternativeSources);
_prefs.setBool('migratedToAlternativeSource', true); _prefs.setBool('migratedToAlternativeSource', true);
} }
@ -101,12 +108,25 @@ class ManagerAPI {
return _prefs.getString('apiUrl') ?? defaultApiUrl; return _prefs.getString('apiUrl') ?? defaultApiUrl;
} }
Future<void> setApiUrl(String url) async { Future<void> resetApiUrl() async {
if (url.isEmpty || url == ' ') { await _prefs.remove('apiUrl');
url = defaultApiUrl;
}
await _revancedAPI.clearAllCache(); await _revancedAPI.clearAllCache();
_toast.showBottom(t.settingsView.restartAppForChanges);
}
Future<void> setApiUrl(String url) async {
url = url.toLowerCase();
if (url == defaultApiUrl) {
return;
}
if (!url.startsWith('http')) {
url = 'https://$url';
}
await _prefs.setString('apiUrl', url); await _prefs.setString('apiUrl', url);
await _revancedAPI.clearAllCache();
_toast.showBottom(t.settingsView.restartAppForChanges); _toast.showBottom(t.settingsView.restartAppForChanges);
} }
@ -200,14 +220,6 @@ class ManagerAPI {
await _prefs.setStringList('savedPatches-$packageName', patchesJson); await _prefs.setStringList('savedPatches-$packageName', patchesJson);
} }
String getIntegrationsDownloadURL() {
return _prefs.getString('integrationsDownloadURL') ?? '';
}
Future<void> setIntegrationsDownloadURL(String value) async {
await _prefs.setString('integrationsDownloadURL', value);
}
List<Patch> getUsedPatches(String packageName) { List<Patch> getUsedPatches(String packageName) {
final List<String> patchesJson = final List<String> patchesJson =
_prefs.getStringList('usedPatches-$packageName') ?? []; _prefs.getStringList('usedPatches-$packageName') ?? [];
@ -256,17 +268,6 @@ class ManagerAPI {
_prefs.remove('patchOption-$packageName-$patchName-$key'); _prefs.remove('patchOption-$packageName-$patchName-$key');
} }
String getIntegrationsRepo() {
return _prefs.getString('integrationsRepo') ?? defaultIntegrationsRepo;
}
Future<void> setIntegrationsRepo(String value) async {
if (value.isEmpty || value.startsWith('/') || value.endsWith('/')) {
value = defaultIntegrationsRepo;
}
await _prefs.setString('integrationsRepo', value);
}
bool getUseDynamicTheme() { bool getUseDynamicTheme() {
return _prefs.getBool('useDynamicTheme') ?? false; return _prefs.getBool('useDynamicTheme') ?? false;
} }
@ -427,7 +428,7 @@ class ManagerAPI {
} }
Future<Map<String, List<dynamic>>> getContributors() async { Future<Map<String, List<dynamic>>> getContributors() async {
return await _revancedAPI.getContributors(); return contributors ??= await _revancedAPI.getContributors();
} }
Future<List<Patch>> getPatches() async { Future<List<Patch>> getPatches() async {
@ -459,33 +460,16 @@ class ManagerAPI {
} }
Future<File?> downloadPatches() async { Future<File?> downloadPatches() async {
if (!isUsingAlternativeSources()) {
return await _revancedAPI.getLatestReleaseFile('patches');
}
try { try {
final String repoName = getPatchesRepo(); final String repoName = getPatchesRepo();
final String currentVersion = await getCurrentPatchesVersion(); final String currentVersion = await getCurrentPatchesVersion();
final String url = getPatchesDownloadURL(); final String url = getPatchesDownloadURL();
return await _githubAPI.getReleaseFile( return await _githubAPI.getReleaseFile(
'.jar', '.rvp',
repoName,
currentVersion,
url,
);
} on Exception catch (e) {
if (kDebugMode) {
print(e);
}
return null;
}
}
Future<File?> downloadIntegrations() async {
try {
final String repoName = !isUsingAlternativeSources()
? defaultIntegrationsRepo
: getIntegrationsRepo();
final String currentVersion = await getCurrentIntegrationsVersion();
final String url = getIntegrationsDownloadURL();
return await _githubAPI.getReleaseFile(
'.apk',
repoName, repoName,
currentVersion, currentVersion,
url, url,
@ -499,18 +483,12 @@ class ManagerAPI {
} }
Future<File?> downloadManager() async { Future<File?> downloadManager() async {
return await _revancedAPI.getLatestReleaseFile( return await _revancedAPI.getLatestReleaseFile('manager');
'.apk',
defaultManagerRepo,
);
} }
Future<String?> getLatestPatchesReleaseTime() async { Future<String?> getLatestPatchesReleaseTime() async {
if (!isUsingAlternativeSources()) { if (!isUsingAlternativeSources()) {
return await _revancedAPI.getLatestReleaseTime( return await _revancedAPI.getLatestReleaseTime('patches');
'.json',
defaultPatchesRepo,
);
} else { } else {
final release = await _githubAPI.getLatestRelease(getPatchesRepo()); final release = await _githubAPI.getLatestRelease(getPatchesRepo());
if (release != null) { if (release != null) {
@ -525,39 +503,20 @@ class ManagerAPI {
Future<String?> getLatestManagerReleaseTime() async { Future<String?> getLatestManagerReleaseTime() async {
return await _revancedAPI.getLatestReleaseTime( return await _revancedAPI.getLatestReleaseTime(
'.apk', 'manager',
defaultManagerRepo,
); );
} }
Future<String?> getLatestManagerVersion() async { Future<String?> getLatestManagerVersion() async {
return await _revancedAPI.getLatestReleaseVersion( return await _revancedAPI.getLatestReleaseVersion(
'.apk', 'manager',
defaultManagerRepo,
); );
} }
Future<String?> getLatestIntegrationsVersion() async {
if (!isUsingAlternativeSources()) {
return await _revancedAPI.getLatestReleaseVersion(
'.apk',
defaultIntegrationsRepo,
);
} else {
final release = await _githubAPI.getLatestRelease(getIntegrationsRepo());
if (release != null) {
return release['tag_name'];
} else {
return null;
}
}
}
Future<String?> getLatestPatchesVersion() async { Future<String?> getLatestPatchesVersion() async {
if (!isUsingAlternativeSources()) { if (!isUsingAlternativeSources()) {
return await _revancedAPI.getLatestReleaseVersion( return await _revancedAPI.getLatestReleaseVersion(
'.json', 'patches',
defaultPatchesRepo,
); );
} else { } else {
final release = await _githubAPI.getLatestRelease(getPatchesRepo()); final release = await _githubAPI.getLatestRelease(getPatchesRepo());
@ -620,25 +579,6 @@ class ManagerAPI {
await downloadPatches(); await downloadPatches();
} }
Future<String> getCurrentIntegrationsVersion() async {
integrationsVersion = _prefs.getString('integrationsVersion') ?? '0.0.0';
if (integrationsVersion == '0.0.0' || isPatchesAutoUpdate()) {
final String newIntegrationsVersion =
await getLatestIntegrationsVersion() ?? '0.0.0';
if (integrationsVersion != newIntegrationsVersion &&
newIntegrationsVersion != '0.0.0') {
await setCurrentIntegrationsVersion(newIntegrationsVersion);
}
}
return integrationsVersion!;
}
Future<void> setCurrentIntegrationsVersion(String version) async {
await _prefs.setString('integrationsVersion', version);
await setIntegrationsDownloadURL('');
await downloadIntegrations();
}
Future<List<PatchedApplication>> getAppsToRemove( Future<List<PatchedApplication>> getAppsToRemove(
List<PatchedApplication> patchedApps, List<PatchedApplication> patchedApps,
) async { ) async {
@ -841,6 +781,36 @@ class ManagerAPI {
return jsonDecode(string); return jsonDecode(string);
} }
String exportSettings() {
final Map<String, dynamic> settings = _prefs
.getKeys()
.fold<Map<String, dynamic>>({}, (Map<String, dynamic> map, String key) {
map[key] = _prefs.get(key);
return map;
});
return jsonEncode(settings);
}
Future<void> importSettings(String settings) async {
final Map<String, dynamic> settingsMap = jsonDecode(settings);
settingsMap.forEach((key, value) {
if (value is bool) {
_prefs.setBool(key, value);
} else if (value is int) {
_prefs.setInt(key, value);
} else if (value is double) {
_prefs.setDouble(key, value);
} else if (value is String) {
_prefs.setString(key, value);
} else if (value is List<dynamic>) {
_prefs.setStringList(
key,
value.map((a) => json.encode(a.toJson())).toList(),
);
}
});
}
void resetAllOptions() { void resetAllOptions() {
_prefs.getKeys().where((key) => key.startsWith('patchOption-')).forEach( _prefs.getKeys().where((key) => key.startsWith('patchOption-')).forEach(
(key) { (key) {

View File

@ -18,8 +18,7 @@ import 'package:share_plus/share_plus.dart';
@lazySingleton @lazySingleton
class PatcherAPI { class PatcherAPI {
static const patcherChannel = static const patcherChannel = MethodChannel('app.revanced.manager.flutter/patcher');
MethodChannel('app.revanced.manager.flutter/patcher');
final ManagerAPI _managerAPI = locator<ManagerAPI>(); final ManagerAPI _managerAPI = locator<ManagerAPI>();
final RootAPI _rootAPI = RootAPI(); final RootAPI _rootAPI = RootAPI();
late Directory _dataDir; late Directory _dataDir;
@ -27,13 +26,12 @@ class PatcherAPI {
late File _keyStoreFile; late File _keyStoreFile;
List<Patch> _patches = []; List<Patch> _patches = [];
List<Patch> _universalPatches = []; List<Patch> _universalPatches = [];
List<String> _compatiblePackages = []; Set<String> _compatiblePackages = {};
Map filteredPatches = <String, List<Patch>>{}; Map filteredPatches = <String, List<Patch>>{};
File? outFile; File? outFile;
Future<void> initialize() async { Future<void> initialize() async {
await loadPatches(); await loadPatches();
await _managerAPI.downloadIntegrations();
final Directory appCache = await getApplicationSupportDirectory(); final Directory appCache = await getApplicationSupportDirectory();
_dataDir = await getExternalStorageDirectory() ?? appCache; _dataDir = await getExternalStorageDirectory() ?? appCache;
_tmpDir = Directory('${appCache.path}/patcher'); _tmpDir = Directory('${appCache.path}/patcher');
@ -47,8 +45,8 @@ class PatcherAPI {
} }
} }
List<String> getCompatiblePackages() { Set<String> getCompatiblePackages() {
final List<String> compatiblePackages = []; final Set<String> compatiblePackages = {};
for (final Patch patch in _patches) { for (final Patch patch in _patches) {
for (final Package package in patch.compatiblePackages) { for (final Package package in patch.compatiblePackages) {
if (!compatiblePackages.contains(package.name)) { if (!compatiblePackages.contains(package.name)) {
@ -67,16 +65,16 @@ class PatcherAPI {
try { try {
if (_patches.isEmpty) { if (_patches.isEmpty) {
_patches = await _managerAPI.getPatches(); _patches = await _managerAPI.getPatches();
_universalPatches = getUniversalPatches();
_compatiblePackages = getCompatiblePackages();
} }
} on Exception catch (e) { } on Exception catch (e) {
if (kDebugMode) { if (kDebugMode) {
print(e); print(e);
} }
_patches = List.empty(); _patches = List.empty();
} }
_compatiblePackages = getCompatiblePackages();
_universalPatches = getUniversalPatches();
} }
Future<List<ApplicationWithIcon>> getFilteredInstalledApps( Future<List<ApplicationWithIcon>> getFilteredInstalledApps(
@ -85,6 +83,7 @@ class PatcherAPI {
final List<ApplicationWithIcon> filteredApps = []; final List<ApplicationWithIcon> filteredApps = [];
final bool allAppsIncluded = final bool allAppsIncluded =
_universalPatches.isNotEmpty && showUniversalPatches; _universalPatches.isNotEmpty && showUniversalPatches;
if (allAppsIncluded) { if (allAppsIncluded) {
final appList = await DeviceApps.getInstalledApplications( final appList = await DeviceApps.getInstalledApplications(
includeAppIcons: true, includeAppIcons: true,
@ -95,6 +94,7 @@ class PatcherAPI {
filteredApps.add(app as ApplicationWithIcon); filteredApps.add(app as ApplicationWithIcon);
} }
} }
for (final packageName in _compatiblePackages) { for (final packageName in _compatiblePackages) {
try { try {
if (!filteredApps.any((app) => app.packageName == packageName)) { if (!filteredApps.any((app) => app.packageName == packageName)) {
@ -153,7 +153,6 @@ class PatcherAPI {
List<Patch> selectedPatches, List<Patch> selectedPatches,
bool isFromStorage, bool isFromStorage,
) async { ) async {
final File? integrationsFile = await _managerAPI.downloadIntegrations();
final Map<String, Map<String, dynamic>> options = {}; final Map<String, Map<String, dynamic>> options = {};
for (final patch in selectedPatches) { for (final patch in selectedPatches) {
if (patch.options.isNotEmpty) { if (patch.options.isNotEmpty) {
@ -169,7 +168,6 @@ class PatcherAPI {
} }
} }
if (integrationsFile != null) {
_dataDir.createSync(); _dataDir.createSync();
_tmpDir.createSync(); _tmpDir.createSync();
final Directory workDir = await _tmpDir.createTemp('tmp-'); final Directory workDir = await _tmpDir.createTemp('tmp-');
@ -195,7 +193,6 @@ class PatcherAPI {
{ {
'inFilePath': inApkFile.path, 'inFilePath': inApkFile.path,
'outFilePath': outFile!.path, 'outFilePath': outFile!.path,
'integrationsPath': integrationsFile.path,
'selectedPatches': selectedPatches.map((p) => p.name).toList(), 'selectedPatches': selectedPatches.map((p) => p.name).toList(),
'options': options, 'options': options,
'tmpDirPath': tmpDir.path, 'tmpDirPath': tmpDir.path,
@ -209,7 +206,6 @@ class PatcherAPI {
} }
} }
} }
}
Future<void> stopPatcher() async { Future<void> stopPatcher() async {
try { try {

View File

@ -1,7 +1,5 @@
import 'dart:async'; import 'dart:async';
import 'dart:io'; import 'dart:io';
import 'package:collection/collection.dart';
import 'package:dio/dio.dart'; import 'package:dio/dio.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter_cache_manager/flutter_cache_manager.dart'; import 'package:flutter_cache_manager/flutter_cache_manager.dart';
@ -31,7 +29,7 @@ class RevancedAPI {
final Map<String, List<dynamic>> contributors = {}; final Map<String, List<dynamic>> contributors = {};
try { try {
final response = await _dio.get('/contributors'); final response = await _dio.get('/contributors');
final List<dynamic> repositories = response.data['repositories']; final List<dynamic> repositories = response.data;
for (final Map<String, dynamic> repo in repositories) { for (final Map<String, dynamic> repo in repositories) {
final String name = repo['name']; final String name = repo['name'];
contributors[name] = repo['contributors']; contributors[name] = repo['contributors'];
@ -46,21 +44,15 @@ class RevancedAPI {
} }
Future<Map<String, dynamic>?> _getLatestRelease( Future<Map<String, dynamic>?> _getLatestRelease(
String extension, String toolName,
String repoName,
) { ) {
if (!locator<ManagerAPI>().getDownloadConsent()) { if (!locator<ManagerAPI>().getDownloadConsent()) {
return Future(() => null); return Future(() => null);
} }
return getToolsLock.synchronized(() async { return getToolsLock.synchronized(() async {
try { try {
final response = await _dio.get('/tools'); final response = await _dio.get('/$toolName');
final List<dynamic> tools = response.data['tools']; return response.data;
return tools.firstWhereOrNull(
(t) =>
(t['repository'] as String) == repoName &&
(t['name'] as String).endsWith(extension),
);
} on Exception catch (e) { } on Exception catch (e) {
if (kDebugMode) { if (kDebugMode) {
print(e); print(e);
@ -71,13 +63,11 @@ class RevancedAPI {
} }
Future<String?> getLatestReleaseVersion( Future<String?> getLatestReleaseVersion(
String extension, String toolName,
String repoName,
) async { ) async {
try { try {
final Map<String, dynamic>? release = await _getLatestRelease( final Map<String, dynamic>? release = await _getLatestRelease(
extension, toolName,
repoName,
); );
if (release != null) { if (release != null) {
return release['version']; return release['version'];
@ -92,16 +82,14 @@ class RevancedAPI {
} }
Future<File?> getLatestReleaseFile( Future<File?> getLatestReleaseFile(
String extension, String toolName,
String repoName,
) async { ) async {
try { try {
final Map<String, dynamic>? release = await _getLatestRelease( final Map<String, dynamic>? release = await _getLatestRelease(
extension, toolName,
repoName,
); );
if (release != null) { if (release != null) {
final String url = release['browser_download_url']; final String url = release['download_url'];
return await _downloadManager.getSingleFile(url); return await _downloadManager.getSingleFile(url);
} }
} on Exception catch (e) { } on Exception catch (e) {
@ -129,13 +117,10 @@ class RevancedAPI {
} }
Future<File?> downloadManager() async { Future<File?> downloadManager() async {
final Map<String, dynamic>? release = await _getLatestRelease( final Map<String, dynamic>? release = await _getLatestRelease('manager');
'.apk',
'revanced/revanced-manager',
);
File? outputFile; File? outputFile;
await for (final result in _downloadManager.getFileStream( await for (final result in _downloadManager.getFileStream(
release!['browser_download_url'] as String, release!['download_url'] as String,
)) { )) {
if (result is DownloadProgress) { if (result is DownloadProgress) {
final totalSize = result.totalSize ?? 10000000; final totalSize = result.totalSize ?? 10000000;
@ -152,17 +137,15 @@ class RevancedAPI {
} }
Future<String?> getLatestReleaseTime( Future<String?> getLatestReleaseTime(
String extension, String toolName,
String repoName,
) async { ) async {
try { try {
final Map<String, dynamic>? release = await _getLatestRelease( final Map<String, dynamic>? release = await _getLatestRelease(
extension, toolName,
repoName,
); );
if (release != null) { if (release != null) {
final DateTime timestamp = final DateTime timestamp =
DateTime.parse(release['timestamp'] as String); DateTime.parse(release['created_at'] as String);
return format(timestamp, locale: 'en_short'); return format(timestamp, locale: 'en_short');
} }
} on Exception catch (e) { } on Exception catch (e) {

View File

@ -30,30 +30,13 @@ class ContributorsView extends StatelessWidget {
sliver: SliverList( sliver: SliverList(
delegate: SliverChildListDelegate.fixed( delegate: SliverChildListDelegate.fixed(
<Widget>[ <Widget>[
for (final String tool in model.contributors.keys) ...[
ContributorsCard( ContributorsCard(
title: 'ReVanced Patcher', title: tool,
contributors: model.patcherContributors, contributors: model.contributors[tool]!,
), ),
const SizedBox(height: 20), const SizedBox(height: 20),
ContributorsCard( ],
title: 'ReVanced Patches',
contributors: model.patchesContributors,
),
const SizedBox(height: 20),
ContributorsCard(
title: 'ReVanced Integrations',
contributors: model.integrationsContributors,
),
const SizedBox(height: 20),
ContributorsCard(
title: 'ReVanced CLI',
contributors: model.cliContributors,
),
const SizedBox(height: 20),
ContributorsCard(
title: 'ReVanced Manager',
contributors: model.managerContributors,
),
SizedBox(height: MediaQuery.viewPaddingOf(context).bottom), SizedBox(height: MediaQuery.viewPaddingOf(context).bottom),
], ],
), ),

View File

@ -4,21 +4,10 @@ import 'package:stacked/stacked.dart';
class ContributorsViewModel extends BaseViewModel { class ContributorsViewModel extends BaseViewModel {
final ManagerAPI _managerAPI = locator<ManagerAPI>(); final ManagerAPI _managerAPI = locator<ManagerAPI>();
List<dynamic> patcherContributors = []; Map<String, List<dynamic>> contributors = {};
List<dynamic> patchesContributors = [];
List<dynamic> integrationsContributors = [];
List<dynamic> cliContributors = [];
List<dynamic> managerContributors = [];
Future<void> getContributors() async { Future<void> getContributors() async {
final Map<String, List<dynamic>> contributors = contributors = await _managerAPI.getContributors();
await _managerAPI.getContributors();
patcherContributors = contributors[_managerAPI.defaultPatcherRepo] ?? [];
patchesContributors = contributors[_managerAPI.defaultPatchesRepo] ?? [];
integrationsContributors =
contributors[_managerAPI.defaultIntegrationsRepo] ?? [];
cliContributors = contributors[_managerAPI.defaultCliRepo] ?? [];
managerContributors = contributors[_managerAPI.defaultManagerRepo] ?? [];
notifyListeners(); notifyListeners();
} }
} }

View File

@ -311,11 +311,8 @@ class HomeViewModel extends BaseViewModel {
_toast.showBottom(t.homeView.downloadingMessage); _toast.showBottom(t.homeView.downloadingMessage);
final String patchesVersion = final String patchesVersion =
await _managerAPI.getLatestPatchesVersion() ?? '0.0.0'; await _managerAPI.getLatestPatchesVersion() ?? '0.0.0';
final String integrationsVersion = if (patchesVersion != '0.0.0') {
await _managerAPI.getLatestIntegrationsVersion() ?? '0.0.0';
if (patchesVersion != '0.0.0' && integrationsVersion != '0.0.0') {
await _managerAPI.setCurrentPatchesVersion(patchesVersion); await _managerAPI.setCurrentPatchesVersion(patchesVersion);
await _managerAPI.setCurrentIntegrationsVersion(integrationsVersion);
_toast.showBottom(t.homeView.downloadedMessage); _toast.showBottom(t.homeView.downloadedMessage);
forceRefresh(context); forceRefresh(context);
} else { } else {

View File

@ -330,7 +330,6 @@ class InstallerViewModel extends BaseViewModel {
'Version compatibility check: ${_managerAPI.isVersionCompatibilityCheckEnabled()}', 'Version compatibility check: ${_managerAPI.isVersionCompatibilityCheckEnabled()}',
'Show universal patches: ${_managerAPI.areUniversalPatchesEnabled()}', 'Show universal patches: ${_managerAPI.areUniversalPatchesEnabled()}',
'Patches source: ${_managerAPI.getPatchesRepo()}', 'Patches source: ${_managerAPI.getPatchesRepo()}',
'Integration source: ${_managerAPI.getIntegrationsRepo()}', //
'\n- Logs', '\n- Logs',
logsTrimmed.join('\n'), logsTrimmed.join('\n'),

View File

@ -44,20 +44,20 @@ class PatchOptionsView extends StatelessWidget {
child: Column( child: Column(
children: [ children: [
for (final Option option in model.modifiedOptions) for (final Option option in model.modifiedOptions)
if (option.valueType == 'String' || if (option.type == 'kotlin.String' ||
option.valueType == 'Int') option.type == 'kotlin.Int')
IntAndStringPatchOption( IntAndStringPatchOption(
patchOption: option, patchOption: option,
model: model, model: model,
) )
else if (option.valueType == 'Boolean') else if (option.type == 'kotlin.Boolean')
BooleanPatchOption( BooleanPatchOption(
patchOption: option, patchOption: option,
model: model, model: model,
) )
else if (option.valueType == 'StringArray' || else if (option.type == 'kotlin.collections.List<kotlin.String>' ||
option.valueType == 'IntArray' || option.type == 'kotlin.collections.List<kotlin.Int>' ||
option.valueType == 'LongArray') option.type == 'kotlin.collections.List<kotlin.Long>')
IntStringLongListPatchOption( IntStringLongListPatchOption(
patchOption: option, patchOption: option,
model: model, model: model,

View File

@ -74,7 +74,7 @@ class PatchOptionsViewModel extends BaseViewModel {
title: option.title, title: option.title,
description: option.description, description: option.description,
values: option.values, values: option.values,
valueType: option.valueType, type: option.type,
value: value, value: value,
required: option.required, required: option.required,
key: option.key, key: option.key,
@ -90,7 +90,7 @@ class PatchOptionsViewModel extends BaseViewModel {
title: option.title, title: option.title,
description: option.description, description: option.description,
values: option.values, values: option.values,
valueType: option.valueType, type: option.type,
value: option.value is List ? option.value.toList() : option.value, value: option.value is List ? option.value.toList() : option.value,
required: option.required, required: option.required,
key: option.key, key: option.key,

View File

@ -13,8 +13,9 @@ class SManageApiUrl extends BaseViewModel {
final TextEditingController _apiUrlController = TextEditingController(); final TextEditingController _apiUrlController = TextEditingController();
Future<void> showApiUrlDialog(BuildContext context) async { Future<void> showApiUrlDialog(BuildContext context) async {
final String apiUrl = _managerAPI.getApiUrl(); final apiUrl = _managerAPI.getApiUrl();
_apiUrlController.text = apiUrl.replaceAll('https://', '');
_apiUrlController.text = apiUrl;
return showDialog( return showDialog(
context: context, context: context,
builder: (context) => AlertDialog( builder: (context) => AlertDialog(
@ -60,11 +61,7 @@ class SManageApiUrl extends BaseViewModel {
), ),
FilledButton( FilledButton(
onPressed: () { onPressed: () {
String apiUrl = _apiUrlController.text; _managerAPI.setApiUrl(_apiUrlController.text);
if (!apiUrl.startsWith('https')) {
apiUrl = 'https://$apiUrl';
}
_managerAPI.setApiUrl(apiUrl);
Navigator.of(context).pop(); Navigator.of(context).pop();
}, },
child: Text(t.okButton), child: Text(t.okButton),
@ -87,7 +84,7 @@ class SManageApiUrl extends BaseViewModel {
), ),
FilledButton( FilledButton(
onPressed: () { onPressed: () {
_managerAPI.setApiUrl(''); _managerAPI.resetApiUrl();
Navigator.of(context) Navigator.of(context)
..pop() ..pop()
..pop(); ..pop();

View File

@ -14,16 +14,11 @@ class SManageSources extends BaseViewModel {
final TextEditingController _orgPatSourceController = TextEditingController(); final TextEditingController _orgPatSourceController = TextEditingController();
final TextEditingController _patSourceController = TextEditingController(); final TextEditingController _patSourceController = TextEditingController();
final TextEditingController _orgIntSourceController = TextEditingController();
final TextEditingController _intSourceController = TextEditingController();
Future<void> showSourcesDialog(BuildContext context) async { Future<void> showSourcesDialog(BuildContext context) async {
final String patchesRepo = _managerAPI.getPatchesRepo(); final String patchesRepo = _managerAPI.getPatchesRepo();
final String integrationsRepo = _managerAPI.getIntegrationsRepo();
_orgPatSourceController.text = patchesRepo.split('/')[0]; _orgPatSourceController.text = patchesRepo.split('/')[0];
_patSourceController.text = patchesRepo.split('/')[1]; _patSourceController.text = patchesRepo.split('/')[1];
_orgIntSourceController.text = integrationsRepo.split('/')[0];
_intSourceController.text = integrationsRepo.split('/')[1];
return showDialog( return showDialog(
context: context, context: context,
builder: (context) => AlertDialog( builder: (context) => AlertDialog(
@ -72,38 +67,6 @@ class SManageSources extends BaseViewModel {
hintText: patchesRepo.split('/')[1], hintText: patchesRepo.split('/')[1],
), ),
), ),
const SizedBox(height: 8),
// Integrations owner's name
TextField(
controller: _orgIntSourceController,
autocorrect: false,
onChanged: (value) => notifyListeners(),
decoration: InputDecoration(
icon: Icon(
Icons.merge_outlined,
color: Theme.of(context).colorScheme.onSurfaceVariant,
),
border: const OutlineInputBorder(),
labelText: t.settingsView.orgIntegrationsLabel,
hintText: integrationsRepo.split('/')[0],
),
),
const SizedBox(height: 8),
// Integrations repository's name
TextField(
controller: _intSourceController,
autocorrect: false,
onChanged: (value) => notifyListeners(),
decoration: InputDecoration(
icon: const Icon(
Icons.merge_outlined,
color: Colors.transparent,
),
border: const OutlineInputBorder(),
labelText: t.settingsView.sourcesIntegrationsLabel,
hintText: integrationsRepo.split('/')[1],
),
),
const SizedBox(height: 20), const SizedBox(height: 20),
Text(t.settingsView.sourcesUpdateNote), Text(t.settingsView.sourcesUpdateNote),
], ],
@ -113,8 +76,6 @@ class SManageSources extends BaseViewModel {
onPressed: () { onPressed: () {
_orgPatSourceController.clear(); _orgPatSourceController.clear();
_patSourceController.clear(); _patSourceController.clear();
_orgIntSourceController.clear();
_intSourceController.clear();
Navigator.of(context).pop(); Navigator.of(context).pop();
}, },
child: Text(t.cancelButton), child: Text(t.cancelButton),
@ -124,11 +85,7 @@ class SManageSources extends BaseViewModel {
_managerAPI.setPatchesRepo( _managerAPI.setPatchesRepo(
'${_orgPatSourceController.text.trim()}/${_patSourceController.text.trim()}', '${_orgPatSourceController.text.trim()}/${_patSourceController.text.trim()}',
); );
_managerAPI.setIntegrationsRepo(
'${_orgIntSourceController.text.trim()}/${_intSourceController.text.trim()}',
);
_managerAPI.setCurrentPatchesVersion('0.0.0'); _managerAPI.setCurrentPatchesVersion('0.0.0');
_managerAPI.setCurrentIntegrationsVersion('0.0.0');
_managerAPI.setLastUsedPatchesVersion(); _managerAPI.setLastUsedPatchesVersion();
_toast.showBottom(t.settingsView.restartAppForChanges); _toast.showBottom(t.settingsView.restartAppForChanges);
Navigator.of(context).pop(); Navigator.of(context).pop();
@ -154,9 +111,7 @@ class SManageSources extends BaseViewModel {
FilledButton( FilledButton(
onPressed: () { onPressed: () {
_managerAPI.setPatchesRepo(''); _managerAPI.setPatchesRepo('');
_managerAPI.setIntegrationsRepo('');
_managerAPI.setCurrentPatchesVersion('0.0.0'); _managerAPI.setCurrentPatchesVersion('0.0.0');
_managerAPI.setCurrentIntegrationsVersion('0.0.0');
_toast.showBottom(t.settingsView.restartAppForChanges); _toast.showBottom(t.settingsView.restartAppForChanges);
Navigator.of(context) Navigator.of(context)
..pop() ..pop()

View File

@ -56,7 +56,6 @@ class SettingsViewModel extends BaseViewModel {
void useAlternativeSources(bool value) { void useAlternativeSources(bool value) {
_managerAPI.useAlternativeSources(value); _managerAPI.useAlternativeSources(value);
_managerAPI.setCurrentPatchesVersion('0.0.0'); _managerAPI.setCurrentPatchesVersion('0.0.0');
_managerAPI.setCurrentIntegrationsVersion('0.0.0');
_managerAPI.setLastUsedPatchesVersion(); _managerAPI.setLastUsedPatchesVersion();
notifyListeners(); notifyListeners();
} }
@ -223,6 +222,53 @@ class SettingsViewModel extends BaseViewModel {
notifyListeners(); notifyListeners();
} }
Future<void> exportSettings() async {
try {
final String settings = _managerAPI.exportSettings();
final Directory tempDir = await getTemporaryDirectory();
final String filePath = '${tempDir.path}/manager_settings.json';
final File file = File(filePath);
await file.writeAsString(settings);
final String? result = await FlutterFileDialog.saveFile(
params: SaveFileDialogParams(
sourceFilePath: file.path,
fileName: 'manager_settings.json',
mimeTypesFilter: ['application/json'],
),
);
if (result != null) {
_toast.showBottom(t.settingsView.exportedSettings);
}
} on Exception catch (e) {
if (kDebugMode) {
print(e);
}
}
}
Future<void> importSettings() async {
try {
final String? result = await FlutterFileDialog.pickFile(
params: const OpenFileDialogParams(
fileExtensionsFilter: ['json'],
),
);
if (result != null) {
final File inFile = File(result);
final String settings = inFile.readAsStringSync();
inFile.delete();
_managerAPI.importSettings(settings);
_toast.showBottom(t.settingsView.importedSettings);
_toast.showBottom(t.settingsView.restartAppForChanges);
}
} on Exception catch (e) {
if (kDebugMode) {
print(e);
}
_toast.showBottom(t.settingsView.jsonSelectorErrorMessage);
}
}
Future<void> exportPatches() async { Future<void> exportPatches() async {
try { try {
final File outFile = File(_managerAPI.storedPatchesFile); final File outFile = File(_managerAPI.storedPatchesFile);

View File

@ -49,7 +49,7 @@ class _ContributorsCardState extends State<ContributorsCard> {
child: GestureDetector( child: GestureDetector(
onTap: () => launchUrl( onTap: () => launchUrl(
Uri.parse( Uri.parse(
widget.contributors[index]['html_url'], widget.contributors[index]['url'],
), ),
mode: LaunchMode.externalApplication, mode: LaunchMode.externalApplication,
), ),

View File

@ -138,7 +138,7 @@ class IntStringLongListPatchOption extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
final List<dynamic> values = List.from(patchOption.value ?? []); final List<dynamic> values = List.from(patchOption.value ?? []);
final ValueNotifier patchOptionValue = ValueNotifier(values); final ValueNotifier patchOptionValue = ValueNotifier(values);
final String type = patchOption.valueType; final String type = patchOption.type;
String getKey(dynamic value) { String getKey(dynamic value) {
if (value != null && patchOption.values != null) { if (value != null && patchOption.values != null) {
@ -408,12 +408,12 @@ class _TextFieldForPatchOptionState extends State<TextFieldForPatchOption> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final bool isStringOption = widget.patchOption.valueType.contains('String'); final bool isStringOption = widget.patchOption.type.contains('String');
final bool isArrayOption = widget.patchOption.valueType.contains('Array'); final bool isListOption = widget.patchOption.type.contains('List');
selectedKey = selectedKey == '' ? selectedKey : widget.selectedKey; selectedKey = selectedKey == '' ? selectedKey : widget.selectedKey;
final bool isValueArray = widget.value?.startsWith('[') ?? false; final bool isValueArray = widget.value?.startsWith('[') ?? false;
final bool shouldResetValue = final bool shouldResetValue =
!isStringOption && isArrayOption && selectedKey == '' && isValueArray; !isStringOption && isListOption && selectedKey == '' && isValueArray;
controller.text = shouldResetValue ? '' : widget.value ?? ''; controller.text = shouldResetValue ? '' : widget.value ?? '';
defaultValue ??= controller.text; defaultValue ??= controller.text;
return Column( return Column(
@ -479,7 +479,7 @@ class _TextFieldForPatchOptionState extends State<TextFieldForPatchOption> {
} else { } else {
controller.text = widget.patchOption.values![value].toString(); controller.text = widget.patchOption.values![value].toString();
widget.onChanged( widget.onChanged(
isArrayOption isListOption
? widget.patchOption.values![value] ? widget.patchOption.values![value]
: controller.text, : controller.text,
); );
@ -492,9 +492,9 @@ class _TextFieldForPatchOptionState extends State<TextFieldForPatchOption> {
if (selectedKey == '') if (selectedKey == '')
TextFormField( TextFormField(
inputFormatters: [ inputFormatters: [
if (widget.patchOption.valueType.contains('Int')) if (widget.patchOption.type.contains('Int'))
FilteringTextInputFormatter.allow(RegExp(r'[0-9]')), FilteringTextInputFormatter.allow(RegExp(r'[0-9]')),
if (widget.patchOption.valueType.contains('Long')) if (widget.patchOption.type.contains('Long'))
FilteringTextInputFormatter.allow(RegExp(r'^[0-9]*\.?[0-9]*')), FilteringTextInputFormatter.allow(RegExp(r'^[0-9]*\.?[0-9]*')),
], ],
controller: controller, controller: controller,
@ -505,7 +505,7 @@ class _TextFieldForPatchOptionState extends State<TextFieldForPatchOption> {
tooltip: t.patchOptionsView.tooltip, tooltip: t.patchOptionsView.tooltip,
itemBuilder: (BuildContext context) { itemBuilder: (BuildContext context) {
return [ return [
if (isArrayOption) if (isListOption)
PopupMenuItem( PopupMenuItem(
value: 'remove', value: 'remove',
child: Text(t.remove), child: Text(t.remove),

View File

@ -14,6 +14,30 @@ class SExportSection extends StatelessWidget {
return SettingsSection( return SettingsSection(
title: t.settingsView.exportSectionTitle, title: t.settingsView.exportSectionTitle,
children: <Widget>[ children: <Widget>[
ListTile(
contentPadding: const EdgeInsets.symmetric(horizontal: 20.0),
title: Text(
t.settingsView.exportSettingsLabel,
style: const TextStyle(
fontSize: 20,
fontWeight: FontWeight.w500,
),
),
subtitle: Text(t.settingsView.exportSettingsHint),
onTap: () => _settingsViewModel.exportSettings(),
),
ListTile(
contentPadding: const EdgeInsets.symmetric(horizontal: 20.0),
title: Text(
t.settingsView.importSettingsLabel,
style: const TextStyle(
fontSize: 20,
fontWeight: FontWeight.w500,
),
),
subtitle: Text(t.settingsView.importSettingsHint),
onTap: () => _settingsViewModel.importSettings(),
),
ListTile( ListTile(
contentPadding: const EdgeInsets.symmetric(horizontal: 20.0), contentPadding: const EdgeInsets.symmetric(horizontal: 20.0),
title: Text( title: Text(
@ -114,7 +138,6 @@ class SExportSection extends StatelessWidget {
subtitle: Text(t.settingsView.regenerateKeystoreHint), subtitle: Text(t.settingsView.regenerateKeystoreHint),
onTap: () => _showDeleteKeystoreDialog(context), onTap: () => _showDeleteKeystoreDialog(context),
), ),
// SManageKeystorePasswordUI(),
], ],
); );
} }

View File

@ -33,7 +33,7 @@ bool hasUnsupportedRequiredOption(List<Option> options, Patch patch) {
option.key, option.key,
) == ) ==
null) { null) {
requiredOptionsType.add(option.valueType); requiredOptionsType.add(option.type);
} }
} }
for (final String optionType in requiredOptionsType) { for (final String optionType in requiredOptionsType) {

View File

@ -4,7 +4,7 @@ homepage: https://revanced.app
publish_to: 'none' publish_to: 'none'
version: 1.23.0-dev.3+101800043 version: 1.23.2+101800050
environment: environment:
sdk: ^3.5.3 sdk: ^3.5.3