Compare commits

...

23 Commits

Author SHA1 Message Date
semantic-release-bot
8961cf9044 chore(release): 1.23.0 [skip ci]
# [1.23.0](https://github.com/ReVanced/revanced-manager/compare/v1.22.0...v1.23.0) (2024-11-10)

### Bug Fixes

* Don't show toasts when export cancelled ([#2230](https://github.com/ReVanced/revanced-manager/issues/2230)) ([bd79496](bd79496433))
* Fix the connectivity check toast again ([#2216](https://github.com/ReVanced/revanced-manager/issues/2216)) ([a7e2281](a7e2281805))
* Get changelogs for alternative sources ([#1766](https://github.com/ReVanced/revanced-manager/issues/1766)) ([c729842](c7298424e5))
* missing parameter in translations ([1c6c5d5](1c6c5d53ae))
* Resolve EACCESS error in special cases ([#2135](https://github.com/ReVanced/revanced-manager/issues/2135)) ([1f95767](1f95767aeb))
* Restore apk renaming during compile ([abdd9dc](abdd9dc430))

### Features

* Also show new patches in the removed patches dialog ([#2257](https://github.com/ReVanced/revanced-manager/issues/2257)) ([8872165](8872165a99))
* Import and export manager settings ([#2268](https://github.com/ReVanced/revanced-manager/issues/2268)) ([a45d959](a45d9598cc))
* Show changelogs from the latest to the last used patches version ([#2219](https://github.com/ReVanced/revanced-manager/issues/2219)) ([daba737](daba737ecb))
* Use ReVanced API v4 ([7b7d91d](7b7d91d661))

### Performance Improvements

* Don't recalculate universal patches or compatible packages if not necessary ([7e3afe0](7e3afe0cb2))
2024-11-10 15:04:46 +00:00
oSumAtrIX
5139873f79 chore: Merge branch dev to main (#2217) 2024-11-10 15:56:03 +01:00
ReVanced Bot
5caa79eb0d chore: Sync translations (#2267) 2024-11-10 05:57:57 +01:00
semantic-release-bot
9552b2ebc5 chore(release): 1.23.0-dev.7 [skip ci]
# [1.23.0-dev.7](https://github.com/ReVanced/revanced-manager/compare/v1.23.0-dev.6...v1.23.0-dev.7) (2024-11-10)

### Features

* Use ReVanced API v4 ([7b7d91d](7b7d91d661))

### Performance Improvements

* Don't recalculate universal patches or compatible packages if not necessary ([7e3afe0](7e3afe0cb2))
2024-11-10 04:04:12 +00:00
oSumAtrIX
7e3afe0cb2 perf: Don't recalculate universal patches or compatible packages if not necessary 2024-11-10 04:53:59 +01:00
oSumAtrIX
7b7d91d661 feat: Use ReVanced API v4 2024-11-10 04:53:59 +01:00
oSumAtrIX
44b8d4ceee build: Configure output file name 2024-11-08 19:43:45 +01:00
semantic-release-bot
aaa97ebb71 chore(release): 1.23.0-dev.6 [skip ci]
# [1.23.0-dev.6](https://github.com/ReVanced/revanced-manager/compare/v1.23.0-dev.5...v1.23.0-dev.6) (2024-11-08)
2024-11-08 17:49:03 +00:00
oSumAtrIX
d99e5af384 build: Fix build 2024-11-08 18:39:02 +01:00
oSumAtrIX
c47c7c0a88 build(Needs bump): Bump dependencies 2024-11-05 20:13:08 +01:00
semantic-release-bot
3e32c0fd90 chore(release): 1.23.0-dev.5 [skip ci]
# [1.23.0-dev.5](https://github.com/ReVanced/revanced-manager/compare/v1.23.0-dev.4...v1.23.0-dev.5) (2024-11-05)

### Features

* Import and export manager settings ([#2268](https://github.com/ReVanced/revanced-manager/issues/2268)) ([a45d959](a45d9598cc))
2024-11-05 18:52:52 +00:00
aAbed
a45d9598cc feat: Import and export manager settings (#2268) 2024-11-05 19:43:35 +01:00
semantic-release-bot
8c8df698d4 chore(release): 1.23.0-dev.4 [skip ci]
# [1.23.0-dev.4](https://github.com/ReVanced/revanced-manager/compare/v1.23.0-dev.3...v1.23.0-dev.4) (2024-10-26)
2024-10-26 15:50:06 +00:00
oSumAtrIX
8d0d782ab5 build(Needs bump): Bump ReVanced Patcher (#2242)
Co-authored-by: aAbed <aabedhkhan@gmail.com>
2024-10-26 17:41:49 +02:00
semantic-release-bot
4db4789a06 chore(release): 1.23.0-dev.3 [skip ci]
# [1.23.0-dev.3](https://github.com/ReVanced/revanced-manager/compare/v1.23.0-dev.2...v1.23.0-dev.3) (2024-10-22)

### Bug Fixes

* Restore apk renaming during compile ([abdd9dc](abdd9dc430))
2024-10-22 16:16:20 +00:00
validcube
abdd9dc430 fix: Restore apk renaming during compile
Signed-off-by: validcube <pun.butrach@gmail.com>
2024-10-22 23:01:51 +07:00
semantic-release-bot
5193042e6b chore(release): 1.23.0-dev.2 [skip ci]
# [1.23.0-dev.2](https://github.com/ReVanced/revanced-manager/compare/v1.23.0-dev.1...v1.23.0-dev.2) (2024-10-21)

### Features

* Show changelogs from the latest to the last used patches version ([#2219](https://github.com/ReVanced/revanced-manager/issues/2219)) ([daba737](daba737ecb))
2024-10-21 10:27:00 +00:00
aAbed
daba737ecb feat: Show changelogs from the latest to the last used patches version (#2219) 2024-10-21 17:17:23 +07:00
ReVanced Bot
bd96701103 chore: Sync translations (#2233) 2024-10-21 17:16:15 +07:00
Pun Butrach
69c20b74cf chore: Restore format consistency 2024-10-21 04:27:53 +07:00
Pun Butrach
7297436ab4 ci: Update config 2024-10-21 03:18:21 +07:00
dependabot[bot]
a329626715 build(deps-dev): bump semantic-release from 23.1.1 to 24.1.3 (#2265)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-20 03:47:39 +07:00
Robert
50a20d0535 ci: Use semantic-release-pub for updating build number (#2263) 2024-10-19 05:34:26 +02:00
86 changed files with 1387 additions and 778 deletions

View File

@@ -17,15 +17,10 @@
"@semantic-release/changelog",
"@semantic-release/release-notes-generator",
[
"@droidsolutions-oss/semantic-release-update-file",
"semantic-release-pub",
{
"files": [
{
"path": ["pubspec.yaml"],
"type": "flutter",
"branches": ["main", "dev"]
}
]
"publishPub": false,
"updateBuildNumber": true
}
],
[
@@ -49,6 +44,8 @@
{
"path": "build/app/outputs/apk/release/revanced-manager*.apk"
},
],
"commits": [
"message": "chore: Release v${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
],
"successComment": false

View File

@@ -7,7 +7,7 @@ plugins {
android {
namespace = "app.revanced.manager.flutter"
compileSdk = 34
compileSdk = 35
ndkVersion = "27.0.12077973"
compileOptions {
@@ -24,9 +24,19 @@ android {
defaultConfig {
applicationId = "app.revanced.manager.flutter"
minSdk = 26
targetSdk = 34
targetSdk = 35
versionCode = flutter.versionCode
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 {
@@ -51,19 +61,21 @@ android {
keyAlias = System.getenv("KEYSTORE_ENTRY_ALIAS")
keyPassword = System.getenv("KEYSTORE_ENTRY_PASSWORD")
}
resValue("string", "app_name", "ReVanced Manager")
} else {
resValue("string", "app_name", "ReVanced Manager (Debug)")
applicationIdSuffix = ".debug"
signingConfig = signingConfigs["debug"]
}
resValue("string", "app_name", "ReVanced Manager")
resValue("string", "app_name", "ReVanced Manager (Debug signed)")
}
}
debug {
resValue("string", "app_name", "ReVanced Manager (Debug)")
applicationIdSuffix = ".debug"
resValue("string", "app_name", "ReVanced Manager (Debug)")
}
}
@@ -79,6 +91,7 @@ android {
}
}
flutter {
source = "../.."
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -17,7 +17,7 @@ pluginManagement {
plugins {
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
}

View File

@@ -158,20 +158,18 @@
"languageLabel": "Language",
"languageUpdated": "Language updated",
"sourcesLabel": "Alternative sources",
"sourcesLabelHint": "Configure the alternative sources for ReVanced Patches and ReVanced Integrations",
"sourcesIntegrationsLabel": "Integrations source",
"sourcesLabelHint": "Configure the alternative sources for ReVanced Patches",
"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",
"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?",
"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",
"apiURLHint": "Configure the API URL of ReVanced Manager",
"selectApiURL": "API URL",
"orgPatchesLabel": "Patches organization",
"sourcesPatchesLabel": "Patches source",
"orgIntegrationsLabel": "Integrations organization",
"contributorsLabel": "Contributors",
"contributorsHint": "A list of contributors of ReVanced",
"logsLabel": "Share logs",
@@ -199,6 +197,12 @@
"deleteTempDirLabel": "Delete temporary files",
"deleteTempDirHint": "Delete unused temporary files",
"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",
"exportPatchesHint": "Export patch selection to a JSON file",
"exportedPatches": "Patch selection exported",

View File

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

View File

@@ -55,7 +55,8 @@
"widgetTitle": "Yamaqlayıcı",
"patchButton": "Yamaqla",
"incompatibleArchWarningDialogText": "Bu quruluşda yamaqlama hələ dəstəklənmir və uğursuz ola bilər. Yenə də davam edilsin?",
"removedPatchesWarningDialogText": "Aşağıdakı yamaqlar son istifadənizdən bəri silindi.\n\n${patches}\n\n${newPatches}Yenə də davam edilsin?",
"removedPatchesWarningDialogText": "Bu tətbiqi son yamaqladığınız müddətdən bəri silinmiş yamaqlar:\n\n${patches}\n\n${newPatches}Yenə də davam edilsin?",
"addedPatchesDialogText": "Bu tətbiqi son yamaqladığınız müddətdən bəri əlavə edilən yamaqlar:\n\n${addedPatches}",
"requiredOptionDialogText": "Bəzi yamaq seçimləri təyin edilməlidir."
},
"appSelectorCard": {
@@ -157,20 +158,18 @@
"languageLabel": "Dil",
"languageUpdated": "Dil yeniləndi",
"sourcesLabel": "Seçmə mənbələr",
"sourcesLabelHint": "ReVanced Yamaqları və ReVanced İnteqrasiyaları üçün seçmə mənbələri konfiqurasiya edin",
"sourcesIntegrationsLabel": "İnteqrasiya mənbəyi",
"sourcesLabelHint": "ReVanced Patches üçün alternativ mənbələri konfiqurasiya 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",
"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?",
"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",
"apiURLHint": "\"ReVacned Manager\"in API URL-sini konfiqurasiya et",
"selectApiURL": "API URL",
"orgPatchesLabel": "Yamaq qurumu",
"sourcesPatchesLabel": "Yamaqların mənbəyi",
"orgIntegrationsLabel": "İnteqrasiya qurumu",
"contributorsLabel": "Töhfə verənlər",
"contributorsHint": "ReVanced-ə töhfə verənlərin siyahısı",
"logsLabel": "Jurnalları paylaş",
@@ -198,6 +197,12 @@
"deleteTempDirLabel": "Müvəqqəti faylları sil",
"deleteTempDirHint": "İstifadəsiz, müvəqqəti faylları sil",
"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",
"exportPatchesHint": "Yamaq seçimini JSON faylına köçür",
"exportedPatches": "Yamaq seçimi ixrac edildi",

View File

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

View File

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

View File

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

View File

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

View File

@@ -55,7 +55,8 @@
"widgetTitle": "Záplatovač",
"patchButton": "Záplatovat",
"incompatibleArchWarningDialogText": "Úprava této architektury není zatím podporována a může selhat. Přesto pokračovat?",
"removedPatchesWarningDialogText": "Následující záplaty byly odstraněny od doby, kdy jste je naposledy použili.\n\n${patches}\n\n${newPatches}Přesto pokračovat?",
"removedPatchesWarningDialogText": "Odstranili jste záplaty od poslední úpravy této aplikace:\n\n${patches}\n\n${newPatches}Pokračovat?",
"addedPatchesDialogText": "Přidány záplaty od poslední úpravy této aplikace:\n\n${addedPatches}\n\n",
"requiredOptionDialogText": "Je třeba nastavit některé možnosti záplat."
},
"appSelectorCard": {
@@ -157,20 +158,18 @@
"languageLabel": "Jazyk",
"languageUpdated": "Jazyk aktualizován",
"sourcesLabel": "Alternativní zdroje",
"sourcesLabelHint": "Konfigurace alternativních zdrojů pro vylepšené úpravy a zdokonalené integrace",
"sourcesIntegrationsLabel": "Zdroj integrace",
"sourcesLabelHint": "Konfigurace alternativních zdrojů pro vylepšené úpravy",
"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",
"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?",
"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",
"apiURLHint": "Konfigurace URL API ReVanced Manager",
"selectApiURL": "API URL",
"orgPatchesLabel": "Organizace patchů",
"sourcesPatchesLabel": "Zdroj patchů",
"orgIntegrationsLabel": "Autor integrace",
"contributorsLabel": "Přispěvatelé",
"contributorsHint": "Seznam přispěvatelů ReVanced",
"logsLabel": "Sdílet záznamy",
@@ -198,6 +197,12 @@
"deleteTempDirLabel": "Odstranit dočasné soubory",
"deleteTempDirHint": "Odstranit nepoužívané dočasné soubory",
"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",
"exportPatchesHint": "Exportovat výběr patch do souboru JSON",
"exportedPatches": "Výběr patch exportován",

View File

@@ -55,7 +55,8 @@
"widgetTitle": "Patcher",
"patchButton": "Patch",
"incompatibleArchWarningDialogText": "Patching på denne arkitektur understøttes endnu ikke og kan mislykkes. Fortsæt alligevel?",
"removedPatchesWarningDialogText": "Følgende patches er blevet fjernet siden sidste gang du brugte dem.\n\n${patches}\n\n${newPatches}Fortsæt alligevel?",
"removedPatchesWarningDialogText": "Fjernede rettelser siden sidste gang du lappede denne app:\n\n${patches}\n\n${newPatches}Fortsæt alligevel?",
"addedPatchesDialogText": "Tilføjet rettelser siden sidste gang du lappede denne app:\n\n${addedPatches}\n\n",
"requiredOptionDialogText": "Nogle patch muligheder skal indstilles."
},
"appSelectorCard": {
@@ -157,20 +158,18 @@
"languageLabel": "Sprog",
"languageUpdated": "Sprog opdateret",
"sourcesLabel": "Alternative kilder",
"sourcesLabelHint": "Konfigurer de alternative kilder til ReVanced Patches og ReVanced Integrations",
"sourcesIntegrationsLabel": "Kilde til Integrationer",
"sourcesLabelHint": "Indstil alternative kilder for ReVanced Patches",
"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",
"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?",
"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",
"apiURLHint": "Konfigurer API-URL'en til ReVanced Manager",
"selectApiURL": "API URL",
"orgPatchesLabel": "Organisation for Patches",
"sourcesPatchesLabel": "Kilde til Patches",
"orgIntegrationsLabel": "Organisation for Integrationer",
"contributorsLabel": "Medvirkende",
"contributorsHint": "En liste over medvirkende til ReVanced",
"logsLabel": "Del logs",
@@ -198,6 +197,12 @@
"deleteTempDirLabel": "Slet midlertidige filer",
"deleteTempDirHint": "Slet ubrugte midlertidige filer",
"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",
"exportPatchesHint": "Eksportér patch valg til en JSON- fil",
"exportedPatches": "Patch valg eksporteret",

View File

@@ -55,7 +55,8 @@
"widgetTitle": "Patcher",
"patchButton": "Patchen",
"incompatibleArchWarningDialogText": "Patches auf dieser Architektur werden noch nicht unterstützt und könnten fehlschlagen. Trotzdem fortfahren?",
"removedPatchesWarningDialogText": "Die folgenden Patches wurden seit der letzten Verwendung entfernt.\n\n${patches}\n\n${newPatches}Trotzdem fortfahren?",
"removedPatchesWarningDialogText": "Patches seit dem letzten Mal, dass Sie diese App gepatcht haben, entfernt:\n\n${patches}\n\n${newPatches}Trotzdem fortfahren?",
"addedPatchesDialogText": "Patches seit dem letzten Mal, dass Sie diese App gepatcht haben:\n\n${addedPatches}\n\n",
"requiredOptionDialogText": "Einige Patch-Optionen müssen gesetzt werden."
},
"appSelectorCard": {
@@ -157,20 +158,18 @@
"languageLabel": "Sprache",
"languageUpdated": "Sprache aktualisiert",
"sourcesLabel": "Alternative Quellen",
"sourcesLabelHint": "Konfiguriere die alternativen Quellen für ReVanced Patches und ReVanced Integrations",
"sourcesIntegrationsLabel": "Quelle für Integrationen",
"sourcesLabelHint": "Konfigurieren Sie die alternativen Quellen für überarbeitete Patches",
"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",
"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?",
"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",
"apiURLHint": "Konfigurieren die API URL von ReVanced Manager",
"selectApiURL": "API-URL",
"orgPatchesLabel": "Patches Organisation",
"sourcesPatchesLabel": "Patches Quelle",
"orgIntegrationsLabel": "Integrationen Organisation",
"contributorsLabel": "Mitwirkende",
"contributorsHint": "Eine Liste der Mitwirkenden von ReVanced",
"logsLabel": "Logs teilen",
@@ -198,6 +197,12 @@
"deleteTempDirLabel": "Lösche temporäre Dateien",
"deleteTempDirHint": "Unbenutzte temporäre Dateien löschen",
"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",
"exportPatchesHint": "Patch-Auswahl in eine JSON-Datei exportieren",
"exportedPatches": "Patch-Auswahl exportiert",

View File

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

View File

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

View File

@@ -55,7 +55,8 @@
"widgetTitle": "Parcheador",
"patchButton": "Parchear",
"incompatibleArchWarningDialogText": "El parche en esta arquitectura aún no está soportado y podría fallar. ¿Continuar de todos modos?",
"removedPatchesWarningDialogText": "Los siguientes parches han sido eliminados desde la última vez que los usaste.\n\n${patches}\n\n${newPatches}¿Continuar de todos modos?",
"removedPatchesWarningDialogText": "Eliminados parches desde la última vez que parcheaste esta aplicación:\n\n${patches}\n\n${newPatches}¿Continuar de todos modos?",
"addedPatchesDialogText": "Añadidos parches desde la última vez que parcheaste esta aplicación:\n\n${addedPatches}\n\n",
"requiredOptionDialogText": "Deben establecerse algunas opciones de parche."
},
"appSelectorCard": {
@@ -157,20 +158,18 @@
"languageLabel": "Idioma",
"languageUpdated": "Idioma actualizado",
"sourcesLabel": "Fuentes alternativas",
"sourcesLabelHint": "Configurar las fuentes alternativas para Parches de ReVanced e Integraciones ReVanced",
"sourcesIntegrationsLabel": "Fuente de las integraciones",
"sourcesLabelHint": "Configurar las fuentes alternativas para los parches reVanced",
"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",
"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?",
"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",
"apiURLHint": "Configurar la URL de API del ReVanced Manager",
"selectApiURL": "URL de la API",
"orgPatchesLabel": "Organización de los parches",
"sourcesPatchesLabel": "Fuente de los parches",
"orgIntegrationsLabel": "Organización de integraciones",
"contributorsLabel": "Contribuidores",
"contributorsHint": "Una lista de contribuidores de ReVanced",
"logsLabel": "Compartir registros",
@@ -198,6 +197,12 @@
"deleteTempDirLabel": "Borrar archivos temporales",
"deleteTempDirHint": "Eliminar archivos temporales no utilizados",
"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",
"exportPatchesHint": "Exportar la selección de parches a un archivo JSON",
"exportedPatches": "Selección de parches exportada",

View File

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

View File

@@ -51,7 +51,6 @@
"patcherView": {
"widgetTitle": "Parandaja",
"patchButton": "Parandus",
"removedPatchesWarningDialogText": "Väljatoodud parandused on vahepeal eemaldatud.\n\n${patches}\n\n${newPatches}Jätka ikkagi? ",
"requiredOptionDialogText": "Mõned paranduste sätted on vaja valida. "
},
"appSelectorCard": {
@@ -114,13 +113,11 @@
"exportSectionTitle": "Import & eksport",
"dynamicThemeHint": "Nautige kogemust oma seadmele lähemal",
"languageLabel": "Keel",
"sourcesIntegrationsLabel": "Integratsioonide allikas",
"sourcesResetDialogTitle": "Lähtesta",
"apiURLLabel": "API URL",
"selectApiURL": "API URL",
"orgPatchesLabel": "Plaastrite organisatsioon",
"sourcesPatchesLabel": "Plaastrite allikas",
"orgIntegrationsLabel": "Integratsiooni organisatsioon",
"contributorsLabel": "Panustajad",
"contributorsHint": "Revancedi kaasautorite nimekiri",
"aboutLabel": "Teave",

View File

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

View File

@@ -55,7 +55,7 @@
"widgetTitle": "Paikkaaja",
"patchButton": "Paikkaa",
"incompatibleArchWarningDialogText": "Paikkaamista ei vielä tueta tällä kokoonpanolla, ja se saattaa epäonnistua. Jatketaanko silti?",
"removedPatchesWarningDialogText": "Seuraavat paikkaukset on poistettu edellisen käyttökerran jälkeen.\n\n${patches}\n\n${newPatches}Jatketaanko silti?",
"removedPatchesWarningDialogText": "Poistetut paikat viimeisen laastariesi jälkeen tämän sovelluksen:\n\n${patches}\n\n${newPatches}Jatka joka tapauksessa?",
"requiredOptionDialogText": "Joitakin paikkausasetuksia on määritettävä."
},
"appSelectorCard": {
@@ -157,20 +157,18 @@
"languageLabel": "Kieli",
"languageUpdated": "Kieli on vaihdettu",
"sourcesLabel": "Vaihtoehtoiset lähteet",
"sourcesLabelHint": "Määritä käytöstä poistettujen kohteiden ja käytöstä poistettujen integraatioiden vaihtoehtoiset lähteet",
"sourcesIntegrationsLabel": "Integraatioiden lähde",
"sourcesLabelHint": "Määritä käytöstä poistettujen paikkojen vaihtoehtoiset lähteet",
"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",
"sourcesResetDialogText": "Haluatko varmasti palauttaa oletuslähteet?",
"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",
"apiURLHint": "Määritä ReVanced Managerin API:N URL-osoite",
"selectApiURL": "API:n URL-osoite",
"orgPatchesLabel": "Paikkauksien organisaatio",
"sourcesPatchesLabel": "Paikkauksien lähde",
"orgIntegrationsLabel": "Integraatioiden organisaatio",
"contributorsLabel": "Osallistujat",
"contributorsHint": "Listaus ReVancedin kehitykseen osallistuneista",
"logsLabel": "Jaa lokit",
@@ -198,6 +196,12 @@
"deleteTempDirLabel": "Poista väliaikaistiedostot",
"deleteTempDirHint": "Poista käyttämättömät väliaikaistiedostot",
"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",
"exportPatchesHint": "Vie paikkausvalikoima JSON-tiedostoon",
"exportedPatches": "Paikkausvalikoima vietiin",

View File

@@ -52,7 +52,6 @@
"patcherView": {
"widgetTitle": "Tagapagtapal",
"patchButton": "Tapalan",
"removedPatchesWarningDialogText": "Ang mga sumusunod na patches ay tinanggal mula noong huling beses mong gamitin ang mga ito.\n\n${patches}\n\n${newPatches}Ituloy pa rin ba?",
"requiredOptionDialogText": "Kailangan mo i-set ang ilang mga opsyon para sa patch."
},
"appSelectorCard": {
@@ -148,16 +147,12 @@
"languageLabel": "Wika",
"languageUpdated": "Wika na-update na",
"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 ",
"useAlternativeSourcesHint": "Gamitin ang mga alternatibong sources para sa mga ReVanced Patches at ReVanced Integrations sa halip ng API",
"sourcesResetDialogTitle": "I-reset",
"apiURLLabel": "URL ng API",
"selectApiURL": "URL ng API",
"orgPatchesLabel": "Pagsasaayos ng mga pantapal",
"sourcesPatchesLabel": "Pinanggalingan ng mga pantapal",
"orgIntegrationsLabel": "Pagsasaayos ng mga integrasyon",
"contributorsLabel": "Mga nag-ambag",
"contributorsHint": "Listahan ng mga tumulong sa ReVanced",
"aboutLabel": "Tungkol",

View File

@@ -55,7 +55,8 @@
"widgetTitle": "Patcheur",
"patchButton": "Patcher",
"incompatibleArchWarningDialogText": "La correction sur cette architecture n'est pas encore prise en charge et pourrait échouer. Continuer quand même ?",
"removedPatchesWarningDialogText": "Les patchs suivants ont été supprimés depuis la dernière fois que vous les avez utilisés.\n\n${patches}\n\n${newPatches}Continuer quand même ?",
"removedPatchesWarningDialogText": "Les patchs supprimés depuis la dernière fois que vous avez patché cette application :\n\n${patches}\n\n${newPatches}Continuer quand même ?",
"addedPatchesDialogText": "Ajout de correctifs depuis la dernière fois que vous avez patché cette application :\n\n${addedPatches}\n\n",
"requiredOptionDialogText": "Certaines options de patch doivent être définies."
},
"appSelectorCard": {
@@ -157,20 +158,18 @@
"languageLabel": "Langue",
"languageUpdated": "Langue mise à jour",
"sourcesLabel": "Sources alternatives",
"sourcesLabelHint": "Configure les sources alternatives pour les correctifs et les intégrations ReVanced",
"sourcesIntegrationsLabel": "Source des intégrations",
"sourcesLabelHint": "Configurer les sources alternatives pour les correctifs ReVanced",
"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",
"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 ?",
"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",
"apiURLHint": "Configurer l'URL de l'API de ReVanced Manager",
"selectApiURL": "URL de l'API",
"orgPatchesLabel": "Organisation des correctifs",
"sourcesPatchesLabel": "Source des patchs",
"orgIntegrationsLabel": "Organisation des intégrations",
"contributorsLabel": "Contributeurs",
"contributorsHint": "Liste des contributeurs de ReVanced",
"logsLabel": "Partager les journaux",
@@ -198,6 +197,12 @@
"deleteTempDirLabel": "Supprimer les fichiers temporaires",
"deleteTempDirHint": "Supprimer les fichiers temporaires inutilisé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",
"exportPatchesHint": "Exporter la sélection de correctifs vers un fichier JSON",
"exportedPatches": "Sélection de correctifs exportée",

View File

@@ -55,7 +55,8 @@
"widgetTitle": "Paisteálaí",
"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?",
"removedPatchesWarningDialogText": "Baineadh na paistí seo a leanas ón uair dheireanach a d'úsáid tú iad.\n\n${patches}\n\n${newPatches}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ú."
},
"appSelectorCard": {
@@ -157,20 +158,18 @@
"languageLabel": "Teanga",
"languageUpdated": "Teanga nuashonraithe",
"sourcesLabel": "Foinsí malartacha",
"sourcesLabelHint": "Cumraigh na foinsí malartacha le haghaidh Paistí ReVanced agus Comhtháthaithe ReVanced",
"sourcesIntegrationsLabel": "Foinse comhtháthaithe",
"sourcesLabelHint": "Cumraigh na foinsí malartacha le haghaidh Paistí ReVanced",
"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",
"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?",
"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",
"apiURLHint": "Cumraigh URL API de Bhainisteoir ReVanced",
"selectApiURL": "UIRL API",
"orgPatchesLabel": "Eagraíocht paistí",
"sourcesPatchesLabel": "Foinse paistí",
"orgIntegrationsLabel": "Eagraíocht comhtháthaithe",
"contributorsLabel": "Rannpháirtithe",
"contributorsHint": "Liosta de rannpháirtithe ReVanced",
"logsLabel": "Comhroinn logaí",
@@ -198,6 +197,12 @@
"deleteTempDirLabel": "Scrios comhaid shealadacha",
"deleteTempDirHint": "Scrios comhaid shealadacha gan úsáid",
"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",
"exportPatchesHint": "Roghnú paiste a easpórtáil chuig comhad JSON",
"exportedPatches": "Easpórtáil an roghnú paistí",

View File

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

View File

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

View File

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

View File

@@ -55,7 +55,8 @@
"widgetTitle": "Patchelő",
"patchButton": "Patch",
"incompatibleArchWarningDialogText": "Ezen az architektúrán a patchelés még nem támogatott, és sikertelen lehet. Mégis folytatod?",
"removedPatchesWarningDialogText": "A következő patcheket a legutóbbi használatuk óta eltávolították.\n\n${patches}\n\n${newPatches}Mindenképpen folytatja?",
"removedPatchesWarningDialogText": "Az alkalmazás legutóbbi javítása óta eltávolított javítások:\n\n${patches}\n\n${newPatches}Amúgy folytatja?",
"addedPatchesDialogText": "Javítások hozzáadva az alkalmazás legutóbbi javítása óta:\n\n${addedPatches}",
"requiredOptionDialogText": "Néhány patch lehetőséget be kell állítani."
},
"appSelectorCard": {
@@ -157,20 +158,18 @@
"languageLabel": "Nyelv",
"languageUpdated": "Nyelv frissítve",
"sourcesLabel": "Alternatív források",
"sourcesLabelHint": "Állítsa be a ReVanced Patchek és ReVanced Integrációk alternatív forrásait",
"sourcesIntegrationsLabel": "Integrációk - forrás",
"sourcesLabelHint": "Egyéni lejátszási sebesség hozzáadása vagy módosítása",
"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",
"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?",
"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",
"apiURLHint": "Konfigurálja a ReVanced Manager API URL-jét",
"selectApiURL": "API link",
"orgPatchesLabel": "Patchek - szervezet",
"sourcesPatchesLabel": "Patchek - forrás",
"orgIntegrationsLabel": "Integrációk - szervezet",
"contributorsLabel": "Közreműködők",
"contributorsHint": "A ReVanced közreműködőinek listája",
"logsLabel": "Naplók megosztása",
@@ -198,6 +197,12 @@
"deleteTempDirLabel": "Ideiglenes fájlok törlése",
"deleteTempDirHint": "Nem használt ideiglenes fájlok törlése",
"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",
"exportPatchesHint": "Exportálja a kijelölt patcheket egy JSON-fájlba",
"exportedPatches": "Kijelölt patchek exportálva",

View File

@@ -29,13 +29,13 @@
"noSavedAppFound": "App tidak ditemukan",
"noInstallations": "Aplikasi tertambal tidak terpasang",
"installUpdate": "Lanjutkan untuk mengunduh pembaruan?",
"updateSheetTitle": "Perbarui Manajer ReVanced",
"updateDialogTitle": "Pembaruan terkini telah tersedia",
"updateSheetTitle": "Perbarui ReVanced Manager",
"updateDialogTitle": "Pembaruan baru telah tersedia",
"updatePatchesSheetTitle": "Perbarui Tambalan ReVanced",
"updateChangelogTitle": "Catatan perubahan",
"updateDialogText": "Pembaruan telah tersedia untuk ${file}.\n\nVersi yang diinstal saat ini adalah ${version}.",
"updateDialogText": "Pembaruan telah tersedia untuk ${file}.\n\nVersi yang dipasang saat ini adalah ${version}.",
"downloadConsentDialogTitle": "Unduh file yang diperlukan?",
"downloadConsentDialogText": "Manajer ReVanced perlu mengunduh file yang diperlukan agar berfungsi dengan baik.",
"downloadConsentDialogText": "ReVanced Manager perlu mengunduh berkas yang diperlukan agar berfungsi dengan baik.",
"downloadConsentDialogText2": "Ini akan menghubungkan Anda ke ${url}.",
"downloadingMessage": "Mengunduh pembaruan...",
"downloadedMessage": "Pembaruan telah diunduh",
@@ -55,7 +55,8 @@
"widgetTitle": "Penambal",
"patchButton": "Tambalan",
"incompatibleArchWarningDialogText": "Menambal pada arsitektur ini belum didukung dan kemungkinan gagal. Lanjutkan saja?",
"removedPatchesWarningDialogText": "Tambalan berikut telah dihapus sejak terakhir kali Anda menggunakannya.\n\n${patches}\n\n${newPatches}Tetap lanjut?",
"removedPatchesWarningDialogText": "Tambalan yang dihapus sejak terakhir kali Anda menambal aplikasi ini:\n\n${patches}\n\n${newPatches}Tetap lanjutkan?",
"addedPatchesDialogText": "Tambalan yang ditambahkan sejak terakhir kali Anda menambal aplikasi ini:\n\n${addedPatches}",
"requiredOptionDialogText": "Beberapa pilihan tambalan harus diatur."
},
"appSelectorCard": {
@@ -63,7 +64,7 @@
"widgetTitleSelected": "Aplikasi yang dipilih",
"widgetSubtitle": "Tidak ada aplikasi yang dipilih",
"noAppsLabel": "Aplikasi tidak ditemukan",
"anyVersion": "Versi apa saja"
"anyVersion": "Versi apapun"
},
"patchSelectorCard": {
"widgetTitle": "Pilih tambalan",
@@ -83,7 +84,7 @@
"errorMessage": "Tidak dapat menggunakan aplikasi yang dipilih",
"downloadToast": "Fungsi mengunduh belum tersedia",
"requireSuggestedAppVersionDialogText": "Versi aplikasi yang Anda pilih tidak sesuai dengan versi yang disarankan yang dapat menyebabkan masalah yang tidak diharapkan. Silakan gunakan versi yang disarankan.\n\nVersi yang dipilih: ${selected}\nVersi yang disarankan: ${suggested}\n\nUntuk melanjutkan, nonaktifkan \"Memerlukan versi aplikasi yang disarankan\" di pengaturan.",
"featureNotAvailable": "Fitur tidak diimplementasi",
"featureNotAvailable": "Fitur belum diterapkan",
"featureNotAvailableText": "Aplikasi ini adalah APK terpisah yang hanya dapat ditambal dan dipasang melalui cara mount dengan izin root. Namun, Anda dapat menambal dan memasang APK lengkap dengan memilihnya dari penyimpanan."
},
"patchesSelectorView": {
@@ -99,11 +100,11 @@
"noneTooltip": "Batalkan semua tambalan",
"loadPatchesSelection": "Muat tambalan terpilih",
"noSavedPatches": "Tidak ada pilihan tambalan yang disimpan untuk aplikasi yang dipilih.\nTekan Selesai untuk menyimpan pilihan saat ini.",
"noPatchesFound": "Tidak ada tambalan untuk aplikasi",
"noPatchesFound": "Tidak ada tambalan untuk aplikasi terpilih",
"setRequiredOption": "Beberapa tambalan memerlukan pilihan untuk diatur:\n\n${patches}\n\nAturlah sebelum melanjutkan."
},
"patchOptionsView": {
"customValue": "Nilai kustom",
"customValue": "Nilai khusus",
"setToNull": "Setel ke null",
"nullValue": "Nilai pilihan ini saat ini adalah null",
"viewTitle": "Pilihan tambalan",
@@ -112,14 +113,14 @@
"tooltip": "Pilihan masukan lainnya",
"selectFilePath": "Pilih lokasi berkas",
"selectFolder": "Pilih folder",
"requiredOption": "Pengaturan opsi ini diperlukan",
"requiredOption": "Pengaturan pilihan ini diperlukan",
"unsupportedOption": "Pilihan ini tidak didukung",
"requiredOptionNull": "Pilihan ini harus terpilih:\n\n${options}"
},
"patchItem": {
"unsupportedDialogText": "Memilih tambalan ini akan menyebabkan kegagalan tambal.\n\nVersi apli: ${packageVersion}\nVersi anjuran:\n${supportedVersions}",
"unsupportedDialogText": "Memilih tambalan ini mungkin menyebabkan kegagalan tambal.\n\nVersi aplikasi: ${packageVersion}\nVersi yang didukung:\n${supportedVersions}",
"unsupportedPatchVersion": "Tambalan ini tidak mendukung versi aplikasi ini.",
"unsupportedRequiredOption": "Tambalan ini berisi opsi wajib yang tidak didukung oleh aplikasi ini",
"unsupportedRequiredOption": "Tambalan ini berisi pilihan wajib yang tidak didukung oleh aplikasi ini",
"patchesChangeWarningDialogText": "Direkomendasikan untuk menggunakan pilihan dan opsi tambalan bawaan. Mengubahnya dapat mengakibatkan masalah yang tidak diharapkan.\n\nAnda harus mengaktifkan \"Izinkan perubahan pilihan tambalan\" dalam pengaturan sebelum mengubah pilihan tambalan.",
"patchesChangeWarningDialogButton": "Gunakan pemilihan bawaan"
},
@@ -129,13 +130,13 @@
"installButton": "Pasang",
"installRootType": "Mount",
"installNonRootType": "Reguler",
"warning": "Nonaktifkan pembaruan pada aplikasi tertambal untuk menghindari isu.",
"pressBackAgain": "Tekan tombol balik lagi untuk membatalkan",
"warning": "Nonaktifkan pembaruan pada aplikasi tertambal untuk menghindari masalah.",
"pressBackAgain": "Tekan tombol kembali untuk membatalkan",
"openButton": "Buka",
"notificationTitle": "ReVanced Manager sedang menambal",
"notificationText": "Ketuk untuk kembali ke pemasang",
"exportApkButtonTooltip": "Ekspor APK yang ditambal",
"exportLogButtonTooltip": "Log ekspor",
"exportLogButtonTooltip": "Ekspor log",
"screenshotDetected": "Tangkapan layar telah terdeteksi. Jika Anda mencoba membagikan log, silakan bagikan salinan teks.\n\nMenyalin log ke papan klip?",
"copiedToClipboard": "Menyalin log ke papan klip",
"noExit": "Pemasangan masih berjalan, tidak bisa keluar..."
@@ -150,45 +151,43 @@
"dataSectionTitle": "Sumber data",
"themeModeLabel": "Tema aplikasi",
"systemThemeLabel": "Sistem",
"lightThemeLabel": "Cahaya",
"darkThemeLabel": "Mode gelap",
"lightThemeLabel": "Terang",
"darkThemeLabel": "Gelap",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Nikmati pengalaman lebih dekat ke perangkat Anda",
"languageLabel": "Bahasa",
"languageUpdated": "Bahasa diperbaharui",
"sourcesLabel": "Sumber-sumber alternatif",
"sourcesLabelHint": "Mengonfigurasi sumber alternatif untuk ReVanced Patches dan ReVanced Integrations",
"sourcesIntegrationsLabel": "Sumber Integrasi",
"useAlternativeSources": "Gunakan sumber-sumber alternatif",
"useAlternativeSourcesHint": "Gunakan sumber alternatif untuk ReVanced Patches dan ReVanced Integrations alih-alih API",
"languageUpdated": "Bahasa diperbarui",
"sourcesLabel": "Sumber alternatif",
"sourcesLabelHint": "Konfigurasikan sumber alternatif untuk Patch ReVanced",
"useAlternativeSources": "Gunakan sumber alternatif",
"useAlternativeSourcesHint": "Gunakan sumber alternatif untuk Patch ReVanced, bukan API",
"sourcesResetDialogTitle": "Atur ulang",
"sourcesResetDialogText": "Apakah Anda yakin ingin mengatur ulang sumber kustom ke bawaannya?",
"sourcesResetDialogText": "Apakah Anda yakin ingin mengatur ulang sumber khusus ke sumber 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",
"apiURLHint": "Konfigurasikan URL API dari ReVanced Manager",
"apiURLHint": "Atur URL API dari ReVanced Manager",
"selectApiURL": "URL API",
"orgPatchesLabel": "Perapihan tambalan",
"orgPatchesLabel": "Organisasi tambalan",
"sourcesPatchesLabel": "Sumber tambalan",
"orgIntegrationsLabel": "Organisasi Intergrasi",
"contributorsLabel": "Kontributor",
"contributorsHint": "Daftar kontributor ReVanced",
"logsLabel": "Bagikan log",
"logsHint": "Bagikan log ReVanced Manager",
"enablePatchesSelectionLabel": "Izinkan mengubah pemilihan tambalan",
"enablePatchesSelectionHint": "Jangan mencegah pemilihan atau pembatalan pemilihan tambalan",
"enablePatchesSelectionWarningText": "Mengubah pilihan dari tambalan akan menyebabkan isu tak terduga.\n\nAktifkan saja?",
"disablePatchesSelectionWarningText": "Anda akan menonaktifkan pengubahan pilihan tambalan.\nPilihan tambalan default akan dikembalikan.\n\nMenonaktifkan?",
"enablePatchesSelectionWarningText": "Mengubah pilihan dari tambalan akan menyebabkan masalah tak terduga.\n\nAktifkan saja?",
"disablePatchesSelectionWarningText": "Anda akan menonaktifkan pengubahan pilihan tambalan.\nPilihan tambalan bawaan akan dikembalikan.\n\nTetap nonaktifkan?",
"autoUpdatePatchesLabel": "Otomatis perbarui tambalan",
"autoUpdatePatchesHint": "Otomatis perbarui tambalan ke versi terkini",
"autoUpdatePatchesHint": "Otomatis perbarui tambalan ke versi terbaru",
"showUpdateDialogLabel": "Tampilkan dialog pembaruan",
"showUpdateDialogHint": "Tampilkan dialog ketika pembaruan tersedia",
"universalPatchesLabel": "Tampilkan tambalan universal",
"universalPatchesHint": "Menampilkan semua aplikasi dan tambalan universal (dapat memperlambat daftar aplikasi)",
"lastPatchedAppLabel": "Simpan patch aplikasi",
"lastPatchedAppHint": "Simpan patch terakhir untuk diinstal atau diekspor nanti",
"versionCompatibilityCheckLabel": "Periksa versi kompatibilitas",
"versionCompatibilityCheckHint": "Cegah pemilihan tambalan yang tidak kompatibel dengan versi aplikasi yang dipilih",
"universalPatchesHint": "Tampilkan semua aplikasi dan tambalan universal (dapat memperlambat daftar aplikasi)",
"lastPatchedAppLabel": "Simpan aplikasi tertambal",
"lastPatchedAppHint": "Simpan tambalan terakhir untuk dipasang atau diekspor nanti",
"versionCompatibilityCheckLabel": "Pemeriksaan kompatibilitas versi",
"versionCompatibilityCheckHint": "Cegah pemilihan tambalan yang tidak cocok dengan versi aplikasi yang dipilih",
"requireSuggestedAppVersionLabel": "Memerlukan versi aplikasi yang disarankan",
"requireSuggestedAppVersionHint": "Cegah memilih versi aplikasi yang tidak disarankan",
"requireSuggestedAppVersionDialogText": "Memilih versi aplikasi yang tidak disarankan dapat menyebabkan masalah yang tidak terduga.\n\nApakah anda ingin melanjutkan?",
@@ -198,39 +197,45 @@
"deleteTempDirLabel": "Hapus berkas sementara",
"deleteTempDirHint": "Hapus berkas sementara yang tidak dipakai",
"deletedTempDir": "Berkas sementara dihapus",
"exportPatchesLabel": "Ekspor tambalan pilihan",
"exportPatchesHint": "Ekspor tambalan terpilih ke berkas JSON",
"exportedPatches": "Tambalan pilihan diekspor",
"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",
"exportPatchesHint": "Ekspor pilihan tambalan ke berkas JSON",
"exportedPatches": "Tambalan terpilih diekspor",
"noExportFileFound": "Belum pilih tambalan untuk diekspor",
"importPatchesLabel": "Impor modifikasi terpilih",
"importPatchesHint": "Impor tembalan terpilih dari berkas JSON",
"importPatchesLabel": "Impor tambalan pilihan",
"importPatchesHint": "Impor tembalan pilihan dari berkas JSON",
"importedPatches": "Tambalan pilihan diimpor",
"resetStoredPatchesLabel": "Setel ulang tambalan pilihan",
"resetStoredPatchesHint": "Mulai ulang tambalan pilihan yang disimpan",
"resetStoredPatchesDialogTitle": "Mulai ulang tambalan pilihan?",
"resetStoredPatchesLabel": "Atur ulang tambalan pilihan",
"resetStoredPatchesHint": "Atur ulang tambalan pilihan yang disimpan",
"resetStoredPatchesDialogTitle": "Atur ulang tambalan pilihan?",
"resetStoredPatchesDialogText": "Tambalan pilihan bawaan akan dikembalikan.",
"resetStoredPatches": "Tambalan pilihan telah diatur ulang",
"resetStoredOptionsLabel": "Setel ulang opsi tambalan",
"resetStoredOptionsHint": "Setel ulang semua opsi tambalan",
"resetStoredOptionsDialogTitle": "Setel ulang opsi tambalan?",
"resetStoredOptionsDialogText": "Menyetel ulang opsi tambalan akan menghapus semua opsi yang disimpan.",
"resetStoredOptions": "Opsi telah diatur ulang",
"deleteLogsLabel": "Hapus riwayat",
"deleteLogsHint": "Hapus log ReVanced Manager terkumpul",
"resetStoredOptionsLabel": "Atur ulang pilihan tambalan",
"resetStoredOptionsHint": "Atur ulang semua pilihan tambalan",
"resetStoredOptionsDialogTitle": "Atur ulang pilihan tambalan?",
"resetStoredOptionsDialogText": "Menyetel ulang pilihan tambalan akan menghapus semua pilihan yang disimpan.",
"resetStoredOptions": "Pilihan telah diatur ulang",
"deleteLogsLabel": "Hapus catatan",
"deleteLogsHint": "Hapus log ReVanced Manager yang dikumpulkan",
"deletedLogs": "Log dihapus",
"regenerateKeystoreLabel": "Menghasilkan penyimpanan kunci",
"regenerateKeystoreHint": "Buat ulang penyimpanan kunci yang digunakan untuk menandatangani aplikasi",
"regenerateKeystoreDialogTitle": "Membuat ulang kunci penyimpanan?",
"regenerateKeystoreDialogText": "Aplikasi tambalan yang ditandatangani dengan kunci penyimpanan lama tidak dapat diperbarui lagi.",
"regeneratedKeystore": "Kunci penyimpanan dibuat ulang",
"regenerateKeystoreLabel": "Buat ulang keystore",
"regenerateKeystoreHint": "Buat ulang keystore yang digunakan untuk menandatangani aplikasi",
"regenerateKeystoreDialogTitle": "Buat ulang keystore?",
"regenerateKeystoreDialogText": "Aplikasi tambalan yang ditandatangani dengan keystore lama tidak dapat diperbarui lagi.",
"regeneratedKeystore": "Keystore dibuat ulang",
"exportKeystoreLabel": "Ekspor keystore",
"exportKeystoreHint": "Ekspor kunci penyimpanan yang digunakan untuk menandatangani aplikasi",
"exportKeystoreHint": "Ekspor keystore yang digunakan untuk menandatangani aplikasi",
"exportedKeystore": "Keystore diekspor",
"noKeystoreExportFileFound": "Tidak ada keystore untuk diekspor",
"importKeystoreLabel": "Impor keystore",
"importKeystoreHint": "Impor kunci penyimpanan yang digunakan untuk menandatangani aplikasi",
"importKeystoreHint": "Impor keystore yang digunakan untuk menandatangani aplikasi",
"importedKeystore": "Keystore diimpor",
"selectKeystorePassword": "Kata Sandi Keystore",
"selectKeystorePassword": "Kata sandi keystore",
"selectKeystorePasswordHint": "Pilih kata sandi keystore yang digunakan untuk menandatangani aplikasi",
"jsonSelectorErrorMessage": "Tidak bisa menggunakan berkas JSON tersebut",
"keystoreSelectorErrorMessage": "Tidak bisa menggunakan berkas keystrore tersebut"
@@ -240,26 +245,26 @@
"openButton": "Buka",
"installButton": "Pasang",
"uninstallButton": "Copot",
"unmountButton": "Lepas mount",
"unmountButton": "Unmount",
"exportButton": "Ekspor",
"deleteButton": "Hapus",
"rootDialogTitle": "Kesalahan",
"lastPatchedAppDescription": "Ini adalah cadangan patch aplikasi terakhir.",
"unmountDialogText": "Apakah yakin ingin melepas mount aplikasi ini?",
"uninstallDialogText": "Apakah yakin ingin mencopot aplikasi ini?",
"rootDialogText": "Aplikasi dipasang dengan izin superuser, tapi saat ini ReVanced Manager belum diizinkan.\nMohon berikan izin superuser dulu.",
"removeAppDialogTitle": "Hapus Aplikasi?",
"removeAppDialogText": "Yakin akan menghapus data backup ini?",
"lastPatchedAppDescription": "Ini adalah cadangan dari aplikasi yang terakhir ditambal.",
"unmountDialogText": "Apakah Anda yakin ingin unmount aplikasi ini?",
"uninstallDialogText": "Apakah Anda yakin ingin mencopot aplikasi ini?",
"rootDialogText": "Aplikasi dipasang dengan izin superuser, tapi saat ini ReVanced Manager tidak mempunyai izin.\nMohon berikan izin superuser terlebih dahulu.",
"removeAppDialogTitle": "Hapus aplikasi?",
"removeAppDialogText": "Apakah Anda yakin ingin menghapus cadangan ini?",
"packageNameLabel": "Nama paket",
"installTypeLabel": "Tipe pemasangan",
"installTypeLabel": "Jenis pemasangan",
"mountTypeLabel": "Mount",
"regularTypeLabel": "Reguler",
"patchedDateLabel": "Kapan ditambal",
"appliedPatchesLabel": "Tambalan terterap",
"sizeLabel": "Ukuran file",
"patchedDateHint": "${date} pukul ${time}",
"appliedPatchesHint": "${quantity} tambalan terterap",
"updateNotImplemented": "Fitur ini belum diimplementasi"
"patchedDateLabel": "Tanggal ditambal",
"appliedPatchesLabel": "Tambalan yang diterapkan",
"sizeLabel": "Ukuran berkas",
"patchedDateHint": "${date} pada pukul ${time}",
"appliedPatchesHint": "${quantity} tambalan yang diterapkan",
"updateNotImplemented": "Fitur ini belum diterapkan"
},
"contributorsView": {
"widgetTitle": "Kontributor"
@@ -270,24 +275,24 @@
"mount_missing_installation": "Pemasangan tidak ada",
"status_failure_blocked": "Pemasangan diblokir",
"install_failed_verification_failure": "Verifikasi gagal",
"status_failure_invalid": "Pemasangan tidak absah",
"install_failed_version_downgrade": "Tak bisa turun versi",
"status_failure_conflict": "Pemasangan cekcok",
"status_failure_invalid": "Pemasangan tidak sah",
"install_failed_version_downgrade": "Tidak dapat menurunkan versi",
"status_failure_conflict": "Pemasangan berselisih",
"status_failure_storage": "Ruang pemasangan bermasalah",
"status_failure_incompatible": "Pemasangan tidak kompatibel",
"status_failure_timeout": "Pemasangan kelamaan",
"status_failure_incompatible": "Pemasangan tidak cocok",
"status_failure_timeout": "Pemasangan kehabisan waktu",
"status_unknown": "Pemasangan gagal",
"mount_version_mismatch_description": "Penginstalan gagal karena aplikasi yang diinstal merupakan versi yang berbeda dari aplikasi yang ditambal.\n\nInstal versi aplikasi yang anda pasang dan coba lagi.",
"mount_no_root_description": "Pemasangan ini gagal karena akses root belum dizinkan.\n\nIzinkan akses root ke ReVanced Manager dan coba lagi.",
"mount_missing_installation_description": "Pemasangan gagal karena aplikasi yang belum ditambal tidak terpasang pada perangkat ini supaya dipasang di atasnya.\n\nPasang aplikasi yang belum ditambal sebelum memasang dan coba lagi.",
"status_failure_timeout_description": "Instalasi memakan waktu terlalu lama untuk diselesaikan.\n\nApakah anda ingin mencoba lagi?",
"status_failure_storage_description": "Instalasi gagal karena penyimpanan tidak mencukupi.\n\nKosongkan sebagian ruang dan coba kembali.",
"status_failure_invalid_description": "Instalasi gagal karena aplikasi yang ditambal tidak valid.\n\nCopot pemasangan aplikasi dan coba lagi?",
"status_failure_incompatible_description": "Aplikasi tidak kompatibel dengan perangkat ini.\n\nGunakan APK sesuai jenis perangkat dan coba lagi.",
"status_failure_conflict_description": "Penginstalan dicegah oleh aplikasi yang sudah ada.\n\nCopot pemasangan aplikasi yang terpasang dan coba kembali?",
"status_failure_blocked_description": "Instalasi diblokir oleh ${packageName}.\n\nSesuaikan pengaturan keamanan anda dan coba kembali.",
"mount_version_mismatch_description": "Pemasangan gagal dikarenakan aplikasi yang dipasang merupakan versi yang berbeda dari aplikasi yang ditambal.\n\nPasang versi aplikasi yang Anda pasang dan coba lagi.",
"mount_no_root_description": "Pemasangan gagal karena akses root belum dizinkan.\n\nIzinkan akses root ke ReVanced Manager dan coba lagi.",
"mount_missing_installation_description": "Pemasangan gagal dikarenakan aplikasi yang belum ditambal tidak terpasang pada perangkat ini supaya dipasang di atasnya.\n\nPasang aplikasi yang belum ditambal sebelum memasang dan coba lagi.",
"status_failure_timeout_description": "Pemasangan memakan waktu terlalu lama untuk diselesaikan.\n\nApakah Anda ingin mencoba lagi?",
"status_failure_storage_description": "Pemasangan gagal karena ruang penyimpanan tidak cukup.\n\nKosongkan sebagian ruang dan coba lagi.",
"status_failure_invalid_description": "Pemasangan gagal karena aplikasi yang ditambal tidak sah.\n\nCopot pemasangan aplikasi dan coba lagi?",
"status_failure_incompatible_description": "Aplikasi tidak cocok dengan perangkat ini.\n\nGunakan APK yang didukung perangkat ini dan coba lagi.",
"status_failure_conflict_description": "Pemasangan dicegah oleh aplikasi yang sudah ada.\n\nCopot pemasangan aplikasi yang terpasang dan coba lagi?",
"status_failure_blocked_description": "Pemasangan diblokir oleh ${packageName}.\n\nSesuaikan pengaturan keamanan Anda dan coba lagi.",
"install_failed_verification_failure_description": "Instalasi gagal karena masalah verifikasi.\n\nSesuaikan pengaturan keamanan anda dan coba kembali.",
"install_failed_version_downgrade_description": "Pemasangan gagal karena aplikasi tambalan memiliki versi yang lebih rendah daripada aplikasi yang sudah terpasang.\n\nCopot pemasangan aplikasi dan coba kembali?",
"status_unknown_description": "Instalasi gagal karena alasan yang tidak diketahui. Silakan coba kembali."
"install_failed_version_downgrade_description": "Pemasangan gagal karena aplikasi tambalan memiliki versi yang lebih rendah daripada aplikasi yang sudah terpasang.\n\nCopot pemasangan aplikasi dan coba lagi?",
"status_unknown_description": "Pemasangan gagal karena alasan yang tidak diketahui. Silakan coba lagi."
}
}

View File

@@ -51,7 +51,6 @@
"patcherView": {
"widgetTitle": "Patcher",
"patchButton": "Bót",
"removedPatchesWarningDialogText": "Eftirfarandi patches hafa verið fjarlægðir síðan þú notaðir þá síðast.\n\n${patches}\n\n${newPatches}Halda samt áfram?",
"requiredOptionDialogText": "Það þarf að stilla nokkra patch valkosti."
},
"appSelectorCard": {

View File

@@ -55,7 +55,8 @@
"widgetTitle": "Patcher",
"patchButton": "Patch",
"incompatibleArchWarningDialogText": "La patch su questa architettura non è ancora supportata e potrebbe fallire. Continuare comunque?",
"removedPatchesWarningDialogText": "Le seguenti patch sono state rimosse dall'ultima volta che le hai usate.\n\n${patches}\n\n${newPatches}Continuare comunque?",
"removedPatchesWarningDialogText": "Le patch rimosse dall'ultima volta che hai patchato questa app:\n\n${patches}\n\n${newPatches}Continuare comunque?",
"addedPatchesDialogText": "Aggiunte patch dall'ultima volta che hai patchato questa app:\n\n${addedPatches}\n\n",
"requiredOptionDialogText": "Alcune opzioni di patch devono essere impostate."
},
"appSelectorCard": {
@@ -157,20 +158,18 @@
"languageLabel": "Lingua",
"languageUpdated": "Lingua aggiornata",
"sourcesLabel": "Sorgenti alternative",
"sourcesLabelHint": "Configura fonti alternative per ReVanced Patches e ReVanced Integrations",
"sourcesIntegrationsLabel": "Sorgente Integrazioni",
"sourcesLabelHint": "Configurare le fonti alternative per le patch avanzate",
"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",
"sourcesResetDialogText": "Sei sicuro di voler reimpostare le sorgenti ai valori predefiniti?",
"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",
"apiURLHint": "Configura l'URL API di ReVanced Manager",
"selectApiURL": "URL API",
"orgPatchesLabel": "Organizzazione Patch",
"sourcesPatchesLabel": "Sorgente Patch",
"orgIntegrationsLabel": "Organizzazione Integrazioni",
"contributorsLabel": "Contributori",
"contributorsHint": "Lista dei contributori di ReVanced",
"logsLabel": "Condividi i log",
@@ -198,6 +197,12 @@
"deleteTempDirLabel": "Elimina file temporanei",
"deleteTempDirHint": "Elimina i file temporanei non utilizzati",
"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",
"exportPatchesHint": "Esporta selezione patch in un file JSON",
"exportedPatches": "Selezione patch esportata",

View File

@@ -55,7 +55,8 @@
"widgetTitle": "パッチャー",
"patchButton": "パッチ",
"incompatibleArchWarningDialogText": "このアーキテクチャへのパッチ適用はまだサポートされておらず、失敗する可能性があります。とにかく続けますか?",
"removedPatchesWarningDialogText": "以下のパッチはもう使用できません。\n\n${patches}\n\n${newPatches}続行しますか?",
"removedPatchesWarningDialogText": "最後にこのアプリにパッチを適用したときからパッチを削除しました:\n\n${patches}\n\n${newPatches}とにかく続けますか",
"addedPatchesDialogText": "前回このアプリにパッチを適用した時以降のパッチを追加しました:\n\n${addedPatches}\n\n",
"requiredOptionDialogText": "一部のパッチオプションを設定する必要があります。"
},
"appSelectorCard": {
@@ -157,20 +158,18 @@
"languageLabel": "言語",
"languageUpdated": "言語が更新されました",
"sourcesLabel": "代替ソース",
"sourcesLabelHint": "ReVanded PatchesとReVanced Integrationsの代替ソースを設定",
"sourcesIntegrationsLabel": "Integrations のソース",
"sourcesLabelHint": "ReVanded Patches の代替ソースを構成する",
"useAlternativeSources": "他のソースを使用",
"useAlternativeSourcesHint": "APIの代わりにReVanced PatchesとReVanced Integrationsの他のソースを使用する",
"useAlternativeSourcesHint": "APIの代わりにReVended Patchesの代替ソースを使用する",
"sourcesResetDialogTitle": "リセット",
"sourcesResetDialogText": "ソースをデフォルト値にリセットしてもよろしいですか?",
"apiURLResetDialogText": "API の URL をデフォルト値にリセットしてもよろしいですか?",
"sourcesUpdateNote": "注: ReVanced PatchesとReVanced Integrationsを代替ソースから自動的にダウンロードます。\n\nこれにより、代替ソースとの通信が発生します。",
"sourcesUpdateNote": "注:ReVincedパッチは自動的に別のソースからダウンロードされます。\n\nこれにより、別のソースに接続されます。",
"apiURLLabel": "API の URL",
"apiURLHint": "ReVanced ManagerのAPIのURLを設定する",
"selectApiURL": "API の URL",
"orgPatchesLabel": "Patches の組織",
"sourcesPatchesLabel": "Patches のソース",
"orgIntegrationsLabel": "Integrations の組織",
"contributorsLabel": "貢献者",
"contributorsHint": "ReVancedの貢献者一覧",
"logsLabel": "ログを共有",
@@ -198,6 +197,12 @@
"deleteTempDirLabel": "一時ファイルを削除",
"deleteTempDirHint": "未使用の一時ファイルを削除",
"deletedTempDir": "一時ファイルを削除しました",
"exportSettingsLabel": "設定をエクスポート",
"exportSettingsHint": "設定を JSON ファイルにエクスポート",
"exportedSettings": "設定をエクスポートしました",
"importSettingsLabel": "設定をインポート",
"importSettingsHint": "JSONファイルから設定をインポート",
"importedSettings": "設定がインポートされました",
"exportPatchesLabel": "パッチ選択をエクスポート",
"exportPatchesHint": "パッチ選択を JSON ファイルにエクスポートします",
"exportedPatches": "パッチ選択をエクスポートしました",

View File

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

View File

@@ -132,7 +132,6 @@
"dynamicThemeHint": "Mėgaukis patirtimi artimiau tavo įrenginiui",
"languageLabel": "Kalba",
"languageUpdated": "Kalba atnaujinta",
"sourcesIntegrationsLabel": "Integracijų šaltinis",
"sourcesResetDialogTitle": "Nustatyti iš naujo",
"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ę?",
@@ -140,7 +139,6 @@
"selectApiURL": "API URL",
"orgPatchesLabel": "Modifikacijų organizacija",
"sourcesPatchesLabel": "Modifikacijų šaltinis",
"orgIntegrationsLabel": "Integracijų organizacija",
"contributorsLabel": "Prisidėjusieji žmonės",
"contributorsHint": "Žmonės prisidėję prie ReVanced",
"logsLabel": "Dalytis įrašais",

View File

@@ -49,8 +49,7 @@
},
"patcherView": {
"widgetTitle": "Pačeris",
"patchButton": "Pačot",
"removedPatchesWarningDialogText": "Kopš pēdējās lietošanas reizes ir noņemti šādi ielāpi.\n\n${patches}\n\n${newPatches}Turpināt jebkurā gadījumā?"
"patchButton": "Pačot"
},
"appSelectorCard": {
"widgetTitle": "Izvēlaties lietotni",
@@ -115,13 +114,11 @@
"dynamicThemeLabel": "Materiāls izskats",
"dynamicThemeHint": "Izbaudi pieredzi personalizētu tavai ierīcei",
"languageLabel": "Valoda",
"sourcesIntegrationsLabel": "Integrācijas avots",
"sourcesResetDialogTitle": "Atiestatīt",
"apiURLLabel": "API Saite",
"selectApiURL": "API Saite",
"orgPatchesLabel": "Paču autori",
"sourcesPatchesLabel": "Paču avots",
"orgIntegrationsLabel": "Integrāciju autori",
"contributorsLabel": "Autori",
"contributorsHint": "ReVanced ieguldītāji",
"aboutLabel": "Par",

View File

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

View File

@@ -55,6 +55,8 @@
"widgetTitle": "Patcher",
"patchButton": "Oppdatering",
"incompatibleArchWarningDialogText": "Patching på denne arkitekturen er ennå ikke støttet og kan mislykkes. Fortsette likevel?",
"removedPatchesWarningDialogText": "Fjernede oppdateringer siden forrige gang du sendte denne appen:\n\n${patches}\n\n${newPatches}Fortsette likevel?",
"addedPatchesDialogText": "La til korrigeringer siden forrige gang du patchet denne appen:\n\n${addedPatches}\n\n",
"requiredOptionDialogText": "Noen oppdateringsalternativer må angis."
},
"appSelectorCard": {
@@ -156,20 +158,18 @@
"languageLabel": "Språk",
"languageUpdated": "Språk oppdatert",
"sourcesLabel": "Alternative kilder",
"sourcesLabelHint": "Konfigurer alternative kilder for ReVanced Patches og ReVanced Integrations",
"sourcesIntegrationsLabel": "Integrasjoner kilde",
"sourcesLabelHint": "Konfigurer alternative kilder for ReVanced Patches",
"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",
"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?",
"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",
"apiURLHint": "Konfigurere API URL til ReVanced Manager",
"selectApiURL": "API URL",
"orgPatchesLabel": "Fikser organisasjon",
"sourcesPatchesLabel": "Patches source",
"orgIntegrationsLabel": "Integrasjonsorganisasjon",
"contributorsLabel": "Bidragsytere",
"contributorsHint": "En liste over bidragsytere av ReVanced",
"logsLabel": "Del logger",
@@ -196,6 +196,12 @@
"deleteTempDirLabel": "Slett midlertidige filer",
"deleteTempDirHint": "Slett ubrukte midlertidige filer",
"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",
"exportPatchesHint": "Eksporter patch valg til en JSON-fil",
"exportedPatches": "Patch utvalg eksportert",

View File

@@ -55,7 +55,8 @@
"widgetTitle": "Patcher",
"patchButton": "Patch",
"incompatibleArchWarningDialogText": "Patchen op deze architectuur wordt nog niet ondersteund en zal mogelijk mislukken. Toch doorgaan?",
"removedPatchesWarningDialogText": "De volgende patches zijn verwijderd sinds de laatste keer dat je ze hebt gebruikt.\n\n${patches}\n\n${newPatches}Toch doorgaan?",
"removedPatchesWarningDialogText": "Patch patches verwijderd sinds de laatste keer dat u deze app heeft aangepast:\n\n${patches}\n\n${newPatches}toch doorgaan?",
"addedPatchesDialogText": "Patch toegevoegd sinds de laatste keer dat u deze app heeft gepatenteerd:\n\n${addedPatches}\n\n",
"requiredOptionDialogText": "Er moeten enkele patch-opties worden ingesteld."
},
"appSelectorCard": {
@@ -157,20 +158,18 @@
"languageLabel": "Taal",
"languageUpdated": "Taal bijgewerkt",
"sourcesLabel": "Alternatieve bronnen",
"sourcesLabelHint": "Configureer de alternatieve bronnen voor ReVanced Patches en ReVanced Integrations",
"sourcesIntegrationsLabel": "Integratiebronnen",
"sourcesLabelHint": "De alternatieve bronnen voor verbeterde patches configureren",
"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",
"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?",
"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",
"apiURLHint": "Configureer de API URL van ReVanced Manager",
"selectApiURL": "API URL",
"orgPatchesLabel": "Beheer van patches",
"sourcesPatchesLabel": "Bronnen voor patches",
"orgIntegrationsLabel": "Integraties organisatie",
"contributorsLabel": "Bijdragers",
"contributorsHint": "Een lijst met bijdragers van ReVanced",
"logsLabel": "Deel logs",
@@ -198,6 +197,12 @@
"deleteTempDirLabel": "Tijdelijke bestanden verwijderen",
"deleteTempDirHint": "Ongebruikte tijdelijke bestanden verwijderen",
"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",
"exportPatchesHint": "Exporteer patch selectie naar een JSON bestand",
"exportedPatches": "Patch selectie geëxporteerd",

View File

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

View File

@@ -55,7 +55,8 @@
"widgetTitle": "Program łatający",
"patchButton": "Popraw",
"incompatibleArchWarningDialogText": "Aktualizowanie na tej architekturze nie jest jeszcze obsługiwane i może się nie powieść. Czy chcesz kontynuować mimo to?",
"removedPatchesWarningDialogText": "Następujące łatki zostały usunięte od ostatniego użycia.\n\n${patches}\n\n${newPatches}Kontynuować mimo to?",
"removedPatchesWarningDialogText": "Usunięto plastry od ostatniego wprowadzenia aplikacji:\n\n${patches}\n\n${newPatches}Kontynuować?",
"addedPatchesDialogText": "Dodano plastry od ostatniej aktualizacji aplikacji:\n\n${addedPatches}\n\n",
"requiredOptionDialogText": "Niektóre opcje muszą być ustawione."
},
"appSelectorCard": {
@@ -157,20 +158,18 @@
"languageLabel": "Język",
"languageUpdated": "Zaktualizowano język",
"sourcesLabel": "Alternatywne źródło",
"sourcesLabelHint": "Skonfiguruj alternatywne źródła dla Łatek ReVanced i Integracji ReVanced",
"sourcesIntegrationsLabel": "Źródło integracji",
"sourcesLabelHint": "Skonfiguruj alternatywne źródła dla ulepszonych patchów",
"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",
"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?",
"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",
"apiURLHint": "Skonfiguruj adres API Menedżera ReVanced",
"selectApiURL": "Adres API",
"orgPatchesLabel": "Organizacja łatek",
"sourcesPatchesLabel": "Źródło łatek",
"orgIntegrationsLabel": "Organizacja integracji",
"contributorsLabel": "Współtwórcy",
"contributorsHint": "Lista współtwórców ReVanced",
"logsLabel": "Udostępnij logi",
@@ -198,6 +197,12 @@
"deleteTempDirLabel": "Usuń pliki tymczasowe",
"deleteTempDirHint": "Usuń nieużywane pliki tymczasowe",
"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",
"exportPatchesHint": "Eksportuj wybór łatek do pliku JSON",
"exportedPatches": "Wyeksportowano wybór łatek",

View File

@@ -55,7 +55,6 @@
"widgetTitle": "Patcher",
"patchButton": "Patch",
"incompatibleArchWarningDialogText": "A aplicação de patches nesta arquitetura ainda não é suportada e pode falhar. Continuar mesmo assim?",
"removedPatchesWarningDialogText": "Os seguintes patches foram removidos desde a última vez que você os utilizou:\n\n${patches}\n\n${newPatches}Continuar mesmo assim?",
"requiredOptionDialogText": "Algumas opções de patch tiveram que ser definidas."
},
"appSelectorCard": {
@@ -157,20 +156,15 @@
"languageLabel": "Idioma",
"languageUpdated": "Idioma atualizado",
"sourcesLabel": "Fontes alternativas",
"sourcesLabelHint": "Configure as fontes alternativas para Patches ReVanced e Integrações ReVanced",
"sourcesIntegrationsLabel": "Fonte das integrações",
"useAlternativeSources": "Usar fontes alternativas",
"useAlternativeSourcesHint": "Use fontes alternativas para Patches ReVanced e Integrações ReVanced em vez da API",
"sourcesResetDialogTitle": "Redefinir",
"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?",
"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",
"apiURLHint": "Configure o URL da API do ReVanced Manager",
"selectApiURL": "URL da API",
"orgPatchesLabel": "Organização dos patches",
"sourcesPatchesLabel": "Fonte dos patches",
"orgIntegrationsLabel": "Organização das integrações",
"contributorsLabel": "Contribuidores",
"contributorsHint": "Uma lista de contribuidores do ReVanced",
"logsLabel": "Compartilhar logs",

View File

@@ -55,7 +55,8 @@
"widgetTitle": "Modificador",
"patchButton": "Modificar",
"incompatibleArchWarningDialogText": "Patrulhar nesta arquitetura ainda não é suportado e pode falhar. Continuar mesmo assim?",
"removedPatchesWarningDialogText": "As seguintes modificações foram removidas desde a última vez que as utilizaste.\n\n${patches}\n\n${newPatches}Continuar na mesma?",
"removedPatchesWarningDialogText": "Removido correções desde a última vez que você corrigiu este aplicativo:\n\n${patches}\n\n${newPatches}Continuar mesmo assim?",
"addedPatchesDialogText": "Adicionado patches desde a última vez que você corrigiu este aplicativo:\n\n${addedPatches}\n\n",
"requiredOptionDialogText": "Algumas opções das Modificações precisam ser definidas."
},
"appSelectorCard": {
@@ -157,20 +158,17 @@
"languageLabel": "Idioma",
"languageUpdated": "Idioma atualizado",
"sourcesLabel": "Fontes alternativas",
"sourcesLabelHint": "Configurar as fontes alternativas para as Modificações ReVanced e Integrações ReVanced",
"sourcesIntegrationsLabel": "Fonte das Integrações",
"sourcesLabelHint": "Configure as fontes alternativas para Correções ReVanced",
"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",
"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?",
"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",
"apiURLHint": "Configurar a URL da API do Gestor ReVanced",
"selectApiURL": "URL da API",
"orgPatchesLabel": "Organização de Modificações",
"sourcesPatchesLabel": "Fonte das Modificações",
"orgIntegrationsLabel": "Organização de Integrações",
"contributorsLabel": "Contribuidores",
"contributorsHint": "Uma lista de contribuidores do ReVanced",
"logsLabel": "Partilhar registos",
@@ -198,6 +196,12 @@
"deleteTempDirLabel": "Apagar arquivos temporários",
"deleteTempDirHint": "Apagar arquivos temporários não utilizados",
"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",
"exportPatchesHint": "Exportar a seleção de Modificações para um ficheiro JSON",
"exportedPatches": "Seleção de Modificações exportada",

View File

@@ -55,7 +55,8 @@
"widgetTitle": "Patcher",
"patchButton": "Patch",
"incompatibleArchWarningDialogText": "Patcharea după această arhitectură nu este încă suportată și ar putea eșua. Continuați oricum?",
"removedPatchesWarningDialogText": "Următoarele patch-uri au fost eliminate de la ultima dată când le-ați folosit.\n\n${patches}\n\n${newPatches}Continuați oricum?",
"removedPatchesWarningDialogText": "Plasturii eliminați de la ultima dată când ați modificat această aplicație:\n\n${patches}\n\n${newPatches}Continuați oricum?",
"addedPatchesDialogText": "Plasturii adăugați de la ultima dată când ați modificat această aplicație:\n\n${addedPatches}\n\n",
"requiredOptionDialogText": "Unele opțiuni pentru patch-uri trebuie setate."
},
"appSelectorCard": {
@@ -157,20 +158,18 @@
"languageLabel": "Limbă",
"languageUpdated": "Limbă actualizată",
"sourcesLabel": "Surse alternative",
"sourcesLabelHint": "Configurați sursele alternative pentru patch-urile ReVanced și Integrările ReVanced",
"sourcesIntegrationsLabel": "Sursă integrări",
"sourcesLabelHint": "Configurați sursele alternative pentru patch-urile revanced",
"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ă",
"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ă?",
"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",
"apiURLHint": "Configurați URL-ul API al Managerului ReVanced",
"selectApiURL": "API URL",
"orgPatchesLabel": "Organizarea patch-urilor",
"sourcesPatchesLabel": "Sursă patch-uri",
"orgIntegrationsLabel": "Organizare integrări",
"contributorsLabel": "Contribuitori",
"contributorsHint": "O listă cu contribuitorii ReVanced",
"logsLabel": "Partajare jurnale",
@@ -198,6 +197,12 @@
"deleteTempDirLabel": "Ștergeți fișierele temporare",
"deleteTempDirHint": "Șterge fișierele temporare neutilizate",
"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",
"exportPatchesHint": "Exportați selecția patch-urilor într-un fișier JSON",
"exportedPatches": "Selecția patch-urilor a fost exportată",

View File

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

View File

@@ -111,13 +111,11 @@
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Užite si tému bližíe prispôsobenú vášmu zariadeniu",
"languageLabel": "Jazyk",
"sourcesIntegrationsLabel": "Zdroj integrácie",
"sourcesResetDialogTitle": "Resetovať",
"apiURLLabel": "URL API",
"selectApiURL": "URL API",
"orgPatchesLabel": "Autor záplaty",
"sourcesPatchesLabel": "Zdroj záplaty",
"orgIntegrationsLabel": "Autor integrácie",
"contributorsLabel": "Prispievatelia",
"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?",

View File

@@ -44,8 +44,7 @@
},
"patcherView": {
"widgetTitle": "Popravljalnik",
"patchButton": "Popravi",
"removedPatchesWarningDialogText": "Spodnji popravki so bili odstranjeni, odkar ste jih nazadnje uporabili.\n\n${patches}\n\n${newPatches}Vseeno nadaljujem?"
"patchButton": "Popravi"
},
"appSelectorCard": {
"widgetTitle": "Izberi aplikacijo",
@@ -120,20 +119,15 @@
"languageLabel": "Jezik",
"languageUpdated": "Jezik je posodobljen",
"sourcesLabel": "Alternativni viri",
"sourcesLabelHint": "Nastavite alternativne vire za ReVanced Patches in ReVanced Integrations",
"sourcesIntegrationsLabel": "Vir integracij",
"useAlternativeSources": "Uporabi alternativne vire",
"useAlternativeSourcesHint": "Namesto API-ja uporabi alternativne vire za ReVanced Patches in ReVanced Integrations",
"sourcesResetDialogTitle": "Ponastavi",
"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?",
"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",
"apiURLHint": "Nastavi naslov URL za API ReVanced Managerja",
"selectApiURL": "URL API-ja",
"orgPatchesLabel": "Organizacija popravkov",
"sourcesPatchesLabel": "Vir popravkov",
"orgIntegrationsLabel": "Organizacija integracij",
"contributorsLabel": "Sodelujoči",
"contributorsHint": "Seznam sodelujočih pri projektu ReVanced",
"logsLabel": "Deli dnevniške podatke",

View File

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

View File

@@ -55,7 +55,8 @@
"widgetTitle": "Pečer",
"patchButton": "Pečuj",
"incompatibleArchWarningDialogText": "Pečovanje na ovoj arhitekturi još uvek nije podržano i možda neće uspeti. Ipak nastaviti?",
"removedPatchesWarningDialogText": "Sledeći pečevi su uklonjeni od poslednjeg puta kada ste ih koristili.\n\n${patches}\n\n${newPatches}Ipak nastaviti?",
"removedPatchesWarningDialogText": "Uklonjeni pečevi od poslednjeg puta kada ste pečovali ovu aplikaciju:\n\n${patches}\n\n${newPatches}Ipak nastaviti?",
"addedPatchesDialogText": "Dodati pečevi od poslednjeg puta kada ste pečovali ovu aplikaciju:\n\n${addedPatches}",
"requiredOptionDialogText": "Neke opcije moraju biti izabrane."
},
"appSelectorCard": {
@@ -157,20 +158,18 @@
"languageLabel": "Jezik",
"languageUpdated": "Jezik je promenjen",
"sourcesLabel": "Alternativni izvori",
"sourcesLabelHint": "Podesite alternativne izvore za ReVanced pečeve i integracije",
"sourcesIntegrationsLabel": "Izvor integracija",
"sourcesLabelHint": "Podesite alternativne izvore za ReVanced pečeve",
"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",
"sourcesResetDialogText": "Želite li zaista da vratite izvore na podrazumevane vrednosti?",
"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",
"apiURLHint": "Podesite URL API-ja za ReVanced Manager",
"selectApiURL": "URL API-ja",
"orgPatchesLabel": "Organizacija za pečeve",
"sourcesPatchesLabel": "Izvor pečeva",
"orgIntegrationsLabel": "Organizacija za integracije",
"contributorsLabel": "Saradnici",
"contributorsHint": "Lista saradnika na ReVancedu",
"logsLabel": "Deli evidencije",
@@ -198,6 +197,12 @@
"deleteTempDirLabel": "Izbriši privremene fajlove",
"deleteTempDirHint": "Izbrišite nekorišćene privremene fajlove",
"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",
"exportPatchesHint": "Izvezite izbor pečeva u JSON fajl",
"exportedPatches": "Izbor pečeva je izvezen",

View File

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

View File

@@ -55,7 +55,8 @@
"widgetTitle": "Patcher",
"patchButton": "Patch",
"incompatibleArchWarningDialogText": "Patchning av denna arkitektur stöds ännu inte och kan misslyckas. Fortsätt ändå?",
"removedPatchesWarningDialogText": "Följande patchar har tagits bort sedan du senast använde dem.\n\n${patches}\n\n${newPatches}Fortsätt ändå?",
"removedPatchesWarningDialogText": "Tog bort patchar sedan du senast patchade denna app:\n\n${patches}\n\n${newPatches}Fortsätt ändå?",
"addedPatchesDialogText": "Lade till patchar sedan du senast patchade denna app:\n\n${addedPatches}\n\n",
"requiredOptionDialogText": "Vissa patchalternativ måste anges."
},
"appSelectorCard": {
@@ -157,20 +158,18 @@
"languageLabel": "Språk",
"languageUpdated": "Språket uppdaterat",
"sourcesLabel": "Alternativa källor",
"sourcesLabelHint": "Konfigurera alternativa källor för ReVanced patches och ReVanced integrations",
"sourcesIntegrationsLabel": "Källa för integrationer",
"sourcesLabelHint": "Konfigurera alternativa källor för ReVanced Patches",
"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",
"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?",
"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",
"apiURLHint": "Konfigurera API-webbadressen för ReVanced-hanterare",
"selectApiURL": "API-webbadress",
"orgPatchesLabel": "Organisation för patchar",
"sourcesPatchesLabel": "Källa för patchar",
"orgIntegrationsLabel": "Organisation för integrationer",
"contributorsLabel": "Medverkande",
"contributorsHint": "En lista över medverkare för ReVanced",
"logsLabel": "Dela loggar",
@@ -198,6 +197,12 @@
"deleteTempDirLabel": "Ta bort temporära filer",
"deleteTempDirHint": "Ta bort oanvända temporära filer",
"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",
"exportPatchesHint": "Exportera valda patchar till en JSON-fil",
"exportedPatches": "Valda patchar exporterade",

View File

@@ -55,7 +55,6 @@
"widgetTitle": "இணைப்பான்",
"patchButton": "இணைப்பு",
"incompatibleArchWarningDialogText": "இந்தக் கட்டமைப்பில் பிறழுதல் இன்னும் ஆதரிக்கப்படவில்லை மற்றும் தோல்வியடையக்கூடும். எப்படியும் தொடரவா?",
"removedPatchesWarningDialogText": "நீங்கள் கடைசியாகப் பயன்படுத்தியதிலிருந்து பின்வரும் பிறழ்கள் அகற்றப்பட்டன\n\n${patches}\n\n${newPatches}எப்படியும் தொடரவா?",
"requiredOptionDialogText": "சில பிறழ்களுக்கு விருப்பங்களை அமைக்க வேண்டும்."
},
"appSelectorCard": {
@@ -136,11 +135,9 @@
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "உங்கள் கருவிக்கு நெருக்கமான அனுபவத்தை அனுபவிக்கவும்",
"languageLabel": "மொழி",
"sourcesIntegrationsLabel": "ஒருங்கிணைப்புகளின் மூலம்",
"sourcesResetDialogTitle": "மறுஅமை",
"orgPatchesLabel": "இணைப்புகளின் அமைப்பு",
"sourcesPatchesLabel": "இணைப்புகளின் மூலம்",
"orgIntegrationsLabel": "ஒருங்கிணைப்புகளின் அமைப்பு",
"contributorsLabel": "பங்களிப்பாளர்கள்",
"contributorsHint": "ReVancedற்குப் பங்களித்தோர் பட்டியல்",
"aboutLabel": "இதைப் பற்றி",

View File

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

View File

@@ -55,7 +55,8 @@
"widgetTitle": "Yamalayıcı",
"patchButton": "Yamala",
"incompatibleArchWarningDialogText": "Bu mimari cihazlarda yamalama henüz desteklenmiyor ve başarısız olabilir. Yine de devam edilsin mi?",
"removedPatchesWarningDialogText": "Aşağıdaki yamalar son kullanımınızdan sonra kaldırıldı.\n\n${patches}\n\n${newPatches}Yine de devam edilsin mi?",
"removedPatchesWarningDialogText": "Bu uygulamayı son yamaladığınızdan beri kaldırılan yamalar:\n\n${patches}\n\n${newPatches}Yine de devam edilsin mi?",
"addedPatchesDialogText": "Bu uygulamayı son yamaladığınızdan beri eklenen yamalar:\n\n${addedPatches}",
"requiredOptionDialogText": "Bazı yama seçeneklerinin ayarlanması gerekiyor."
},
"appSelectorCard": {
@@ -157,20 +158,18 @@
"languageLabel": "Dil",
"languageUpdated": "Dil güncellendi",
"sourcesLabel": "Alternatif kaynaklar",
"sourcesLabelHint": "ReVanced Patches ve ReVanced Integrations için alternatif kaynakları ayarlayın",
"sourcesIntegrationsLabel": "Integrations source",
"sourcesLabelHint": "ReVanced Yamaları için alternatif kaynakları yapılandırın",
"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",
"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?",
"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",
"apiURLHint": "ReVanced Manager'in API URL'sini ayarlayın",
"selectApiURL": "API URL'si",
"orgPatchesLabel": "Patches organization",
"sourcesPatchesLabel": "Patches source",
"orgIntegrationsLabel": "Integrations organization",
"contributorsLabel": "Katkıda bulunanlar",
"contributorsHint": "ReVanced'a katkıda bulunanların listesi",
"logsLabel": "Logları paylaş",
@@ -198,6 +197,12 @@
"deleteTempDirLabel": "Geçici dosyaları sil",
"deleteTempDirHint": "Kullanılmayan geçici dosyaları silin",
"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",
"exportPatchesHint": "Yama seçimini bir JSON dosyasına kaydedin",
"exportedPatches": "Yama seçimi dışa aktarıldı",

View File

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

View File

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

View File

@@ -55,7 +55,6 @@
"widgetTitle": "Trình vá",
"patchButton": "Vá",
"incompatibleArchWarningDialogText": "Việc vá ứng dụng trên kiến trúc này hiện chưa được hỗ trợ và có thể thất bại. Bạn vẫn muốn tiếp tục?",
"removedPatchesWarningDialogText": "Những bản vá sau đây đã bị loại bỏ từ lần cuối bạn dùng chúng.\n\n${patches}\n\n${newPatches}Vẫn tiếp tục?",
"requiredOptionDialogText": "Một số tùy chọn bản vá cần được thiết đặt."
},
"appSelectorCard": {
@@ -157,20 +156,15 @@
"languageLabel": "Ngôn ngữ",
"languageUpdated": "Ngôn ngữ đã cập nhập",
"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ế",
"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",
"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?",
"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",
"apiURLHint": "Cấu hình địa chỉ URL API của ReVanced Manager",
"selectApiURL": "Địa chỉ URL của API",
"orgPatchesLabel": "Tác giả 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",
"contributorsHint": "Danh sách những người đóng góp cho ReVanced",
"logsLabel": "Chia sẻ nhật ký",

View File

@@ -55,7 +55,6 @@
"widgetTitle": "修补器",
"patchButton": "修补",
"incompatibleArchWarningDialogText": "对此架构的修补尚不支持或可能失败。仍要继续吗?",
"removedPatchesWarningDialogText": "自您上次使用以下补丁以来,它们已被删除。\n\n${patches}\n\n${newPatches}还是继续吗?",
"requiredOptionDialogText": "某些补丁选项必须设置。"
},
"appSelectorCard": {
@@ -157,20 +156,18 @@
"languageLabel": "语言",
"languageUpdated": "语言已更新",
"sourcesLabel": "其他来源",
"sourcesLabelHint": "配置 ReVanced 补丁和 ReVanced 集成的替代源",
"sourcesIntegrationsLabel": "集成源",
"sourcesLabelHint": "配置替代补丁来源",
"useAlternativeSources": "使用其他来源",
"useAlternativeSourcesHint": "使用 ReVanced 补丁和 ReVanced 集成的替代来源而不是 API",
"useAlternativeSourcesHint": "使用 ReVic Patches 替代API 的其他来源",
"sourcesResetDialogTitle": "重置",
"sourcesResetDialogText": "您确定要将源重置为默认值吗?",
"apiURLResetDialogText": "您确定要重置你的 API URL 为默认值吗?",
"sourcesUpdateNote": "注意:这将自动从其他来源下载 ReVanced 补丁和 ReVanced 集成。\n\n这将连接到替代源。",
"sourcesUpdateNote": "注意:这将自动从备选来源下载ReVanced 补丁。\n\n这将连接到您的备用源。",
"apiURLLabel": "API 地址",
"apiURLHint": "配置 ReVanced Manager 的 API URL",
"selectApiURL": "API 地址",
"orgPatchesLabel": "补丁组织",
"sourcesPatchesLabel": "补丁来源",
"orgIntegrationsLabel": "集成组织",
"contributorsLabel": "贡献者",
"contributorsHint": "ReVanced 贡献者列表",
"logsLabel": "分享日志",
@@ -198,6 +195,12 @@
"deleteTempDirLabel": "删除临时文件",
"deleteTempDirHint": "删除未使用的临时文件",
"deletedTempDir": "已删除临时文件",
"exportSettingsLabel": "导出设置",
"exportSettingsHint": "导出设置到 JSON 文件",
"exportedSettings": "设置已导出",
"importSettingsLabel": "导入设置",
"importSettingsHint": "从 JSON 文件导入设置",
"importedSettings": "已导入设置",
"exportPatchesLabel": "导出选择的补丁",
"exportPatchesHint": "将选择的补丁导出到 JSON 文件",
"exportedPatches": "导出选择的修补程序",

View File

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

View File

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

View File

@@ -50,6 +50,7 @@ Learn how to configure ReVanced Manager.
- 🔑 Keystore used to sign patched apps
- 📄 Remembered selection of patches for each app
- ⚙️ Remembered patch options
- 🛠️ Remembered settings
> Note
> 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.values,
required this.required,
required this.valueType,
required this.type,
});
factory Option.fromJson(Map<String, dynamic> json) {
_migrateV17ToV19(json);
_migrateV19ToV20(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 title;
final String description;
final dynamic value;
final Map<String, dynamic>? values;
final bool required;
final String valueType;
final String type;
Map toJson() => _$OptionToJson(this);
}

View File

@@ -49,18 +49,24 @@ class GithubAPI {
}
}
Future<String?> getManagerChangelogs() async {
Future<String?> getChangelogs(bool isPatches) async {
final String repoName = isPatches
? _managerAPI.getPatchesRepo()
: _managerAPI.defaultManagerRepo;
try {
final response = await _dioGetSynchronously(
'/repos/${_managerAPI.defaultManagerRepo}/releases?per_page=50',
'/repos/$repoName/releases?per_page=50',
);
final buffer = StringBuffer();
final String currentVersion =
await _managerAPI.getCurrentManagerVersion();
final String version = isPatches
? _managerAPI.getLastUsedPatchesVersion()
: await _managerAPI.getCurrentManagerVersion();
int releases = 0;
for (final release in response.data) {
if (release['tag_name'] == currentVersion) {
if (release['tag_name'] == version) {
if (buffer.isEmpty) {
buffer.writeln(release['body']);
releases++;
}
break;
}
@@ -68,6 +74,10 @@ class GithubAPI {
continue;
}
buffer.writeln(release['body']);
releases++;
if (isPatches && releases == 10) {
break;
}
}
return buffer.toString();
} on Exception catch (e) {
@@ -101,11 +111,7 @@ class GithubAPI {
);
if (asset != null) {
final String downloadUrl = asset['browser_download_url'];
if (extension == '.apk') {
_managerAPI.setIntegrationsDownloadURL(downloadUrl);
} else {
_managerAPI.setPatchesDownloadURL(downloadUrl);
}
_managerAPI.setPatchesDownloadURL(downloadUrl);
return await _downloadManager.getSingleFile(
downloadUrl,
);

View File

@@ -30,6 +30,7 @@ class ManagerAPI {
final String patcherRepo = 'revanced-patcher';
final String cliRepo = 'revanced-cli';
late SharedPreferences _prefs;
Map<String, List>? contributors;
List<Patch> patches = [];
List<Option> options = [];
Patch? selectedPatch;
@@ -44,15 +45,13 @@ class ManagerAPI {
String keystoreFile =
'/sdcard/Android/data/app.revanced.manager.flutter/files/revanced-manager.keystore';
String defaultKeystorePassword = 's3cur3p@ssw0rd';
String defaultApiUrl = 'https://api.revanced.app/';
String defaultApiUrl = 'https://api.revanced.app/v4';
String defaultRepoUrl = 'https://api.github.com';
String defaultPatcherRepo = 'revanced/revanced-patcher';
String defaultPatchesRepo = 'revanced/revanced-patches';
String defaultIntegrationsRepo = 'revanced/revanced-integrations';
String defaultCliRepo = 'revanced/revanced-cli';
String defaultManagerRepo = 'revanced/revanced-manager';
String? patchesVersion = '';
String? integrationsVersion = '';
Future<void> initialize() async {
_prefs = await SharedPreferences.getInstance();
@@ -68,14 +67,23 @@ class ManagerAPI {
releaseBuild = !(await getCurrentManagerVersion()).contains('-dev');
}
// Migrate to new API URL if not done yet as the old one is sunset.
final bool hasMigratedToNewApi =
_prefs.getBool('migratedToNewApiUrl') ?? false;
if (!hasMigratedToNewApi) {
final String apiUrl = getApiUrl().toLowerCase();
if (apiUrl.contains('releases.revanced.app')) {
await setApiUrl(''); // Reset to default.
_prefs.setBool('migratedToNewApiUrl', true);
final hasMigratedToNewMigrationSystem = _prefs.getBool('migratedToNewApiPrefSystem') ?? false;
if (!hasMigratedToNewMigrationSystem) {
final apiUrl = getApiUrl().toLowerCase();
final isReleases = apiUrl.contains('releases.revanced.app');
final isV2 = apiUrl.contains('api.revanced.app/v2');
final isV3 = apiUrl.contains('api.revanced.app/v3');
if (isReleases || 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 +91,8 @@ class ManagerAPI {
_prefs.getBool('migratedToAlternativeSource') ?? false;
if (!hasMigratedToAlternativeSource) {
final String patchesRepo = getPatchesRepo();
final String integrationsRepo = getIntegrationsRepo();
final bool usingAlternativeSources =
patchesRepo.toLowerCase() != defaultPatchesRepo ||
integrationsRepo.toLowerCase() != defaultIntegrationsRepo;
patchesRepo.toLowerCase() != defaultPatchesRepo;
_prefs.setBool('useAlternativeSources', usingAlternativeSources);
_prefs.setBool('migratedToAlternativeSource', true);
}
@@ -101,12 +107,25 @@ class ManagerAPI {
return _prefs.getString('apiUrl') ?? defaultApiUrl;
}
Future<void> setApiUrl(String url) async {
if (url.isEmpty || url == ' ') {
url = defaultApiUrl;
}
Future<void> resetApiUrl() async {
await _prefs.remove('apiUrl');
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 _revancedAPI.clearAllCache();
_toast.showBottom(t.settingsView.restartAppForChanges);
}
@@ -200,14 +219,6 @@ class ManagerAPI {
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) {
final List<String> patchesJson =
_prefs.getStringList('usedPatches-$packageName') ?? [];
@@ -256,17 +267,6 @@ class ManagerAPI {
_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() {
return _prefs.getBool('useDynamicTheme') ?? false;
}
@@ -367,7 +367,8 @@ class ManagerAPI {
) async {
deleteLastPatchedApp();
final Directory appCache = await getApplicationSupportDirectory();
app.patchedFilePath = outFile.copySync('${appCache.path}/lastPatchedApp.apk').path;
app.patchedFilePath =
outFile.copySync('${appCache.path}/lastPatchedApp.apk').path;
app.fileSize = outFile.lengthSync();
await _prefs.setString(
'lastPatchedApp',
@@ -426,7 +427,7 @@ class ManagerAPI {
}
Future<Map<String, List<dynamic>>> getContributors() async {
return await _revancedAPI.getContributors();
return contributors ??= await _revancedAPI.getContributors();
}
Future<List<Patch>> getPatches() async {
@@ -458,33 +459,16 @@ class ManagerAPI {
}
Future<File?> downloadPatches() async {
if (!isUsingAlternativeSources()) {
return await _revancedAPI.getLatestReleaseFile('patches');
}
try {
final String repoName = getPatchesRepo();
final String currentVersion = await getCurrentPatchesVersion();
final String url = getPatchesDownloadURL();
return await _githubAPI.getReleaseFile(
'.jar',
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',
'.rvp',
repoName,
currentVersion,
url,
@@ -498,21 +482,14 @@ class ManagerAPI {
}
Future<File?> downloadManager() async {
return await _revancedAPI.getLatestReleaseFile(
'.apk',
defaultManagerRepo,
);
return await _revancedAPI.getLatestReleaseFile('manager');
}
Future<String?> getLatestPatchesReleaseTime() async {
if (!isUsingAlternativeSources()) {
return await _revancedAPI.getLatestReleaseTime(
'.json',
defaultPatchesRepo,
);
return await _revancedAPI.getLatestReleaseTime('patches');
} else {
final release =
await _githubAPI.getLatestRelease(getPatchesRepo());
final release = await _githubAPI.getLatestRelease(getPatchesRepo());
if (release != null) {
final DateTime timestamp =
DateTime.parse(release['created_at'] as String);
@@ -525,43 +502,23 @@ class ManagerAPI {
Future<String?> getLatestManagerReleaseTime() async {
return await _revancedAPI.getLatestReleaseTime(
'.apk',
defaultManagerRepo,
'manager',
);
}
Future<String?> getLatestManagerVersion() async {
return await _revancedAPI.getLatestReleaseVersion(
'.apk',
defaultManagerRepo,
'manager',
);
}
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 {
if (!isUsingAlternativeSources()) {
return await _revancedAPI.getLatestReleaseVersion(
'.json',
defaultPatchesRepo,
'patches',
);
} else {
final release =
await _githubAPI.getLatestRelease(getPatchesRepo());
final release = await _githubAPI.getLatestRelease(getPatchesRepo());
if (release != null) {
return release['tag_name'];
} else {
@@ -570,6 +527,30 @@ class ManagerAPI {
}
}
String getLastUsedPatchesVersion() {
final String lastPatchesVersions =
_prefs.getString('lastUsedPatchesVersion') ?? '{}';
final Map<String, dynamic> lastPatchesVersionMap =
jsonDecode(lastPatchesVersions);
final String repo = getPatchesRepo();
return lastPatchesVersionMap[repo] ?? '0.0.0';
}
void setLastUsedPatchesVersion({String? version}) {
final String lastPatchesVersions =
_prefs.getString('lastUsedPatchesVersion') ?? '{}';
final Map<String, dynamic> lastPatchesVersionMap =
jsonDecode(lastPatchesVersions);
final repo = getPatchesRepo();
final String lastPatchesVersion =
version ?? lastPatchesVersionMap[repo] ?? '0.0.0';
lastPatchesVersionMap[repo] = lastPatchesVersion;
_prefs.setString(
'lastUsedPatchesVersion',
jsonEncode(lastPatchesVersionMap),
);
}
Future<String> getCurrentManagerVersion() async {
final PackageInfo packageInfo = await PackageInfo.fromPlatform();
String version = packageInfo.version;
@@ -597,25 +578,6 @@ class ManagerAPI {
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(
List<PatchedApplication> patchedApps,
) async {
@@ -818,6 +780,36 @@ class ManagerAPI {
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() {
_prefs.getKeys().where((key) => key.startsWith('patchOption-')).forEach(
(key) {

View File

@@ -18,8 +18,7 @@ import 'package:share_plus/share_plus.dart';
@lazySingleton
class PatcherAPI {
static const patcherChannel =
MethodChannel('app.revanced.manager.flutter/patcher');
static const patcherChannel = MethodChannel('app.revanced.manager.flutter/patcher');
final ManagerAPI _managerAPI = locator<ManagerAPI>();
final RootAPI _rootAPI = RootAPI();
late Directory _dataDir;
@@ -27,13 +26,12 @@ class PatcherAPI {
late File _keyStoreFile;
List<Patch> _patches = [];
List<Patch> _universalPatches = [];
List<String> _compatiblePackages = [];
Set<String> _compatiblePackages = {};
Map filteredPatches = <String, List<Patch>>{};
File? outFile;
Future<void> initialize() async {
await loadPatches();
await _managerAPI.downloadIntegrations();
final Directory appCache = await getApplicationSupportDirectory();
_dataDir = await getExternalStorageDirectory() ?? appCache;
_tmpDir = Directory('${appCache.path}/patcher');
@@ -47,8 +45,8 @@ class PatcherAPI {
}
}
List<String> getCompatiblePackages() {
final List<String> compatiblePackages = [];
Set<String> getCompatiblePackages() {
final Set<String> compatiblePackages = {};
for (final Patch patch in _patches) {
for (final Package package in patch.compatiblePackages) {
if (!compatiblePackages.contains(package.name)) {
@@ -67,16 +65,16 @@ class PatcherAPI {
try {
if (_patches.isEmpty) {
_patches = await _managerAPI.getPatches();
_universalPatches = getUniversalPatches();
_compatiblePackages = getCompatiblePackages();
}
} on Exception catch (e) {
if (kDebugMode) {
print(e);
}
_patches = List.empty();
}
_compatiblePackages = getCompatiblePackages();
_universalPatches = getUniversalPatches();
}
Future<List<ApplicationWithIcon>> getFilteredInstalledApps(
@@ -85,6 +83,7 @@ class PatcherAPI {
final List<ApplicationWithIcon> filteredApps = [];
final bool allAppsIncluded =
_universalPatches.isNotEmpty && showUniversalPatches;
if (allAppsIncluded) {
final appList = await DeviceApps.getInstalledApplications(
includeAppIcons: true,
@@ -95,6 +94,7 @@ class PatcherAPI {
filteredApps.add(app as ApplicationWithIcon);
}
}
for (final packageName in _compatiblePackages) {
try {
if (!filteredApps.any((app) => app.packageName == packageName)) {
@@ -153,7 +153,6 @@ class PatcherAPI {
List<Patch> selectedPatches,
bool isFromStorage,
) async {
final File? integrationsFile = await _managerAPI.downloadIntegrations();
final Map<String, Map<String, dynamic>> options = {};
for (final patch in selectedPatches) {
if (patch.options.isNotEmpty) {
@@ -169,44 +168,41 @@ class PatcherAPI {
}
}
if (integrationsFile != null) {
_dataDir.createSync();
_tmpDir.createSync();
final Directory workDir = await _tmpDir.createTemp('tmp-');
_dataDir.createSync();
_tmpDir.createSync();
final Directory workDir = await _tmpDir.createTemp('tmp-');
final File inApkFile = File('${workDir.path}/in.apk');
await File(apkFilePath).copy(inApkFile.path);
final File inApkFile = File('${workDir.path}/in.apk');
await File(apkFilePath).copy(inApkFile.path);
if (isFromStorage) {
// The selected apk was copied to cacheDir by the file picker, so it's not needed anymore.
// rename() can't be used here, as Android system also counts the size of files moved out from cacheDir
// as part of the app's cache size.
File(apkFilePath).delete();
}
if (isFromStorage) {
// The selected apk was copied to cacheDir by the file picker, so it's not needed anymore.
// rename() can't be used here, as Android system also counts the size of files moved out from cacheDir
// as part of the app's cache size.
File(apkFilePath).delete();
}
outFile = File('${workDir.path}/out.apk');
outFile = File('${workDir.path}/out.apk');
final Directory tmpDir =
Directory('${workDir.path}/revanced-temporary-files');
final Directory tmpDir =
Directory('${workDir.path}/revanced-temporary-files');
try {
await patcherChannel.invokeMethod(
'runPatcher',
{
'inFilePath': inApkFile.path,
'outFilePath': outFile!.path,
'integrationsPath': integrationsFile.path,
'selectedPatches': selectedPatches.map((p) => p.name).toList(),
'options': options,
'tmpDirPath': tmpDir.path,
'keyStoreFilePath': _keyStoreFile.path,
'keystorePassword': _managerAPI.getKeystorePassword(),
},
);
} on Exception catch (e) {
if (kDebugMode) {
print(e);
}
try {
await patcherChannel.invokeMethod(
'runPatcher',
{
'inFilePath': inApkFile.path,
'outFilePath': outFile!.path,
'selectedPatches': selectedPatches.map((p) => p.name).toList(),
'options': options,
'tmpDirPath': tmpDir.path,
'keyStoreFilePath': _keyStoreFile.path,
'keystorePassword': _managerAPI.getKeystorePassword(),
},
);
} on Exception catch (e) {
if (kDebugMode) {
print(e);
}
}
}

View File

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

View File

@@ -30,30 +30,13 @@ class ContributorsView extends StatelessWidget {
sliver: SliverList(
delegate: SliverChildListDelegate.fixed(
<Widget>[
ContributorsCard(
title: 'ReVanced Patcher',
contributors: model.patcherContributors,
),
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,
),
for (final String tool in model.contributors.keys) ...[
ContributorsCard(
title: tool,
contributors: model.contributors[tool]!,
),
const SizedBox(height: 20),
],
SizedBox(height: MediaQuery.viewPaddingOf(context).bottom),
],
),

View File

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

View File

@@ -311,11 +311,8 @@ class HomeViewModel extends BaseViewModel {
_toast.showBottom(t.homeView.downloadingMessage);
final String patchesVersion =
await _managerAPI.getLatestPatchesVersion() ?? '0.0.0';
final String integrationsVersion =
await _managerAPI.getLatestIntegrationsVersion() ?? '0.0.0';
if (patchesVersion != '0.0.0' && integrationsVersion != '0.0.0') {
if (patchesVersion != '0.0.0') {
await _managerAPI.setCurrentPatchesVersion(patchesVersion);
await _managerAPI.setCurrentIntegrationsVersion(integrationsVersion);
_toast.showBottom(t.homeView.downloadedMessage);
forceRefresh(context);
} else {
@@ -478,14 +475,8 @@ class HomeViewModel extends BaseViewModel {
);
}
Future<String?> getManagerChangelogs() {
return _githubAPI.getManagerChangelogs();
}
Future<String?> getLatestPatchesChangelog() async {
final release =
await _githubAPI.getLatestRelease(_managerAPI.getPatchesRepo());
return release?['body'];
Future<String?> getChangelogs(bool isPatches) {
return _githubAPI.getChangelogs(isPatches);
}
Future<String?> getLatestPatchesReleaseTime() {

View File

@@ -159,6 +159,9 @@ class InstallerViewModel extends BaseViewModel {
_app.packageName,
);
await _managerAPI.setUsedPatches(_patches, _app.packageName);
_managerAPI.setLastUsedPatchesVersion(
version: _managerAPI.patchesVersion,
);
} else if (value == -100.0) {
isPatching = false;
hasErrors = true;
@@ -197,7 +200,9 @@ class InstallerViewModel extends BaseViewModel {
_app.patchedFilePath = _patcherAPI.outFile!.path;
}
final homeViewModel = locator<HomeViewModel>();
_managerAPI.reAssessPatchedApps().then((_) => homeViewModel.getPatchedApps());
_managerAPI
.reAssessPatchedApps()
.then((_) => homeViewModel.getPatchedApps());
} on Exception catch (e) {
update(
-100.0,
@@ -325,7 +330,6 @@ class InstallerViewModel extends BaseViewModel {
'Version compatibility check: ${_managerAPI.isVersionCompatibilityCheckEnabled()}',
'Show universal patches: ${_managerAPI.areUniversalPatchesEnabled()}',
'Patches source: ${_managerAPI.getPatchesRepo()}',
'Integration source: ${_managerAPI.getIntegrationsRepo()}', //
'\n- Logs',
logsTrimmed.join('\n'),

View File

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

View File

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

View File

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

View File

@@ -14,16 +14,11 @@ class SManageSources extends BaseViewModel {
final TextEditingController _orgPatSourceController = TextEditingController();
final TextEditingController _patSourceController = TextEditingController();
final TextEditingController _orgIntSourceController = TextEditingController();
final TextEditingController _intSourceController = TextEditingController();
Future<void> showSourcesDialog(BuildContext context) async {
final String patchesRepo = _managerAPI.getPatchesRepo();
final String integrationsRepo = _managerAPI.getIntegrationsRepo();
_orgPatSourceController.text = patchesRepo.split('/')[0];
_patSourceController.text = patchesRepo.split('/')[1];
_orgIntSourceController.text = integrationsRepo.split('/')[0];
_intSourceController.text = integrationsRepo.split('/')[1];
return showDialog(
context: context,
builder: (context) => AlertDialog(
@@ -72,38 +67,6 @@ class SManageSources extends BaseViewModel {
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),
Text(t.settingsView.sourcesUpdateNote),
],
@@ -113,8 +76,6 @@ class SManageSources extends BaseViewModel {
onPressed: () {
_orgPatSourceController.clear();
_patSourceController.clear();
_orgIntSourceController.clear();
_intSourceController.clear();
Navigator.of(context).pop();
},
child: Text(t.cancelButton),
@@ -124,11 +85,8 @@ class SManageSources extends BaseViewModel {
_managerAPI.setPatchesRepo(
'${_orgPatSourceController.text.trim()}/${_patSourceController.text.trim()}',
);
_managerAPI.setIntegrationsRepo(
'${_orgIntSourceController.text.trim()}/${_intSourceController.text.trim()}',
);
_managerAPI.setCurrentPatchesVersion('0.0.0');
_managerAPI.setCurrentIntegrationsVersion('0.0.0');
_managerAPI.setLastUsedPatchesVersion();
_toast.showBottom(t.settingsView.restartAppForChanges);
Navigator.of(context).pop();
},
@@ -153,9 +111,7 @@ class SManageSources extends BaseViewModel {
FilledButton(
onPressed: () {
_managerAPI.setPatchesRepo('');
_managerAPI.setIntegrationsRepo('');
_managerAPI.setCurrentPatchesVersion('0.0.0');
_managerAPI.setCurrentIntegrationsVersion('0.0.0');
_toast.showBottom(t.settingsView.restartAppForChanges);
Navigator.of(context)
..pop()

View File

@@ -56,7 +56,7 @@ class SettingsViewModel extends BaseViewModel {
void useAlternativeSources(bool value) {
_managerAPI.useAlternativeSources(value);
_managerAPI.setCurrentPatchesVersion('0.0.0');
_managerAPI.setCurrentIntegrationsVersion('0.0.0');
_managerAPI.setLastUsedPatchesVersion();
notifyListeners();
}
@@ -222,6 +222,53 @@ class SettingsViewModel extends BaseViewModel {
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 {
try {
final File outFile = File(_managerAPI.storedPatchesFile);

View File

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

View File

@@ -105,9 +105,7 @@ class UpdateConfirmationSheet extends StatelessWidget {
),
),
FutureBuilder<String?>(
future: !isPatches
? model.getManagerChangelogs()
: model.getLatestPatchesChangelog(),
future: model.getChangelogs(isPatches),
builder: (_, snapshot) {
if (!snapshot.hasData) {
return Padding(
@@ -117,7 +115,6 @@ class UpdateConfirmationSheet extends StatelessWidget {
),
);
}
return Container(
margin: const EdgeInsets.symmetric(horizontal: 24.0),
decoration: BoxDecoration(

View File

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

View File

@@ -14,6 +14,30 @@ class SExportSection extends StatelessWidget {
return SettingsSection(
title: t.settingsView.exportSectionTitle,
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(
contentPadding: const EdgeInsets.symmetric(horizontal: 20.0),
title: Text(
@@ -114,7 +138,6 @@ class SExportSection extends StatelessWidget {
subtitle: Text(t.settingsView.regenerateKeystoreHint),
onTap: () => _showDeleteKeystoreDialog(context),
),
// SManageKeystorePasswordUI(),
],
);
}

View File

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

629
package-lock.json generated
View File

@@ -10,7 +10,8 @@
"@semantic-release/changelog": "^6.0.3",
"@semantic-release/exec": "^6.0.3",
"@semantic-release/git": "^10.0.1",
"semantic-release": "^23.0.8"
"semantic-release": "^24.1.3",
"semantic-release-pub": "^0.8.29"
}
},
"node_modules/@babel/code-frame": {
@@ -169,12 +170,12 @@
"dev": true
},
"node_modules/@octokit/plugin-paginate-rest": {
"version": "11.3.0",
"resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.0.tgz",
"integrity": "sha512-n4znWfRinnUQF6TPyxs7EctSAA3yVSP4qlJP2YgI3g9d4Ae2n5F3XDOjbUluKRxPU3rfsgpOboI4O4VtPc6Ilg==",
"version": "11.3.5",
"resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.5.tgz",
"integrity": "sha512-cgwIRtKrpwhLoBi0CUNuY83DPGRMaWVjqVI/bGKsLJ4PzyWZNaEmhHroI2xlrVXkk6nFv0IsZpOp+ZWSWUS2AQ==",
"dev": true,
"dependencies": {
"@octokit/types": "^13.5.0"
"@octokit/types": "^13.6.0"
},
"engines": {
"node": ">= 18"
@@ -184,9 +185,9 @@
}
},
"node_modules/@octokit/plugin-retry": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-7.1.1.tgz",
"integrity": "sha512-G9Ue+x2odcb8E1XIPhaFBnTTIrrUDfXN05iFXiqhR+SeeeDMMILcAnysOsxUpEWcQp2e5Ft397FCXTcPkiPkLw==",
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-7.1.2.tgz",
"integrity": "sha512-XOWnPpH2kJ5VTwozsxGurw+svB2e61aWlmk5EVIYZPwFK5F9h4cyPyj9CIKRyMXMHSwpIsI3mPOdpMmrRhe7UQ==",
"dev": true,
"dependencies": {
"@octokit/request-error": "^6.0.0",
@@ -201,9 +202,9 @@
}
},
"node_modules/@octokit/plugin-throttling": {
"version": "9.3.0",
"resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-9.3.0.tgz",
"integrity": "sha512-B5YTToSRTzNSeEyssnrT7WwGhpIdbpV9NKIs3KyTWHX6PhpYn7gqF/+lL3BvsASBM3Sg5BAUYk7KZx5p/Ec77w==",
"version": "9.3.2",
"resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-9.3.2.tgz",
"integrity": "sha512-FqpvcTpIWFpMMwIeSoypoJXysSAQ3R+ALJhXXSG1HTP3YZOIeLmcNcimKaXxTcws+Sh6yoRl13SJ5r8sXc1Fhw==",
"dev": true,
"dependencies": {
"@octokit/types": "^13.0.0",
@@ -217,9 +218,9 @@
}
},
"node_modules/@octokit/request": {
"version": "9.1.1",
"resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.1.1.tgz",
"integrity": "sha512-pyAguc0p+f+GbQho0uNetNQMmLG1e80WjkIaqqgUkihqUp0boRU6nKItXO4VWnr+nbZiLGEyy4TeKRwqaLvYgw==",
"version": "9.1.3",
"resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.1.3.tgz",
"integrity": "sha512-V+TFhu5fdF3K58rs1pGUJIDH5RZLbZm5BI+MNF+6o/ssFNT4vWlCh/tVpF3NxGtP15HUxTTMUbsG5llAuU2CZA==",
"dev": true,
"dependencies": {
"@octokit/endpoint": "^10.0.0",
@@ -232,9 +233,9 @@
}
},
"node_modules/@octokit/request-error": {
"version": "6.1.1",
"resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.1.tgz",
"integrity": "sha512-1mw1gqT3fR/WFvnoVpY/zUM2o/XkMs/2AszUUG9I69xn0JFLv6PGkPhNk5lbfvROs79wiS0bqiJNxfCZcRJJdg==",
"version": "6.1.5",
"resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.5.tgz",
"integrity": "sha512-IlBTfGX8Yn/oFPMwSfvugfncK2EwRLjzbrpifNaMY8o/HTEAFqCA1FZxjD9cWvSKBHgrIhc4CSBIzMxiLsbzFQ==",
"dev": true,
"dependencies": {
"@octokit/types": "^13.0.0"
@@ -244,9 +245,9 @@
}
},
"node_modules/@octokit/types": {
"version": "13.5.0",
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.5.0.tgz",
"integrity": "sha512-HdqWTf5Z3qwDVlzCrP8UJquMwunpDiMPt5er+QjGzL4hqr/vBVY/MauQgS1xWxCDT1oMx1EULyqxncdCY/NVSQ==",
"version": "13.6.1",
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.6.1.tgz",
"integrity": "sha512-PHZE9Z+kWXb23Ndik8MKPirBPziOc0D2/3KH1P+6jK5nGWe96kadZuE4jev2/Jq7FvIfTlT2Ltg8Fv2x1v0a5g==",
"dev": true,
"dependencies": {
"@octokit/openapi-types": "^22.2.0"
@@ -1109,14 +1110,15 @@
}
},
"node_modules/@semantic-release/commit-analyzer": {
"version": "12.0.0",
"resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-12.0.0.tgz",
"integrity": "sha512-qG+md5gdes+xa8zP7lIo1fWE17zRdO8yMCaxh9lyL65TQleoSv8WHHOqRURfghTytUh+NpkSyBprQ5hrkxOKVQ==",
"version": "13.0.0",
"resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-13.0.0.tgz",
"integrity": "sha512-KtXWczvTAB1ZFZ6B4O+w8HkfYm/OgQb1dUGNFZtDgQ0csggrmkq8sTxhd+lwGF8kMb59/RnG9o4Tn7M/I8dQ9Q==",
"dev": true,
"dependencies": {
"conventional-changelog-angular": "^7.0.0",
"conventional-commits-filter": "^4.0.0",
"conventional-commits-parser": "^5.0.0",
"conventional-changelog-angular": "^8.0.0",
"conventional-changelog-writer": "^8.0.0",
"conventional-commits-filter": "^5.0.0",
"conventional-commits-parser": "^6.0.0",
"debug": "^4.0.0",
"import-from-esm": "^1.0.3",
"lodash-es": "^4.17.21",
@@ -1129,6 +1131,73 @@
"semantic-release": ">=20.1.0"
}
},
"node_modules/@semantic-release/commit-analyzer/node_modules/conventional-changelog-angular": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.0.0.tgz",
"integrity": "sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==",
"dev": true,
"dependencies": {
"compare-func": "^2.0.0"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@semantic-release/commit-analyzer/node_modules/conventional-changelog-writer": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-8.0.0.tgz",
"integrity": "sha512-TQcoYGRatlAnT2qEWDON/XSfnVG38JzA7E0wcGScu7RElQBkg9WWgZd1peCWFcWDh1xfb2CfsrcvOn1bbSzztA==",
"dev": true,
"dependencies": {
"@types/semver": "^7.5.5",
"conventional-commits-filter": "^5.0.0",
"handlebars": "^4.7.7",
"meow": "^13.0.0",
"semver": "^7.5.2"
},
"bin": {
"conventional-changelog-writer": "dist/cli/index.js"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@semantic-release/commit-analyzer/node_modules/conventional-commits-filter": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-5.0.0.tgz",
"integrity": "sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==",
"dev": true,
"engines": {
"node": ">=18"
}
},
"node_modules/@semantic-release/commit-analyzer/node_modules/conventional-commits-parser": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.0.0.tgz",
"integrity": "sha512-TbsINLp48XeMXR8EvGjTnKGsZqBemisPoyWESlpRyR8lif0lcwzqz+NMtYSj1ooF/WYjSuu7wX0CtdeeMEQAmA==",
"dev": true,
"dependencies": {
"meow": "^13.0.0"
},
"bin": {
"conventional-commits-parser": "dist/cli/index.js"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@semantic-release/commit-analyzer/node_modules/meow": {
"version": "13.2.0",
"resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz",
"integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==",
"dev": true,
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@semantic-release/error": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-3.0.0.tgz",
@@ -1181,9 +1250,9 @@
}
},
"node_modules/@semantic-release/github": {
"version": "10.0.5",
"resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-10.0.5.tgz",
"integrity": "sha512-hmuCDkfru/Uc9+ZBNOSremAupu6BCslvOVDiG0wYcL8TQodCycp6uvwDyeym1H0M4l3ob9c0s0xMBiZjjXQ2yA==",
"version": "11.0.0",
"resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-11.0.0.tgz",
"integrity": "sha512-Uon6G6gJD8U1JNvPm7X0j46yxNRJ8Ui6SgK4Zw5Ktu8RgjEft3BGn+l/RX1TTzhhO3/uUcKuqM+/9/ETFxWS/Q==",
"dev": true,
"dependencies": {
"@octokit/core": "^6.0.0",
@@ -1207,7 +1276,7 @@
"node": ">=20.8.1"
},
"peerDependencies": {
"semantic-release": ">=20.1.0"
"semantic-release": ">=24.1.0"
}
},
"node_modules/@semantic-release/github/node_modules/@semantic-release/error": {
@@ -1492,21 +1561,21 @@
}
},
"node_modules/@semantic-release/release-notes-generator": {
"version": "13.0.0",
"resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-13.0.0.tgz",
"integrity": "sha512-LEeZWb340keMYuREMyxrODPXJJ0JOL8D/mCl74B4LdzbxhtXV2LrPN2QBEcGJrlQhoqLO0RhxQb6masHytKw+A==",
"version": "14.0.1",
"resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-14.0.1.tgz",
"integrity": "sha512-K0w+5220TM4HZTthE5dDpIuFrnkN1NfTGPidJFm04ULT1DEZ9WG89VNXN7F0c+6nMEpWgqmPvb7vY7JkB2jyyA==",
"dev": true,
"dependencies": {
"conventional-changelog-angular": "^7.0.0",
"conventional-changelog-writer": "^7.0.0",
"conventional-commits-filter": "^4.0.0",
"conventional-commits-parser": "^5.0.0",
"conventional-changelog-angular": "^8.0.0",
"conventional-changelog-writer": "^8.0.0",
"conventional-commits-filter": "^5.0.0",
"conventional-commits-parser": "^6.0.0",
"debug": "^4.0.0",
"get-stream": "^7.0.0",
"import-from-esm": "^1.0.3",
"into-stream": "^7.0.0",
"lodash-es": "^4.17.21",
"read-pkg-up": "^11.0.0"
"read-package-up": "^11.0.0"
},
"engines": {
"node": ">=20.8.1"
@@ -1515,6 +1584,61 @@
"semantic-release": ">=20.1.0"
}
},
"node_modules/@semantic-release/release-notes-generator/node_modules/conventional-changelog-angular": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.0.0.tgz",
"integrity": "sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==",
"dev": true,
"dependencies": {
"compare-func": "^2.0.0"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@semantic-release/release-notes-generator/node_modules/conventional-changelog-writer": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-8.0.0.tgz",
"integrity": "sha512-TQcoYGRatlAnT2qEWDON/XSfnVG38JzA7E0wcGScu7RElQBkg9WWgZd1peCWFcWDh1xfb2CfsrcvOn1bbSzztA==",
"dev": true,
"dependencies": {
"@types/semver": "^7.5.5",
"conventional-commits-filter": "^5.0.0",
"handlebars": "^4.7.7",
"meow": "^13.0.0",
"semver": "^7.5.2"
},
"bin": {
"conventional-changelog-writer": "dist/cli/index.js"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@semantic-release/release-notes-generator/node_modules/conventional-commits-filter": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-5.0.0.tgz",
"integrity": "sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==",
"dev": true,
"engines": {
"node": ">=18"
}
},
"node_modules/@semantic-release/release-notes-generator/node_modules/conventional-commits-parser": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.0.0.tgz",
"integrity": "sha512-TbsINLp48XeMXR8EvGjTnKGsZqBemisPoyWESlpRyR8lif0lcwzqz+NMtYSj1ooF/WYjSuu7wX0CtdeeMEQAmA==",
"dev": true,
"dependencies": {
"meow": "^13.0.0"
},
"bin": {
"conventional-commits-parser": "dist/cli/index.js"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@semantic-release/release-notes-generator/node_modules/get-stream": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-7.0.1.tgz",
@@ -1527,6 +1651,18 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@semantic-release/release-notes-generator/node_modules/meow": {
"version": "13.2.0",
"resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz",
"integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==",
"dev": true,
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@sindresorhus/is": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz",
@@ -1557,6 +1693,12 @@
"integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==",
"dev": true
},
"node_modules/@types/semver": {
"version": "7.5.8",
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz",
"integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==",
"dev": true
},
"node_modules/agent-base": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
@@ -1698,12 +1840,41 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/base64-js": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
"dev": true,
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
]
},
"node_modules/before-after-hook": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz",
"integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==",
"dev": true
},
"node_modules/bignumber.js": {
"version": "9.1.2",
"resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz",
"integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==",
"dev": true,
"engines": {
"node": "*"
}
},
"node_modules/bottleneck": {
"version": "2.19.5",
"resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz",
@@ -1722,6 +1893,12 @@
"node": ">=8"
}
},
"node_modules/buffer-equal-constant-time": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
"integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==",
"dev": true
},
"node_modules/call-bind": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
@@ -2282,6 +2459,15 @@
"readable-stream": "^2.0.2"
}
},
"node_modules/ecdsa-sig-formatter": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
"integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
"dev": true,
"dependencies": {
"safe-buffer": "^5.0.1"
}
},
"node_modules/emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
@@ -2637,6 +2823,12 @@
"url": "https://github.com/sindresorhus/execa?sponsor=1"
}
},
"node_modules/extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
"dev": true
},
"node_modules/fast-glob": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
@@ -2810,6 +3002,35 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/gaxios": {
"version": "6.7.1",
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz",
"integrity": "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==",
"dev": true,
"dependencies": {
"extend": "^3.0.2",
"https-proxy-agent": "^7.0.1",
"is-stream": "^2.0.0",
"node-fetch": "^2.6.9",
"uuid": "^9.0.1"
},
"engines": {
"node": ">=14"
}
},
"node_modules/gcp-metadata": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz",
"integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==",
"dev": true,
"dependencies": {
"gaxios": "^6.0.0",
"json-bigint": "^1.0.0"
},
"engines": {
"node": ">=14"
}
},
"node_modules/get-caller-file": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
@@ -2950,6 +3171,23 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/google-auth-library": {
"version": "9.14.2",
"resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.14.2.tgz",
"integrity": "sha512-R+FRIfk1GBo3RdlRYWPdwk8nmtVUOn6+BkDomAC46KoU8kzXzE1HLmOasSCbWUByMMAGkknVF0G5kQ69Vj7dlA==",
"dev": true,
"dependencies": {
"base64-js": "^1.3.0",
"ecdsa-sig-formatter": "^1.0.11",
"gaxios": "^6.1.1",
"gcp-metadata": "^6.1.0",
"gtoken": "^7.0.0",
"jws": "^4.0.0"
},
"engines": {
"node": ">=14"
}
},
"node_modules/gopd": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
@@ -2968,6 +3206,19 @@
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
"dev": true
},
"node_modules/gtoken": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz",
"integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==",
"dev": true,
"dependencies": {
"gaxios": "^6.0.0",
"jws": "^4.0.0"
},
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/handlebars": {
"version": "4.7.8",
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz",
@@ -3586,9 +3837,9 @@
"dev": true
},
"node_modules/issue-parser": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-7.0.0.tgz",
"integrity": "sha512-jgAw78HO3gs9UrKqJNQvfDj9Ouy8Mhu40fbEJ8yXff4MW8+/Fcn9iFjyWUQ6SKbX8ipPk3X5A3AyfYHRu6uVLw==",
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-7.0.1.tgz",
"integrity": "sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==",
"dev": true,
"dependencies": {
"lodash.capitalize": "^4.2.1",
@@ -3628,6 +3879,15 @@
"js-yaml": "bin/js-yaml.js"
}
},
"node_modules/json-bigint": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz",
"integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==",
"dev": true,
"dependencies": {
"bignumber.js": "^9.0.0"
}
},
"node_modules/json-parse-better-errors": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
@@ -3683,6 +3943,27 @@
"node": "*"
}
},
"node_modules/jwa": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz",
"integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==",
"dev": true,
"dependencies": {
"buffer-equal-constant-time": "1.0.1",
"ecdsa-sig-formatter": "1.0.11",
"safe-buffer": "^5.0.1"
}
},
"node_modules/jws": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz",
"integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==",
"dev": true,
"dependencies": {
"jwa": "^2.0.0",
"safe-buffer": "^5.0.1"
}
},
"node_modules/lines-and-columns": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
@@ -3967,6 +4248,26 @@
"node": ">=18"
}
},
"node_modules/node-fetch": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
"integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
"dev": true,
"dependencies": {
"whatwg-url": "^5.0.0"
},
"engines": {
"node": "4.x || >=6.0.0"
},
"peerDependencies": {
"encoding": "^0.1.0"
},
"peerDependenciesMeta": {
"encoding": {
"optional": true
}
}
},
"node_modules/normalize-package-data": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.1.tgz",
@@ -7197,16 +7498,16 @@
}
},
"node_modules/semantic-release": {
"version": "23.1.1",
"resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-23.1.1.tgz",
"integrity": "sha512-qqJDBhbtHsjUEMsojWKGuL5lQFCJuPtiXKEIlFKyTzDDGTAE/oyvznaP8GeOr5PvcqBJ6LQz4JCENWPLeehSpA==",
"version": "24.1.3",
"resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-24.1.3.tgz",
"integrity": "sha512-Cb0Pm3Ye15u8k/B+7EnusMUSIIucAIEBD3QDRmmclv53KVyqmg1Lb3XPx0AMNxfJZEI+ZT+M+IXDyTrudK6Rew==",
"dev": true,
"dependencies": {
"@semantic-release/commit-analyzer": "^12.0.0",
"@semantic-release/commit-analyzer": "^13.0.0-beta.1",
"@semantic-release/error": "^4.0.0",
"@semantic-release/github": "^10.0.0",
"@semantic-release/github": "^11.0.0",
"@semantic-release/npm": "^12.0.0",
"@semantic-release/release-notes-generator": "^13.0.0",
"@semantic-release/release-notes-generator": "^14.0.0-beta.1",
"aggregate-error": "^5.0.0",
"cosmiconfig": "^9.0.0",
"debug": "^4.0.0",
@@ -7217,7 +7518,7 @@
"get-stream": "^6.0.0",
"git-log-parser": "^1.2.0",
"hook-std": "^3.0.0",
"hosted-git-info": "^7.0.0",
"hosted-git-info": "^8.0.0",
"import-from-esm": "^1.3.1",
"lodash-es": "^4.17.21",
"marked": "^12.0.0",
@@ -7239,6 +7540,170 @@
"node": ">=20.8.1"
}
},
"node_modules/semantic-release-pub": {
"version": "0.8.29",
"resolved": "https://registry.npmjs.org/semantic-release-pub/-/semantic-release-pub-0.8.29.tgz",
"integrity": "sha512-vQbM6kPtnnmVf6ruALL7QkdsKGMVUY9wEcNkKrjvlI78vPvuLSaIm/2nid6kxP2mcZvUPt8PDYkzRk82wLy5+w==",
"dev": true,
"dependencies": {
"@semantic-release/error": "^4.0.0",
"execa": "^9.4.0",
"google-auth-library": "^9.14.1",
"yaml": "^2.5.1",
"zod": "^3.23.8"
},
"engines": {
"node": ">=20.18.0"
}
},
"node_modules/semantic-release-pub/node_modules/@semantic-release/error": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz",
"integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==",
"dev": true,
"engines": {
"node": ">=18"
}
},
"node_modules/semantic-release-pub/node_modules/@sindresorhus/merge-streams": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz",
"integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==",
"dev": true,
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/semantic-release-pub/node_modules/execa": {
"version": "9.4.1",
"resolved": "https://registry.npmjs.org/execa/-/execa-9.4.1.tgz",
"integrity": "sha512-5eo/BRqZm3GYce+1jqX/tJ7duA2AnE39i88fuedNFUV8XxGxUpF3aWkBRfbUcjV49gCkvS/pzc0YrCPhaIewdg==",
"dev": true,
"dependencies": {
"@sindresorhus/merge-streams": "^4.0.0",
"cross-spawn": "^7.0.3",
"figures": "^6.1.0",
"get-stream": "^9.0.0",
"human-signals": "^8.0.0",
"is-plain-obj": "^4.1.0",
"is-stream": "^4.0.1",
"npm-run-path": "^6.0.0",
"pretty-ms": "^9.0.0",
"signal-exit": "^4.1.0",
"strip-final-newline": "^4.0.0",
"yoctocolors": "^2.0.0"
},
"engines": {
"node": "^18.19.0 || >=20.5.0"
},
"funding": {
"url": "https://github.com/sindresorhus/execa?sponsor=1"
}
},
"node_modules/semantic-release-pub/node_modules/get-stream": {
"version": "9.0.1",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz",
"integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==",
"dev": true,
"dependencies": {
"@sec-ant/readable-stream": "^0.4.1",
"is-stream": "^4.0.1"
},
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/semantic-release-pub/node_modules/human-signals": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz",
"integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==",
"dev": true,
"engines": {
"node": ">=18.18.0"
}
},
"node_modules/semantic-release-pub/node_modules/is-stream": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz",
"integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==",
"dev": true,
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/semantic-release-pub/node_modules/npm-run-path": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz",
"integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==",
"dev": true,
"dependencies": {
"path-key": "^4.0.0",
"unicorn-magic": "^0.3.0"
},
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/semantic-release-pub/node_modules/path-key": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
"integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
"dev": true,
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/semantic-release-pub/node_modules/signal-exit": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
"integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
"dev": true,
"engines": {
"node": ">=14"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/semantic-release-pub/node_modules/strip-final-newline": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz",
"integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==",
"dev": true,
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/semantic-release-pub/node_modules/unicorn-magic": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz",
"integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==",
"dev": true,
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/semantic-release/node_modules/@semantic-release/error": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz",
@@ -7345,6 +7810,18 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/semantic-release/node_modules/hosted-git-info": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.0.0.tgz",
"integrity": "sha512-4nw3vOVR+vHUOT8+U4giwe2tcGv+R3pwwRidUe67DoMBTjhrfr6rZYJVVwdkBE+Um050SG+X9tf0Jo4fOpn01w==",
"dev": true,
"dependencies": {
"lru-cache": "^10.0.1"
},
"engines": {
"node": "^18.17.0 || >=20.5.0"
}
},
"node_modules/semantic-release/node_modules/human-signals": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-7.0.0.tgz",
@@ -7973,6 +8450,12 @@
"node": ">=8.0"
}
},
"node_modules/tr46": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
"dev": true
},
"node_modules/traverse": {
"version": "0.6.9",
"resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.9.tgz",
@@ -8189,6 +8672,19 @@
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
"dev": true
},
"node_modules/uuid": {
"version": "9.0.1",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
"integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
"dev": true,
"funding": [
"https://github.com/sponsors/broofa",
"https://github.com/sponsors/ctavan"
],
"bin": {
"uuid": "dist/bin/uuid"
}
},
"node_modules/validate-npm-package-license": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
@@ -8199,6 +8695,22 @@
"spdx-expression-parse": "^3.0.0"
}
},
"node_modules/webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
"dev": true
},
"node_modules/whatwg-url": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
"integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
"dev": true,
"dependencies": {
"tr46": "~0.0.3",
"webidl-conversions": "^3.0.0"
}
},
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
@@ -8329,6 +8841,18 @@
"node": ">=10"
}
},
"node_modules/yaml": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.0.tgz",
"integrity": "sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==",
"dev": true,
"bin": {
"yaml": "bin.mjs"
},
"engines": {
"node": ">= 14"
}
},
"node_modules/yargs": {
"version": "17.7.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
@@ -8367,6 +8891,15 @@
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/zod": {
"version": "3.23.8",
"resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz",
"integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==",
"dev": true,
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
}
}
}

View File

@@ -5,6 +5,7 @@
"@semantic-release/changelog": "^6.0.3",
"@semantic-release/exec": "^6.0.3",
"@semantic-release/git": "^10.0.1",
"semantic-release": "^23.0.8"
"semantic-release": "^24.1.3",
"semantic-release-pub": "^0.8.29"
}
}

View File

@@ -4,7 +4,7 @@ homepage: https://revanced.app
publish_to: 'none'
version: 1.23.0-dev.1+101800041
version: 1.23.0+101800048
environment:
sdk: ^3.5.3