Compare commits

...

23 Commits

Author SHA1 Message Date
40dd81eba3 chore(release): 1.25.1 [skip ci]
## [1.25.1](https://github.com/ReVanced/revanced-manager/compare/v1.25.0...v1.25.1) (2025-07-07)

### Bug Fixes

* Disable Impeller Flutter render engine correctly to fix rendering issues ([#2631](https://github.com/ReVanced/revanced-manager/issues/2631)) ([c97e4ad](c97e4adace))
2025-07-07 13:01:12 +00:00
9f99fcf808 chore: Merge branch dev to main (#2632) 2025-07-07 19:51:42 +07:00
1b11a0ad7a chore: Sync translations (#2581)
Signed-off-by: GitHub <noreply@github.com>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Pun Butrach <pun.butrach@gmail.com>
2025-07-07 19:46:40 +07:00
8f60bf44e5 ci: Remove fetch-depth from checkout (#2629) 2025-07-06 01:41:32 +03:00
3b459160d7 chore(release): 1.25.1-dev.1 [skip ci]
## [1.25.1-dev.1](https://github.com/ReVanced/revanced-manager/compare/v1.25.0...v1.25.1-dev.1) (2025-07-03)

### Bug Fixes

* Disable Impeller Flutter render engine correctly to fix rendering issues ([#2631](https://github.com/ReVanced/revanced-manager/issues/2631)) ([c97e4ad](c97e4adace))
2025-07-03 05:13:31 +00:00
c97e4adace fix: Disable Impeller Flutter render engine correctly to fix rendering issues (#2631) 2025-07-03 07:05:08 +02:00
875ce6439d chore(release): 1.25.0 [skip ci]
# [1.25.0](https://github.com/ReVanced/revanced-manager/compare/v1.24.0...v1.25.0) (2025-06-27)

### Bug Fixes

* "Save patched app" attempts to copy APK when patching fails ([#2565](https://github.com/ReVanced/revanced-manager/issues/2565)) ([bdb0317](bdb0317a9e))
* Correct supported required patch option types  ([#2475](https://github.com/ReVanced/revanced-manager/issues/2475)) ([cde3f8d](cde3f8d62c))
* Crash using when Integer type in Patch Options ([#2453](https://github.com/ReVanced/revanced-manager/issues/2453)) ([05575cc](05575cccfb))
* Fix installation being cancelled at installation by not prematurely deleting patched APK  ([#2490](https://github.com/ReVanced/revanced-manager/issues/2490)) ([dedcb3c](dedcb3c51a))
* Log errors and warnings when compiling resources ([5c7d52c](5c7d52c8e9))
* Nearly all rare cases of GPU renderer issues, and allow building on manager again ([#2602](https://github.com/ReVanced/revanced-manager/issues/2602)) ([21ceada](21ceadaf7f))
* Obscure Flutter Impeller renderer bugs ([a5e909c](a5e909cfc8))
* Unable to Share Logs due to missing ProGuard rules ([#2474](https://github.com/ReVanced/revanced-manager/issues/2474)) ([915ec0e](915ec0e260))
* Use device locale for app language (Default to English) ([#2488](https://github.com/ReVanced/revanced-manager/issues/2488)) ([3074766](3074766ff2))
* Use device locale when no preference is set ([#2483](https://github.com/ReVanced/revanced-manager/issues/2483)) ([f79aa9e](f79aa9edd7))

### Features

* Add toggle to use pre-releases ([#2485](https://github.com/ReVanced/revanced-manager/issues/2485)) ([89b48ce](89b48cebcf))
2025-06-27 10:13:41 +00:00
c45d579406 chore: Merge branch dev to main (#2468) 2025-06-27 13:00:07 +03:00
b6b8f4e069 chore(release): 1.25.0-dev.2 [skip ci]
# [1.25.0-dev.2](https://github.com/ReVanced/revanced-manager/compare/v1.25.0-dev.1...v1.25.0-dev.2) (2025-06-26)

### Bug Fixes

* "Save patched app" attempts to copy APK when patching fails ([#2565](https://github.com/ReVanced/revanced-manager/issues/2565)) ([bdb0317](bdb0317a9e))
* Nearly all rare cases of GPU renderer issues, and allow building on manager again ([#2602](https://github.com/ReVanced/revanced-manager/issues/2602)) ([21ceada](21ceadaf7f))
* Obscure Flutter Impeller renderer bugs ([a5e909c](a5e909cfc8))
2025-06-26 05:52:36 +00:00
21ceadaf7f fix: Nearly all rare cases of GPU renderer issues, and allow building on manager again (#2602)
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
2025-06-26 12:40:14 +07:00
83fc7f131a chore: Remove obsolete deleteLastPatchedApp call 2025-06-02 17:12:50 +03:00
8e4a9088ea ci: Use install instead of clean install for NPM dependencies
Co-authored-by: Pun Butrach <pun.butrach@gmail.com>
2025-06-02 16:05:59 +02:00
7ee2b1a026 chore: Sync translations (#2522)
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Pun Butrach <pun.butrach@gmail.com>
2025-05-31 15:36:42 +07:00
40c99ab4dc ci: Set missing translation actor/email for commit
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
2025-05-31 15:18:37 +07:00
1752fae9d9 chore: Better ignore rules
Based on https://github.com/github/gitignore/blob/main/Flutter.gitignore

Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
2025-05-31 15:12:26 +07:00
d264a2a363 build: Support Flutter v3.32
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
2025-05-31 15:11:49 +07:00
a5e909cfc8 fix: Obscure Flutter Impeller renderer bugs
This is workaround to entirely disabling Flutter Impeller in favour of Skia.

Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
2025-05-31 14:57:21 +07:00
bdb0317a9e fix: "Save patched app" attempts to copy APK when patching fails (#2565) 2025-05-31 14:22:55 +07:00
b0464408f1 ci: Run Crowdin Cron task on dev branch (#2543) 2025-05-12 14:51:42 +02:00
767fa77436 chore(release): 1.25.0-dev.1 [skip ci]
# [1.25.0-dev.1](https://github.com/ReVanced/revanced-manager/compare/v1.24.1-dev.5...v1.25.0-dev.1) (2025-05-05)

### Bug Fixes

* Fix installation being cancelled at installation by not prematurely deleting patched APK  ([#2490](https://github.com/ReVanced/revanced-manager/issues/2490)) ([dedcb3c](dedcb3c51a))
* Use device locale for app language (Default to English) ([#2488](https://github.com/ReVanced/revanced-manager/issues/2488)) ([3074766](3074766ff2))

### Features

* Add toggle to use pre-releases ([#2485](https://github.com/ReVanced/revanced-manager/issues/2485)) ([89b48ce](89b48cebcf))
2025-05-05 14:15:17 +00:00
89b48cebcf feat: Add toggle to use pre-releases (#2485)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2025-05-05 16:00:41 +02:00
dedcb3c51a fix: Fix installation being cancelled at installation by not prematurely deleting patched APK (#2490) 2025-05-05 15:56:28 +02:00
3074766ff2 fix: Use device locale for app language (Default to English) (#2488) 2025-05-05 15:54:42 +02:00
61 changed files with 1132 additions and 1162 deletions

View File

@ -27,7 +27,6 @@ jobs:
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
ref: refs/pull/${{ inputs.pr-number }}/merge ref: refs/pull/${{ inputs.pr-number }}/merge
fetch-depth: 0
- name: Setup Java - name: Setup Java
uses: actions/setup-java@v4 uses: actions/setup-java@v4
@ -39,10 +38,11 @@ jobs:
uses: subosito/flutter-action@v2 uses: subosito/flutter-action@v2
with: with:
channel: stable channel: stable
flutter-version: 3.29.x
cache: true cache: true
- name: Cache Gradle - name: Cache Gradle
uses: burrunan/gradle-cache-action@v1 uses: burrunan/gradle-cache-action@v3
with: with:
build-root-directory: ${{ github.workspace }}/android build-root-directory: ${{ github.workspace }}/android

View File

@ -18,8 +18,6 @@ jobs:
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Java - name: Setup Java
uses: actions/setup-java@v4 uses: actions/setup-java@v4
@ -37,15 +35,16 @@ jobs:
uses: subosito/flutter-action@v2 uses: subosito/flutter-action@v2
with: with:
channel: stable channel: stable
flutter-version: 3.29.x
cache: true cache: true
- name: Cache Gradle - name: Cache Gradle
uses: burrunan/gradle-cache-action@v1 uses: burrunan/gradle-cache-action@v3
with: with:
build-root-directory: ${{ github.workspace }}/android build-root-directory: ${{ github.workspace }}/android
- name: Install dependencies - name: Install dependencies
run: npm ci run: npm i
- name: Get dependencies - name: Get dependencies
run: flutter pub get run: flutter pub get

View File

@ -22,11 +22,14 @@ jobs:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
fetch-depth: 0 ref: dev
clean: true
- name: Setup Flutter - name: Setup Flutter
uses: subosito/flutter-action@v2 uses: subosito/flutter-action@v2
with: with:
channel: stable
flutter-version: 3.29.x
cache: true cache: true
- name: Sync translations from Crowdin - name: Sync translations from Crowdin
@ -37,6 +40,7 @@ jobs:
upload_translations: false upload_translations: false
download_translations: true download_translations: true
localization_branch_name: feat/translations localization_branch_name: feat/translations
skip_ref_checkout: true
create_pull_request: true create_pull_request: true
pull_request_title: "chore: Sync translations" pull_request_title: "chore: Sync translations"
pull_request_body: "Sync translations from [crowdin.com/project/revanced](https://crowdin.com/project/revanced)" pull_request_body: "Sync translations from [crowdin.com/project/revanced](https://crowdin.com/project/revanced)"
@ -70,6 +74,8 @@ jobs:
- name: Commit translations - name: Commit translations
run: | run: |
git config --global user.name 'github-actions[bot]'
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
sudo chown -R $USER:$USER .git sudo chown -R $USER:$USER .git
git commit -m "chore: Remove empty values from JSON" assets/i18n/*.i18n.json git commit -m "chore: Remove empty values from JSON" assets/i18n/*.i18n.json
git push origin HEAD:feat/translations git push origin HEAD:feat/translations

45
.gitignore vendored
View File

@ -1,14 +1,14 @@
# Miscellaneous # Miscellaneous
*.class *.class
*.lock
*.log *.log
*.pyc *.pyc
*.swp *.swp
.DS_Store
.atom/
.buildlog/ .buildlog/
.history .history
.svn/
migrate_working_dir/ # packages file containing multi-root paths
.packages.generated
# IntelliJ related # IntelliJ related
*.iml *.iml
@ -16,32 +16,41 @@ migrate_working_dir/
*.iws *.iws
.idea/ .idea/
# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/
# Flutter/Dart/Pub related # Flutter/Dart/Pub related
**/doc/api/ **/doc/api/
**/ios/Flutter/.last_build_id
.dart_tool/ .dart_tool/
.flutter-plugins .flutter-plugins
.flutter-plugins-dependencies .flutter-plugins-dependencies
.pub-cache/ **/generated_plugin_registrant.dart
.packages
.pub-preload-cache/
.pub/ .pub/
/build/ build/
flutter_*.png
linked_*.ds
unlinked.ds
unlinked_spec.ds
# Symbolication related # Android related
**/android/**/gradle-wrapper.jar
.gradle/
**/android/captures/
**/android/gradlew
**/android/gradlew.bat
**/android/local.properties
**/android/**/GeneratedPluginRegistrant.java
**/android/key.properties
*.jks
# Coverage
coverage/
# Symbols
app.*.symbols app.*.symbols
# Obfuscation related # Obfuscation related
app.*.map.json app.*.map.json
# Android Studio will place build artifacts here
/android/app/debug
/android/app/profile
/android/app/release
# Generated files # Generated files
android/app/.cxx android/app/.cxx
**/*.g.dart **/*.g.dart

View File

@ -28,6 +28,9 @@
android:largeHeap="true" android:largeHeap="true"
android:requestLegacyExternalStorage="true" android:requestLegacyExternalStorage="true"
android:enableOnBackInvokedCallback="true"> android:enableOnBackInvokedCallback="true">
<meta-data
android:name="io.flutter.embedding.android.EnableImpeller"
android:value="false" />
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:exported="true" android:exported="true"

View File

@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "أنت على وشك تعطيل تغيير تحديد التعديلات.\nستتم استعادة التحديد الافتراضي للتعديلات.\n\nهل تريد التعطيل على أي حال؟", "disablePatchesSelectionWarningText": "أنت على وشك تعطيل تغيير تحديد التعديلات.\nستتم استعادة التحديد الافتراضي للتعديلات.\n\nهل تريد التعطيل على أي حال؟",
"autoUpdatePatchesLabel": "تحديث التعديلات تلقائيًا", "autoUpdatePatchesLabel": "تحديث التعديلات تلقائيًا",
"autoUpdatePatchesHint": "تحديث التعديلات تلقائيًا إلى الإصدار الأحدث", "autoUpdatePatchesHint": "تحديث التعديلات تلقائيًا إلى الإصدار الأحدث",
"usePrereleasesLabel": "استخدام الإصدارات التجريبية",
"usePrereleasesHint": "استخدام الإصدارات التجريبية من ReVanced Manager و ReVanced Patches",
"usePrereleasesWarningText": "قد تتسبب الإصدارات التجريبية في حدوث مشكلات غير متوقعة.\n\nهل تريد التمكين على أي حال؟",
"showUpdateDialogLabel": "عرض مربع حوار التحديث", "showUpdateDialogLabel": "عرض مربع حوار التحديث",
"showUpdateDialogHint": "عرض مربع حوار عندما يتوفر تحديث جديد", "showUpdateDialogHint": "عرض مربع حوار عندما يتوفر تحديث جديد",
"universalPatchesLabel": "عرض التعديلات العامة", "universalPatchesLabel": "عرض التعديلات العامة",

View File

@ -34,7 +34,25 @@
"updatePatchesSheetTitle": "ReVanced পেট্‌চবোৰ আপডে’ট কৰক", "updatePatchesSheetTitle": "ReVanced পেট্‌চবোৰ আপডে’ট কৰক",
"updateChangelogTitle": "সলনি-পঞ্জী", "updateChangelogTitle": "সলনি-পঞ্জী",
"updateDialogText": "${file}-ৰ এটা নতুন আপডে’ট উপলব্ধ।\n\nবৰ্তমানে ইনষ্টল কৰা সংস্কৰণটো হৈছে ${version}।", "updateDialogText": "${file}-ৰ এটা নতুন আপডে’ট উপলব্ধ।\n\nবৰ্তমানে ইনষ্টল কৰা সংস্কৰণটো হৈছে ${version}।",
"downloadConsentDialogTitle": "প্ৰয়োজনীয় ফাইলবোৰ ডাউনল’ড কৰিবনে?" "downloadConsentDialogTitle": "প্ৰয়োজনীয় ফাইলবোৰ ডাউনল’ড কৰিবনে?",
"downloadConsentDialogText": "সঠিকভাৱে কাম কৰিবলৈ ReVanced Manager-এ প্ৰয়োজনীয় ফাইলবোৰ ডাউনল'ড কৰিব লাগিব।",
"downloadConsentDialogText2": "ই আপোনাক ${url}-ৰ সৈতে সংযুক্ত কৰিব।",
"downloadingMessage": "আপডে’ট ডাউনল’ড হৈ আছে...",
"downloadedMessage": "আপডে’ট ডাউনল’ড কৰা হ’ল",
"installingMessage": "আপডে’ট ইনষ্টল হৈ আছে...",
"errorDownloadMessage": "আপডে’ট ডাউনল’ড কৰিব পৰা নগ’ল"
},
"applicationItem": {
"infoButton": "তথ্য"
},
"latestCommitCard": {
"timeagoLabel": "${time} আগত"
},
"appSelectorCard": {
"widgetTitle": "এটা এপ বাছনি কৰক",
"widgetTitleSelected": "বাছনি কৰা এপ",
"widgetSubtitle": "কোনো এপ বাছনি কৰা নাই",
"noAppsLabel": "কোনো এপ্লিকেশ্যন পোৱা নগ’ল"
}, },
"patchOptionsView": { "patchOptionsView": {
"saveOptions": "ছে’ভ কৰক", "saveOptions": "ছে’ভ কৰক",
@ -50,9 +68,28 @@
"darkThemeLabel": "গাঢ়", "darkThemeLabel": "গাঢ়",
"dynamicThemeLabel": "মেটেৰিয়েল ইউ", "dynamicThemeLabel": "মেটেৰিয়েল ইউ",
"languageLabel": "ভাষা", "languageLabel": "ভাষা",
"languageUpdated": "ভাষা আপডে’ট কৰা হ’ল" "languageUpdated": "ভাষা আপডে’ট কৰা হ’ল",
"importKeystoreLabel": "কীষ্ট’ৰ ইম্প’ৰ্ট কৰক",
"importKeystoreHint": "এপবোৰত চহী কৰিবলৈ ব্যৱহাৰ কৰা কীষ্ট’ৰ এটা ইম্প’ৰ্ট কৰক",
"importedKeystore": "কীষ্ট’ৰ ইম্প’ৰ্ট কৰা হ’ল",
"selectKeystorePassword": "কীষ্ট’ৰৰ পাছৱৰ্ড",
"selectKeystorePasswordHint": "এপবোৰত চহী কৰিবলৈ ব্যৱহাৰ কৰা কীষ্ট’ৰৰ পাছৱৰ্ড বাছনি কৰক",
"jsonSelectorErrorMessage": "বাছনি কৰা JSON ফাইলটো ব্যৱহাৰ কৰিব পৰা নগ’ল",
"keystoreSelectorErrorMessage": "বাছনি কৰা কীষ্ট’ৰ ফাইলটো ব্যৱহাৰ কৰিব পৰা নগ’ল"
}, },
"appInfoView": { "appInfoView": {
"widgetTitle": "এপৰ তথ্য",
"openButton": "খোলক",
"installButton": "ইনষ্টল কৰক",
"uninstallButton": "আনইনষ্টল কৰক",
"unmountButton": "আনমাউণ্ট কৰক",
"exportButton": "এক্সপ’ৰ্ট কৰক",
"deleteButton": "মচক",
"rootDialogTitle": "ত্ৰুটি",
"lastPatchedAppDescription": "এইটো শেষবাৰৰ বাবে পেট্‌চ কৰা এপটোৰ বেকআপ।",
"unmountDialogText": "আপুনি এই এপটো আনমাউণ্ট কৰিব বিচৰাটো নিশ্চিতনে?",
"uninstallDialogText": "আপুনি এই এপটো আনইনষ্টল কৰিব বিচৰাটো নিশ্চিতনে?",
"rootDialogText": "এপটো ছুপাৰইউজাৰৰ অনুমতিৰে ইনষ্টল কৰা হৈছে, কিন্তু বৰ্তমান ReVanced Manager-ৰ কোনো অনুমতি নাই।\nঅনুগ্ৰহ কৰি প্ৰথমে ছুপাৰইউজাৰৰ অনুমতি দিয়ক।",
"removeAppDialogTitle": "এপ মচিবনে?", "removeAppDialogTitle": "এপ মচিবনে?",
"removeAppDialogText": "আপুনি এই বেকআপ মচি পেলাব বিচৰাটো নিশ্চিতনে?", "removeAppDialogText": "আপুনি এই বেকআপ মচি পেলাব বিচৰাটো নিশ্চিতনে?",
"packageNameLabel": "পেকেজৰ নাম", "packageNameLabel": "পেকেজৰ নাম",
@ -75,14 +112,24 @@
"mount_missing_installation": "ইনষ্টলেশ্যন পোৱা নগ’ল", "mount_missing_installation": "ইনষ্টলেশ্যন পোৱা নগ’ল",
"status_failure_blocked": "ইনষ্টলেশ্যন অৱৰুদ্ধ", "status_failure_blocked": "ইনষ্টলেশ্যন অৱৰুদ্ধ",
"install_failed_verification_failure": "ভেৰিফিকেশ্যন বিফল", "install_failed_verification_failure": "ভেৰিফিকেশ্যন বিফল",
"status_failure_invalid": "ইনষ্টলেশ্যন অবৈধ",
"install_failed_version_downgrade": "ডাউনগ্ৰে’ড কৰিব নোৱাৰি", "install_failed_version_downgrade": "ডাউনগ্ৰে’ড কৰিব নোৱাৰি",
"status_failure_conflict": "ইনষ্টলেশ্যনৰ সংঘাত", "status_failure_conflict": "ইনষ্টলেশ্যনৰ সংঘাত",
"status_failure_storage": "ইনষ্টলেশ্যন ষ্ট’ৰেজৰ সমস্যা", "status_failure_storage": "ইনষ্টলেশ্যন ষ্ট’ৰেজৰ সমস্যা",
"status_failure_incompatible": "ইনষ্টলেশ্যন নিমিলে", "status_failure_incompatible": "ইনষ্টলেশ্যন নিমিলে",
"status_failure_timeout": "ইনষ্টলেশ্যনৰ সময় উকলিল", "status_failure_timeout": "ইনষ্টলেশ্যনৰ সময় উকলিল",
"status_unknown": "ইনষ্টলেশ্যন বিফল", "status_unknown": "ইনষ্টলেশ্যন বিফল",
"mount_version_mismatch_description": "ইনষ্টল কৰা এপটো পেট্‌চ কৰা এপতকৈ বেলেগ সংস্কৰণ হোৱাৰ বাবে ইনষ্টলেশ্যন বিফল হ’ল।\n\nআপুনি মাউণ্ট কৰা এপটোৰ সংস্কৰণ ইনষ্টল কৰি আকৌ চেষ্টা কৰক।",
"mount_no_root_description": "ৰুট এক্সেছ নিদিয়াৰ বাবে ইনষ্টলেশ্যন বিফল হ’ল।\n\nReVanced Manager-ক ৰুট এক্সেছ দি আকৌ চেষ্টা কৰক।",
"mount_missing_installation_description": "ওপৰত মাউণ্ট কৰিব পৰাকৈ পেট্‌চ নকৰা এপটো এই ডিভাইচত ইনষ্টল হৈ নথকাৰ বাবে ইনষ্টলেশ্যন বিফল হ’ল।\n\nমাউণ্ট কৰাৰ আগত পেট্‌চ নকৰা এপটো ইনষ্টল কৰি আকৌ চেষ্টা কৰক।",
"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_conflict_description": "এপটোৰ এটা মজুত থকা ইনষ্টলেশ্যনৰ ফলত ইনষ্টলেশ্যনত বাধা আহিছিল।\n\n ইনষ্টল কৰা এপটো আনইনষ্টল কৰি পুনৰ চেষ্টা কৰিবনে?",
"status_failure_blocked_description": "ইনষ্টলেশ্যনটো ${packageName}-ৰ দ্বাৰা অৱৰোধ কৰা হৈছে।\n\nআপোনাৰ সুৰক্ষা-সম্বন্ধীয় ছেটিংছ মিলাই লৈ পুনৰ চেষ্টা কৰক।", "status_failure_blocked_description": "ইনষ্টলেশ্যনটো ${packageName}-ৰ দ্বাৰা অৱৰোধ কৰা হৈছে।\n\nআপোনাৰ সুৰক্ষা-সম্বন্ধীয় ছেটিংছ মিলাই লৈ পুনৰ চেষ্টা কৰক।",
"install_failed_verification_failure_description": "ভেৰিফিকেশ্যন-সম্বন্ধীয় সমস্যা এটাৰ কাৰণে ইনষ্টলেশ্যন বিফল হ’ল।\n\nআপোনাৰ সুৰক্ষা-সম্বন্ধীয় ছেটিংছ মিলাই লৈ পুনৰ চেষ্টা কৰক।" "install_failed_verification_failure_description": "ভেৰিফিকেশ্যন-সম্বন্ধীয় সমস্যা এটাৰ কাৰণে ইনষ্টলেশ্যন বিফল হ’ল।\n\nআপোনাৰ সুৰক্ষা-সম্বন্ধীয় ছেটিংছ মিলাই লৈ পুনৰ চেষ্টা কৰক।",
"install_failed_version_downgrade_description": "পেট্‌চ কৰা এপটো ইনষ্টল কৰা এপতকৈ আগৰ সংস্কৰণ হোৱাৰ বাবে ইনষ্টলেশ্যন বিফল হ’ল।\n\nএপটো আনইনষ্টল কৰি আকৌ চেষ্টা কৰিবনে?",
"status_unknown_description": "অজ্ঞাত কাৰণত ইনষ্টলেশ্যন বিফল হ’ল। অনুগ্ৰহ কৰি আকৌ চেষ্টা কৰক।"
} }
} }

View File

@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "Yamaq seçimi dəyişdirilməsini qapatmaq üzrəsiniz.\nİlkin yamaq seçimi bərpa ediləcək.\n\nYenə də qapadılsın?", "disablePatchesSelectionWarningText": "Yamaq seçimi dəyişdirilməsini qapatmaq üzrəsiniz.\nİlkin yamaq seçimi bərpa ediləcək.\n\nYenə də qapadılsın?",
"autoUpdatePatchesLabel": "Yamaqları avtomatik yenilə", "autoUpdatePatchesLabel": "Yamaqları avtomatik yenilə",
"autoUpdatePatchesHint": "Yamaqları son versiyaya avtomatik yenilə", "autoUpdatePatchesHint": "Yamaqları son versiyaya avtomatik yenilə",
"usePrereleasesLabel": "İlkin buraxılışları istifadə et",
"usePrereleasesHint": "ReVanced Manager və ReVanced Patches-in ilkin versiyaların istifadə et",
"usePrereleasesWarningText": "İlkin versiyaları işlətmə gözlənilməz problemlərə səbəb ola bilər.\n\nYenə də aktiv edilsin?",
"showUpdateDialogLabel": "Yenilənmə dialoqunu göstər", "showUpdateDialogLabel": "Yenilənmə dialoqunu göstər",
"showUpdateDialogHint": "Təzə yenilənmə mövcud olduqda dialoq pəncərəsi göstər", "showUpdateDialogHint": "Təzə yenilənmə mövcud olduqda dialoq pəncərəsi göstər",
"universalPatchesLabel": "Ümumi yamaqları göstər", "universalPatchesLabel": "Ümumi yamaqları göstər",

View File

@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "Вы збіраецеся адключыць змяненне выбару выпраўленняў.\nБудзе адноўлены прадвызначаны выбар выпраўленняў.\n\nАдключыць усё роўна?", "disablePatchesSelectionWarningText": "Вы збіраецеся адключыць змяненне выбару выпраўленняў.\nБудзе адноўлены прадвызначаны выбар выпраўленняў.\n\nАдключыць усё роўна?",
"autoUpdatePatchesLabel": "Аўтаматычнае абнаўленне выпраўленняў", "autoUpdatePatchesLabel": "Аўтаматычнае абнаўленне выпраўленняў",
"autoUpdatePatchesHint": "Аўтаматычна абнаўляць выпраўленні да апошняй версіі", "autoUpdatePatchesHint": "Аўтаматычна абнаўляць выпраўленні да апошняй версіі",
"usePrereleasesLabel": "Выкарыстоўваць тэставыя версіі",
"usePrereleasesHint": "Выкарыстоўваць тэставыя версіі ReVanced Manager і ReVanced Patches",
"usePrereleasesWarningText": "Выкарыстанне папярэдніх версій можа выклікаць нечаканыя праблемы.\n\nУсё роўна ўключыць?",
"showUpdateDialogLabel": "Паказваць акно абнаўлення", "showUpdateDialogLabel": "Паказваць акно абнаўлення",
"showUpdateDialogHint": "Паказваць акно, калі даступна новае абнаўленне", "showUpdateDialogHint": "Паказваць акно, калі даступна новае абнаўленне",
"universalPatchesLabel": "Паказваць універсальныя выпраўленні", "universalPatchesLabel": "Паказваць універсальныя выпраўленні",

View File

@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "Предстои да забраните промени в избора на модификации.\nИзбраните модификации по подразбиране ще бъдат възстановени.\n\nЗабранявате ли въпреки това?", "disablePatchesSelectionWarningText": "Предстои да забраните промени в избора на модификации.\nИзбраните модификации по подразбиране ще бъдат възстановени.\n\nЗабранявате ли въпреки това?",
"autoUpdatePatchesLabel": "Автоматична актуализация на модификациите", "autoUpdatePatchesLabel": "Автоматична актуализация на модификациите",
"autoUpdatePatchesHint": "Автоматично актуализира модификациите до последната им версия", "autoUpdatePatchesHint": "Автоматично актуализира модификациите до последната им версия",
"usePrereleasesLabel": "Използвай предварителни версии",
"usePrereleasesHint": "Използвай предварителни версии на ReVanced Manager и ReVanced Patches",
"usePrereleasesWarningText": "Използването на предварителни версии може да причини неочаквани проблеми.\n\nВсе пак да активирам?",
"showUpdateDialogLabel": "Показване на диалоговия прозорец за актуализиране", "showUpdateDialogLabel": "Показване на диалоговия прозорец за актуализиране",
"showUpdateDialogHint": "Показва диалогов прозорец, когато е налична нова актуализация", "showUpdateDialogHint": "Показва диалогов прозорец, когато е налична нова актуализация",
"universalPatchesLabel": "Покажи универсални модификации", "universalPatchesLabel": "Покажи универсални модификации",

View File

@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "আপনি নির্বাচিত প্যাচ পরিবর্তনকে নিষ্ক্রিয় করতে যাচ্ছেন।\nপূর্বনির্ধারিত নির্বাচিত প্যাচসমূহ ফিরিয়ে আনা হবে।\n\nযেকোন ভাবে নিষ্ক্রিয় করতে চান?", "disablePatchesSelectionWarningText": "আপনি নির্বাচিত প্যাচ পরিবর্তনকে নিষ্ক্রিয় করতে যাচ্ছেন।\nপূর্বনির্ধারিত নির্বাচিত প্যাচসমূহ ফিরিয়ে আনা হবে।\n\nযেকোন ভাবে নিষ্ক্রিয় করতে চান?",
"autoUpdatePatchesLabel": "প্যাচসমূহ স্বয়ংক্রিয়ভাবে আপডেট করুন", "autoUpdatePatchesLabel": "প্যাচসমূহ স্বয়ংক্রিয়ভাবে আপডেট করুন",
"autoUpdatePatchesHint": "প্যাচসমূহ স্বয়ংক্রিয়ভাবে সর্বশেষ সংস্করণে আপডেট হবে", "autoUpdatePatchesHint": "প্যাচসমূহ স্বয়ংক্রিয়ভাবে সর্বশেষ সংস্করণে আপডেট হবে",
"usePrereleasesLabel": "প্রি-রিলিজ ব্যবহার করুন",
"usePrereleasesHint": "ReVanced Manager এবং ReVanced প্যাচ এর প্রি-রিলিজ সংস্করণ ব্যবহার করুন",
"usePrereleasesWarningText": "প্রাক-প্রকাশ সংস্করণ ব্যবহার করলে অপ্রত্যাশিত সমস্যা হতে পারে।\n\nতবুও সক্ষম করবেন?",
"showUpdateDialogLabel": "হালনাগাদ ডায়ালগ দেখান", "showUpdateDialogLabel": "হালনাগাদ ডায়ালগ দেখান",
"showUpdateDialogHint": "যখন হালনাগাদ উপলব্ধ থাকবে তখন একটি ডায়ালগ দেখান", "showUpdateDialogHint": "যখন হালনাগাদ উপলব্ধ থাকবে তখন একটি ডায়ালগ দেখান",
"universalPatchesLabel": "বৈশ্বিক প্যাচসমূহ দেখান", "universalPatchesLabel": "বৈশ্বিক প্যাচসমূহ দেখান",

View File

@ -1,298 +0,0 @@
{
"okButton": "D'acord",
"cancelButton": "Cancel·lar",
"dismissButton": "Descarta",
"quitButton": "Sortir",
"updateButton": "Actualitzar",
"suggested": "Suggerit: ${version}",
"yesButton": "Sí",
"noButton": "No",
"warning": "Advertència",
"notice": "Avís",
"noShowAgain": "No ho tornis a mostrar",
"add": "Afegir",
"remove": "Suprimeix",
"showChangelogButton": "Mostra el registre de canvis",
"showUpdateButton": "Mostrà actualització",
"navigationView": {
"dashboardTab": "Tauler de control",
"patcherTab": "Pedaçor",
"settingsTab": "Configuració"
},
"homeView": {
"refreshSuccess": "S'ha actualitzat correctament",
"widgetTitle": "Tauler de control",
"updatesSubtitle": "Actualitzacions",
"lastPatchedAppSubtitle": "Última aplicació pedaçada",
"patchedSubtitle": "Aplicacions instal·lades",
"changeLaterSubtitle": "Pots caviar això després en la configuració.",
"noSavedAppFound": "No s'ha trobat cap aplicació",
"noInstallations": "Cap aplicació pedaçada instal·lada",
"installUpdate": "Continuar instal·lant l'actualització?",
"updateSheetTitle": "Actualitzar ReVanced Mànager",
"updateDialogTitle": "Nova actualització disponible",
"updatePatchesSheetTitle": "Actualitzar pedaços de ReVanced",
"updateChangelogTitle": "Historial de canvis",
"updateDialogText": "Una nova actualització està disponible per ${file}.\n\nLa versió actualment instal·lada és ${version}.",
"downloadConsentDialogTitle": "Descarregar arxius necessaris?",
"downloadConsentDialogText": "ReVanced Mànager necessita descarregar arxius necessaris per treballar correctament.",
"downloadConsentDialogText2": "Això et connectarà a ${url}",
"downloadingMessage": "Descarregant l'actualització...",
"downloadedMessage": "S'ha baixat l'actualització",
"installingMessage": "Instal·lant l'actualització...",
"errorDownloadMessage": "No s'ha pogut baixar l'actualització",
"errorInstallMessage": "No s'ha pogut instal·lar l'actualització",
"noConnection": "No hi ha connexió a Internet"
},
"applicationItem": {
"infoButton": "Informació"
},
"latestCommitCard": {
"loadingLabel": "S'està carregant...",
"timeagoLabel": "Fa ${time} "
},
"patcherView": {
"widgetTitle": "Pedaçor",
"patchButton": "Pedaçar",
"incompatibleArchWarningDialogText": "Aquesta arquitectura encara no està suportat i pot fallar. Voleu continuar de totes maneres?",
"removedPatchesWarningDialogText": "Pedaços eliminats des d'última vegada que has modificat aquesta aplicació:\n\n${patches}\n\n${newPatches}Continuar igualment?",
"addedPatchesDialogText": "Pedaços des de l'última vegada que has modificat aquesta aplicació:\n\n${addedPatches}",
"requiredOptionDialogText": "Algunes modificacions s'han de configurar."
},
"appSelectorCard": {
"widgetTitle": "Selecciona l'aplicació",
"widgetTitleSelected": "Aplicació seleccionada",
"widgetSubtitle": "Cap aplicació seleccionada",
"noAppsLabel": "No s'ha trobat cap aplicació",
"anyVersion": "Qualsevol versió"
},
"patchSelectorCard": {
"widgetTitle": "Seleccioneu pedaços",
"widgetTitleSelected": "Pedaços seleccionats",
"widgetSubtitle": "Primer seleccioneu una aplicació",
"widgetEmptySubtitle": "No s'ha seleccionat cap pedaç"
},
"socialMediaCard": {
"widgetTitle": "Xarxes socials",
"widgetSubtitle": "Estem en línia!"
},
"appSelectorView": {
"viewTitle": "Selecciona una aplicació",
"searchBarHint": "Cerca aplicació",
"storageButton": "Emmagatzematge",
"selectFromStorageButton": "Selecciona des d'emmagatzematge",
"errorMessage": "No s'ha pogut utilitzar l'aplicació seleccionada",
"downloadToast": "La funció de descàrrega encara no està disponible",
"requireSuggestedAppVersionDialogText": "La versió de l'aplicació que heu seleccionat no coincideix amb la versió suggerida que pot provocar problemes inesperats. Utilitzeu la versió suggerida.\n\nVersió Seleccionada: ${selected}\nVersió suggerida: ${suggested}\n\nPer continuar de totes maneres, desactiva \"Requereix la versió de l'aplicació suggerida\" a la configuració.",
"featureNotAvailable": "Característíca no implementada",
"featureNotAvailableText": "Aquesta aplicació és una APK dividida i només es pot apedaçar i instal·lar de manera fiable muntant amb permisos root. No obstant això, podeu modificar i instal·lar un APK complet seleccionant-lo des de l'emmagatzematge."
},
"patchesSelectorView": {
"viewTitle": "Seleccioneu pedaços",
"searchBarHint": "Cerca pedaços",
"universalPatches": "Modificacions universals",
"newPatches": "Noves modificacions",
"patches": "modificacions",
"doneButton": "Fet",
"defaultChip": "Per defecte",
"defaultTooltip": "Seleciona totes les modificacions predeterminades",
"noneChip": "Cap",
"noneTooltip": "Desseleccionar tots els pegats",
"loadPatchesSelection": "Carrega la modificació seleccionada",
"noSavedPatches": "No s'ha desat la selecció de pedaç per a l'aplicació seleccionada.\nPremeu Fet per a desar la selecció actual.",
"noPatchesFound": "No s'han trobat pedaços per a l'aplicació seleccionada",
"setRequiredOption": "Algunes modificacions han de ser configurades:\n\n${patches}\n\nConfigura les abans de continuar."
},
"patchOptionsView": {
"customValue": "Valor personalitzat",
"setToNull": "Estableix com null",
"nullValue": "El valor d'aquest valor és null",
"viewTitle": "Opcions de modificació",
"saveOptions": "Guardar",
"unselectPatch": "Desselecciona modificacions",
"tooltip": "Més opcions d'entrada",
"selectFilePath": "Selecciona direcció de l'arxiu",
"selectFolder": "Selecciona carpeta",
"requiredOption": "Configurar aquesta opció es necessari",
"unsupportedOption": "Aquesta opció no està admesa",
"requiredOptionNull": "S'han de configurar les següents opcions:\n\n${options}"
},
"patchItem": {
"unsupportedDialogText": "La selecció d'aquest pedaç pot provocar errors d'aplicació.\n\nVersió de l'aplicació: ${packageVersion}\nVersions compatibles:\n${supportedVersions}",
"unsupportedPatchVersion": "El pegat no està admes per aquesta versió de l'aplicació.",
"unsupportedRequiredOption": "Aquest pegat conté una opció obligatòria que no està admesa per aquesta aplicació",
"patchesChangeWarningDialogText": "Es recomana utilitzar la selecció i les opcions de pegats per defecte. Canviar-les pot provocar problemes inesperats.\n\nHauràs d'activar \"Permetre canviar la selecció de pegats\" a la configuració abans de canviar cap selecció de pegats.",
"patchesChangeWarningDialogButton": "Utilitzar la selecció per defecte"
},
"installerView": {
"installType": "Seleccionar tipus d'instal·lació",
"installTypeDescription": "Seleccioneu el tipus d'instal·lació per a continuar.",
"installButton": "Instal·la",
"installRootType": "Muntar",
"installNonRootType": "Regular",
"warning": "Desactiva les actualitzacions automàtiques de l'aplicació modificada per evitar problemes inesperats.",
"pressBackAgain": "Premeu enrere de nou per cancel·lar",
"openButton": "Obre",
"notificationTitle": "ReVanced Manager està aplicant pedaços",
"notificationText": "Toqui per tornar a l'instal·lador",
"exportApkButtonTooltip": "Exportar APK modificat",
"exportLogButtonTooltip": "Exportar registre",
"screenshotDetected": "S'ha detectat una captura de pantalla. Si intenteu compartir el registre, compartiu una còpia de text en lloc d'això.\n\nCopiar registre al porta-retalls?",
"copiedToClipboard": "S'ha copiat el registre al porta-retalls",
"noExit": "L'instal·lador està en funcionament, no es pot sortir..."
},
"settingsView": {
"widgetTitle": "Configuració",
"appearanceSectionTitle": "Aparença",
"teamSectionTitle": "Equip",
"debugSectionTitle": "Depuració",
"advancedSectionTitle": "Avançat",
"exportSectionTitle": "Importar i exportar",
"dataSectionTitle": "Fonts de dades",
"themeModeLabel": "Tema de l'aplicació",
"systemThemeLabel": "Sistema",
"lightThemeLabel": "Clar",
"darkThemeLabel": "Fosc",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Gaudeixi d'una experiència més acord al seu dispositiu",
"languageLabel": "Llengua",
"languageUpdated": "Idioma actualitzat",
"sourcesLabel": "Fonts alternatives",
"sourcesLabelHint": "Configureu les fonts alternatives per a ReVanced Patches",
"useAlternativeSources": "Utilitza fonts alternatives",
"useAlternativeSourcesHint": "Utilitza fonts alternatives per a ReVanced Patches en lloc de l'API",
"sourcesResetDialogTitle": "Restablir",
"sourcesResetDialogText": "Esteu segur que voleu restablir les vostres fonts als seus valors per defecte?",
"apiURLResetDialogText": "Esteu segur que voleu restablir la vostra URL d'API al seu valor per defecte?",
"sourcesUpdateNote": "Nota: Això descarregarà automàticament ReVanced Patches de les fonts alternatives.\n\nAixò us connectarà a la font alternativa.",
"apiURLLabel": "Direcció URL de la API",
"apiURLHint": "Configureu l'URL de l'API de ReVanced Manager",
"selectApiURL": "URL de l'API",
"orgPatchesLabel": "Organització dels pedaços",
"sourcesPatchesLabel": "Font dels pedaços",
"contributorsLabel": "Col·laboradors",
"contributorsHint": "Una llista de col·laboradors de ReVanced",
"logsLabel": "Comparteix registres",
"logsHint": "Comparteix els registres del ReVanced Manager",
"enablePatchesSelectionLabel": "Permetre canviar la selecció de pegats",
"enablePatchesSelectionHint": "No impedir la selecció o la deselecció de pegats",
"enablePatchesSelectionWarningText": "Canviar la selecció de pegats pot provocar problemes inesperats.\n\nActivar de totes maneres?",
"disablePatchesSelectionWarningText": "Estàs a punt de desactivar el canvi de la selecció de pegats.\nLa selecció per defecte de pegats es restaurarà.\n\nDesactivar de totes maneres?",
"autoUpdatePatchesLabel": "Actualització automàtica de pegats",
"autoUpdatePatchesHint": "Actualitza els pegats a la versió més recent automàticament",
"showUpdateDialogLabel": "Mostra el diàleg d'actualització",
"showUpdateDialogHint": "Mostra un diàleg quan hi hagi una nova actualització disponible",
"universalPatchesLabel": "Mostrar pegats universals",
"universalPatchesHint": "Mostra totes les aplicacions i els pegats universals (pot alentir la llista d'aplicacions)",
"lastPatchedAppLabel": "Desa l'aplicació parchejada",
"lastPatchedAppHint": "Desa l'últim parche per a instal·lar o exportar més tard",
"versionCompatibilityCheckLabel": "Comprovació de la compatibilitat de la versió",
"versionCompatibilityCheckHint": "Evita la selecció de pegats que no siguin compatibles amb la versió de l'aplicació seleccionada",
"requireSuggestedAppVersionLabel": "Requerir la versió de l'aplicació suggerida",
"requireSuggestedAppVersionHint": "Evita la selecció d'una aplicació amb una versió que no sigui la suggerida",
"requireSuggestedAppVersionDialogText": "Seleccionar una aplicació que no sigui la versió suggerida pot provocar problemes inesperats.\n\nVoleu continuar de totes maneres?",
"aboutLabel": "Quant a",
"snackbarMessage": "S'ha copiat al porta-retalls",
"restartAppForChanges": "Reinicieu l'aplicació per a aplicar els canvis",
"deleteTempDirLabel": "Esborrar arxius temporals",
"deleteTempDirHint": "Suprimeix els fitxers temporals no utilitzats",
"deletedTempDir": "Arxius temporals eliminats",
"exportSettingsLabel": "Exporta la configuració",
"exportSettingsHint": "Exporta la configuració a un fitxer JSON",
"exportedSettings": "Configuració exportada",
"importSettingsLabel": "Importa la configuració",
"importSettingsHint": "Importa la configuració des d'un fitxer JSON",
"importedSettings": "Configuració importada",
"exportPatchesLabel": "Exportar selecció de pegats",
"exportPatchesHint": "Exporta la selecció de pegats a un fitxer JSON",
"exportedPatches": "Selecció de pegats exportada",
"noExportFileFound": "No hi ha cap selecció de pegats per exportar",
"importPatchesLabel": "Importar selecció de pegats",
"importPatchesHint": "Importa la selecció de pegats d'un fitxer JSON",
"importedPatches": "Selecció de pegats importada",
"resetStoredPatchesLabel": "Restablir la selecció de pegats",
"resetStoredPatchesHint": "Restablir la selecció de pegats emmagatzemada",
"resetStoredPatchesDialogTitle": "Restablir la selecció de pegats?",
"resetStoredPatchesDialogText": "La selecció per defecte de pegats es restaurarà.",
"resetStoredPatches": "La selecció de pegats s'ha restablert",
"resetStoredOptionsLabel": "Restablir les opcions de pegats",
"resetStoredOptionsHint": "Restablir totes les opcions de pegats",
"resetStoredOptionsDialogTitle": "Restablir les opcions de pegats?",
"resetStoredOptionsDialogText": "Restablir les opcions de pegats eliminarà totes les opcions desades.",
"resetStoredOptions": "Les opcions s'han restablert",
"deleteLogsLabel": "Netejar els registres",
"deleteLogsHint": "Suprimir els registres recopilats del ReVanced Manager",
"deletedLogs": "Registres suprimits",
"regenerateKeystoreLabel": "Regenerar magatzem de claus",
"regenerateKeystoreHint": "Regenerar el magatzem de claus que s'utilitza per signar aplicacions",
"regenerateKeystoreDialogTitle": "Regenerar magatzem de claus?",
"regenerateKeystoreDialogText": "Les aplicacions modificades signades amb el magatzem de claus antic ja no es podran actualitzar.",
"regeneratedKeystore": "Magatzem de claus regenerat",
"exportKeystoreLabel": "Exportar magatzem de claus",
"exportKeystoreHint": "Exporta el magatzem de claus que s'utilitza per signar aplicacions",
"exportedKeystore": "Magatzem de claus exportat",
"noKeystoreExportFileFound": "No hi ha cap magatzem de claus per exportar",
"importKeystoreLabel": "Importar magatzem de claus",
"importKeystoreHint": "Importa un magatzem de claus que s'utilitza per signar aplicacions",
"importedKeystore": "Magatzem de claus importat",
"selectKeystorePassword": "Contrasenya del magatzem de claus",
"selectKeystorePasswordHint": "Selecciona la contrasenya del magatzem de claus que s'utilitza per signar aplicacions",
"jsonSelectorErrorMessage": "No es pot utilitzar el fitxer JSON seleccionat",
"keystoreSelectorErrorMessage": "No es pot utilitzar el fitxer del magatzem de claus seleccionat"
},
"appInfoView": {
"widgetTitle": "Informació de l'aplicació",
"openButton": "Obre",
"installButton": "Instal·la",
"uninstallButton": "Desinstal·la",
"unmountButton": "Desmuntar",
"exportButton": "Exporta",
"deleteButton": "Suprimeix",
"rootDialogTitle": "Error",
"lastPatchedAppDescription": "Aquesta és una còpia de seguretat de l'aplicació que es va parchejar per última vegada.",
"unmountDialogText": "Esteu segur que voleu desmuntar aquesta aplicació?",
"uninstallDialogText": "Esteu segur que voleu desinstal·lar aquesta aplicació?",
"rootDialogText": "L'aplicació s'ha instal·lat amb permisos de superusuari, però actualment ReVanced Manager no té cap permís.\nSi us plau, concediu primer permisos de superusuari.",
"removeAppDialogTitle": "Suprimeix l'aplicació?",
"removeAppDialogText": "Estàs segur que vols suprimir aquesta còpia de seguretat?",
"packageNameLabel": "Nom del paquet",
"installTypeLabel": "Tipus d'instal·lació",
"mountTypeLabel": "Muntar",
"regularTypeLabel": "Regular",
"patchedDateLabel": "Data pedaçada",
"appliedPatchesLabel": "Pedaços aplicats",
"sizeLabel": "Mida del fitxer",
"patchedDateHint": "${date} a les ${time}",
"appliedPatchesHint": "${quantity} pedaços aplicats",
"updateNotImplemented": "Aquesta funció encara no s'ha implementat"
},
"contributorsView": {
"widgetTitle": "Col·laboradors"
},
"installErrorDialog": {
"mount_version_mismatch": "Desacord de versions",
"mount_no_root": "Sense accés root",
"mount_missing_installation": "Instal·lació no trobada",
"status_failure_blocked": "Instal·lació bloquejada",
"install_failed_verification_failure": "Verificació fallida",
"status_failure_invalid": "Instal·lació no vàlida",
"install_failed_version_downgrade": "No es pot degradar",
"status_failure_conflict": "Conflicte d'instal·lació",
"status_failure_storage": "Problema d'emmagatzematge d'instal·lació",
"status_failure_incompatible": "Instal·lació incompatible",
"status_failure_timeout": "Temps d'espera de l'instal·lació excedit",
"status_unknown": "Instal·lació fallida",
"mount_version_mismatch_description": "La instal·lació ha fallat perquè l'aplicació instal·lada és una versió diferent de l'aplicació modificada.\n\nInstal·la la versió de l'aplicació que estàs muntant i torna-ho a provar.",
"mount_no_root_description": "La instal·lació ha fallat perquè no s'ha concedit accés root.\n\nConcedeix accés root al ReVanced Manager i torna-ho a provar.",
"mount_missing_installation_description": "La instal·lació ha fallat perquè l'aplicació no modificada no està instal·lada en aquest dispositiu per a muntar-la.\n\nInstal·la l'aplicació no modificada abans de muntar-la i torna-ho a provar.",
"status_failure_timeout_description": "La instal·lació ha trigat massa temps a finalitzar.\n\nVoleu tornar-ho a provar?",
"status_failure_storage_description": "La instal·lació ha fallat a causa d'emmagatzematge insuficient.\n\nAllibera espai i torna-ho a provar.",
"status_failure_invalid_description": "La instal·lació ha fallat perquè l'aplicació modificada no és vàlida.\n\nDesinstal·lar l'aplicació i tornar-ho a provar?",
"status_failure_incompatible_description": "L'aplicació no és compatible amb aquest dispositiu.\n\nUtilitza un APK que sigui compatible amb aquest dispositiu i torna a intentar-ho.",
"status_failure_conflict_description": "La instal·lació ha estat impedida per una instal·lació existent de l'aplicació.\n\nDesinstal·lar l'aplicació instal·lada i tornar-ho a provar?",
"status_failure_blocked_description": "La instal·lació ha estat bloquejada per ${packageName}.\n\nAjusta la teva configuració de seguretat i torna-ho a provar.",
"install_failed_verification_failure_description": "La instal·lació ha fallat a causa d'un problema de verificació.\n\nAjusta la teva configuració de seguretat i torna-ho a provar.",
"install_failed_version_downgrade_description": "La instal·lació ha fallat perquè l'aplicació modificada és una versió inferior a l'aplicació instal·lada.\n\nDesinstal·lar l'aplicació i tornar-ho a provar?",
"status_unknown_description": "La instal·lació ha fallat per un motiu desconegut. Torna-ho a provar."
}
}

View File

@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "Chystáte se zakázat změnu výběru záplat.\nVýchozí výběr záplatů bude obnoven.\n\npřesto zakázat?", "disablePatchesSelectionWarningText": "Chystáte se zakázat změnu výběru záplat.\nVýchozí výběr záplatů bude obnoven.\n\npřesto zakázat?",
"autoUpdatePatchesLabel": "Automaticky aktualizovat záplaty", "autoUpdatePatchesLabel": "Automaticky aktualizovat záplaty",
"autoUpdatePatchesHint": "Automaticky aktualizovat záplaty na nejnovější verzi", "autoUpdatePatchesHint": "Automaticky aktualizovat záplaty na nejnovější verzi",
"usePrereleasesLabel": "Používat předběžné verze",
"usePrereleasesHint": "Používat předběžné verze ReVanced Manageru a ReVanced Patches",
"usePrereleasesWarningText": "Používání předběžných verzí může způsobit neočekávané problémy. Povolit i přesto?",
"showUpdateDialogLabel": "Zobrazit dialogové okno aktualizace", "showUpdateDialogLabel": "Zobrazit dialogové okno aktualizace",
"showUpdateDialogHint": "Zobrazit dialogové okno, když je dostupná nová aktualizace", "showUpdateDialogHint": "Zobrazit dialogové okno, když je dostupná nová aktualizace",
"universalPatchesLabel": "Zobrazit univerzální záplaty", "universalPatchesLabel": "Zobrazit univerzální záplaty",

View File

@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "Du er ved at deaktivere ændring af valg af patches.\nStandard valg af patches vil blive gendannet.\n\nDeaktiver alligevel?", "disablePatchesSelectionWarningText": "Du er ved at deaktivere ændring af valg af patches.\nStandard valg af patches vil blive gendannet.\n\nDeaktiver alligevel?",
"autoUpdatePatchesLabel": "Opdatér patches automatisk", "autoUpdatePatchesLabel": "Opdatér patches automatisk",
"autoUpdatePatchesHint": "Opdater automatisk patches til den seneste version", "autoUpdatePatchesHint": "Opdater automatisk patches til den seneste version",
"usePrereleasesLabel": "Brug præudgivelser",
"usePrereleasesHint": "Brug præudgivelsesversioner af ReVanced Manager og ReVanced Patches",
"usePrereleasesWarningText": "Brug af forhåndsvisningsversioner kan forårsage uventede problemer.Aktiver alligevel?",
"showUpdateDialogLabel": "Vis opdateringsdialog", "showUpdateDialogLabel": "Vis opdateringsdialog",
"showUpdateDialogHint": "Vis en dialog når en ny opdatering er tilgængelig", "showUpdateDialogHint": "Vis en dialog når en ny opdatering er tilgængelig",
"universalPatchesLabel": "Vis universelle patches", "universalPatchesLabel": "Vis universelle patches",

View File

@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "Sie sind im Begriff, die Auswahl der Patches zu deaktivieren.\nDie Standardauswahl der Patches wird wiederhergestellt.\n\nTrotzdem deaktivieren?", "disablePatchesSelectionWarningText": "Sie sind im Begriff, die Auswahl der Patches zu deaktivieren.\nDie Standardauswahl der Patches wird wiederhergestellt.\n\nTrotzdem deaktivieren?",
"autoUpdatePatchesLabel": "Patches automatisch aktualisieren", "autoUpdatePatchesLabel": "Patches automatisch aktualisieren",
"autoUpdatePatchesHint": "Patches automatisch auf die neueste Version aktualisieren", "autoUpdatePatchesHint": "Patches automatisch auf die neueste Version aktualisieren",
"usePrereleasesLabel": "Vorabversionen verwenden",
"usePrereleasesHint": "Vorabversionen von ReVanced Manager und ReVanced Patches verwenden",
"usePrereleasesWarningText": "Die Verwendung von Vorabversionen kann zu unerwarteten Problemen führen.\n\nTrotzdem aktivieren?",
"showUpdateDialogLabel": "Update-Dialog anzeigen", "showUpdateDialogLabel": "Update-Dialog anzeigen",
"showUpdateDialogHint": "Dialog anzeigen, wenn ein neues Update verfügbar ist", "showUpdateDialogHint": "Dialog anzeigen, wenn ein neues Update verfügbar ist",
"universalPatchesLabel": "Universelle Patches zeigen", "universalPatchesLabel": "Universelle Patches zeigen",

View File

@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "Πρόκειται να απενεργοποιήσετε τη δυνατότητα αλλαγής των επιλογών τροποποιήσεων.\nΟι προεπιλεγμένες επιλογές τροποποιήσεων θα επαναφερθούν.\n\nΑπενεργοποίηση παρόλα αυτά;", "disablePatchesSelectionWarningText": "Πρόκειται να απενεργοποιήσετε τη δυνατότητα αλλαγής των επιλογών τροποποιήσεων.\nΟι προεπιλεγμένες επιλογές τροποποιήσεων θα επαναφερθούν.\n\nΑπενεργοποίηση παρόλα αυτά;",
"autoUpdatePatchesLabel": "Αυτόματες ενημερώσεις τροποποιήσεων", "autoUpdatePatchesLabel": "Αυτόματες ενημερώσεις τροποποιήσεων",
"autoUpdatePatchesHint": "Αυτόματη ενημέρωση τροποποιήσεων στην τελευταία έκδοση", "autoUpdatePatchesHint": "Αυτόματη ενημέρωση τροποποιήσεων στην τελευταία έκδοση",
"usePrereleasesLabel": "Χρήση πρώιμων εκδόσεων",
"usePrereleasesHint": "Χρήση πρώιμων εκδόσεων του ReVanced Manager και των τροποποιήσεων ReVanced",
"usePrereleasesWarningText": "Η χρήση πρώιμων εκδόσεων μπορεί να προκαλέσει απρόβλεπτα προβλήματα.\\n\\nΕνεργοποίηση ούτως ή άλλως;",
"showUpdateDialogLabel": "Εμφάνιση προτροπής για ενημερώσεις", "showUpdateDialogLabel": "Εμφάνιση προτροπής για ενημερώσεις",
"showUpdateDialogHint": "Εμφάνιση ειδοποίησης όταν είναι διαθέσιμη κάποια νέα ενημέρωση", "showUpdateDialogHint": "Εμφάνιση ειδοποίησης όταν είναι διαθέσιμη κάποια νέα ενημέρωση",
"universalPatchesLabel": "Εμφάνιση γενικευμένων τροποποιήσεων", "universalPatchesLabel": "Εμφάνιση γενικευμένων τροποποιήσεων",

View File

@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "You are about to disable changing the selection of patches.\nThe default selection of patches will be restored.\n\nDisable anyways?", "disablePatchesSelectionWarningText": "You are about to disable changing the selection of patches.\nThe default selection of patches will be restored.\n\nDisable anyways?",
"autoUpdatePatchesLabel": "Auto update patches", "autoUpdatePatchesLabel": "Auto update patches",
"autoUpdatePatchesHint": "Automatically update patches to the latest version", "autoUpdatePatchesHint": "Automatically update patches to the latest version",
"usePrereleasesLabel": "Use pre-releases",
"usePrereleasesHint": "Use pre-release versions of ReVanced Manager and ReVanced Patches",
"usePrereleasesWarningText": "Using pre-release versions may cause unexpected issues.\n\nEnable anyways?",
"showUpdateDialogLabel": "Show update dialog", "showUpdateDialogLabel": "Show update dialog",
"showUpdateDialogHint": "Show a dialog when a new update is available", "showUpdateDialogHint": "Show a dialog when a new update is available",
"universalPatchesLabel": "Show universal patches", "universalPatchesLabel": "Show universal patches",

View File

@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "Estás a punto de desactivar cambiar la selección de parches.\nLa selección predeterminada de parches se restaurará.\n\n¿Deshabilitar de todos modos?", "disablePatchesSelectionWarningText": "Estás a punto de desactivar cambiar la selección de parches.\nLa selección predeterminada de parches se restaurará.\n\n¿Deshabilitar de todos modos?",
"autoUpdatePatchesLabel": "Actualizar automáticamente los parches", "autoUpdatePatchesLabel": "Actualizar automáticamente los parches",
"autoUpdatePatchesHint": "Actualizar automáticamente los parches a la última versión", "autoUpdatePatchesHint": "Actualizar automáticamente los parches a la última versión",
"usePrereleasesLabel": "Usar versiones preliminares",
"usePrereleasesHint": "Usar versiones preliminares de ReVanced Manager y ReVanced Patches",
"usePrereleasesWarningText": "El uso de versiones preliminares puede causar problemas inesperados.\\n\\n¿Habilitar de todas formas?",
"showUpdateDialogLabel": "Mostrar diálogo de actualización", "showUpdateDialogLabel": "Mostrar diálogo de actualización",
"showUpdateDialogHint": "Mostrar un diálogo cuando una nueva actualización esté disponible", "showUpdateDialogHint": "Mostrar un diálogo cuando una nueva actualización esté disponible",
"universalPatchesLabel": "Mostrar parches universales", "universalPatchesLabel": "Mostrar parches universales",

View File

@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "Te olete peaaegu keelamas paranduste valiku muutmise.\nParanduste vaikimisi valik taastatakse.\n\nKas keelate ikkagi?", "disablePatchesSelectionWarningText": "Te olete peaaegu keelamas paranduste valiku muutmise.\nParanduste vaikimisi valik taastatakse.\n\nKas keelate ikkagi?",
"autoUpdatePatchesLabel": "Automaatne paranduste uuendamine", "autoUpdatePatchesLabel": "Automaatne paranduste uuendamine",
"autoUpdatePatchesHint": "Uuenda parandused automaatselt uusimasse versiooni", "autoUpdatePatchesHint": "Uuenda parandused automaatselt uusimasse versiooni",
"usePrereleasesLabel": "Kasuta eelväljaandeid",
"usePrereleasesHint": "Kasuta ReVanced Manageri ja ReVancedi plaastrite eelversioone",
"usePrereleasesWarningText": "Eelväljaannete kasutamine võib põhjustada ootamatuid probleeme.\n\nLubada ikkagi?",
"showUpdateDialogLabel": "Näita uuenduse dialoogi", "showUpdateDialogLabel": "Näita uuenduse dialoogi",
"showUpdateDialogHint": "Näita dialoogi, kui on saadaval uus uuendus", "showUpdateDialogHint": "Näita dialoogi, kui on saadaval uus uuendus",
"universalPatchesLabel": "Näita universaalseid parandusi", "universalPatchesLabel": "Näita universaalseid parandusi",

View File

@ -104,7 +104,7 @@
"setRequiredOption": "Joillekin paikkauksille on määritettävä asetuksia:\n\n${patches}\n\nMääritä ne ennen kuin jatkat." "setRequiredOption": "Joillekin paikkauksille on määritettävä asetuksia:\n\n${patches}\n\nMääritä ne ennen kuin jatkat."
}, },
"patchOptionsView": { "patchOptionsView": {
"customValue": "Oma arvo", "customValue": "Mukautettu arvo",
"setToNull": "Aseta nollaksi", "setToNull": "Aseta nollaksi",
"nullValue": "Tämän asetuksen arvo on tällä hetkellä tyhjä", "nullValue": "Tämän asetuksen arvo on tällä hetkellä tyhjä",
"viewTitle": "Paikkausasetukset", "viewTitle": "Paikkausasetukset",
@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "Olet poistamassa paikkausvalikoiman muokkauksen käytöstä.\nOletusarvoiset paikkasvalikoimat palautetaan.\n\nEstetäänkö se silti?", "disablePatchesSelectionWarningText": "Olet poistamassa paikkausvalikoiman muokkauksen käytöstä.\nOletusarvoiset paikkasvalikoimat palautetaan.\n\nEstetäänkö se silti?",
"autoUpdatePatchesLabel": "Päivitä paikkaukset automaattisesti", "autoUpdatePatchesLabel": "Päivitä paikkaukset automaattisesti",
"autoUpdatePatchesHint": "Päivitä paikkaukset automaattisesti uusimpiin versioihin", "autoUpdatePatchesHint": "Päivitä paikkaukset automaattisesti uusimpiin versioihin",
"usePrereleasesLabel": "Käytä ennakkoversioita",
"usePrereleasesHint": "Käytä ReVanced Managerin ja ReVanced Patchesin ennakkoversioita",
"usePrereleasesWarningText": "Ennakkoversioiden käyttö voi aiheuttaa odottamattomia ongelmia.\n\nOtetaanko silti käyttöön?",
"showUpdateDialogLabel": "Näytä päivitysruutu", "showUpdateDialogLabel": "Näytä päivitysruutu",
"showUpdateDialogHint": "Näytä ilmoitus, kun uusi päivitys on saatavilla", "showUpdateDialogHint": "Näytä ilmoitus, kun uusi päivitys on saatavilla",
"universalPatchesLabel": "Näytä yleispaikkaukset", "universalPatchesLabel": "Näytä yleispaikkaukset",

View File

@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "Ikaw ay malapit nang magdisable sa pagpalit ng mga pinili na patches.\nDahil dyan, ang karaniwang pagpili ng mga patch ay maibalik.\n\nI-disable pa rin?", "disablePatchesSelectionWarningText": "Ikaw ay malapit nang magdisable sa pagpalit ng mga pinili na patches.\nDahil dyan, ang karaniwang pagpili ng mga patch ay maibalik.\n\nI-disable pa rin?",
"autoUpdatePatchesLabel": "Auto update patches", "autoUpdatePatchesLabel": "Auto update patches",
"autoUpdatePatchesHint": "Awtomatikong i-update ang mga patch sa pinakabagong bersyon", "autoUpdatePatchesHint": "Awtomatikong i-update ang mga patch sa pinakabagong bersyon",
"usePrereleasesLabel": "Gamitin ang mga pre-release",
"usePrereleasesHint": "Gamitin ang mga pre-release na bersyon ng ReVanced Manager at ReVanced Patches",
"usePrereleasesWarningText": "Ang paggamit ng mga pre-release na bersyon ay maaaring magdulot ng hindi inaasahang isyu.\\n\\nPaganahin pa rin?",
"showUpdateDialogLabel": "Ipakita ang dialog ng update", "showUpdateDialogLabel": "Ipakita ang dialog ng update",
"showUpdateDialogHint": "Ipakita ang isang dialog kapag magagamit ang isang bagong update", "showUpdateDialogHint": "Ipakita ang isang dialog kapag magagamit ang isang bagong update",
"universalPatchesLabel": "Ipakita ang mga pangkalahatang patch", "universalPatchesLabel": "Ipakita ang mga pangkalahatang patch",

View File

@ -137,7 +137,7 @@
"notificationText": "Appuyez pour revenir à l'installation", "notificationText": "Appuyez pour revenir à l'installation",
"exportApkButtonTooltip": "Exporter l'APK patché", "exportApkButtonTooltip": "Exporter l'APK patché",
"exportLogButtonTooltip": "Exporter le journal", "exportLogButtonTooltip": "Exporter le journal",
"screenshotDetected": "Une capture décran a été détectée. Si vous essayez de partager le log, veuillez plutôt partager une copie du texte.\n\nCopier les logs dans le presse-papiers ?", "screenshotDetected": "Une capture décran a été détectée. Si vous essayez de partager le journal, veuillez plutôt partager une copie textuelle.\n\nCopier le journal dans le presse-papiers ?",
"copiedToClipboard": "Journal copié dans le presse-papiers", "copiedToClipboard": "Journal copié dans le presse-papiers",
"noExit": "L'installateur s'exécute encore, impossible de quitter..." "noExit": "L'installateur s'exécute encore, impossible de quitter..."
}, },
@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "Vous êtes sur le point de désactiver la modification de la sélection de patchs.\nLa sélection de patchs par défaut sera rétablie.\n\nDésactiver quand même ?", "disablePatchesSelectionWarningText": "Vous êtes sur le point de désactiver la modification de la sélection de patchs.\nLa sélection de patchs par défaut sera rétablie.\n\nDésactiver quand même ?",
"autoUpdatePatchesLabel": "Mise à jour auto. des patchs", "autoUpdatePatchesLabel": "Mise à jour auto. des patchs",
"autoUpdatePatchesHint": "Mettre à jour automatiquement les patchs vers la dernière version", "autoUpdatePatchesHint": "Mettre à jour automatiquement les patchs vers la dernière version",
"usePrereleasesLabel": "Utiliser les préversions",
"usePrereleasesHint": "Utilisez les versions préliminaires de ReVanced Manager et ReVanced Patches",
"usePrereleasesWarningText": "L'utilisation de versions préliminaires est susceptible d'engendrer des problèmes inattendus.\n\nActiver quand même ?",
"showUpdateDialogLabel": "Afficher la boîte de dialogue de mise à jour", "showUpdateDialogLabel": "Afficher la boîte de dialogue de mise à jour",
"showUpdateDialogHint": "Afficher une boîte de dialogue lorsqu'une nouvelle mise à jour est disponible", "showUpdateDialogHint": "Afficher une boîte de dialogue lorsqu'une nouvelle mise à jour est disponible",
"universalPatchesLabel": "Afficher les patchs universels", "universalPatchesLabel": "Afficher les patchs universels",

View File

@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "Tá tú ar tí roghnú paistí a athrú a dhíchumasú.\nCuirfear an rogha réamhshocraithe paistí ar ais.\n\nDíchumasú ar aon chaoi?", "disablePatchesSelectionWarningText": "Tá tú ar tí roghnú paistí a athrú a dhíchumasú.\nCuirfear an rogha réamhshocraithe paistí ar ais.\n\nDíchumasú ar aon chaoi?",
"autoUpdatePatchesLabel": "Paistí nuashonruithe uathoibríoch", "autoUpdatePatchesLabel": "Paistí nuashonruithe uathoibríoch",
"autoUpdatePatchesHint": "Nuashonraigh go huathoibríoch paistí go dtí an leagan is déanaí", "autoUpdatePatchesHint": "Nuashonraigh go huathoibríoch paistí go dtí an leagan is déanaí",
"usePrereleasesLabel": "Úsáid réamheisiúintí",
"usePrereleasesHint": "Úsáid leaganacha réamheisiúna de ReVanced Manager agus ReVanced Patches",
"usePrereleasesWarningText": "D'fhéadfadh leaganacha réamheisiúna a úsáid a bheith ina chúis le fadhbanna gan choinne.Cumasaigh ar aon nós?",
"showUpdateDialogLabel": "Taispeáin dialóg nuashonrú", "showUpdateDialogLabel": "Taispeáin dialóg nuashonrú",
"showUpdateDialogHint": "Taispeáin dialóg nuair a bhíonn nuashonrú nua ar fáil", "showUpdateDialogHint": "Taispeáin dialóg nuair a bhíonn nuashonrú nua ar fáil",
"universalPatchesLabel": "Taispeáin paistí uilíocha", "universalPatchesLabel": "Taispeáin paistí uilíocha",

View File

@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "אתה עומד לכבות את שינוי בחירת התיקונים.\nהבחירה ברירת המחדל של התיקונים תשוחזר.\n\nלכבות בכל מקרה?", "disablePatchesSelectionWarningText": "אתה עומד לכבות את שינוי בחירת התיקונים.\nהבחירה ברירת המחדל של התיקונים תשוחזר.\n\nלכבות בכל מקרה?",
"autoUpdatePatchesLabel": "עדכון תיקונים באופן אוטומטי", "autoUpdatePatchesLabel": "עדכון תיקונים באופן אוטומטי",
"autoUpdatePatchesHint": "עדכן אוטומטית את התיקונים לגרסה העדכנית ביותר", "autoUpdatePatchesHint": "עדכן אוטומטית את התיקונים לגרסה העדכנית ביותר",
"usePrereleasesLabel": "השתמש בגרסאות קדם-שחרור",
"usePrereleasesHint": "השתמש בגרסאות קדם-שחרור של ReVanced Manager ושל ReVanced Patches",
"usePrereleasesWarningText": "שימוש בגרסאות קדם-הפצה עלול לגרום לבעיות בלתי צפויות.\n\nלאפשר בכל זאת?",
"showUpdateDialogLabel": "הצג תיבת עדכון", "showUpdateDialogLabel": "הצג תיבת עדכון",
"showUpdateDialogHint": "הצג תיבת דו-שיח כאשר עדכון חדש זמין", "showUpdateDialogHint": "הצג תיבת דו-שיח כאשר עדכון חדש זמין",
"universalPatchesLabel": "הצג תיקונים אוניברסליים", "universalPatchesLabel": "הצג תיקונים אוניברסליים",

View File

@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "Arra készül, hogy letiltja a patchek kijelölésének módosítását.\nA patchek alapértelmezett kijelölése visszaáll.\n\nMindenképpen letiltja?", "disablePatchesSelectionWarningText": "Arra készül, hogy letiltja a patchek kijelölésének módosítását.\nA patchek alapértelmezett kijelölése visszaáll.\n\nMindenképpen letiltja?",
"autoUpdatePatchesLabel": "Patchek automatikus frissítése", "autoUpdatePatchesLabel": "Patchek automatikus frissítése",
"autoUpdatePatchesHint": "A patchek automatikus frissítése a legújabb verzióra", "autoUpdatePatchesHint": "A patchek automatikus frissítése a legújabb verzióra",
"usePrereleasesLabel": "Előzetes kiadások használata",
"usePrereleasesHint": "Használja a ReVanced Manager és ReVanced Patches előzetes verzióit",
"usePrereleasesWarningText": "Előzetes verziók használata váratlan problémákat okozhat.\n\nEngedélyezi így is?",
"showUpdateDialogLabel": "Frissítési panel megjelenítése", "showUpdateDialogLabel": "Frissítési panel megjelenítése",
"showUpdateDialogHint": "Panel megjelenítése, ha új frissítés érhető el", "showUpdateDialogHint": "Panel megjelenítése, ha új frissítés érhető el",
"universalPatchesLabel": "Univerzális patchek megjelenítése", "universalPatchesLabel": "Univerzális patchek megjelenítése",

View File

@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "Ոն թոչնաբ լրասուառ վորուսուն սնւսնայուելցով.\nնաչսուառսոն րավուկուտուասոր գոտաղնայուոան դոյնոօուն ռայուաստոնւտոր ձնայուարոյունելցով.\n\nնաչստո դուոանիյոյուն?", "disablePatchesSelectionWarningText": "Ոն թոչնաբ լրասուառ վորուսուն սնւսնայուելցով.\nնաչսուառսոն րավուկուտուասոր գոտաղնայուոան դոյնոօուն ռայուաստոնւտոր ձնայուարոյունելցով.\n\nնաչստո դուոանիյոյուն?",
"autoUpdatePatchesLabel": "Ավտոմատ վերանորոգել փաթչերը", "autoUpdatePatchesLabel": "Ավտոմատ վերանորոգել փաթչերը",
"autoUpdatePatchesHint": "Ավտոմատ ձևով վերանորոգել փաթչերը մինչև վերջին տարբերակը", "autoUpdatePatchesHint": "Ավտոմատ ձևով վերանորոգել փաթչերը մինչև վերջին տարբերակը",
"usePrereleasesLabel": "Օգտագործել նախաթողարկումներ",
"usePrereleasesHint": "Օգտագործել ReVanced Manager-ի և ReVanced Patches-ի նախաթողարկման տարբերակները",
"usePrereleasesWarningText": "Նախնական թողարկման տարբերակների օգտագործումը կարող է անսպասելի խնդիրներ առաջացնել։\n\nՄիևնույն է, միացնե՞լ։",
"showUpdateDialogLabel": "Ցույց տալ թարմացման երկխոսություն", "showUpdateDialogLabel": "Ցույց տալ թարմացման երկխոսություն",
"showUpdateDialogHint": "Ցույց տալ երկխոսություն, երբ նոր թարմացում է հասանելի", "showUpdateDialogHint": "Ցույց տալ երկխոսություն, երբ նոր թարմացում է հասանելի",
"universalPatchesLabel": "Ընդհանուր փոփոխումներ ցուցադրել", "universalPatchesLabel": "Ընդհանուր փոփոխումներ ցուցադրել",

View File

@ -26,7 +26,7 @@
"lastPatchedAppSubtitle": "Aplikasi terakhir ditambal", "lastPatchedAppSubtitle": "Aplikasi terakhir ditambal",
"patchedSubtitle": "Aplikasi terpasang", "patchedSubtitle": "Aplikasi terpasang",
"changeLaterSubtitle": "Anda dapat mengubahnya di pengaturan nanti.", "changeLaterSubtitle": "Anda dapat mengubahnya di pengaturan nanti.",
"noSavedAppFound": "App tidak ditemukan", "noSavedAppFound": "Aplikasi tidak ditemukan",
"noInstallations": "Aplikasi tertambal tidak terpasang", "noInstallations": "Aplikasi tertambal tidak terpasang",
"installUpdate": "Lanjut mengunduh pembaruan?", "installUpdate": "Lanjut mengunduh pembaruan?",
"updateSheetTitle": "Perbarui ReVanced Manager", "updateSheetTitle": "Perbarui ReVanced Manager",
@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "Anda akan menonaktifkan pengubahan pilihan tambalan.\nPilihan tambalan bawaan akan dikembalikan.\n\nTetap nonaktifkan?", "disablePatchesSelectionWarningText": "Anda akan menonaktifkan pengubahan pilihan tambalan.\nPilihan tambalan bawaan akan dikembalikan.\n\nTetap nonaktifkan?",
"autoUpdatePatchesLabel": "Otomatis perbarui tambalan", "autoUpdatePatchesLabel": "Otomatis perbarui tambalan",
"autoUpdatePatchesHint": "Otomatis perbarui tambalan ke versi terbaru", "autoUpdatePatchesHint": "Otomatis perbarui tambalan ke versi terbaru",
"usePrereleasesLabel": "Gunakan pra-rilis",
"usePrereleasesHint": "Gunakan versi pra-rilis ReVanced Manager dan ReVanced Patches",
"usePrereleasesWarningText": "Menggunakan versi pra-rilis dapat menyebabkan masalah yang tidak terduga.\n\nTetap aktifkan?",
"showUpdateDialogLabel": "Tampilkan dialog pembaruan", "showUpdateDialogLabel": "Tampilkan dialog pembaruan",
"showUpdateDialogHint": "Tampilkan dialog ketika pembaruan tersedia", "showUpdateDialogHint": "Tampilkan dialog ketika pembaruan tersedia",
"universalPatchesLabel": "Tampilkan tambalan universal", "universalPatchesLabel": "Tampilkan tambalan universal",

View File

@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "Stai per disabilitare la modifica della selezione delle patch.\nLa selezione predefinita delle patch sarà ripristinata.\n\nDisabilitare comunque?", "disablePatchesSelectionWarningText": "Stai per disabilitare la modifica della selezione delle patch.\nLa selezione predefinita delle patch sarà ripristinata.\n\nDisabilitare comunque?",
"autoUpdatePatchesLabel": "Aggiornamento automatico delle patch", "autoUpdatePatchesLabel": "Aggiornamento automatico delle patch",
"autoUpdatePatchesHint": "Aggiorna automaticamente le patch all'ultima versione", "autoUpdatePatchesHint": "Aggiorna automaticamente le patch all'ultima versione",
"usePrereleasesLabel": "Usa versioni pre-release",
"usePrereleasesHint": "Usa versioni pre-release di ReVanced Manager e ReVanced Patches",
"usePrereleasesWarningText": "L'utilizzo di versioni pre-release potrebbe causare problemi imprevisti.\\n\\nAbilitare comunque?",
"showUpdateDialogLabel": "Mostra finestra di aggiornamento", "showUpdateDialogLabel": "Mostra finestra di aggiornamento",
"showUpdateDialogHint": "Mostra una finestra di dialogo quando è disponibile un nuovo aggiornamento", "showUpdateDialogHint": "Mostra una finestra di dialogo quando è disponibile un nuovo aggiornamento",
"universalPatchesLabel": "Mostra patch universali", "universalPatchesLabel": "Mostra patch universali",

View File

@ -4,11 +4,11 @@
"dismissButton": "閉じる", "dismissButton": "閉じる",
"quitButton": "終了", "quitButton": "終了",
"updateButton": "更新", "updateButton": "更新",
"suggested": "推奨: ${version}", "suggested": "推奨バージョン: ${version}",
"yesButton": "はい", "yesButton": "はい",
"noButton": "いいえ", "noButton": "いいえ",
"warning": "警告", "warning": "警告",
"notice": "お知らせ", "notice": "注意",
"noShowAgain": "今後表示しない", "noShowAgain": "今後表示しない",
"add": "追加", "add": "追加",
"remove": "削除", "remove": "削除",
@ -27,17 +27,17 @@
"patchedSubtitle": "インストール済みのアプリ", "patchedSubtitle": "インストール済みのアプリ",
"changeLaterSubtitle": "この設定は後から変更できます", "changeLaterSubtitle": "この設定は後から変更できます",
"noSavedAppFound": "アプリが見つかりません", "noSavedAppFound": "アプリが見つかりません",
"noInstallations": "パッチ済みのアプリはインストールされていません", "noInstallations": "パッチを適用したアプリはインストールされていません",
"installUpdate": "更新を適用しますか?", "installUpdate": "更新をインストールしますか?",
"updateSheetTitle": "ReVanced Managerを更新", "updateSheetTitle": "ReVanced Managerを更新",
"updateDialogTitle": "新しいアップデートが利用可能", "updateDialogTitle": "新しいアップデートが利用可能です",
"updatePatchesSheetTitle": "ReVanced Patchesを更新", "updatePatchesSheetTitle": "ReVanced Patchesを更新",
"updateChangelogTitle": "更履歴", "updateChangelogTitle": "更履歴",
"updateDialogText": "${file} の更新が利用可能です。\n現在のバージョン: ${version} ", "updateDialogText": "${file} の更新が利用可能です。\n現在のバージョン: ${version} ",
"downloadConsentDialogTitle": "必要なファイルをダウンロードしますか?", "downloadConsentDialogTitle": "必要なファイルをダウンロードしますか?",
"downloadConsentDialogText": "ReVanced Managerを正常に動作させるためファイルをダウンロードする必要があります。", "downloadConsentDialogText": "ReVanced Managerを正常に動作させるために必要なファイルをダウンロードする必要があります。",
"downloadConsentDialogText2": "${url} に接続します。", "downloadConsentDialogText2": "${url} に接続します。",
"downloadingMessage": "更新データをダウンロードしています...", "downloadingMessage": "更新データをダウンロードしています",
"downloadedMessage": "アップデートのダウンロードが完了しました", "downloadedMessage": "アップデートのダウンロードが完了しました",
"installingMessage": "更新を適用しています...", "installingMessage": "更新を適用しています...",
"errorDownloadMessage": "更新データをダウンロードできませんでした", "errorDownloadMessage": "更新データをダウンロードできませんでした",
@ -74,7 +74,7 @@
}, },
"socialMediaCard": { "socialMediaCard": {
"widgetTitle": "SNS", "widgetTitle": "SNS",
"widgetSubtitle": "私たちはここにいます!" "widgetSubtitle": "私たちはここにいます"
}, },
"appSelectorView": { "appSelectorView": {
"viewTitle": "アプリを選択", "viewTitle": "アプリを選択",
@ -82,10 +82,10 @@
"storageButton": "APKファイルを選択", "storageButton": "APKファイルを選択",
"selectFromStorageButton": "ストレージから選択", "selectFromStorageButton": "ストレージから選択",
"errorMessage": "選択したアプリは使用できません", "errorMessage": "選択したアプリは使用できません",
"downloadToast": "ダウンロード機能は現在開発中です", "downloadToast": "ダウンロード機能はまだ実装されていないため、利用できません",
"requireSuggestedAppVersionDialogText": "選択したアプリのバージョンは推奨バージョンではありません。予期せぬ問題が発生する可能性があります。\n推奨バージョンを選択してください。\n\n選択されたバージョン ${selected}\n推奨バージョン ${suggested}\n\n選択されたバージョンを使用する場合、設定から「推奨バージョンの使用を強制」を無効にしてください。", "requireSuggestedAppVersionDialogText": "選択したアプリのバージョンは推奨バージョンではありません。予期せぬ問題が発生する可能性があります。\n推奨バージョンを選択してください。\n\n選択されたバージョン ${selected}\n推奨バージョン ${suggested}\n\n選択されたバージョンを使用する場合、設定から「推奨バージョンの使用を強制」を無効にしてください。",
"featureNotAvailable": "この機能は未実装です", "featureNotAvailable": "この機能は未実装です",
"featureNotAvailableText": "このアプリは分割APKであり、パッチの適用とインストールにはroot権限でマウントする必要があります。ただし、ストレージから単一APKを選択することでパッチの適用とインストールが可能です。" "featureNotAvailableText": "このアプリは分割APKであり、パッチの適用とインストールにはルート権限でマウントする必要があります。ただし、ストレージから単一APKを選択することでパッチの適用とインストールが可能です。"
}, },
"patchesSelectorView": { "patchesSelectorView": {
"viewTitle": "パッチを選択", "viewTitle": "パッチを選択",
@ -111,8 +111,8 @@
"saveOptions": "保存", "saveOptions": "保存",
"unselectPatch": "パッチの選択を解除", "unselectPatch": "パッチの選択を解除",
"tooltip": "他の入力オプション", "tooltip": "他の入力オプション",
"selectFilePath": "ファイルパスを選択", "selectFilePath": "ファイルパスを選択",
"selectFolder": "フォルダを選択", "selectFolder": "フォルダを選択",
"requiredOption": "このオプションは必須です", "requiredOption": "このオプションは必須です",
"unsupportedOption": "このオプションはサポートされていません", "unsupportedOption": "このオプションはサポートされていません",
"requiredOptionNull": "以下のオプションを設定する必要があります:\n\n${options}" "requiredOptionNull": "以下のオプションを設定する必要があります:\n\n${options}"
@ -130,12 +130,12 @@
"installButton": "インストール", "installButton": "インストール",
"installRootType": "マウント", "installRootType": "マウント",
"installNonRootType": "標準", "installNonRootType": "標準",
"warning": "予期しない問題を避けるため、パッチを適用したアプリの自動更新を無効にします。", "warning": "予期しない問題を避けるため、パッチを適用したアプリの自動更新を無効にすることを推奨します。",
"pressBackAgain": "キャンセルするには、もう一度戻るを押してください", "pressBackAgain": "キャンセルするには、もう一度戻るボタンを押してください",
"openButton": "開く", "openButton": "開く",
"notificationTitle": "ReVanced Manager はパッチを適用しています", "notificationTitle": "ReVanced Managerはパッチを適用しています",
"notificationText": "インストーラーに戻るにはタップしてください", "notificationText": "インストーラーに戻るにはタップしてください",
"exportApkButtonTooltip": "パッチ済みの APK をエクスポート", "exportApkButtonTooltip": "パッチ済みのAPKをエクスポート",
"exportLogButtonTooltip": "ログをエクスポート", "exportLogButtonTooltip": "ログをエクスポート",
"screenshotDetected": "スクリーンショットが検出されました。ログを共有しようとしてる場合は、代わりにテキストをコピーしてください。\n\nクリップボードにログをコピーしますか", "screenshotDetected": "スクリーンショットが検出されました。ログを共有しようとしてる場合は、代わりにテキストをコピーしてください。\n\nクリップボードにログをコピーしますか",
"copiedToClipboard": "ログをクリップボードにコピーしました", "copiedToClipboard": "ログをクリップボードにコピーしました",
@ -147,14 +147,14 @@
"teamSectionTitle": "開発チーム", "teamSectionTitle": "開発チーム",
"debugSectionTitle": "デバッグ", "debugSectionTitle": "デバッグ",
"advancedSectionTitle": "高度な設定", "advancedSectionTitle": "高度な設定",
"exportSectionTitle": "インポートエクスポート", "exportSectionTitle": "インポート/エクスポート",
"dataSectionTitle": "データソース", "dataSectionTitle": "データソース",
"themeModeLabel": "アプリのテーマ", "themeModeLabel": "アプリのテーマ",
"systemThemeLabel": "システム", "systemThemeLabel": "システムの設定に従う",
"lightThemeLabel": "ライト", "lightThemeLabel": "ライト",
"darkThemeLabel": "ダーク", "darkThemeLabel": "ダーク",
"dynamicThemeLabel": "Material You", "dynamicThemeLabel": "Material You",
"dynamicThemeHint": "よりデバイスに近い体験が楽しめます", "dynamicThemeHint": "お使いのデバイスに近い体験をお楽しみください",
"languageLabel": "言語", "languageLabel": "言語",
"languageUpdated": "言語が更新されました", "languageUpdated": "言語が更新されました",
"sourcesLabel": "代替ソース", "sourcesLabel": "代替ソース",
@ -163,31 +163,34 @@
"useAlternativeSourcesHint": "APIの代わりにReVended Patchesの代替ソースを使用します", "useAlternativeSourcesHint": "APIの代わりにReVended Patchesの代替ソースを使用します",
"sourcesResetDialogTitle": "リセット", "sourcesResetDialogTitle": "リセット",
"sourcesResetDialogText": "ソースをデフォルト値にリセットしてもよろしいですか?", "sourcesResetDialogText": "ソースをデフォルト値にリセットしてもよろしいですか?",
"apiURLResetDialogText": "APIURL をデフォルト値にリセットしてもよろしいですか?", "apiURLResetDialogText": "APIURLをデフォルト値にリセットしてもよろしいですか",
"sourcesUpdateNote": "注意: 自動的に代替ソースからReVanced Patchesをダウンロードします。\n\nこれにより、代替ソースに接続されます。", "sourcesUpdateNote": "注意: 自動的に代替ソースからReVanced Patchesをダウンロードします。\n\nこれにより、代替ソースに接続されます。",
"apiURLLabel": "APIURL", "apiURLLabel": "APIURL",
"apiURLHint": "ReVinced ManagerのAPI URLを設定します", "apiURLHint": "ReVanced ManagerのAPI URLを設定します",
"selectApiURL": "APIURL", "selectApiURL": "APIURL",
"orgPatchesLabel": "Patches の組織", "orgPatchesLabel": "Patches の組織",
"sourcesPatchesLabel": "Patches のソース", "sourcesPatchesLabel": "Patches のソース",
"contributorsLabel": "貢献者", "contributorsLabel": "貢献者",
"contributorsHint": "ReVancedの貢献者一覧", "contributorsHint": "ReVancedの貢献者一覧",
"logsLabel": "ログを共有", "logsLabel": "ログを共有",
"logsHint": "ReVanced Manager のログを共有します", "logsHint": "ReVanced Managerのログを共有します",
"enablePatchesSelectionLabel": "パッチ選択の変更を許可", "enablePatchesSelectionLabel": "パッチ選択の変更を許可",
"enablePatchesSelectionHint": "パッチの選択解除を禁止しません", "enablePatchesSelectionHint": "パッチの選択/解除を禁止しません",
"enablePatchesSelectionWarningText": "パッチの選択を変更すると、予期せぬ問題が起こる可能性があります。\n\n有効にしますか", "enablePatchesSelectionWarningText": "パッチの選択を変更すると、予期せぬ問題が起こる可能性があります。\n\n有効にしますか",
"disablePatchesSelectionWarningText": "パッチ選択の変更を無効にしようとしています。\nデフォルトのパッチの選択が復元されます。\n\n無効にしますか", "disablePatchesSelectionWarningText": "パッチ選択の変更を無効にしようとしています。\nデフォルトのパッチの選択が復元されます。\n\n無効にしますか",
"autoUpdatePatchesLabel": "パッチの自動アップデート", "autoUpdatePatchesLabel": "パッチの自動アップデート",
"autoUpdatePatchesHint": "パッチを自動的に最新バージョンに更新する", "autoUpdatePatchesHint": "パッチを自動的に最新バージョンに更新する",
"usePrereleasesLabel": "プレリリースを使用",
"usePrereleasesHint": "ReVanced ManagerとReVanced Patchesのプレリリース版を使用する",
"usePrereleasesWarningText": "プレリリース版を使用すると、予期せぬ問題が発生する可能性があります。\n\nそれでも有効にしますか",
"showUpdateDialogLabel": "アップデートの通知を表示", "showUpdateDialogLabel": "アップデートの通知を表示",
"showUpdateDialogHint": "新しいアップデートが利用可能な場合にダイアログを表示します", "showUpdateDialogHint": "新しいアップデートが利用可能な場合にダイアログを表示します",
"universalPatchesLabel": "共通パッチの表示", "universalPatchesLabel": "共通パッチの表示",
"universalPatchesHint": "すべてのアプリと共通パッチを表示しますアプリ一覧の読み込みが遅くなる可能性があります", "universalPatchesHint": "すべてのアプリと共通パッチを表示します (アプリ一覧の読み込みが遅くなる可能性があります)",
"lastPatchedAppLabel": "パッチを適用したアプリを保存", "lastPatchedAppLabel": "パッチを適用したアプリを保存",
"lastPatchedAppHint": "最後にパッチされた内容を保存して、後でインストールまたはエクスポートできます", "lastPatchedAppHint": "最後にパッチされた内容を保存して、後でインストールまたはエクスポートできます",
"versionCompatibilityCheckLabel": "バージョンの互換性の確認", "versionCompatibilityCheckLabel": "バージョンの互換性の確認",
"versionCompatibilityCheckHint": "選択したアプリのバージョンと互換性のないパッチの選択を禁止する", "versionCompatibilityCheckHint": "選択したアプリのバージョンと互換性のないパッチの選択を防止します",
"requireSuggestedAppVersionLabel": "推奨バージョンの使用を強制", "requireSuggestedAppVersionLabel": "推奨バージョンの使用を強制",
"requireSuggestedAppVersionHint": "推奨されていないバージョンのアプリを選択できないようにします", "requireSuggestedAppVersionHint": "推奨されていないバージョンのアプリを選択できないようにします",
"requireSuggestedAppVersionDialogText": "推奨バージョンではないアプリを選択すると、予期しない問題が発生する可能性があります。\n\nこのまま続行しますか", "requireSuggestedAppVersionDialogText": "推奨バージョンではないアプリを選択すると、予期しない問題が発生する可能性があります。\n\nこのまま続行しますか",
@ -195,24 +198,24 @@
"snackbarMessage": "クリップボードにコピーしました", "snackbarMessage": "クリップボードにコピーしました",
"restartAppForChanges": "変更を適用するにはアプリを再起動してください", "restartAppForChanges": "変更を適用するにはアプリを再起動してください",
"deleteTempDirLabel": "一時ファイルを削除", "deleteTempDirLabel": "一時ファイルを削除",
"deleteTempDirHint": "未使用の一時ファイルを削除", "deleteTempDirHint": "未使用の一時ファイルを削除します",
"deletedTempDir": "一時ファイルを削除しました", "deletedTempDir": "一時ファイルを削除しました",
"exportSettingsLabel": "設定をエクスポート", "exportSettingsLabel": "設定をエクスポート",
"exportSettingsHint": "設定をJSONファイルにエクスポートします", "exportSettingsHint": "設定をJSONファイルにエクスポートします",
"exportedSettings": "設定をエクスポートしました", "exportedSettings": "設定をエクスポートしました",
"importSettingsLabel": "設定をインポート", "importSettingsLabel": "設定をインポート",
"importSettingsHint": "JSONファイルから設定をインポートします", "importSettingsHint": "JSONファイルから設定をインポートします",
"importedSettings": "設定インポートされました", "importedSettings": "設定インポートました",
"exportPatchesLabel": "パッチ選択をエクスポート", "exportPatchesLabel": "パッチ選択をエクスポート",
"exportPatchesHint": "パッチ選択を JSON ファイルにエクスポートします", "exportPatchesHint": "パッチ選択をJSONファイルにエクスポートします",
"exportedPatches": "パッチ選択をエクスポートしました", "exportedPatches": "パッチ選択をエクスポートしました",
"noExportFileFound": "エクスポートするパッチの選択がありません", "noExportFileFound": "エクスポートするパッチの選択がありません",
"importPatchesLabel": "パッチ選択をインポート", "importPatchesLabel": "パッチ選択をインポート",
"importPatchesHint": "パッチ選択を JSON ファイルからインポートします", "importPatchesHint": "パッチ選択をJSONファイルからインポートします",
"importedPatches": "パッチ選択をインポートしました", "importedPatches": "パッチ選択をインポートしました",
"resetStoredPatchesLabel": "パッチの選択をリセット", "resetStoredPatchesLabel": "パッチの選択をリセット",
"resetStoredPatchesHint": "保存されたパッチの選択をリセットする", "resetStoredPatchesHint": "保存されたパッチの選択をリセットする",
"resetStoredPatchesDialogTitle": "パッチの選択をリセット", "resetStoredPatchesDialogTitle": "パッチの選択をリセットしますか?",
"resetStoredPatchesDialogText": "デフォルトのパッチの選択が復元されます。", "resetStoredPatchesDialogText": "デフォルトのパッチの選択が復元されます。",
"resetStoredPatches": "パッチの選択をリセットしました", "resetStoredPatches": "パッチの選択をリセットしました",
"resetStoredOptionsLabel": "パッチオプションをリセット", "resetStoredOptionsLabel": "パッチオプションをリセット",
@ -221,7 +224,7 @@
"resetStoredOptionsDialogText": "パッチオプションをリセットすると、保存されたすべてのオプションが削除されます。", "resetStoredOptionsDialogText": "パッチオプションをリセットすると、保存されたすべてのオプションが削除されます。",
"resetStoredOptions": "オプションをリセットしました", "resetStoredOptions": "オプションをリセットしました",
"deleteLogsLabel": "ログを削除", "deleteLogsLabel": "ログを削除",
"deleteLogsHint": "収集された ReVanced Manager のログを削除します", "deleteLogsHint": "収集されたReVanced Managerのログを削除します",
"deletedLogs": "ログを削除しました", "deletedLogs": "ログを削除しました",
"regenerateKeystoreLabel": "キーストアを再生成", "regenerateKeystoreLabel": "キーストアを再生成",
"regenerateKeystoreHint": "アプリの署名に使われるキーストアを再生成します", "regenerateKeystoreHint": "アプリの署名に使われるキーストアを再生成します",
@ -237,11 +240,11 @@
"importedKeystore": "キーストアをインポートしました", "importedKeystore": "キーストアをインポートしました",
"selectKeystorePassword": "キーストアのパスワード", "selectKeystorePassword": "キーストアのパスワード",
"selectKeystorePasswordHint": "アプリの署名に使用するキーストアのパスワードを入力してください", "selectKeystorePasswordHint": "アプリの署名に使用するキーストアのパスワードを入力してください",
"jsonSelectorErrorMessage": "選択したJSON ファイルは使用できません", "jsonSelectorErrorMessage": "選択したJSONファイルは使用できません",
"keystoreSelectorErrorMessage": "選択したキーストアファイルは使用できません" "keystoreSelectorErrorMessage": "選択したキーストアファイルは使用できません"
}, },
"appInfoView": { "appInfoView": {
"widgetTitle": "アプリ情報", "widgetTitle": "アプリ情報",
"openButton": "開く", "openButton": "開く",
"installButton": "インストール", "installButton": "インストール",
"uninstallButton": "アンインストール", "uninstallButton": "アンインストール",
@ -250,11 +253,11 @@
"deleteButton": "削除", "deleteButton": "削除",
"rootDialogTitle": "エラー", "rootDialogTitle": "エラー",
"lastPatchedAppDescription": "これは最後にパッチを適用したアプリのバックアップです。", "lastPatchedAppDescription": "これは最後にパッチを適用したアプリのバックアップです。",
"unmountDialogText": "このアプリをアンマウントしてもよろしいですか?", "unmountDialogText": "このアプリをマウント解除してもよろしいですか?",
"uninstallDialogText": "本当にこのアプリをアンインストールしすか?", "uninstallDialogText": "このアプリをアンインストールしてもよろしいですか?",
"rootDialogText": "アプリはスーパーユーザー権限でインストールされましたが、現在 ReVanced Manager にはその権限がありません。 スーパーユーザー権限を付与してください。", "rootDialogText": "アプリはルート権限でインストールされましたが、現在ReVanced Managerにはその権限がありません。 ルート権限を付与してください。",
"removeAppDialogTitle": "アプリを削除しますか?", "removeAppDialogTitle": "アプリを削除しますか?",
"removeAppDialogText": "本当にバックアップを削除してもよろしいですか?", "removeAppDialogText": "バックアップを削除してもよろしいですか?",
"packageNameLabel": "パッケージ名", "packageNameLabel": "パッケージ名",
"installTypeLabel": "インストールの種類", "installTypeLabel": "インストールの種類",
"mountTypeLabel": "マウント", "mountTypeLabel": "マウント",
@ -263,7 +266,7 @@
"appliedPatchesLabel": "適用されたパッチ", "appliedPatchesLabel": "適用されたパッチ",
"sizeLabel": "ファイルのサイズ", "sizeLabel": "ファイルのサイズ",
"patchedDateHint": "${date} ${time}", "patchedDateHint": "${date} ${time}",
"appliedPatchesHint": "${quantity} 個の適用されたパッチ", "appliedPatchesHint": "${quantity}個の適用されたパッチ",
"updateNotImplemented": "この機能はまだ実装されていません" "updateNotImplemented": "この機能はまだ実装されていません"
}, },
"contributorsView": { "contributorsView": {
@ -271,7 +274,7 @@
}, },
"installErrorDialog": { "installErrorDialog": {
"mount_version_mismatch": "バージョンが一致しません", "mount_version_mismatch": "バージョンが一致しません",
"mount_no_root": "ルート権限がありません", "mount_no_root": "ルート権限が付与されていません",
"mount_missing_installation": "インストールが見つかりませんでした", "mount_missing_installation": "インストールが見つかりませんでした",
"status_failure_blocked": "インストールはブロックされました", "status_failure_blocked": "インストールはブロックされました",
"install_failed_verification_failure": "検証に失敗しました", "install_failed_verification_failure": "検証に失敗しました",
@ -283,16 +286,16 @@
"status_failure_timeout": "インストールがタイムアウトしました", "status_failure_timeout": "インストールがタイムアウトしました",
"status_unknown": "インストールに失敗しました", "status_unknown": "インストールに失敗しました",
"mount_version_mismatch_description": "インストールされたアプリがパッチを当てたアプリとは異なるバージョンであるため、インストールに失敗しました。\n\nマウントしているアプリのバージョンをインストールし、再度お試しください。", "mount_version_mismatch_description": "インストールされたアプリがパッチを当てたアプリとは異なるバージョンであるため、インストールに失敗しました。\n\nマウントしているアプリのバージョンをインストールし、再度お試しください。",
"mount_no_root_description": "ルートアクセスが許可されていないためインストールに失敗しました。\n\nReVanced Managerへのルートアクセスを許可し、もう一度お試しください。", "mount_no_root_description": "ルート権限が付与されていないためインストールに失敗しました。\n\nReVanced Managerへのルート権限を許可し、もう一度お試しください。",
"mount_missing_installation_description": "パッチが適用されていないアプリがマウントされていないためインストールに失敗しました。\n\nマウントする前にパッチが適用されていないアプリをインストールし、もう一度お試しください。", "mount_missing_installation_description": "パッチが適用されていないアプリがマウントされていないためインストールに失敗しました。\n\nマウントする前にパッチが適用されていないアプリをインストールし、もう一度お試しください。",
"status_failure_timeout_description": "インストールに時間がかかりすぎした。\n\nもう一度やり直しますか", "status_failure_timeout_description": "インストールに時間がかかりすぎたため、完了しませんでした。\n\nもう一度やり直しますか",
"status_failure_storage_description": "ストレージが不足しているためインストールに失敗しました。\n\n空き領域を解放して再度お試し下さい。", "status_failure_storage_description": "ストレージが不足しているためインストールに失敗しました。\n\n空き領域を解放して再度お試し下さい。",
"status_failure_invalid_description": "パッチ適用されたアプリが無効なためインストールに失敗しました。\n\nアプリをアンインストールしてもう一度お試しください。", "status_failure_invalid_description": "パッチ適用されたアプリが無効なためインストールに失敗しました。\n\nアプリをアンインストールしてもう一度お試しください。",
"status_failure_incompatible_description": "アプリはこのデバイスと互換性がありません。\n\nこのデバイスに対応しているAPKを使用して、もう一度お試しください。", "status_failure_incompatible_description": "アプリはこのデバイスと互換性がありません。\n\nこのデバイスに対応しているAPKを使用して、もう一度お試しください。",
"status_failure_conflict_description": "インストールはアプリの既存のインストールによって中止されました。\n\nインストールされアプリをアンインストールし、もう一度やり直してください。", "status_failure_conflict_description": "既にインストールされているアプリがあるため、インストール中止されました。\n\nインストールされているアプリをアンインストールして、再試行しますか?",
"status_failure_blocked_description": "インストールは ${packageName} によってブロックされました。\n\nセキュリティ設定を調整して、もう一度お試しください。", "status_failure_blocked_description": "インストールは${packageName}によってブロックされました。\n\nセキュリティ設定を確認して、もう一度お試しください。",
"install_failed_verification_failure_description": "認証の問題によりインストールに失敗しました。\n\nセキュリティ設定を調整して、もう一度お試しください。", "install_failed_verification_failure_description": "認証の問題によりインストールに失敗しました。\n\nセキュリティ設定を確認して、もう一度お試しください。",
"install_failed_version_downgrade_description": "インストールに失敗しました。パッチを当てたアプリがインストールされたアプリよりも低いバージョンであるためです。\n\nアプリをアンインストールしてもう一度お試しください。", "install_failed_version_downgrade_description": "インストールに失敗しました。パッチが適用されたアプリがインストールされたアプリよりも低いバージョンであるためです。\n\nアプリをアンインストールしてもう一度お試しください。",
"status_unknown_description": "不明な理由によりインストールに失敗しました。もう一度やり直してください。" "status_unknown_description": "不明な理由によりインストールに失敗しました。もう一度やり直してください。"
} }
} }

View File

@ -11,7 +11,7 @@
"notice": "알림", "notice": "알림",
"noShowAgain": "다시 보지 않기", "noShowAgain": "다시 보지 않기",
"add": "추가", "add": "추가",
"remove": "제", "remove": "제",
"showChangelogButton": "변경 사항 보기", "showChangelogButton": "변경 사항 보기",
"showUpdateButton": "업데이트 보기", "showUpdateButton": "업데이트 보기",
"navigationView": { "navigationView": {
@ -25,18 +25,18 @@
"updatesSubtitle": "업데이트", "updatesSubtitle": "업데이트",
"lastPatchedAppSubtitle": "마지막으로 패치된 앱", "lastPatchedAppSubtitle": "마지막으로 패치된 앱",
"patchedSubtitle": "설치된 앱", "patchedSubtitle": "설치된 앱",
"changeLaterSubtitle": "나중에 설정에서 변경할 수 있습니다", "changeLaterSubtitle": "나중에 설정에서 변경할 수 있습니다.",
"noSavedAppFound": "앱을 찾을 수 없습니다", "noSavedAppFound": "앱을 찾을 수 없습니다",
"noInstallations": "패치된 앱이 설치되어 있지 않습니다", "noInstallations": "패치된 앱이 설치되어 있지 않습니다",
"installUpdate": "업데이트를 계속 설치하시겠습니까?", "installUpdate": "업데이트를 계속 설치하시겠습니까?",
"updateSheetTitle": "ReVanced Manager 업데이트", "updateSheetTitle": "ReVanced Manager 업데이트",
"updateDialogTitle": "새 업데이트가 있습니다", "updateDialogTitle": "새로운 업데이트가 있습니다",
"updatePatchesSheetTitle": "ReVanced 패치 업데이트", "updatePatchesSheetTitle": "ReVanced Patches 업데이트",
"updateChangelogTitle": "변경 사항", "updateChangelogTitle": "변경 사항",
"updateDialogText": "'${file}'에 대한 새 업데이트를 할 수 있습니다\n\n현재 설치된 버전은 '${version}' 입니다", "updateDialogText": "'${file}'에 대한 새로운 업데이트를 할 수 있습니다.\n\n현재 설치된 버전은 '${version}' 입니다.",
"downloadConsentDialogTitle": "필요한 파일을 다운로드하시겠습니까?", "downloadConsentDialogTitle": "필요한 파일을 다운로드하시겠습니까?",
"downloadConsentDialogText": "ReVanced Manager가 제대로 작동하려면 필요한 파일을 다운로드해야 합니다", "downloadConsentDialogText": "ReVanced Manager가 제대로 작동하려면 필요한 파일을 다운로드해야 합니다.",
"downloadConsentDialogText2": "진행하면 '${url}' 에 연결됩니다", "downloadConsentDialogText2": "진행하면 '${url}' 에 연결됩니다.",
"downloadingMessage": "업데이트 다운로드 중 ...", "downloadingMessage": "업데이트 다운로드 중 ...",
"downloadedMessage": "업데이트를 다운로드 완료하였습니다", "downloadedMessage": "업데이트를 다운로드 완료하였습니다",
"installingMessage": "업데이트 설치 중 ...", "installingMessage": "업데이트 설치 중 ...",
@ -55,9 +55,9 @@
"widgetTitle": "Patcher", "widgetTitle": "Patcher",
"patchButton": "패치하기", "patchButton": "패치하기",
"incompatibleArchWarningDialogText": "이 아키텍처에 대한 패치는 아직 지원되지 않으므로 실패할 수 있습니다. 그래도 계속하시겠습니까?", "incompatibleArchWarningDialogText": "이 아키텍처에 대한 패치는 아직 지원되지 않으므로 실패할 수 있습니다. 그래도 계속하시겠습니까?",
"removedPatchesWarningDialogText": "이 앱을 마지막으로 패치한 이후 제된 패치입니다:\n\n${patches}\n\n${newPatches}\n\n그래도 계속하시겠습니까?", "removedPatchesWarningDialogText": "이 앱을 마지막으로 패치한 이후 제된 패치입니다:\n\n${patches}\n\n${newPatches}\n\n그래도 계속하시겠습니까?",
"addedPatchesDialogText": "이 앱을 마지막으로 패치한 이후 추가된 패치입니다:\n\n${addedPatches}", "addedPatchesDialogText": "이 앱을 마지막으로 패치한 이후 추가된 패치입니다:\n\n${addedPatches}",
"requiredOptionDialogText": "일부 패치 옵션을 설정해야 합니다" "requiredOptionDialogText": "일부 패치 옵션을 설정해야 합니다."
}, },
"appSelectorCard": { "appSelectorCard": {
"widgetTitle": "앱 선택하기", "widgetTitle": "앱 선택하기",
@ -83,15 +83,15 @@
"selectFromStorageButton": "기기 저장소에서 선택", "selectFromStorageButton": "기기 저장소에서 선택",
"errorMessage": "선택한 앱을 사용할 수 없습니다", "errorMessage": "선택한 앱을 사용할 수 없습니다",
"downloadToast": "다운로드 기능은 아직 사용할 수 없습니다", "downloadToast": "다운로드 기능은 아직 사용할 수 없습니다",
"requireSuggestedAppVersionDialogText": "선택한 앱 버전이 권장 앱 버전과 일치하지 않아서 예상되지 않은 문제점이 발생할 수 있습니다. 권장 앱 버전을 사용하세요\n\n선택한 앱 버전: ${selected}\n권장 앱 버전: ${suggested}\n\n계속하려면 설정에서 '권장 앱 버전 요구'를 비활성화하세요", "requireSuggestedAppVersionDialogText": "선택한 앱 버전이 권장 앱 버전과 일치하지 않아서 예상되지 않은 문제점이 발생할 수 있습니다. 권장 앱 버전을 사용하세요.\n\n선택한 앱 버전: ${selected}\n권장 앱 버전: ${suggested}\n\n계속하려면 설정에서 '권장 앱 버전 요구'를 비활성화하세요.",
"featureNotAvailable": "기능이 구현되지 않았습니다", "featureNotAvailable": "기능이 구현되지 않았습니다",
"featureNotAvailableText": "이 기기에서 추출할 수 있는 앱이 분할 APK 파일이므로 Root 권한으로 마운트해야만 안정적으로 패치 및 설치할 수 있습니다. 그러나 Non-Root 사용자는 기기 저장소에서 '외부에서 다운로드한 완전한 APK 파일'을 선택하여 패치 및 설치할 수 있습니다" "featureNotAvailableText": "이 기기에서 추출할 수 있는 앱이 분할 APK 파일이므로 Root 권한으로 마운트해야만 안정적으로 패치 및 설치할 수 있습니다. 그러나 Non-Root 사용자는 기기 저장소에서 '외부에서 다운로드한 완전한 APK 파일'을 선택하여 패치 및 설치할 수 있습니다."
}, },
"patchesSelectorView": { "patchesSelectorView": {
"viewTitle": "패치 선택하기", "viewTitle": "패치 선택하기",
"searchBarHint": "패치 검색하기", "searchBarHint": "패치 검색하기",
"universalPatches": "공용 패치", "universalPatches": "공용 패치",
"newPatches": "새 패치", "newPatches": "새로운 패치",
"patches": "패치", "patches": "패치",
"doneButton": "선택완료", "doneButton": "선택완료",
"defaultChip": "기본값", "defaultChip": "기본값",
@ -99,9 +99,9 @@
"noneChip": "선택안함", "noneChip": "선택안함",
"noneTooltip": "모든 패치 선택 해제", "noneTooltip": "모든 패치 선택 해제",
"loadPatchesSelection": "패치 선택목록 가져오기", "loadPatchesSelection": "패치 선택목록 가져오기",
"noSavedPatches": "선택한 앱에 적용할 패치가 저장되지 않았습니다\n'선택완료' 버튼을 눌러서 현재 선택목록을 저장하세요", "noSavedPatches": "선택한 앱에 적용할 패치가 저장되지 않았습니다.\n'선택완료' 버튼을 눌러서 현재 선택목록을 저장하세요.",
"noPatchesFound": "선택한 앱에 대한 패치를 찾을 수 없습니다", "noPatchesFound": "선택한 앱에 대한 패치를 찾을 수 없습니다",
"setRequiredOption": "옵션을 설정해야 하는 패치가 있습니다:\n\n${patches}\n\n진행하기 전 설정을 마쳐주세요" "setRequiredOption": "옵션을 설정해야 하는 패치가 있습니다:\n\n${patches}\n\n진행하기 전 설정을 마쳐주세요."
}, },
"patchOptionsView": { "patchOptionsView": {
"customValue": "사용자 정의 값", "customValue": "사용자 정의 값",
@ -118,26 +118,26 @@
"requiredOptionNull": "다음 옵션들이 설정되어 있어야 합니다:\n\n${options}" "requiredOptionNull": "다음 옵션들이 설정되어 있어야 합니다:\n\n${options}"
}, },
"patchItem": { "patchItem": {
"unsupportedDialogText": "이 패치는 문제점을 발생시킬 수 있습니다\n\n앱 버전: ${packageVersion}\n지원되는 버전:\n${supportedVersions}", "unsupportedDialogText": "이 패치는 문제점을 발생시킬 수 있습니다.\n\n앱 버전: ${packageVersion}\n지원되는 버전:\n${supportedVersions}",
"unsupportedPatchVersion": "패치가 이 앱 버전을 지원하지 않습니다", "unsupportedPatchVersion": "패치가 이 앱 버전을 지원하지 않습니다.",
"unsupportedRequiredOption": "패치에 이 앱을 지원하지 않는 필수 옵션이 포함되어 있습니다", "unsupportedRequiredOption": "패치에 이 앱을 지원하지 않는 필수 옵션이 포함되어 있습니다",
"patchesChangeWarningDialogText": "기본 패치 선택을 사용하는 것을 권장합니다. 설정을 변경할 경우에는 예상되지 않은 문제점의 원인이 될 수 있습니다\n\n패치 선택을 변경하기 위해서는 설정에서 \"패치 선택 변경 허용\"을 활성화해야 합니다", "patchesChangeWarningDialogText": "기본 패치 선택을 사용하는 것을 권장합니다. 설정을 변경할 경우에는 예상되지 않은 문제점의 원인이 될 수 있습니다.\n\n패치 선택을 변경하기 위해서는 설정에서 \"패치 선택 변경 허용\"을 활성화해야 합니다.",
"patchesChangeWarningDialogButton": "기본 선택목록 사용" "patchesChangeWarningDialogButton": "기본 선택목록 사용"
}, },
"installerView": { "installerView": {
"installType": "설치 유형 선택", "installType": "설치 유형 선택",
"installTypeDescription": "설치를 진행할 유형을 선택해주세요", "installTypeDescription": "설치를 진행할 유형을 선택해주세요.",
"installButton": "설치하기", "installButton": "설치하기",
"installRootType": "마운트", "installRootType": "마운트",
"installNonRootType": "일반", "installNonRootType": "일반",
"warning": "패치된 앱의 자동 업데이트를 비활성화하여 예상되지 않은 문제점을 방지하세요", "warning": "패치된 앱의 자동 업데이트를 비활성화하여 예상되지 않은 문제점을 방지하세요.",
"pressBackAgain": "취소하려면 뒤로가기 버튼을 다시 누르세요", "pressBackAgain": "취소하려면 뒤로가기 버튼을 다시 누르세요",
"openButton": "열기", "openButton": "열기",
"notificationTitle": "ReVanced Manager가 패치 중입니다", "notificationTitle": "ReVanced Manager가 패치 중입니다",
"notificationText": "설치 관리자로 돌아가려면 여기를 누르세요", "notificationText": "설치 관리자로 돌아가려면 여기를 누르세요",
"exportApkButtonTooltip": "패치된 APK 내보내기", "exportApkButtonTooltip": "패치된 APK 내보내기",
"exportLogButtonTooltip": "로그 내보내기", "exportLogButtonTooltip": "로그 내보내기",
"screenshotDetected": "스크린샷이 감지되었습니다. 로그를 공유할 목적이라면, 대신 텍스트 사본으로 공유해주세요\n\n로그를 클립보드에 복사하시겠습니까?", "screenshotDetected": "스크린샷이 감지되었습니다. 로그를 공유할 목적이라면, 대신 텍스트 사본으로 공유해주세요.\n\n로그를 클립보드에 복사하시겠습니까?",
"copiedToClipboard": "로그를 클립보드에 복사하였습니다", "copiedToClipboard": "로그를 클립보드에 복사하였습니다",
"noExit": "설치 관리자가 실행 중이므로 중단할 수 없습니다 ..." "noExit": "설치 관리자가 실행 중이므로 중단할 수 없습니다 ..."
}, },
@ -164,7 +164,7 @@
"sourcesResetDialogTitle": "초기화", "sourcesResetDialogTitle": "초기화",
"sourcesResetDialogText": "정말 사용자 정의 소스를 기본값으로 초기화하시겠습니까?", "sourcesResetDialogText": "정말 사용자 정의 소스를 기본값으로 초기화하시겠습니까?",
"apiURLResetDialogText": "정말 API URL을 기본값으로 초기화하시겠습니까?", "apiURLResetDialogText": "정말 API URL을 기본값으로 초기화하시겠습니까?",
"sourcesUpdateNote": "알림: 변경하면 대체 소스에서 ReVanced Patches가 자동으로 다운로드됩니다\n\n그 이후에는 대체 소스로 연결됩니다", "sourcesUpdateNote": "알림: 변경하면 대체 소스에서 ReVanced Patches가 자동으로 다운로드됩니다.\n\n그 이후에는 대체 소스로 연결됩니다.",
"apiURLLabel": "API URL", "apiURLLabel": "API URL",
"apiURLHint": "ReVanced Manager의 API URL를 설정할 수 있습니다", "apiURLHint": "ReVanced Manager의 API URL를 설정할 수 있습니다",
"selectApiURL": "API URL", "selectApiURL": "API URL",
@ -176,12 +176,15 @@
"logsHint": "수집된 ReVanced Manager 로그를 공유합니다", "logsHint": "수집된 ReVanced Manager 로그를 공유합니다",
"enablePatchesSelectionLabel": "패치 선택 변경 허용", "enablePatchesSelectionLabel": "패치 선택 변경 허용",
"enablePatchesSelectionHint": "패치를 선택하거나 선택 해제할 수 있습니다", "enablePatchesSelectionHint": "패치를 선택하거나 선택 해제할 수 있습니다",
"enablePatchesSelectionWarningText": "패치 선택을 변경하는 경우에는 예상되지 않은 문제점이 발생할 수 있습니다\n\n그래도 활성화하시겠습니까?", "enablePatchesSelectionWarningText": "패치 선택을 변경하는 경우에는 예상되지 않은 문제점이 발생할 수 있습니다.\n\n그래도 활성화하시겠습니까?",
"disablePatchesSelectionWarningText": "패치 선택 변경을 비활성화하려 합니다\n기본 패치 선택목록으로 복원될 것입니다\n\n그래도 비활성화하시겠습니까?", "disablePatchesSelectionWarningText": "패치 선택 변경을 비활성화하려 합니다.\n기본 패치 선택목록으로 복원될 것입니다.\n\n그래도 비활성화하시겠습니까?",
"autoUpdatePatchesLabel": "패치 자동 업데이트", "autoUpdatePatchesLabel": "패치 자동 업데이트",
"autoUpdatePatchesHint": "ReVanced Manager 앱 내에서 사용되는 패치를 최신 버전으로 자동 업데이트합니다", "autoUpdatePatchesHint": "ReVanced Patches를 최신 버전으로 자동 업데이트합니다",
"usePrereleasesLabel": "Pre-releases 버전 사용",
"usePrereleasesHint": "ReVanced Manager 및 ReVanced Patches의 Pre-release 버전을 사용합니다",
"usePrereleasesWarningText": "Pre-release 버전을 사용하는 경우에는 예상되지 않은 문제점이 발생할 수 있습니다.\n\n그래도 활성화하시겠습니까?",
"showUpdateDialogLabel": "업데이트 팝업창 보기", "showUpdateDialogLabel": "업데이트 팝업창 보기",
"showUpdateDialogHint": "새 업데이트가 있으면 팝업창을 표시합니다", "showUpdateDialogHint": "새로운 업데이트가 있으면 팝업창을 표시합니다",
"universalPatchesLabel": "공용 패치 보기", "universalPatchesLabel": "공용 패치 보기",
"universalPatchesHint": "기기에 설치된 모든 앱과 공용 패치를 표시합니다 (앱 목록이 느려질 수 있음)", "universalPatchesHint": "기기에 설치된 모든 앱과 공용 패치를 표시합니다 (앱 목록이 느려질 수 있음)",
"lastPatchedAppLabel": "패치된 앱 저장", "lastPatchedAppLabel": "패치된 앱 저장",
@ -190,18 +193,18 @@
"versionCompatibilityCheckHint": "선택한 앱 버전과 호환되지 않는 패치를 선택할 수 없습니다", "versionCompatibilityCheckHint": "선택한 앱 버전과 호환되지 않는 패치를 선택할 수 없습니다",
"requireSuggestedAppVersionLabel": "권장 앱 버전 요구", "requireSuggestedAppVersionLabel": "권장 앱 버전 요구",
"requireSuggestedAppVersionHint": "권장되지 않은 앱 버전은 선택할 수 없습니다", "requireSuggestedAppVersionHint": "권장되지 않은 앱 버전은 선택할 수 없습니다",
"requireSuggestedAppVersionDialogText": "권장 앱 버전이 아닌 앱을 선택하는 경우에는 예상되지 않은 문제점이 발생할 수 있습니다\n\n그래도 계속하시겠습니까?", "requireSuggestedAppVersionDialogText": "권장 앱 버전이 아닌 앱을 선택하는 경우에는 예상되지 않은 문제점이 발생할 수 있습니다.\n\n그래도 계속하시겠습니까?",
"aboutLabel": "정보", "aboutLabel": "정보",
"snackbarMessage": "클립보드에 복사하였습니다", "snackbarMessage": "클립보드에 복사하였습니다",
"restartAppForChanges": "변경 사항을 적용하려면 앱을 다시 시작하세요", "restartAppForChanges": "변경 사항을 적용하려면 앱을 다시 시작하세요",
"deleteTempDirLabel": "임시 파일 제", "deleteTempDirLabel": "임시 파일 제",
"deleteTempDirHint": "사용하지 않는 임시 파일을 제합니다", "deleteTempDirHint": "사용하지 않는 임시 파일을 제합니다",
"deletedTempDir": "임시 파일을 제하였습니다", "deletedTempDir": "임시 파일을 제하였습니다",
"exportSettingsLabel": "설정 내보내기", "exportSettingsLabel": "설정 내보내기",
"exportSettingsHint": "설정을 JSON 파일로 내보낼 수 있습니다", "exportSettingsHint": "설정을 JSON 파일로 내보니다",
"exportedSettings": "설정을 내보냈습니다", "exportedSettings": "설정을 내보냈습니다",
"importSettingsLabel": "설정 가져오기", "importSettingsLabel": "설정 가져오기",
"importSettingsHint": "설정을 JSON 파일에서 가져올 수 있습니다", "importSettingsHint": "설정을 JSON 파일에서 가져니다",
"importedSettings": "설정을 가져왔습니다", "importedSettings": "설정을 가져왔습니다",
"exportPatchesLabel": "패치 선택목록 내보내기", "exportPatchesLabel": "패치 선택목록 내보내기",
"exportPatchesHint": "패치 선택목록을 JSON 파일로 내보냅니다", "exportPatchesHint": "패치 선택목록을 JSON 파일로 내보냅니다",
@ -218,15 +221,15 @@
"resetStoredOptionsLabel": "패치 옵션 초기화", "resetStoredOptionsLabel": "패치 옵션 초기화",
"resetStoredOptionsHint": "모든 패치 옵션을 초기화합니다", "resetStoredOptionsHint": "모든 패치 옵션을 초기화합니다",
"resetStoredOptionsDialogTitle": "패치 옵션을 초기화하시겠습니까?", "resetStoredOptionsDialogTitle": "패치 옵션을 초기화하시겠습니까?",
"resetStoredOptionsDialogText": "패치 옵션을 초기화하면 저장한 모든 옵션이 제됩니다", "resetStoredOptionsDialogText": "패치 옵션을 초기화하면 저장한 모든 옵션이 제됩니다.",
"resetStoredOptions": "옵션을 초기화하였습니다", "resetStoredOptions": "옵션을 초기화하였습니다",
"deleteLogsLabel": "로그 제하기", "deleteLogsLabel": "로그 제하기",
"deleteLogsHint": "수집된 ReVanced Manager 로그를 제합니다", "deleteLogsHint": "수집된 ReVanced Manager 로그를 제합니다",
"deletedLogs": "로그를 제하였습니다", "deletedLogs": "로그를 제하였습니다",
"regenerateKeystoreLabel": "키스토어 재생성", "regenerateKeystoreLabel": "키스토어 재생성",
"regenerateKeystoreHint": "앱을 서명할 때 사용한 키스토어를 재생성합니다", "regenerateKeystoreHint": "앱을 서명할 때 사용한 키스토어를 재생성합니다",
"regenerateKeystoreDialogTitle": "키스토어를 재생성하시겠습니까?", "regenerateKeystoreDialogTitle": "키스토어를 재생성하시겠습니까?",
"regenerateKeystoreDialogText": "기존 키스토어로 서명한 패치된 앱을 더 이상 업데이트할 수 없게 됩니다", "regenerateKeystoreDialogText": "기존 키스토어로 서명한 패치된 앱을 더 이상 업데이트할 수 없게 됩니다.",
"regeneratedKeystore": "키스토어를 재생성하였습니다", "regeneratedKeystore": "키스토어를 재생성하였습니다",
"exportKeystoreLabel": "키스토어 내보내기", "exportKeystoreLabel": "키스토어 내보내기",
"exportKeystoreHint": "앱을 서명할 때 사용한 키스토어를 내보냅니다", "exportKeystoreHint": "앱을 서명할 때 사용한 키스토어를 내보냅니다",
@ -244,17 +247,17 @@
"widgetTitle": "앱 정보", "widgetTitle": "앱 정보",
"openButton": "열기", "openButton": "열기",
"installButton": "설치하기", "installButton": "설치하기",
"uninstallButton": "제하기", "uninstallButton": "제하기",
"unmountButton": "마운트 해제", "unmountButton": "마운트 해제",
"exportButton": "내보내기", "exportButton": "내보내기",
"deleteButton": "제하기", "deleteButton": "제하기",
"rootDialogTitle": "오류", "rootDialogTitle": "오류",
"lastPatchedAppDescription": "마지막으로 패치된 앱의 백업입니다", "lastPatchedAppDescription": "마지막으로 패치된 앱의 백업입니다.",
"unmountDialogText": "이 앱의 마운트를 해제하시겠습니까?", "unmountDialogText": "이 앱의 마운트를 해제하시겠습니까?",
"uninstallDialogText": "이 앱을 제하시겠습니까?", "uninstallDialogText": "이 앱을 제하시겠습니까?",
"rootDialogText": "앱이 슈퍼유저 권한으로 설치되었으나 현재 ReVanced Manager에는 권한이 없습니다\n먼저 슈퍼유저 권한을 부여하세요", "rootDialogText": "앱이 슈퍼유저 권한으로 설치되었으나 현재 ReVanced Manager에는 권한이 없습니다.\n먼저 슈퍼유저 권한을 부여하세요.",
"removeAppDialogTitle": "앱을 제하시겠습니까?", "removeAppDialogTitle": "앱을 제하시겠습니까?",
"removeAppDialogText": "이 백업을 제하시겠습니까?", "removeAppDialogText": "이 백업을 제하시겠습니까?",
"packageNameLabel": "패키지 이름", "packageNameLabel": "패키지 이름",
"installTypeLabel": "설치 유형", "installTypeLabel": "설치 유형",
"mountTypeLabel": "마운트", "mountTypeLabel": "마운트",
@ -282,17 +285,17 @@
"status_failure_incompatible": "설치 미호환", "status_failure_incompatible": "설치 미호환",
"status_failure_timeout": "설치 시간 초과", "status_failure_timeout": "설치 시간 초과",
"status_unknown": "설치 실패", "status_unknown": "설치 실패",
"mount_version_mismatch_description": "패치된 앱과 설치된 앱의 버전이 달라서 설치에 실패하였습니다\n\n마운트하고 있는 앱의 버전으로 설치한 후에 다시 시도하세요", "mount_version_mismatch_description": "패치된 앱과 설치된 앱의 버전이 달라서 설치에 실패하였습니다.\n\n마운트하고 있는 앱의 버전으로 설치한 후에 다시 시도하세요.",
"mount_no_root_description": "Root 권한이 주어지지 않아서 설치에 실패하였습니다\n\nReVanced Manager에 Root 권한을 부여한 후에 다시 시도하세요", "mount_no_root_description": "Root 권한이 주어지지 않아서 설치에 실패하였습니다.\n\nReVanced Manager에 Root 권한을 부여한 후에 다시 시도하세요.",
"mount_missing_installation_description": "패치되지 않은 앱이 이 기기에 설치되지 않아서 마운트를 진행할 수 없어서 설치에 실패하였습니다\n\n마운트하기 전 패치되지 않은 앱을 설치한 후에 다시 시도하세요", "mount_missing_installation_description": "패치되지 않은 앱이 이 기기에 설치되지 않아서 마운트를 진행할 수 없어서 설치에 실패하였습니다.\n\n마운트하기 전 패치되지 않은 앱을 설치한 후에 다시 시도하세요.",
"status_failure_timeout_description": "설치하는 데 시간이 너무 오래 걸립니다\n\n다시 시도하시겠습니까?", "status_failure_timeout_description": "설치하는 데 시간이 너무 오래 걸립니다.\n\n다시 시도하시겠습니까?",
"status_failure_storage_description": "저장소 공간이 충분하지 않아서 설치에 실패하였습니다\n\n저장소 공간을 확보한 후에 다시 시도하세요", "status_failure_storage_description": "저장소 공간이 충분하지 않아서 설치에 실패하였습니다.\n\n저장소 공간을 확보한 후에 다시 시도하세요.",
"status_failure_invalid_description": "패치된 앱이 유효하지 않아서 설치에 실패하였습니다\n\n앱을 제한 후에 다시 시도하시겠습니까?", "status_failure_invalid_description": "패치된 앱이 유효하지 않아서 설치에 실패하였습니다.\n\n앱을 제한 후에 다시 시도하시겠습니까?",
"status_failure_incompatible_description": "이 앱은 이 기기와 호환되지 않습니다\n\n이 기기에서 지원되는 APK를 사용하여 다시 시도하세요", "status_failure_incompatible_description": "이 앱은 이 기기와 호환되지 않습니다.\n\n이 기기에서 지원되는 APK를 사용하여 다시 시도하세요.",
"status_failure_conflict_description": "기존에 설치된 앱이 설치를 방해하였습니다\n\n설치된 앱을 제한 후에 다시 시도하시겠습니까?", "status_failure_conflict_description": "기존에 설치된 앱이 설치를 방해하였습니다.\n\n설치된 앱을 제한 후에 다시 시도하시겠습니까?",
"status_failure_blocked_description": "설치가 '${packageName}'에 의해 차단되었습니다\n\n보안 설정을 조정한 후에 다시 시도하세요", "status_failure_blocked_description": "설치가 '${packageName}'에 의해 차단되었습니다.\n\n보안 설정을 조정한 후에 다시 시도하세요.",
"install_failed_verification_failure_description": "인증 문제로 인해 설치에 실패하였습니다\n\n보안 설정을 조정한 후에 다시 시도하세요", "install_failed_verification_failure_description": "인증 문제로 인해 설치에 실패하였습니다.\n\n보안 설정을 조정한 후에 다시 시도하세요.",
"install_failed_version_downgrade_description": "패치된 앱의 버전이 설치된 앱의 버전보다 낮아서 설치에 실패하였습니다\n\n앱을 제한 후에 다시 시도하시겠습니까?", "install_failed_version_downgrade_description": "패치된 앱의 버전이 설치된 앱의 버전보다 낮아서 설치에 실패하였습니다.\n\n앱을 제한 후에 다시 시도하시겠습니까?",
"status_unknown_description": "알 수 없는 이유로 설치에 실패하였습니다. 다시 시도하세요" "status_unknown_description": "알 수 없는 이유로 설치에 실패하였습니다. 다시 시도하세요."
} }
} }

View File

@ -9,9 +9,9 @@
"noButton": "Ne", "noButton": "Ne",
"warning": "Įspėjimas", "warning": "Įspėjimas",
"notice": "Pranešimas", "notice": "Pranešimas",
"noShowAgain": "Daugiau to nerodyti", "noShowAgain": "Daugiau neberodyti",
"add": "Pridėti", "add": "Pridėti",
"remove": "Pašalinti", "remove": "Šalinti",
"showChangelogButton": "Rodyti pakeitimų sąrašą", "showChangelogButton": "Rodyti pakeitimų sąrašą",
"showUpdateButton": "Rodyti naujinimą", "showUpdateButton": "Rodyti naujinimą",
"navigationView": { "navigationView": {
@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "Jūs ketinate išjungti pataisymų pasirinkimo keitimą.\nNumatytasis pataisymų pasirinkimas bus atstatytas.\n\nVis dėlto išjungti?", "disablePatchesSelectionWarningText": "Jūs ketinate išjungti pataisymų pasirinkimo keitimą.\nNumatytasis pataisymų pasirinkimas bus atstatytas.\n\nVis dėlto išjungti?",
"autoUpdatePatchesLabel": "Automatiškai atnaujinti pataisymus", "autoUpdatePatchesLabel": "Automatiškai atnaujinti pataisymus",
"autoUpdatePatchesHint": "Automatiškai atnaujinti pataisymus iki naujausios versijos", "autoUpdatePatchesHint": "Automatiškai atnaujinti pataisymus iki naujausios versijos",
"usePrereleasesLabel": "Naudoti išankstines versijas",
"usePrereleasesHint": "Naudoti išankstines ReVanced Manager ir ReVanced lopų versijas",
"usePrereleasesWarningText": "Naudojant bandomąsias versijas gali kilti netikėtų problemų.\\n\\nVis tiek įjungti?",
"showUpdateDialogLabel": "Rodyti atnaujinimo dialogą", "showUpdateDialogLabel": "Rodyti atnaujinimo dialogą",
"showUpdateDialogHint": "Rodyti dialogą, kai pasiekiamas naujas atnaujinimas", "showUpdateDialogHint": "Rodyti dialogą, kai pasiekiamas naujas atnaujinimas",
"universalPatchesLabel": "Rodyti universalius pataisymus", "universalPatchesLabel": "Rodyti universalius pataisymus",
@ -289,10 +292,10 @@
"status_failure_storage_description": "Įdiegimas nepavyko dėl nepakankamos saugojimo vietos.\n\nIšlaisvinkite vietos ir bandykite dar kartą.", "status_failure_storage_description": "Įdiegimas nepavyko dėl nepakankamos saugojimo vietos.\n\nIšlaisvinkite vietos ir bandykite dar kartą.",
"status_failure_invalid_description": "Įdiegimas nepavyko, nes pataisyta programa yra netinkama.\n\nPašalinkite programą ir bandykite dar kartą?", "status_failure_invalid_description": "Įdiegimas nepavyko, nes pataisyta programa yra netinkama.\n\nPašalinkite programą ir bandykite dar kartą?",
"status_failure_incompatible_description": "Programa nesuderinama su šiuo įrenginiu.\n\nNaudokite APK, kuris yra palaikomas šio įrenginio, ir bandykite dar kartą.", "status_failure_incompatible_description": "Programa nesuderinama su šiuo įrenginiu.\n\nNaudokite APK, kuris yra palaikomas šio įrenginio, ir bandykite dar kartą.",
"status_failure_conflict_description": "Esamas programos įdiegimas sustabdė įdiegimą.\n\nPašalinkite įdiegtą programą ir bandykite dar kartą?", "status_failure_conflict_description": "Diegimas buvo sustabdymas dėl jau įdiegtos programos.\n\nPašalinti įdiegtą programą ir bandyti dar kartą?",
"status_failure_blocked_description": "Įdiegimą blokavo ${packageName}.\n\nSureguliuokite saugos nustatymus ir bandykite dar kartą.", "status_failure_blocked_description": "Diegimą blokavo ${packageName}.\n\nSureguliuokite saugumo nustatymus ir bandykite dar kartą.",
"install_failed_verification_failure_description": "Įdiegimas nepavyko dėl patvirtinimo klaidos.\n\nSureguliuokite saugos nustatymus ir bandykite dar kartą.", "install_failed_verification_failure_description": "Diegimas nepavyko dėl patvirtinimo problemos.\n\nSureguliuokite saugumo nustatymus ir bandykite dar kartą.",
"install_failed_version_downgrade_description": "Įdiegimas nepavyko, nes pataisyta programa yra senesnės versijos nei įdiegta programa.\n\nPašalinti programą ir bandyti dar kartą?", "install_failed_version_downgrade_description": "Diegimas nepavyko, nes pataisyta programa yra žemesnės versijos nei įdiegta programa.\n\nPašalinti programą ir bandyti dar kartą?",
"status_unknown_description": "Įdiegimas nepavyko dėl nežinomos priežasties. Bandykite dar kartą." "status_unknown_description": "Diegimas nepavyko dėl nežinomos priežasties. Bandykite dar kartą."
} }
} }

View File

@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "Jūs gatavojaties atspējot labojumu izvēles maiņu.\nTiksies atjaunota labojumu noklusējuma izvēle.\n\nTomēr atspējot?", "disablePatchesSelectionWarningText": "Jūs gatavojaties atspējot labojumu izvēles maiņu.\nTiksies atjaunota labojumu noklusējuma izvēle.\n\nTomēr atspējot?",
"autoUpdatePatchesLabel": "Automātiski atjaunināt ielāpus", "autoUpdatePatchesLabel": "Automātiski atjaunināt ielāpus",
"autoUpdatePatchesHint": "Automātiski atjaunināt ielāpus uz jaunāko versiju", "autoUpdatePatchesHint": "Automātiski atjaunināt ielāpus uz jaunāko versiju",
"usePrereleasesLabel": "Izmantot pirmsizlaides",
"usePrereleasesHint": "Izmantot ReVanced Manager un ReVanced Patches pirmsizlaides versijas",
"usePrereleasesWarningText": "Lietojot pirmsizlaides versijas, var rasties negaidītas problēmas.\\n\\nTomēr iespējot?",
"showUpdateDialogLabel": "Rādīt atjauninājuma dialoglodziņu", "showUpdateDialogLabel": "Rādīt atjauninājuma dialoglodziņu",
"showUpdateDialogHint": "Rādīt dialoglodziņu, kad ir pieejams jauns atjauninājums", "showUpdateDialogHint": "Rādīt dialoglodziņu, kad ir pieejams jauns atjauninājums",
"universalPatchesLabel": "Rādīt universālos ielāpus", "universalPatchesLabel": "Rādīt universālos ielāpus",

View File

@ -1,18 +1,41 @@
{ {
"okButton": "OK",
"cancelButton": "Batal", "cancelButton": "Batal",
"dismissButton": "Melepaskan",
"quitButton": "Henti",
"updateButton": "Kemas kini", "updateButton": "Kemas kini",
"suggested": "Versi dicadangkan: ${version}",
"yesButton": "Ya", "yesButton": "Ya",
"noButton": "Tidak", "noButton": "Tidak",
"warning": "Amaran", "warning": "Amaran",
"notice": "Notis",
"noShowAgain": "Jangan tunjukkan lagi",
"add": "Tambah",
"remove": "Buang",
"showChangelogButton": "Tunjuk log perubahan",
"showUpdateButton": "Tunjuk kemas kini",
"navigationView": { "navigationView": {
"dashboardTab": "Papan Pemuka", "dashboardTab": "Papan Pemuka",
"patcherTab": "Pemodifikasi", "patcherTab": "Pemodifikasi",
"settingsTab": "Tetapan" "settingsTab": "Tetapan"
}, },
"homeView": { "homeView": {
"refreshSuccess": "Muat semula berjaya",
"widgetTitle": "Papan Pemuka", "widgetTitle": "Papan Pemuka",
"updatesSubtitle": "Kemas Kini", "updatesSubtitle": "Kemas Kini",
"lastPatchedAppSubtitle": "Aplikasi tampalan terakhir",
"patchedSubtitle": "Apl yang telah di pasang",
"changeLaterSubtitle": "Anda boleh menukar tetapan pada waktu lain",
"noSavedAppFound": "Tiada aplikasi di jumpai",
"noInstallations": "Tiada aplikasi tampalan telah di pasang",
"installUpdate": "Teruskan untuk pasang kemaskini? ",
"updateSheetTitle": "Kemaskini ReVanced Manager",
"updateDialogTitle": "Kemas kini baharu tersedia",
"updatePatchesSheetTitle": "Kemaskini ReVanced Patches",
"updateChangelogTitle": "Log perubahan", "updateChangelogTitle": "Log perubahan",
"updateDialogText": "Kemas kini baharu tersedia untuk ${file}\n\nVersi yang terpasang adalah ${version}",
"downloadConsentDialogTitle": "Muat turun fail yang diperlukan?",
"downloadConsentDialogText": "ReVanced Manager perlu memuat turun fail penting untuk berfungsi dengan baik.",
"downloadingMessage": "Memuat turun pengemaskinian...", "downloadingMessage": "Memuat turun pengemaskinian...",
"downloadedMessage": "Kemaskini dimuat turun", "downloadedMessage": "Kemaskini dimuat turun",
"installingMessage": "Memasang pengemaskinian...", "installingMessage": "Memasang pengemaskinian...",

View File

@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "U staat op het punt om de selectie van patches uit te schakelen.\nDe standaard selectie van patches zal worden hersteld.\n\nToch uitschakelen?", "disablePatchesSelectionWarningText": "U staat op het punt om de selectie van patches uit te schakelen.\nDe standaard selectie van patches zal worden hersteld.\n\nToch uitschakelen?",
"autoUpdatePatchesLabel": "Patch automatisch bijwerken", "autoUpdatePatchesLabel": "Patch automatisch bijwerken",
"autoUpdatePatchesHint": "Patch automatisch bijwerken naar de laatste versie", "autoUpdatePatchesHint": "Patch automatisch bijwerken naar de laatste versie",
"usePrereleasesLabel": "Gebruik pre-releases",
"usePrereleasesHint": "Gebruik pre-release versies van ReVanced Manager en ReVanced Patches",
"usePrereleasesWarningText": "Het gebruik van prereleaseversies kan onverwachte problemen veroorzaken.\\n\\nToch inschakelen?",
"showUpdateDialogLabel": "Toon update dialoogvenster", "showUpdateDialogLabel": "Toon update dialoogvenster",
"showUpdateDialogHint": "Een dialoogvenster weergeven wanneer een nieuwe update beschikbaar is", "showUpdateDialogHint": "Een dialoogvenster weergeven wanneer een nieuwe update beschikbaar is",
"universalPatchesLabel": "Toon universele patches", "universalPatchesLabel": "Toon universele patches",

View File

@ -7,7 +7,7 @@
"suggested": "Sugerowana wersja: ${version}", "suggested": "Sugerowana wersja: ${version}",
"yesButton": "Tak", "yesButton": "Tak",
"noButton": "Nie", "noButton": "Nie",
"warning": "Ostrzeżenie", "warning": "Uwaga",
"notice": "Komunikat", "notice": "Komunikat",
"noShowAgain": "Nie pokazuj ponownie", "noShowAgain": "Nie pokazuj ponownie",
"add": "Dodaj", "add": "Dodaj",
@ -23,7 +23,7 @@
"refreshSuccess": "Odświeżono pomyślnie", "refreshSuccess": "Odświeżono pomyślnie",
"widgetTitle": "Panel główny", "widgetTitle": "Panel główny",
"updatesSubtitle": "Aktualizacje", "updatesSubtitle": "Aktualizacje",
"lastPatchedAppSubtitle": "Ostatnio poprawiona aplikacja", "lastPatchedAppSubtitle": "Ostatnio załatana aplikacja",
"patchedSubtitle": "Zainstalowane aplikacje", "patchedSubtitle": "Zainstalowane aplikacje",
"changeLaterSubtitle": "Możesz to zmienić w ustawieniach w późniejszym czasie.", "changeLaterSubtitle": "Możesz to zmienić w ustawieniach w późniejszym czasie.",
"noSavedAppFound": "Nie znaleziono aplikacji", "noSavedAppFound": "Nie znaleziono aplikacji",
@ -52,7 +52,7 @@
"timeagoLabel": "${time} temu" "timeagoLabel": "${time} temu"
}, },
"patcherView": { "patcherView": {
"widgetTitle": "Łataj", "widgetTitle": "Łatanie",
"patchButton": "Załataj", "patchButton": "Załataj",
"incompatibleArchWarningDialogText": "Łatanie na tej architekturze nie jest jeszcze obsługiwane i może się nie powieść. Czy chcesz kontynuować mimo to?", "incompatibleArchWarningDialogText": "Łatanie na tej architekturze nie jest jeszcze obsługiwane i może się nie powieść. Czy chcesz kontynuować mimo to?",
"removedPatchesWarningDialogText": "Łatki usunięte od czasu Twojego ostatniego łatania aplikacji:\n\n${patches}\n\n${newPatches}Kontynuować?", "removedPatchesWarningDialogText": "Łatki usunięte od czasu Twojego ostatniego łatania aplikacji:\n\n${patches}\n\n${newPatches}Kontynuować?",
@ -79,7 +79,7 @@
"appSelectorView": { "appSelectorView": {
"viewTitle": "Wybierz aplikację", "viewTitle": "Wybierz aplikację",
"searchBarHint": "Wyszukaj aplikację", "searchBarHint": "Wyszukaj aplikację",
"storageButton": "Pamięć", "storageButton": "Wybierz z pamięci",
"selectFromStorageButton": "Wybierz z pamięci", "selectFromStorageButton": "Wybierz z pamięci",
"errorMessage": "Nie można użyć wybranej aplikacji", "errorMessage": "Nie można użyć wybranej aplikacji",
"downloadToast": "Funkcja pobierania jest jeszcze niedostępna", "downloadToast": "Funkcja pobierania jest jeszcze niedostępna",
@ -107,7 +107,7 @@
"customValue": "Niestandardowa wartość", "customValue": "Niestandardowa wartość",
"setToNull": "Ustaw na zerowy", "setToNull": "Ustaw na zerowy",
"nullValue": "Ta opcja jest obecnie pusta", "nullValue": "Ta opcja jest obecnie pusta",
"viewTitle": "Opcje łatek", "viewTitle": "Opcje łatki",
"saveOptions": "Zapisz", "saveOptions": "Zapisz",
"unselectPatch": "Odznacz łatkę", "unselectPatch": "Odznacz łatkę",
"tooltip": "Więcej opcji wejściowych", "tooltip": "Więcej opcji wejściowych",
@ -154,9 +154,9 @@
"lightThemeLabel": "Jasny", "lightThemeLabel": "Jasny",
"darkThemeLabel": "Ciemny", "darkThemeLabel": "Ciemny",
"dynamicThemeLabel": "Material You", "dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Ciesz się wrażeniami bliższymi twojemu urządzeniu", "dynamicThemeHint": "Ciesz się wyglądem dopasowanym do twojego urządzenia",
"languageLabel": "Język", "languageLabel": "Język",
"languageUpdated": "Zaktualizowano język", "languageUpdated": "Zmieniono język",
"sourcesLabel": "Alternatywne źródło", "sourcesLabel": "Alternatywne źródło",
"sourcesLabelHint": "Skonfiguruj alternatywne źródła dla łatek ReVanced", "sourcesLabelHint": "Skonfiguruj alternatywne źródła dla łatek ReVanced",
"useAlternativeSources": "Używaj alternatywnych źródeł", "useAlternativeSources": "Używaj alternatywnych źródeł",
@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "Zamierzasz wyłączyć zmianę wyboru łatek.\nZostanie przywrócony domyślny wybór łatek.\n\nWyłączyć mimo to?", "disablePatchesSelectionWarningText": "Zamierzasz wyłączyć zmianę wyboru łatek.\nZostanie przywrócony domyślny wybór łatek.\n\nWyłączyć mimo to?",
"autoUpdatePatchesLabel": "Automatycznie aktualizuj łatki", "autoUpdatePatchesLabel": "Automatycznie aktualizuj łatki",
"autoUpdatePatchesHint": "Automatycznie aktualizuj łatki do najnowszej wersji", "autoUpdatePatchesHint": "Automatycznie aktualizuj łatki do najnowszej wersji",
"usePrereleasesLabel": "Używaj wersji wstępnych",
"usePrereleasesHint": "Używaj wersji wstępnych ReVanced Manager i ReVanced Patches",
"usePrereleasesWarningText": "Używanie wersji przedpremierowych może powodować nieoczekiwane problemy.\\n\\nWłączyć mimo to?",
"showUpdateDialogLabel": "Pokaż powiadomienie o aktualizacji", "showUpdateDialogLabel": "Pokaż powiadomienie o aktualizacji",
"showUpdateDialogHint": "Pokaż powiadomienie, gdy nowa wersja jest dostępna", "showUpdateDialogHint": "Pokaż powiadomienie, gdy nowa wersja jest dostępna",
"universalPatchesLabel": "Pokaż uniwersalne łatki", "universalPatchesLabel": "Pokaż uniwersalne łatki",

View File

@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "Você irá desabilitar a mudança da pré-seleção dos patches.\nA seleção padrão dos patches será restaurada.\n\nDesabilitar mesmo assim?", "disablePatchesSelectionWarningText": "Você irá desabilitar a mudança da pré-seleção dos patches.\nA seleção padrão dos patches será restaurada.\n\nDesabilitar mesmo assim?",
"autoUpdatePatchesLabel": "Atualizar patches automaticamente", "autoUpdatePatchesLabel": "Atualizar patches automaticamente",
"autoUpdatePatchesHint": "Atualize automaticamente os patches para a versão mais recente", "autoUpdatePatchesHint": "Atualize automaticamente os patches para a versão mais recente",
"usePrereleasesLabel": "Usar pré-lançamentos",
"usePrereleasesHint": "Usar versões pré-lançamento do ReVanced Manager e ReVanced Patches",
"usePrereleasesWarningText": "O uso de versões de pré-lançamento pode causar problemas inesperados.\n\nHabilitar mesmo assim?",
"showUpdateDialogLabel": "Mostrar alerta de atualização", "showUpdateDialogLabel": "Mostrar alerta de atualização",
"showUpdateDialogHint": "Mostra um aviso quando uma nova atualização estiver disponível", "showUpdateDialogHint": "Mostra um aviso quando uma nova atualização estiver disponível",
"universalPatchesLabel": "Mostrar patches universais", "universalPatchesLabel": "Mostrar patches universais",

View File

@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "Estás prestes a desativar a permissão para alterar a seleção de modificações.\nA seleção de modificações predefinida será restaurada.\n\nDesativar na mesma?", "disablePatchesSelectionWarningText": "Estás prestes a desativar a permissão para alterar a seleção de modificações.\nA seleção de modificações predefinida será restaurada.\n\nDesativar na mesma?",
"autoUpdatePatchesLabel": "Atualizar automaticamente as modificações", "autoUpdatePatchesLabel": "Atualizar automaticamente as modificações",
"autoUpdatePatchesHint": "Atualizar automaticamente as modificações para a versão mais recente", "autoUpdatePatchesHint": "Atualizar automaticamente as modificações para a versão mais recente",
"usePrereleasesLabel": "Usar pré-lançamentos",
"usePrereleasesHint": "Usar versões pré-lançamento do ReVanced Manager e ReVanced Patches",
"usePrereleasesWarningText": "O uso de versões pré-lançamento pode causar problemas inesperados.\n\nAtivar mesmo assim?",
"showUpdateDialogLabel": "Mostrar a notificação da atualização", "showUpdateDialogLabel": "Mostrar a notificação da atualização",
"showUpdateDialogHint": "Mostrar uma notificação quando uma atualização estiver disponível", "showUpdateDialogHint": "Mostrar uma notificação quando uma atualização estiver disponível",
"universalPatchesLabel": "Mostrar modificações universais", "universalPatchesLabel": "Mostrar modificações universais",

View File

@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "Sunteți pe cale să dezactivați modificarea selecției patch-urilor.\nSelecția implicită a patch-urilor va fi restaurată.\n\nDezactivați oricum?", "disablePatchesSelectionWarningText": "Sunteți pe cale să dezactivați modificarea selecției patch-urilor.\nSelecția implicită a patch-urilor va fi restaurată.\n\nDezactivați oricum?",
"autoUpdatePatchesLabel": "Actualizare automată a patch-urilor", "autoUpdatePatchesLabel": "Actualizare automată a patch-urilor",
"autoUpdatePatchesHint": "Actualizează automat patch-urile la versiunea cea mai recentă", "autoUpdatePatchesHint": "Actualizează automat patch-urile la versiunea cea mai recentă",
"usePrereleasesLabel": "Utilizați versiuni preliminare",
"usePrereleasesHint": "Utilizați versiuni preliminare de ReVanced Manager și ReVanced Patches",
"usePrereleasesWarningText": "Utilizarea versiunilor pre-lansare poate cauza probleme neașteptate.\n\nActivați oricum?",
"showUpdateDialogLabel": "Arată dialogul de actualizare", "showUpdateDialogLabel": "Arată dialogul de actualizare",
"showUpdateDialogHint": "Arată un dialog atunci când este disponibilă o nouă actualizare", "showUpdateDialogHint": "Arată un dialog atunci când este disponibilă o nouă actualizare",
"universalPatchesLabel": "Arată patch-urile universale", "universalPatchesLabel": "Arată patch-urile universale",

View File

@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "Вы собираетесь выключить измененную выборку патчей.\nБудет восстановлен стандартный выбор патчей.\n\nВсе равно выключить?", "disablePatchesSelectionWarningText": "Вы собираетесь выключить измененную выборку патчей.\nБудет восстановлен стандартный выбор патчей.\n\nВсе равно выключить?",
"autoUpdatePatchesLabel": "Автообновление патчей", "autoUpdatePatchesLabel": "Автообновление патчей",
"autoUpdatePatchesHint": "Автоматически обновлять патчи до последней версии", "autoUpdatePatchesHint": "Автоматически обновлять патчи до последней версии",
"usePrereleasesLabel": "Использовать предрелизные версии",
"usePrereleasesHint": "Использовать предрелизные версии ReVanced Manager и ReVanced Patches",
"usePrereleasesWarningText": "Использование предварительных версий может вызвать непредвиденные проблемы.\n\nВключить в любом случае?",
"showUpdateDialogLabel": "Показать диалог обновления", "showUpdateDialogLabel": "Показать диалог обновления",
"showUpdateDialogHint": "Показывать диалоговое окно, когда доступно новое обновление", "showUpdateDialogHint": "Показывать диалоговое окно, когда доступно новое обновление",
"universalPatchesLabel": "Показать универсальные патчи", "universalPatchesLabel": "Показать универсальные патчи",

View File

@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "Chystáte sa zakázať zmenu výberu záplat. \nPredvolený výber záplat bude obnovený.\n\nZakázať aj napriek tomu?", "disablePatchesSelectionWarningText": "Chystáte sa zakázať zmenu výberu záplat. \nPredvolený výber záplat bude obnovený.\n\nZakázať aj napriek tomu?",
"autoUpdatePatchesLabel": "Automaticky aktualizovať záplaty", "autoUpdatePatchesLabel": "Automaticky aktualizovať záplaty",
"autoUpdatePatchesHint": "Automaticky aktualizovať patchy na najnovšiu verziu", "autoUpdatePatchesHint": "Automaticky aktualizovať patchy na najnovšiu verziu",
"usePrereleasesLabel": "Použiť predbežné verzie",
"usePrereleasesHint": "Použiť predbežné verzie programu ReVanced Manager a ReVanced Patches",
"usePrereleasesWarningText": "Používanie predbežných verzií môže spôsobiť neočakávané problémy. Napriek tomu povoliť?",
"showUpdateDialogLabel": "Zobraziť dialógové okno aktualizácie", "showUpdateDialogLabel": "Zobraziť dialógové okno aktualizácie",
"showUpdateDialogHint": "Zobraziť dialógové okno, keď je k dispozícii nová aktualizácia", "showUpdateDialogHint": "Zobraziť dialógové okno, keď je k dispozícii nová aktualizácia",
"universalPatchesLabel": "Zobraziť univerzálne patchy", "universalPatchesLabel": "Zobraziť univerzálne patchy",

View File

@ -8,7 +8,7 @@
"yesButton": "Da", "yesButton": "Da",
"noButton": "Ne", "noButton": "Ne",
"warning": "Opozorilo", "warning": "Opozorilo",
"notice": "Notice", "notice": "Obvestilo",
"noShowAgain": "Ne prikazuj več", "noShowAgain": "Ne prikazuj več",
"add": "Dodaj", "add": "Dodaj",
"remove": "Odstrani", "remove": "Odstrani",
@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "Opozorilo: onemogočite spreminjanje izbire popravkov.\nPrivzeta izbira popravkov bo obnovljena.\n\nVseeno onemogočite?", "disablePatchesSelectionWarningText": "Opozorilo: onemogočite spreminjanje izbire popravkov.\nPrivzeta izbira popravkov bo obnovljena.\n\nVseeno onemogočite?",
"autoUpdatePatchesLabel": "Samodejno posodabljanje popravkov", "autoUpdatePatchesLabel": "Samodejno posodabljanje popravkov",
"autoUpdatePatchesHint": "Samodejno posodobi popravke", "autoUpdatePatchesHint": "Samodejno posodobi popravke",
"usePrereleasesLabel": "Uporabi predizdaje",
"usePrereleasesHint": "Uporabi predizdajne različice ReVanced Managerja in ReVanced popravkov",
"usePrereleasesWarningText": "Uporaba predizdajnih različic lahko povzroči nepričakovane težave. Vseeno omogoči?",
"showUpdateDialogLabel": "Pokaži posodobitveno pogovorno okno", "showUpdateDialogLabel": "Pokaži posodobitveno pogovorno okno",
"showUpdateDialogHint": "Pokaži pogovorno okno, ko je na voljo posodobitev", "showUpdateDialogHint": "Pokaži pogovorno okno, ko je na voljo posodobitev",
"universalPatchesLabel": "Pokaži splošne popravke", "universalPatchesLabel": "Pokaži splošne popravke",

View File

@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "Jeni duke u përgatitur për të çaktivizuar ndryshimin e zgjedhjes së përditësimeve.\nZgjedhja e parazgjedhur e përditësimeve do të rivendosetet.\n\nÇaktivizo prapëseprapë?", "disablePatchesSelectionWarningText": "Jeni duke u përgatitur për të çaktivizuar ndryshimin e zgjedhjes së përditësimeve.\nZgjedhja e parazgjedhur e përditësimeve do të rivendosetet.\n\nÇaktivizo prapëseprapë?",
"autoUpdatePatchesLabel": "Përditëso automatikisht përditësimet", "autoUpdatePatchesLabel": "Përditëso automatikisht përditësimet",
"autoUpdatePatchesHint": "Përditëso automatikisht përditësimet në versionin e fundit", "autoUpdatePatchesHint": "Përditëso automatikisht përditësimet në versionin e fundit",
"usePrereleasesLabel": "Përdor parapublikimet",
"usePrereleasesHint": "Përdor versionet parapublikuese të ReVanced Manager dhe ReVanced Patches",
"usePrereleasesWarningText": "Përdorimi i versioneve paraprake mund të shkaktojë probleme të papritura.\n\nAktivizo gjithsesi?",
"showUpdateDialogLabel": "Trego dialogun e përditësimit", "showUpdateDialogLabel": "Trego dialogun e përditësimit",
"showUpdateDialogHint": "Trego një dialog kur një përditësim i ri është i disponueshëm", "showUpdateDialogHint": "Trego një dialog kur një përditësim i ri është i disponueshëm",
"universalPatchesLabel": "Shfaq përditësime universale", "universalPatchesLabel": "Shfaq përditësime universale",

View File

@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "Upravo ćete da onemogućite promenu izbora pečeva.\nPodrazumevani izbor pečeva će biti vraćen.\n\nIpak onemogućiti?", "disablePatchesSelectionWarningText": "Upravo ćete da onemogućite promenu izbora pečeva.\nPodrazumevani izbor pečeva će biti vraćen.\n\nIpak onemogućiti?",
"autoUpdatePatchesLabel": "Automatski ažuriraj pečeve", "autoUpdatePatchesLabel": "Automatski ažuriraj pečeve",
"autoUpdatePatchesHint": "Instalira najnoviju verziju pečeva automatski", "autoUpdatePatchesHint": "Instalira najnoviju verziju pečeva automatski",
"usePrereleasesLabel": "Koristi predizdanja",
"usePrereleasesHint": "Koristite verzije predizdanja ReVanced Managera i ReVanced pečeva",
"usePrereleasesWarningText": "Korišćenje verzija predizdanja može izazvati neočekivane probleme.\n\nIpak omogućiti?",
"showUpdateDialogLabel": "Prikaži dijalog o ažuriranju", "showUpdateDialogLabel": "Prikaži dijalog o ažuriranju",
"showUpdateDialogHint": "Prikazivanje dijaloga kada je novo ažuriranje dostupno", "showUpdateDialogHint": "Prikazivanje dijaloga kada je novo ažuriranje dostupno",
"universalPatchesLabel": "Prikaži univerzalne pečeve", "universalPatchesLabel": "Prikaži univerzalne pečeve",

View File

@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "Управо ћете да онемогућите промену избора печева.\nПодразумевани избор печева ће бити враћен.\n\nИпак онемогућити?", "disablePatchesSelectionWarningText": "Управо ћете да онемогућите промену избора печева.\nПодразумевани избор печева ће бити враћен.\n\nИпак онемогућити?",
"autoUpdatePatchesLabel": "Аутоматски ажурирај печеве", "autoUpdatePatchesLabel": "Аутоматски ажурирај печеве",
"autoUpdatePatchesHint": "Инсталира најновију верзију печева аутоматски", "autoUpdatePatchesHint": "Инсталира најновију верзију печева аутоматски",
"usePrereleasesLabel": "Користи предиздања",
"usePrereleasesHint": "Користите верзије предиздања ReVanced Manager-а и ReVanced печева",
"usePrereleasesWarningText": "Коришћење верзија предиздања може изазвати неочекиване проблеме.\n\nИпак омогућити?",
"showUpdateDialogLabel": "Прикажи дијалог о ажурирању", "showUpdateDialogLabel": "Прикажи дијалог о ажурирању",
"showUpdateDialogHint": "Приказивање дијалога када је ново ажурирање доступно", "showUpdateDialogHint": "Приказивање дијалога када је ново ажурирање доступно",
"universalPatchesLabel": "Прикажи универзалне печеве", "universalPatchesLabel": "Прикажи универзалне печеве",

View File

@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "Du håller på att inaktivera valet av patchar.\nStandardvalet av patchar kommer att återställas.\n\nInaktivera ändå?", "disablePatchesSelectionWarningText": "Du håller på att inaktivera valet av patchar.\nStandardvalet av patchar kommer att återställas.\n\nInaktivera ändå?",
"autoUpdatePatchesLabel": "Uppdatera patchar automatiskt", "autoUpdatePatchesLabel": "Uppdatera patchar automatiskt",
"autoUpdatePatchesHint": "Uppdatera automatiskt patches till den senaste versionen", "autoUpdatePatchesHint": "Uppdatera automatiskt patches till den senaste versionen",
"usePrereleasesLabel": "Använd förhandsversioner",
"usePrereleasesHint": "Använd förhandsversioner av ReVanced Manager och ReVanced-patchar",
"usePrereleasesWarningText": "Att använda förhandsversioner kan orsaka oväntade problem.Aktivera ändå?",
"showUpdateDialogLabel": "Visa dialogruta för uppdatering", "showUpdateDialogLabel": "Visa dialogruta för uppdatering",
"showUpdateDialogHint": "Visa en dialog när en ny uppdatering är tillgänglig", "showUpdateDialogHint": "Visa en dialog när en ny uppdatering är tillgänglig",
"universalPatchesLabel": "Visa universella patchar", "universalPatchesLabel": "Visa universella patchar",

View File

@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "คุณกำลังจะปิดใช้งานการเปลี่ยนการเลือกการแก้ไข\nการเลือกการแก้ไขเริ่มต้นจะถูกคืนค่า\n\nปิดใช้งานอยู่ดี?", "disablePatchesSelectionWarningText": "คุณกำลังจะปิดใช้งานการเปลี่ยนการเลือกการแก้ไข\nการเลือกการแก้ไขเริ่มต้นจะถูกคืนค่า\n\nปิดใช้งานอยู่ดี?",
"autoUpdatePatchesLabel": "อัปเดตการแก้ไขโดยอัตโนมัติ", "autoUpdatePatchesLabel": "อัปเดตการแก้ไขโดยอัตโนมัติ",
"autoUpdatePatchesHint": "อัปเดตการแก้ไขเป็นเวอร์ชันล่าสุดโดยอัตโนมัติ", "autoUpdatePatchesHint": "อัปเดตการแก้ไขเป็นเวอร์ชันล่าสุดโดยอัตโนมัติ",
"usePrereleasesLabel": "ใช้เวอร์ชันก่อนเปิดตัว",
"usePrereleasesHint": "ใช้เวอร์ชันก่อนเปิดตัวของ ReVanced Manager และ ReVanced Patches",
"usePrereleasesWarningText": "การใช้เวอร์ชันก่อนเปิดตัวอาจทำให้เกิดปัญหาที่ไม่คาดคิด\n\nเปิดใช้งานต่อไปหรือไม่?",
"showUpdateDialogLabel": "แสดงกล่องโต้ตอบการอัปเดต", "showUpdateDialogLabel": "แสดงกล่องโต้ตอบการอัปเดต",
"showUpdateDialogHint": "แสดงกล่องโต้ตอบเมื่อมีการอัปเดตใหม่", "showUpdateDialogHint": "แสดงกล่องโต้ตอบเมื่อมีการอัปเดตใหม่",
"universalPatchesLabel": "แสดงการแก้ไขแบบสากล", "universalPatchesLabel": "แสดงการแก้ไขแบบสากล",

View File

@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "Yama seçimini değiştirmeyi devre dışı bırakmak üzeresiniz.\nVarsayılan yama seçimi geri yüklenecektir.\n\nYine de devre dışı bırakılsın mı?", "disablePatchesSelectionWarningText": "Yama seçimini değiştirmeyi devre dışı bırakmak üzeresiniz.\nVarsayılan yama seçimi geri yüklenecektir.\n\nYine de devre dışı bırakılsın mı?",
"autoUpdatePatchesLabel": "Yamaları otomatik güncelle", "autoUpdatePatchesLabel": "Yamaları otomatik güncelle",
"autoUpdatePatchesHint": "Yamaları otomatik olarak en son sürüme güncelle", "autoUpdatePatchesHint": "Yamaları otomatik olarak en son sürüme güncelle",
"usePrereleasesLabel": "Ön sürümleri kullan",
"usePrereleasesHint": "ReVanced Manager ve ReVanced Patches'in ön sürüm versiyonlarını kullan",
"usePrereleasesWarningText": "Ön sürüm versiyonlarını kullanmak beklenmedik sorunlara neden olabilir.\n\nYine de etkinleştirilsin mi?",
"showUpdateDialogLabel": "Güncelleme penceresini göster", "showUpdateDialogLabel": "Güncelleme penceresini göster",
"showUpdateDialogHint": "Yeni bir güncelleme mevcut olduğunda bir pencere göster", "showUpdateDialogHint": "Yeni bir güncelleme mevcut olduğunda bir pencere göster",
"universalPatchesLabel": "Ortak yamaları göster", "universalPatchesLabel": "Ortak yamaları göster",

View File

@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "Ви збираєтеся вимкнути зміну вибору патчів.\nБуде відновлено стандартний вибір патчів.\n\nВсе одно вимкнути?", "disablePatchesSelectionWarningText": "Ви збираєтеся вимкнути зміну вибору патчів.\nБуде відновлено стандартний вибір патчів.\n\nВсе одно вимкнути?",
"autoUpdatePatchesLabel": "Автоматичне оновлення патчів", "autoUpdatePatchesLabel": "Автоматичне оновлення патчів",
"autoUpdatePatchesHint": "Автоматично оновлювати патчі до останньої версії", "autoUpdatePatchesHint": "Автоматично оновлювати патчі до останньої версії",
"usePrereleasesLabel": "Використовувати передрелізи",
"usePrereleasesHint": "Використовувати передрелізні версії ReVanced Manager та ReVanced Patches",
"usePrereleasesWarningText": "Використання передрелізних версій може спричинити несподівані проблеми.\n\nВсе одно увімкнути?",
"showUpdateDialogLabel": "Показувати вікно оновлення", "showUpdateDialogLabel": "Показувати вікно оновлення",
"showUpdateDialogHint": "Показувати діалогове вікно, коли доступне нове оновлення", "showUpdateDialogHint": "Показувати діалогове вікно, коли доступне нове оновлення",
"universalPatchesLabel": "Показувати універсальні патчі", "universalPatchesLabel": "Показувати універсальні патчі",

View File

@ -1,7 +1,7 @@
{ {
"okButton": "Đồng ý", "okButton": "Đồng ý",
"cancelButton": "Hủy", "cancelButton": "Hủy",
"dismissButton": "Từ bỏ", "dismissButton": "Bỏ qua",
"quitButton": "Thoát", "quitButton": "Thoát",
"updateButton": "Cập nhật", "updateButton": "Cập nhật",
"suggested": "Được đề xuất: ${version}", "suggested": "Được đề xuất: ${version}",
@ -9,7 +9,7 @@
"noButton": "Không", "noButton": "Không",
"warning": "Cảnh báo", "warning": "Cảnh báo",
"notice": "Lưu ý", "notice": "Lưu ý",
"noShowAgain": "Không hiển thị lại điều này", "noShowAgain": "Không hiển thị lại nữa",
"add": "Thêm", "add": "Thêm",
"remove": "Loại bỏ", "remove": "Loại bỏ",
"showChangelogButton": "Hiển thị nhật ký thay đổi", "showChangelogButton": "Hiển thị nhật ký thay đổi",
@ -20,27 +20,27 @@
"settingsTab": "Cài đặt" "settingsTab": "Cài đặt"
}, },
"homeView": { "homeView": {
"refreshSuccess": "Đã làm mới thành công", "refreshSuccess": "Làm mới thành công",
"widgetTitle": "Tổng quan", "widgetTitle": "Tổng quan",
"updatesSubtitle": "Các bản cập nhật", "updatesSubtitle": "Cập nhật",
"lastPatchedAppSubtitle": "Ứng dụng đã vá lần cuối", "lastPatchedAppSubtitle": "Ứng dụng đã vá gần nhất",
"patchedSubtitle": "Các ứng dụng đã cài đặt", "patchedSubtitle": "ng dụng đã cài đặt",
"changeLaterSubtitle": "Bạn có thể thay đổi cài đặt này sau.", "changeLaterSubtitle": "Bạn có thể thay đổi cài đặt này sau.",
"noSavedAppFound": "Không tìm thấy ứng dụng", "noSavedAppFound": "Không tìm thấy ứng dụng",
"noInstallations": "Không có ứng dụng đã vá nào được cài đặt", "noInstallations": "Không có ứng dụng đã vá được cài đặt",
"installUpdate": "Tiếp tục cài đặt bản cập nhật?", "installUpdate": "Tiếp tục cài đặt bản cập nhật?",
"updateSheetTitle": "Cập nhật ReVanced Manager", "updateSheetTitle": "Cập nhật ReVanced Manager",
"updateDialogTitle": "Có bản cập nhật mới", "updateDialogTitle": "Có bản cập nhật mới",
"updatePatchesSheetTitle": "Cập nhật Các bản vá ReVanced", "updatePatchesSheetTitle": "Cập nhật ReVanced Patches",
"updateChangelogTitle": "Nhật ký thay đổi", "updateChangelogTitle": "Nhật ký thay đổi",
"updateDialogText": "Có một bản cập nhật cho ${file}.\n\nPhiên bản đã cài hin tại là ${version}.", "updateDialogText": "${file} đã có bản cập nhật mới.\n\nBạn đang dùng phiên bản ${version}.",
"downloadConsentDialogTitle": "Tải các tập tin cần thiết?", "downloadConsentDialogTitle": "Tải xuống các tệp cần thiết?",
"downloadConsentDialogText": "ReVanced Manager cần tải các tập tin cần thiết để hoạt động đúng cách.", "downloadConsentDialogText": "ReVanced Manager cần tải xuống các tệp cần thiết để hoạt động đúng cách.",
"downloadConsentDialogText2": "Điều này sẽ kết nối bạn đến ${url}.", "downloadConsentDialogText2": "Ứng dụng sẽ kết nối bạn đến ${url}.",
"downloadingMessage": "Đang tải xuống bản cập nhật...", "downloadingMessage": "Đang tải xuống bản cập nhật...",
"downloadedMessage": "Đã tải xuống bản cập nhật", "downloadedMessage": "Đã tải xuống bản cập nhật",
"installingMessage": "Đang cài đặt bản cập nhật...", "installingMessage": "Đang cài đặt bản cập nhật...",
"errorDownloadMessage": "Không thể tải về bản cập nhật", "errorDownloadMessage": "Không thể tải xuống bản cập nhật",
"errorInstallMessage": "Không thể cài đặt bản cập nhật", "errorInstallMessage": "Không thể cài đặt bản cập nhật",
"noConnection": "Không có kết nối mạng" "noConnection": "Không có kết nối mạng"
}, },
@ -54,23 +54,23 @@
"patcherView": { "patcherView": {
"widgetTitle": "Trình vá", "widgetTitle": "Trình vá",
"patchButton": "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?", "incompatibleArchWarningDialogText": "Vá trên kiến trúc này hiện chưa được hỗ trợ và có thể thất bại. Vẫn tiếp tục?",
"removedPatchesWarningDialogText": "Các bản vá đã loại bỏ từ lần cuối cùng bạn vá ứng dụng này:\n\n${patches}\n\n${newPatches}Vẫn tiếp tục?", "removedPatchesWarningDialogText": "Các bản vá đã bị loại bỏ kể từ lần cuối bạn vá ứng dụng này:\n\n${patches}\n\n${newPatches}Vẫn tiếp tục?",
"addedPatchesDialogText": "Các bản vá đã thêm vào từ lần cuối cùng bạn vá ứng dụng này:\n\n${addedPatches}", "addedPatchesDialogText": "Các bản vá đã được thêm vào kể từ lần cuối bạn vá ứng dụng này:\n\n${addedPatches}",
"requiredOptionDialogText": "Một số tùy chọn bản vá cần được thiết đặt." "requiredOptionDialogText": "Một số tùy chọn bản vá cần được thiết lập."
}, },
"appSelectorCard": { "appSelectorCard": {
"widgetTitle": "Chọn một ứng dụng", "widgetTitle": "Chọn ứng dụng",
"widgetTitleSelected": "Ứng dụng đã chọn", "widgetTitleSelected": "Ứng dụng đã chọn",
"widgetSubtitle": "Không có ứng dụng được chọn", "widgetSubtitle": "Không có ứng dụng được chọn",
"noAppsLabel": "Không tìm thấy ứng dụng nào", "noAppsLabel": "Không tìm thấy ứng dụng",
"anyVersion": "Phiên bản bất kỳ" "anyVersion": "Phiên bản bất kỳ"
}, },
"patchSelectorCard": { "patchSelectorCard": {
"widgetTitle": "Chọn bản vá", "widgetTitle": "Chọn bản vá",
"widgetTitleSelected": "Các bản vá đã chọn", "widgetTitleSelected": "Các bản vá đã chọn",
"widgetSubtitle": "Chọn một ứng dụng trước", "widgetSubtitle": "Chọn một ứng dụng trước",
"widgetEmptySubtitle": "Chưa chọn bản vá nào" "widgetEmptySubtitle": "Chưa chọn bản vá"
}, },
"socialMediaCard": { "socialMediaCard": {
"widgetTitle": "Mạng xã hội", "widgetTitle": "Mạng xã hội",
@ -78,30 +78,30 @@
}, },
"appSelectorView": { "appSelectorView": {
"viewTitle": "Chọn một ứng dụng", "viewTitle": "Chọn một ứng dụng",
"searchBarHint": "Tìm ứng dụng", "searchBarHint": "Tìm kiếm ứng dụng",
"storageButton": "Lưu trữ", "storageButton": "Lưu trữ",
"selectFromStorageButton": "Chọn từ bộ nhớ", "selectFromStorageButton": "Chọn từ kho lưu trữ",
"errorMessage": "Không thể dùng ứng dụng đã chọn", "errorMessage": "Không thể dùng ứng dụng đã chọn",
"downloadToast": "Tính năng tải về chưa khả dụng", "downloadToast": "Tính năng tải xuống chưa khả dụng",
"requireSuggestedAppVersionDialogText": "Phiên bản của ứng dụng bạn đã chọn không trùng khớp vói phiên bản được đề xuất có thể dẫn đến các phát sinh không mong muốn. Xin chọn ứng dụng khớp với phiên bản được đề xuất.\n\nPhiên bản đã chọn: ${selected}\nPhiên bản được đề xuất: ${suggested}\n\nĐể tiếp tục, tắt \"Yêu cầu phiên bản ứng dụng được đề xuất\" trong cài đặt.", "requireSuggestedAppVersionDialogText": "Phiên bản của ứng dụng bạn đã chọn không khớp vi phiên bản được đề xuất có thể dẫn đến các sự cố không mong muốn. Vui lòng sử dụng phiên bản đề xuất.\n\nPhiên bản đã chọn: ${selected}\nPhiên bản được đề xuất: ${suggested}\n\nĐể tiếp tục, hãy tắt \"Yêu cầu phiên bản ứng dụng được đề xuất\" trong cài đặt.",
"featureNotAvailable": "Tính năng chưa triển khai", "featureNotAvailable": "Tính năng chưa triển khai",
"featureNotAvailableText": "Ứng dụng này là một APK tách rời và chỉ có thể được vá và cài một cách tin cậy bằng cách gắn kết với quyền root. Tuy nhiên, bạn có thể vá và cài APK đầy đủ bằng cách chọn chúng từ lưu trữ." "featureNotAvailableText": "Ứng dụng này là một APK chia nhỏ và chỉ có thể được vá và cài đặt đáng tin cậy bằng cách gắn kết với quyền root. Tuy nhiên, bạn có thể vá và cài đặt một APK đầy đủ bằng cách chọn nó từ kho lưu trữ."
}, },
"patchesSelectorView": { "patchesSelectorView": {
"viewTitle": "Chọn bản vá", "viewTitle": "Chọn bản vá",
"searchBarHint": "Tìm bản vá", "searchBarHint": "Tìm kiếm bản vá",
"universalPatches": "Các bản vá phổ quát", "universalPatches": "Các bản vá phổ quát",
"newPatches": "Các bản vá mới", "newPatches": "Các bản vá mới",
"patches": "Các bản vá", "patches": "Các bản vá",
"doneButton": "Hoàn tất", "doneButton": "Hoàn tất",
"defaultChip": "Mặc định", "defaultChip": "Mặc định",
"defaultTooltip": "Chọn tất cả bản vá mặc định", "defaultTooltip": "Chọn tất cả bản vá mặc định",
"noneChip": "Không", "noneChip": "Không",
"noneTooltip": "Bỏ chọn tất cả bản vá", "noneTooltip": "Bỏ chọn tất cả bản vá",
"loadPatchesSelection": "Nạp các bản vá được chọn", "loadPatchesSelection": "Nạp lựa chọn bản vá",
"noSavedPatches": "Không có bản vá cho ứng dụng được chọn\nNhấn Hoàn tất để lưu lựa chọn hiện tại.", "noSavedPatches": "Không có lựa chọn bản vá được lưu cho ứng dụng đã chọn.\nNhấn \"Hoàn tất\" để lưu lựa chọn hiện tại.",
"noPatchesFound": "Không tìm thấy bản vá cho ứng dụng đã chọn", "noPatchesFound": "Không tìm thấy bản vá cho ứng dụng đã chọn",
"setRequiredOption": "Một số bản vá yêu cầu thiết đặt tùy chọn:\n\n${patches}\n\nXin thiết đặt chúng trước khi tiếp tục." "setRequiredOption": "Một số bản vá yêu cầu thiết lập tùy chọn:\n\n${patches}\n\nVui lòng thiết lập chúng trước khi tiếp tục."
}, },
"patchOptionsView": { "patchOptionsView": {
"customValue": "Giá trị tùy chỉnh", "customValue": "Giá trị tùy chỉnh",
@ -110,35 +110,35 @@
"viewTitle": "Tùy chọn bản vá", "viewTitle": "Tùy chọn bản vá",
"saveOptions": "Lưu", "saveOptions": "Lưu",
"unselectPatch": "Bỏ chọn bản vá", "unselectPatch": "Bỏ chọn bản vá",
"tooltip": "Tùy chọn nhập thêm", "tooltip": "Thêm tuỳ chọn nhập",
"selectFilePath": "Chọn đường dẫn tập tin", "selectFilePath": "Chọn đường dẫn tệp",
"selectFolder": "Chọn thư mục", "selectFolder": "Chọn thư mục",
"requiredOption": "Thiết lập tùy chọn này là bắt buộc", "requiredOption": "Thiết lập tùy chọn này là bắt buộc",
"unsupportedOption": "Tùy chọn này không được hỗ trợ", "unsupportedOption": "Tùy chọn này không được hỗ trợ",
"requiredOptionNull": "Các tùy chọn sau cần được thiết đặt:\n\n${options}" "requiredOptionNull": "Các tùy chọn sau cần được thiết lập:\n\n${options}"
}, },
"patchItem": { "patchItem": {
"unsupportedDialogText": "Chọn bản vá này có thể gây lỗi khi vá.\n\nPhiên bản ứng dụng: ${packageVersion}\nPhiên bản được hỗ trợ: ${supportedVersions}", "unsupportedDialogText": "Chọn bản vá này có thể gây lỗi khi vá.\n\nPhiên bản ứng dụng: ${packageVersion}\nPhiên bản được hỗ trợ: ${supportedVersions}",
"unsupportedPatchVersion": "Bản vá không được hỗ trợ cho phiên bản ứng dụng này.", "unsupportedPatchVersion": "Bản vá không được hỗ trợ cho phiên bản ứng dụng này.",
"unsupportedRequiredOption": "Bản vá này chứa một tùy chọn bắt buộc không được hỗ trợ bởi ứng dụng này", "unsupportedRequiredOption": "Bản vá này chứa một tùy chọn bắt buộc không được hỗ trợ bởi ứng dụng này",
"patchesChangeWarningDialogText": "Bạn nên sử dụng lựa chọn bản vá mặc định và các tùy chọn. Thay đổi chúng có thể dẫn đến các vấn đề không mong muốn.\n\nBạn cần bật \"Cho phép thay đổi lựa chọn đường dẫn\" trong cài đặt trước khi thay đổi bất kỳ lựa chọn đường dẫn nào.", "patchesChangeWarningDialogText": "Bạn nên sử dụng lựa chọn bản vá và các tùy chọn mặc định. Thay đổi chúng có thể dẫn đến các sự cố không mong muốn.\n\nBạn sẽ cần bật \"Cho phép thay đổi lựa chọn bản vá\" trong cài đặt trước khi thay đổi bất kỳ lựa chọn bản vá.",
"patchesChangeWarningDialogButton": "Dùng lựa chọn mặc định" "patchesChangeWarningDialogButton": "Dùng lựa chọn mặc định"
}, },
"installerView": { "installerView": {
"installType": "Chọn kiểu cài đặt", "installType": "Chọn kiểu cài đặt",
"installTypeDescription": "Chọn kiểu cài đặt để thực hiện với nó.", "installTypeDescription": "Chọn kiểu cài đặt để tiếp tục.",
"installButton": "Cài đặt", "installButton": "Cài đặt",
"installRootType": "Gắn kết", "installRootType": "Gắn kết",
"installNonRootType": "Thông thường", "installNonRootType": "Thông thường",
"warning": "Tắt tự động cập nhật cho ứng dụng đã vá để tránh các phát sinh không mong muốn.", "warning": "Tắt tự động cập nhật cho ứng dụng đã vá để tránh các sự cố không mong muốn.",
"pressBackAgain": "Nhấn quay lại lần nữa để hủy", "pressBackAgain": "Nhấn quay lại lần nữa để hủy",
"openButton": "Mở", "openButton": "Mở",
"notificationTitle": "ReVanced Manager đang vá", "notificationTitle": "ReVanced Manager đang vá",
"notificationText": "Nhấn để trở lại trình cài đặt", "notificationText": "Nhấn để trở lại trình cài đặt",
"exportApkButtonTooltip": "Xuất APK đã vá", "exportApkButtonTooltip": "Xuất APK đã vá",
"exportLogButtonTooltip": "Xuất nhật ký", "exportLogButtonTooltip": "Xuất nhật ký",
"screenshotDetected": "Một ảnh chụp màn hình đã được phát hiện. Nếu bạn đang cố chia sẻ nhật ký, xin thay bằng chia sẻ văn bản sao chép.\n\nSao chép nhật ký vào bảng tạm?", "screenshotDetected": "Đã phát hiện ảnh chụp màn hình. Nếu bạn đang cố chia sẻ nhật ký, vui lòng dùng văn bản chia sẻ thay thế.\n\nSao chép nhật ký vào bảng nhớ tạm?",
"copiedToClipboard": "Đã sao chép nhật ký vào bảng tạm", "copiedToClipboard": "Đã sao chép nhật ký vào bảng nhớ tạm",
"noExit": "Trình cài đặt vẫn đang chạy, không thể thoát..." "noExit": "Trình cài đặt vẫn đang chạy, không thể thoát..."
}, },
"settingsView": { "settingsView": {
@ -147,24 +147,24 @@
"teamSectionTitle": "Đội ngũ", "teamSectionTitle": "Đội ngũ",
"debugSectionTitle": "Gỡ Lỗi", "debugSectionTitle": "Gỡ Lỗi",
"advancedSectionTitle": "Nâng cao", "advancedSectionTitle": "Nâng cao",
"exportSectionTitle": "Nhập xuất", "exportSectionTitle": "Nhập & xuất",
"dataSectionTitle": "Nguồn dữ liệu", "dataSectionTitle": "Nguồn dữ liệu",
"themeModeLabel": "Chủ đề ứng dụng", "themeModeLabel": "Chủ đề ứng dụng",
"systemThemeLabel": "Hệ thống", "systemThemeLabel": "Hệ thống",
"lightThemeLabel": "Sáng", "lightThemeLabel": "Sáng",
"darkThemeLabel": "Chế độ tối", "darkThemeLabel": "Tối",
"dynamicThemeLabel": "Cá nhân", "dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Tận hưởng trải nghiệm gần hơn với thiết bị của bạn", "dynamicThemeHint": "Tận hưởng trải nghiệm gần gũi hơn với thiết bị của bạn",
"languageLabel": "Ngôn ngữ", "languageLabel": "Ngôn ngữ",
"languageUpdated": "Ngôn ngữ đã cập nhập", "languageUpdated": "Đã cập nhật ngôn ngữ",
"sourcesLabel": "Nguồn thay thế", "sourcesLabel": "Nguồn thay thế",
"sourcesLabelHint": "Cấu hình nguồn thay thế cho Bản vá ReVanced", "sourcesLabelHint": "Cấu hình nguồn thay thế cho ReVanced Patches",
"useAlternativeSources": "Dùng nguồn thay thế", "useAlternativeSources": "Dùng nguồn thay thế",
"useAlternativeSourcesHint": "Dùng nguồn thay thế cho Bản vá ReVanced thay cho API", "useAlternativeSourcesHint": "Dùng nguồn thay thế cho ReVanced Patches thay API",
"sourcesResetDialogTitle": "Đặt lại", "sourcesResetDialogTitle": "Đặt lại",
"sourcesResetDialogText": "Bạn có chắc chắn muốn đặt lại nguồn của mình về giá trị mặc định không?", "sourcesResetDialogText": "Bạn có chắc chắn muốn đặt lại nguồn của mình về giá trị mặc định không?",
"apiURLResetDialogText": "Bạn có chắc bạn muốn đặt lại API URL của bạn về giá trị mặc định của nó không?", "apiURLResetDialogText": "Bạn có chắc chắn muốn đặt lại URL API 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 từ nguồn thay thế.", "sourcesUpdateNote": "Lưu ý: Ứng dụng sẽ tự động tải ReVanced Patches từ nguồn thay thế.\n\nBạn sẽ được kết nối với nguồn thay thế.",
"apiURLLabel": "Địa chỉ URL của API", "apiURLLabel": "Địa chỉ URL của API",
"apiURLHint": "Cấu hình địa chỉ URL API của ReVanced Manager", "apiURLHint": "Cấu hình địa chỉ URL API của ReVanced Manager",
"selectApiURL": "Địa chỉ URL của API", "selectApiURL": "Địa chỉ URL của API",
@ -175,84 +175,87 @@
"logsLabel": "Chia sẻ nhật ký", "logsLabel": "Chia sẻ nhật ký",
"logsHint": "Chia sẻ nhật ký ReVanced Manager", "logsHint": "Chia sẻ nhật ký ReVanced Manager",
"enablePatchesSelectionLabel": "Cho phép thay đổi lựa chọn bản vá", "enablePatchesSelectionLabel": "Cho phép thay đổi lựa chọn bản vá",
"enablePatchesSelectionHint": "Không ngăn chặn việc chọn hoặc bỏ chọn các bản vá", "enablePatchesSelectionHint": "Không ngăn chặn chọn hoặc bỏ chọn các bản vá",
"enablePatchesSelectionWarningText": "Thay đổi lựa chọn mặc định của các bản vá có thể gây vấn đề không ngờ tới.\n\nVẫn bật?", "enablePatchesSelectionWarningText": "Thay đổi lựa chọn mặc định của các bản vá có thể dẫn đến các sự cố không mong muốn.\n\nVẫn bật?",
"disablePatchesSelectionWarningText": "Bạn chuẩn bị tắt thay đổi lựa chọn các bản vá.\nLựa chọn mặc định các bản vá sẽ được khôi phục.\n\nVẫn tắt?", "disablePatchesSelectionWarningText": "Bạn sắp tắt thay đổi lựa chọn các bản vá.\nLựa chọn bản vá mặc định sẽ được khôi phục.\n\nVẫn tắt?",
"autoUpdatePatchesLabel": "Tự động cập nhật các bản vá", "autoUpdatePatchesLabel": "Tự động cập nhật các bản vá",
"autoUpdatePatchesHint": "Tự động cập nhật các bản vá lên phiên bản mới nhất", "autoUpdatePatchesHint": "Tự động cập nhật các bản vá lên phiên bản mới nhất",
"showUpdateDialogLabel": "Hiện hộp thoại cập nhật", "usePrereleasesLabel": "Sử dụng bản phát hành trước",
"showUpdateDialogHint": "Hiện một hộp thoại khi có một bản cập nhật", "usePrereleasesHint": "Sử dụng phiên bản phát hành trước của ReVanced Manager và ReVanced Patches",
"universalPatchesLabel": "Các bản vá phổ quát", "usePrereleasesWarningText": "Sử dụng phiên bản phát hành trước có thể dẫn đến các sự cố không mong muốn.\n\nVẫn bật?",
"universalPatchesHint": "Hiển thị tất cả các ứng dụng và các bản vá phổ quát (có thể gây chậm danh sách ứng dụng)", "showUpdateDialogLabel": "Hiển thị hộp thoại cập nhật",
"showUpdateDialogHint": "Hiển thị hộp thoại khi có bản cập nhật mới",
"universalPatchesLabel": "Hiện bản vá phổ quát",
"universalPatchesHint": "Hiển thị tất cả các ứng dụng và bản vá phổ quát (có thể gây chậm danh sách ứng dụng)",
"lastPatchedAppLabel": "Lưu ứng dụng đã vá", "lastPatchedAppLabel": "Lưu ứng dụng đã vá",
"lastPatchedAppHint": "Lưu bản vá cuối để cài đặt hoặc xuất sau đó", "lastPatchedAppHint": "Lưu bản vá gần nhất để cài đặt hoặc xuất sau",
"versionCompatibilityCheckLabel": "Kiểm tra khả năng tương thích của phiên bản", "versionCompatibilityCheckLabel": "Kiểm tra khả năng tương thích phiên bản",
"versionCompatibilityCheckHint": "Việc ngăn chặn chọn bản vá không tương thích với phiên bản ứng dụng đã chọn", "versionCompatibilityCheckHint": "Ngăn không cho chọn các bản vá không tương thích với phiên bản ứng dụng đã chọn",
"requireSuggestedAppVersionLabel": "Yêu cầu phiên bản ứng dụng được đề xuất", "requireSuggestedAppVersionLabel": "Yêu cầu phiên bản ứng dụng được đề xuất",
"requireSuggestedAppVersionHint": "Ngăn chặn việc chọn một ứng dụng với phiên bản không được đề xuất", "requireSuggestedAppVersionHint": "Ngăn không cho chọn một ứng dụng phiên bản không khớp với phiên bản được đề xuất",
"requireSuggestedAppVersionDialogText": "Việc lựa chọn một ứng dụng không phải phiên bản được đề xuất có thể gây vấn đề phát sinh không mong muốn.\n\nBạn vẫn muốn tiếp tục?", "requireSuggestedAppVersionDialogText": "Lựa chọn một ứng dụng không khớp với phiên bản được đề xuất có thể dẫn đến sự cố không mong muốn.\n\nBạn vẫn muốn tiếp tục?",
"aboutLabel": "Giới thiệu", "aboutLabel": "Giới thiệu",
"snackbarMessage": "Đã sao chép vào khay nhớ tạm", "snackbarMessage": "Đã sao chép vào bảng nhớ tạm",
"restartAppForChanges": "Khởi động lại ứng dụng để áp dụng thay đổi", "restartAppForChanges": "Khởi động lại ứng dụng để áp dụng thay đổi",
"deleteTempDirLabel": "Xóa tệp tạm thời", "deleteTempDirLabel": "Xóa các tệp tạm thời",
"deleteTempDirHint": "Xóa các tệp tạm thời không sử dụng", "deleteTempDirHint": "Xóa các tệp tạm thời không sử dụng",
"deletedTempDir": "Đã xóa các tệp tạm thời", "deletedTempDir": "Đã xóa các tệp tạm thời",
"exportSettingsLabel": "Xuất cài đặt", "exportSettingsLabel": "Xuất cài đặt",
"exportSettingsHint": "Xuất cài đặt thành một tập tin JSON", "exportSettingsHint": "Xuất cài đặt thành tệp JSON",
"exportedSettings": "Đã xuất cài đặt", "exportedSettings": "Đã xuất cài đặt",
"importSettingsLabel": "Nhập cài đặt", "importSettingsLabel": "Nhập cài đặt",
"importSettingsHint": "Nhập cài đặt từ một tập tin JSON", "importSettingsHint": "Nhập cài đặt từ tệp JSON",
"importedSettings": "Đã nhập cài đặt", "importedSettings": "Đã nhập cài đặt",
"exportPatchesLabel": "Xuất bản vá được chọn", "exportPatchesLabel": "Xuất lựa chọn bản vá",
"exportPatchesHint": "Xuất bản vá được chọn thành tệp JSON", "exportPatchesHint": "Xuất lựa chọn bản vá thành tệp JSON",
"exportedPatches": "Đã xuất các bản vá được chọn", "exportedPatches": "Đã xuất lựa chọn bản vá",
"noExportFileFound": "Không có lựa chọn bản vá để xuất", "noExportFileFound": "Không có lựa chọn bản vá để xuất",
"importPatchesLabel": "Nhập lựa chọn bản vá", "importPatchesLabel": "Nhập lựa chọn bản vá",
"importPatchesHint": "Nhập lựa chọn bản vá từ tệp JSON", "importPatchesHint": "Nhập lựa chọn bản vá từ tệp JSON",
"importedPatches": "Lựa chọn bản vá được nhập", "importedPatches": "Đã nhập lựa chọn bản vá",
"resetStoredPatchesLabel": "Đặt lại lựa chọn bản vá", "resetStoredPatchesLabel": "Đặt lại lựa chọn bản vá",
"resetStoredPatchesHint": "Đặt lại lựa chọn bản vá được lưu trữ", "resetStoredPatchesHint": "Đặt lại lựa chọn bản vá đã lưu",
"resetStoredPatchesDialogTitle": "Đặt lại lựa chọn bản vá?", "resetStoredPatchesDialogTitle": "Đặt lại lựa chọn bản vá?",
"resetStoredPatchesDialogText": "Lựa chọn mặc định của các bản vá lỗi sẽ được khôi phục.", "resetStoredPatchesDialogText": "Lựa chọn mặc định của các bản vá sẽ được khôi phục.",
"resetStoredPatches": "Lựa chọn bản vá đã được đặt lại", "resetStoredPatches": "Đã đặt lại lựa chọn bản vá",
"resetStoredOptionsLabel": "Đặt lại tùy chọn bản vá", "resetStoredOptionsLabel": "Đặt lại tùy chọn bản vá",
"resetStoredOptionsHint": "Cài lại tất cả tùy chọn bản vá", "resetStoredOptionsHint": "Đặt lại tất cả tùy chọn bản vá",
"resetStoredOptionsDialogTitle": "Đặt lại tùy chọn bản vá?", "resetStoredOptionsDialogTitle": "Đặt lại tùy chọn bản vá?",
"resetStoredOptionsDialogText": "Đặt lại tùy chọn bản vá sẽ xóa tất cả các tùy chọn đã lưu.", "resetStoredOptionsDialogText": "Đặt lại tùy chọn bản vá sẽ xóa tất cả các tùy chọn đã lưu.",
"resetStoredOptions": "Tùy chọn đã được cài lại", "resetStoredOptions": "Đã đặt lại các tùy chọn",
"deleteLogsLabel": "Xoá nhật ký", "deleteLogsLabel": "Xoá nhật ký",
"deleteLogsHint": "Xóa nhật ký ReVanced Manager đã thu thập", "deleteLogsHint": "Xóa nhật ký ReVanced Manager đã thu thập",
"deletedLogs": "Đã xóa nhật ký", "deletedLogs": "Đã xóa nhật ký",
"regenerateKeystoreLabel": "Tái sinh kho khóa", "regenerateKeystoreLabel": "Tạo lại kho kh",
"regenerateKeystoreHint": "Tạo lại kho khóa được sử dụng để ký ứng dụng", "regenerateKeystoreHint": "Tạo lại kho khóa ng để ký ứng dụng",
"regenerateKeystoreDialogTitle": "Tái sinh kho khóa?", "regenerateKeystoreDialogTitle": "Tạo lại kho khóa?",
"regenerateKeystoreDialogText": "Các ứng dụng đã vá được ký với kho khóa cũ sẽ không thể cập nhật được nữa.", "regenerateKeystoreDialogText": "Các ứng dụng đã vá được ký bằng kho khóa cũ sẽ không thể cập nhật được nữa.",
"regeneratedKeystore": "Kho khóa đã tái sinh", "regeneratedKeystore": "Đã tạo lại kho khoá",
"exportKeystoreLabel": "Xuất kho khóa", "exportKeystoreLabel": "Xuất kho khóa",
"exportKeystoreHint": "Xuất kho khóa được sử dụng để ký ứng dụng", "exportKeystoreHint": "Xuất kho khóa ng để ký ứng dụng",
"exportedKeystore": "Kho khóa đã được xuất", "exportedKeystore": "Đã xuất kho khoá",
"noKeystoreExportFileFound": "Không có kho khóa nào được xuất", "noKeystoreExportFileFound": "Không có kho khóa để xuất",
"importKeystoreLabel": "Nhập kho khóa", "importKeystoreLabel": "Nhập kho khóa",
"importKeystoreHint": "Nhập kho khóa dùng để ký ứng dụng", "importKeystoreHint": "Nhập kho khóa dùng để ký ứng dụng",
"importedKeystore": "Kho khóa đã được nhập", "importedKeystore": "Đã nhập kho khóa",
"selectKeystorePassword": "Mật khẩu kho khóa", "selectKeystorePassword": "Mật khẩu kho khóa",
"selectKeystorePasswordHint": "Chọn mật khẩu kho khóa được sử dụng để ký ứng dụng", "selectKeystorePasswordHint": "Chọn mật khẩu kho khóa ng để ký ứng dụng",
"jsonSelectorErrorMessage": "Không thể dùng tệp JSON đã chọn", "jsonSelectorErrorMessage": "Không thể dùng tệp JSON đã chọn",
"keystoreSelectorErrorMessage": "Không thể sử dụng tệp kho khóa đã chọn" "keystoreSelectorErrorMessage": "Không thể ng tệp kho khóa đã chọn"
}, },
"appInfoView": { "appInfoView": {
"widgetTitle": "Thông tin ứng dụng", "widgetTitle": "Thông tin ứng dụng",
"openButton": "Mở", "openButton": "Mở",
"installButton": "Cài đặt", "installButton": "Cài đặt",
"uninstallButton": "Gỡ cài đặt", "uninstallButton": "Gỡ cài đặt",
"unmountButton": "Bỏ gắn kết", "unmountButton": "Gỡ gắn kết",
"exportButton": "Xuất", "exportButton": "Xuất",
"deleteButton": "Xoá", "deleteButton": "Xoá",
"rootDialogTitle": "Lỗi", "rootDialogTitle": "Lỗi",
"lastPatchedAppDescription": "Đây là bản sao lưu của ứng dụng đã được vá lần cuối.", "lastPatchedAppDescription": "Đây là bản sao lưu của ứng dụng đã được vá gần nhất.",
"unmountDialogText": "Bạn có chắc muốn bỏ gắn kết ứng dụng này không?", "unmountDialogText": "Bạn có chắc muốn gỡ gắn kết ứng dụng này không?",
"uninstallDialogText": "Bạn có chắc muốn gỡ cài đặt ứng dụng này không?", "uninstallDialogText": "Bạn có chắc chắn muốn gỡ cài đặt ứng dụng này không?",
"rootDialogText": "Ứng dụng đã cài đặt với quyền siêu người dùng, nhưng hiện tại ReVanced không có quyền đó.\nVui lòng cấp quyền siêu người dùng trước.", "rootDialogText": "Ứng dụng đã được cài đặt với quyền superuser, nhưng hiện tại ReVanced Manager không có quyền đó.\nVui lòng cấp quyền superuser trước.",
"removeAppDialogTitle": "Xoá ứng dụng?", "removeAppDialogTitle": "Xoá ứng dụng?",
"removeAppDialogText": "Bạn có chắc chắn muốn xóa bản sao lưu này?", "removeAppDialogText": "Bạn có chắc chắn muốn xóa bản sao lưu này?",
"packageNameLabel": "Tên gói", "packageNameLabel": "Tên gói",
@ -261,38 +264,38 @@
"regularTypeLabel": "Thông thường", "regularTypeLabel": "Thông thường",
"patchedDateLabel": "Ngày vá", "patchedDateLabel": "Ngày vá",
"appliedPatchesLabel": "Các bản vá đã áp dụng", "appliedPatchesLabel": "Các bản vá đã áp dụng",
"sizeLabel": "Kích c tệp", "sizeLabel": "Kích thước tệp",
"patchedDateHint": "${date} vào lúc ${time}", "patchedDateHint": "${date} vào lúc ${time}",
"appliedPatchesHint": "${quantity} bản vá đã áp dụng", "appliedPatchesHint": "Đã áp dụng ${quantity} bản vá",
"updateNotImplemented": "Tính năng này chưa được triển khai" "updateNotImplemented": "Tính năng này chưa được triển khai"
}, },
"contributorsView": { "contributorsView": {
"widgetTitle": "Những người đóng góp" "widgetTitle": "Những người đóng góp"
}, },
"installErrorDialog": { "installErrorDialog": {
"mount_version_mismatch": "Phiên bản không phù hợp", "mount_version_mismatch": "Phiên bản không khớp",
"mount_no_root": "Không có quyền truy cập root", "mount_no_root": "Không có quyền truy cập root",
"mount_missing_installation": "Không tìm thấy bản cài đặt", "mount_missing_installation": "Không tìm thấy cài đặt",
"status_failure_blocked": "Bản cài đặt đã bị chặn", "status_failure_blocked": "Cài đặt bị chặn",
"install_failed_verification_failure": "Xác thực thất bại", "install_failed_verification_failure": "Xác minh thất bại",
"status_failure_invalid": "Bản cài đặt không hợp lệ", "status_failure_invalid": "Cài đặt không hợp lệ",
"install_failed_version_downgrade": "Không thể hạ cấp", "install_failed_version_downgrade": "Không thể hạ cấp",
"status_failure_conflict": "Xung đột cài đặt", "status_failure_conflict": "Xung đột cài đặt",
"status_failure_storage": "Phát sinh lưu trữ cài đặt", "status_failure_storage": "Không đủ bộ nhớ để cài đặt",
"status_failure_incompatible": "Bản cài đặt không tương thích", "status_failure_incompatible": "Cài đặt không tương thích",
"status_failure_timeout": "Hết hạn cài đặt", "status_failure_timeout": "Quá thời gian chờ cài đặt",
"status_unknown": "Cài đặt thất bại", "status_unknown": "Cài đặt thất bại",
"mount_version_mismatch_description": "Việc cài đặt đã thất bại do ứng dụng đã cài đặt khác với phiên bản đã được vá.\n\nHãy cài phiên bản ứng dụng đã gắn kết và thử lại.", "mount_version_mismatch_description": "Cài đặt thất bại do ứng dụng đã cài đặt khác với phiên bản đã vá.\n\nCài đúng phiên bản ứng dụng đang gắn kết và thử lại.",
"mount_no_root_description": "Việc cài đặt đã thất bại do không được cấp quyền truy cập root.\n\nCấp quyền truy cập root cho ReVanced Manager và thử lại.", "mount_no_root_description": "Cài đặt thất bại do không được cấp quyền truy cập root.\n\nCấp quyền truy cập root cho ReVanced Manager và thử lại.",
"mount_missing_installation_description": "Việc cài đặt đã thất bại do ứng dụng chưa vá chưa được cài đặt trên thiết bị này nhằm gắn kết vào nó.\n\nCài ứng dụng chưa vá trước khi gắn kết và thử lại.", "mount_missing_installation_description": "Cài đặt thất bại do ứng dụng chưa vá không được cài đặt trên thiết bị để gắn kết vào nó.\n\nCài ứng dụng chưa vá trước khi gắn kết và thử lại.",
"status_failure_timeout_description": "Việc cài đặt mất quá lâu để hoàn thành.\n\nBạn có muốn thử lại?", "status_failure_timeout_description": "Cài đặt mất quá nhiều thời gian để hoàn tất.\n\nBạn có muốn thử lại?",
"status_failure_storage_description": "Việc cài đặt đã thất bại do không đủ bộ nhớ.\n\nGiải phóng một phần bộ nhớ và thử lại.", "status_failure_storage_description": "Quá trình cài đặt đã thất bại do không đủ bộ nhớ.\n\nHãy giải phóng một phần bộ nhớ và thử lại.",
"status_failure_invalid_description": "Việc cài đặt đã thất bại do ứng dụng đã vá không hợp lệ.\n\nGỡ cài đặt ứng dụng và thử lại?", "status_failure_invalid_description": "Cài đặt thất bại do ứng dụng đã vá không hợp lệ.\n\nGỡ cài đặt ứng dụng và thử lại?",
"status_failure_incompatible_description": "Ứng dụng không tương thích với thiết bị này.\n\nDùng một APK được hỗ trợ bởi thiết bị và thử lại.", "status_failure_incompatible_description": "Ứng dụng không tương thích với thiết bị này.\n\nHãy dùng APK được thiết bị này hỗ trợ và thử lại.",
"status_failure_conflict_description": "Việc cài đặt đã bị ngăn chặn bởi bản cài đã có của ứng dụng.\n\nGỡ cài đặt ứng dụng đã cài và thử lại?", "status_failure_conflict_description": "Quá trình cài đặt đã bị chặn bởi bản cài đặt đã có của ứng dụng.\n\nGỡ cài đặt ứng dụng đã cài và thử lại?",
"status_failure_blocked_description": "Việc cài đặt đã đã bị chặn bởi ${packageName}.\n\nĐiều chỉnh thiết lập bảo mật của bạn và thử lại.", "status_failure_blocked_description": "Cài đặt bị chặn bởi ${packageName}.\n\nĐiều chỉnh cài đặt bảo mật của bạn và thử lại.",
"install_failed_verification_failure_description": "Việc cài đặt đã thất bại do phát sinh xác minh.\n\nĐiều chỉnh thiết lập bảo mật của bạn và thử lại.", "install_failed_verification_failure_description": "Cài đặt thất bại do gặp lỗi xác minh.\n\nĐiều chỉnh cài đặt bảo mật của bạn và thử lại.",
"install_failed_version_downgrade_description": "Việc cài đặt đã thất bại do ứng dụng đã vá có phiên bản nhỏ hơn ứng dụng đã cài đặt.\n\nGỡ cài đặt ứng dụng và thử lại?", "install_failed_version_downgrade_description": "Cài đặt thất bại do ứng dụng đã vá có phiên bản thấp hơn ứng dụng đã cài đặt.\n\nGỡ cài đặt ứng dụng và thử lại?",
"status_unknown_description": "Việc cài đặt đã thất bại do một lý do chưa rõ. Xin thử lại." "status_unknown_description": "Cài đặt thất bại lý do không xác định. Vui lòng thử lại."
} }
} }

View File

@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "您将禁用更改补丁选择。\n将恢复默认的补丁选择。\n\n无论如何都要禁用", "disablePatchesSelectionWarningText": "您将禁用更改补丁选择。\n将恢复默认的补丁选择。\n\n无论如何都要禁用",
"autoUpdatePatchesLabel": "自动更新补丁", "autoUpdatePatchesLabel": "自动更新补丁",
"autoUpdatePatchesHint": "自动更新补丁至最新版本", "autoUpdatePatchesHint": "自动更新补丁至最新版本",
"usePrereleasesLabel": "使用预发布版本",
"usePrereleasesHint": "使用 ReVanced Manager 和 ReVanced Patches 的预发布版本",
"usePrereleasesWarningText": "使用预发布版本可能会导致意外问题。\n\n仍要启用吗",
"showUpdateDialogLabel": "显示更新提示", "showUpdateDialogLabel": "显示更新提示",
"showUpdateDialogHint": "当有新的更新时显示对话框", "showUpdateDialogHint": "当有新的更新时显示对话框",
"universalPatchesLabel": "显示通用补丁", "universalPatchesLabel": "显示通用补丁",

View File

@ -27,7 +27,7 @@
"patchedSubtitle": "已安裝應用程式", "patchedSubtitle": "已安裝應用程式",
"changeLaterSubtitle": "你稍後可以在設定中變更此選項。", "changeLaterSubtitle": "你稍後可以在設定中變更此選項。",
"noSavedAppFound": "找不到應用程式", "noSavedAppFound": "找不到應用程式",
"noInstallations": "未安裝已修補應用程式", "noInstallations": "未安裝已修補應用程式",
"installUpdate": "是否要繼續更新?", "installUpdate": "是否要繼續更新?",
"updateSheetTitle": "更新 ReVanced Manager", "updateSheetTitle": "更新 ReVanced Manager",
"updateDialogTitle": "有可用的更新", "updateDialogTitle": "有可用的更新",
@ -99,7 +99,7 @@
"noneChip": "無", "noneChip": "無",
"noneTooltip": "取消選取修補檔", "noneTooltip": "取消選取修補檔",
"loadPatchesSelection": "載入修補檔選項", "loadPatchesSelection": "載入修補檔選項",
"noSavedPatches": "所選的應用程式沒有已儲存的修補選項。\n按下「完成」以儲存目前的選擇。", "noSavedPatches": "所選的應用程式沒有已儲存的修補選項。\n按下「完成」以儲存目前的修補選項。",
"noPatchesFound": "找不到適合所選應用程式的修補檔", "noPatchesFound": "找不到適合所選應用程式的修補檔",
"setRequiredOption": "某些修補檔選項需要進行設定:\n\n${patches}\n\n請在繼續之前進行設定。" "setRequiredOption": "某些修補檔選項需要進行設定:\n\n${patches}\n\n請在繼續之前進行設定。"
}, },
@ -180,6 +180,9 @@
"disablePatchesSelectionWarningText": "即將停用修補選項的變更功能,並還原到預設選項。\n\n仍要停用嗎", "disablePatchesSelectionWarningText": "即將停用修補選項的變更功能,並還原到預設選項。\n\n仍要停用嗎",
"autoUpdatePatchesLabel": "自動更新修補檔", "autoUpdatePatchesLabel": "自動更新修補檔",
"autoUpdatePatchesHint": "自動將修補檔更新至最新版本", "autoUpdatePatchesHint": "自動將修補檔更新至最新版本",
"usePrereleasesLabel": "使用預發行版本",
"usePrereleasesHint": "使用 ReVanced Manager 和 ReVanced Patches 的預發行版本",
"usePrereleasesWarningText": "使用預發行版本可能會導致非預期的問題。\n\n仍要啟用嗎",
"showUpdateDialogLabel": "顯示更新對話方塊", "showUpdateDialogLabel": "顯示更新對話方塊",
"showUpdateDialogHint": "當有新更新可用時,顯示對話方塊", "showUpdateDialogHint": "當有新更新可用時,顯示對話方塊",
"universalPatchesLabel": "顯示通用修補檔", "universalPatchesLabel": "顯示通用修補檔",

View File

@ -33,13 +33,16 @@ class GithubAPI {
}); });
} }
Future<Map<String, dynamic>?> getLatestRelease( Future<Map<String, dynamic>?> getLatestRelease(String repoName) async {
String repoName, final String target =
) async { _managerAPI.usePrereleases() ? '?per_page=1' : '/latest';
try { try {
final response = await _dioGetSynchronously( final response = await _dioGetSynchronously(
'/repos/$repoName/releases/latest', '/repos/$repoName/releases$target',
); );
if (_managerAPI.usePrereleases()) {
return response.data.first;
}
return response.data; return response.data;
} on Exception catch (e) { } on Exception catch (e) {
if (kDebugMode) { if (kDebugMode) {
@ -50,7 +53,8 @@ class GithubAPI {
} }
Future<String?> getChangelogs(bool isPatches) async { Future<String?> getChangelogs(bool isPatches) async {
final String repoName = isPatches final String repoName =
isPatches
? _managerAPI.getPatchesRepo() ? _managerAPI.getPatchesRepo()
: _managerAPI.defaultManagerRepo; : _managerAPI.defaultManagerRepo;
try { try {
@ -58,7 +62,8 @@ class GithubAPI {
'/repos/$repoName/releases?per_page=50', '/repos/$repoName/releases?per_page=50',
); );
final buffer = StringBuffer(); final buffer = StringBuffer();
final String version = isPatches final String version =
isPatches
? _managerAPI.getLastUsedPatchesVersion() ? _managerAPI.getLastUsedPatchesVersion()
: await _managerAPI.getCurrentManagerVersion(); : await _managerAPI.getCurrentManagerVersion();
int releases = 0; int releases = 0;
@ -70,7 +75,7 @@ class GithubAPI {
} }
break; break;
} }
if (release['prerelease']) { if (!_managerAPI.usePrereleases() && release['prerelease']) {
continue; continue;
} }
buffer.writeln(release['body']); buffer.writeln(release['body']);
@ -96,25 +101,21 @@ class GithubAPI {
) async { ) async {
try { try {
if (url.isNotEmpty) { if (url.isNotEmpty) {
return await _downloadManager.getSingleFile( return await _downloadManager.getSingleFile(url);
url,
);
} }
final response = await _dioGetSynchronously( final response = await _dioGetSynchronously(
'/repos/$repoName/releases/tags/$version', '/repos/$repoName/releases/tags/$version',
); );
final Map<String, dynamic>? release = response.data; final Map<String, dynamic>? release = response.data;
if (release != null) { if (release != null) {
final Map<String, dynamic>? asset = final Map<String, dynamic>? asset = (release['assets'] as List<dynamic>)
(release['assets'] as List<dynamic>).firstWhereOrNull( .firstWhereOrNull(
(asset) => (asset['name'] as String).endsWith(extension), (asset) => (asset['name'] as String).endsWith(extension),
); );
if (asset != null) { if (asset != null) {
final String downloadUrl = asset['browser_download_url']; final String downloadUrl = asset['browser_download_url'];
_managerAPI.setPatchesDownloadURL(downloadUrl); _managerAPI.setPatchesDownloadURL(downloadUrl);
return await _downloadManager.getSingleFile( return await _downloadManager.getSingleFile(downloadUrl);
downloadUrl,
);
} }
} }
} on Exception catch (e) { } on Exception catch (e) {

View File

@ -36,7 +36,6 @@ class ManagerAPI {
Patch? selectedPatch; Patch? selectedPatch;
BuildContext? ctx; BuildContext? ctx;
bool isRooted = false; bool isRooted = false;
bool releaseBuild = false;
bool suggestedAppVersionSelected = true; bool suggestedAppVersionSelected = true;
bool isDynamicThemeAvailable = false; bool isDynamicThemeAvailable = false;
bool isScopedStorageAvailable = false; bool isScopedStorageAvailable = false;
@ -63,11 +62,9 @@ class ManagerAPI {
isScopedStorageAvailable = sdkVersion >= 30; // ANDROID_11_SDK_VERSION = 30 isScopedStorageAvailable = sdkVersion >= 30; // ANDROID_11_SDK_VERSION = 30
storedPatchesFile = storedPatchesFile =
(await getApplicationDocumentsDirectory()).path + storedPatchesFile; (await getApplicationDocumentsDirectory()).path + storedPatchesFile;
if (kReleaseMode) {
releaseBuild = !(await getCurrentManagerVersion()).contains('-dev');
}
final hasMigratedToNewMigrationSystem = _prefs.getBool('migratedToNewApiPrefSystem') ?? false; final hasMigratedToNewMigrationSystem =
_prefs.getBool('migratedToNewApiPrefSystem') ?? false;
if (!hasMigratedToNewMigrationSystem) { if (!hasMigratedToNewMigrationSystem) {
final apiUrl = getApiUrl().toLowerCase(); final apiUrl = getApiUrl().toLowerCase();
@ -168,6 +165,18 @@ class ManagerAPI {
return _prefs.getBool('patchesAutoUpdate') ?? false; return _prefs.getBool('patchesAutoUpdate') ?? false;
} }
bool usePrereleases() {
return _prefs.getBool('usePrereleases') ?? false;
}
void setPrereleases(bool value) {
_prefs.setBool('usePrereleases', value);
if (isPatchesAutoUpdate()) {
setCurrentPatchesVersion('0.0.0');
_toast.showBottom(t.settingsView.restartAppForChanges);
}
}
bool isPatchesChangeEnabled() { bool isPatchesChangeEnabled() {
return _prefs.getBool('patchesChangeEnabled') ?? false; return _prefs.getBool('patchesChangeEnabled') ?? false;
} }
@ -207,14 +216,16 @@ class ManagerAPI {
List<Patch> getSavedPatches(String packageName) { List<Patch> getSavedPatches(String packageName) {
final List<String> patchesJson = final List<String> patchesJson =
_prefs.getStringList('savedPatches-$packageName') ?? []; _prefs.getStringList('savedPatches-$packageName') ?? [];
final List<Patch> patches = patchesJson.map((String patchJson) { final List<Patch> patches =
patchesJson.map((String patchJson) {
return Patch.fromJson(jsonDecode(patchJson)); return Patch.fromJson(jsonDecode(patchJson));
}).toList(); }).toList();
return patches; return patches;
} }
Future<void> savePatches(List<Patch> patches, String packageName) async { Future<void> savePatches(List<Patch> patches, String packageName) async {
final List<String> patchesJson = patches.map((Patch patch) { final List<String> patchesJson =
patches.map((Patch patch) {
return jsonEncode(patch.toJson()); return jsonEncode(patch.toJson());
}).toList(); }).toList();
await _prefs.setStringList('savedPatches-$packageName', patchesJson); await _prefs.setStringList('savedPatches-$packageName', patchesJson);
@ -223,14 +234,16 @@ class ManagerAPI {
List<Patch> getUsedPatches(String packageName) { List<Patch> getUsedPatches(String packageName) {
final List<String> patchesJson = final List<String> patchesJson =
_prefs.getStringList('usedPatches-$packageName') ?? []; _prefs.getStringList('usedPatches-$packageName') ?? [];
final List<Patch> patches = patchesJson.map((String patchJson) { final List<Patch> patches =
patchesJson.map((String patchJson) {
return Patch.fromJson(jsonDecode(patchJson)); return Patch.fromJson(jsonDecode(patchJson));
}).toList(); }).toList();
return patches; return patches;
} }
Future<void> setUsedPatches(List<Patch> patches, String packageName) async { Future<void> setUsedPatches(List<Patch> patches, String packageName) async {
final List<String> patchesJson = patches.map((Patch patch) { final List<String> patchesJson =
patches.map((Patch patch) {
return jsonEncode(patch.toJson()); return jsonEncode(patch.toJson());
}).toList(); }).toList();
await _prefs.setStringList('usedPatches-$packageName', patchesJson); await _prefs.setStringList('usedPatches-$packageName', patchesJson);
@ -246,8 +259,9 @@ class ManagerAPI {
} }
Option? getPatchOption(String packageName, String patchName, String key) { Option? getPatchOption(String packageName, String patchName, String key) {
final String? optionJson = final String? optionJson = _prefs.getString(
_prefs.getString('patchOption-$packageName-$patchName-$key'); 'patchOption-$packageName-$patchName-$key',
);
if (optionJson != null) { if (optionJson != null) {
final Option option = Option.fromJson(jsonDecode(optionJson)); final Option option = Option.fromJson(jsonDecode(optionJson));
return option; return option;
@ -325,13 +339,7 @@ class ManagerAPI {
} }
String getLocale() { String getLocale() {
final String? savedLocale = _prefs.getString('locale'); return _prefs.getString('locale') ?? Platform.localeName;
if (savedLocale != null && savedLocale.isNotEmpty) {
return savedLocale;
} else {
final Locale deviceLocale = PlatformDispatcher.instance.locale;
return deviceLocale.languageCode.isNotEmpty ? deviceLocale.languageCode : 'en';
}
} }
Future<void> setLocale(String value) async { Future<void> setLocale(String value) async {
@ -346,9 +354,7 @@ class ManagerAPI {
} }
Future<void> deleteKeystore() async { Future<void> deleteKeystore() async {
final File keystore = File( final File keystore = File(keystoreFile);
keystoreFile,
);
if (await keystore.exists()) { if (await keystore.exists()) {
await keystore.delete(); await keystore.delete();
} }
@ -370,17 +376,13 @@ class ManagerAPI {
Future<void> setLastPatchedApp( Future<void> setLastPatchedApp(
PatchedApplication app, PatchedApplication app,
File outFile, File outFile
) async { ) async {
deleteLastPatchedApp();
final Directory appCache = await getApplicationSupportDirectory(); final Directory appCache = await getApplicationSupportDirectory();
app.patchedFilePath = app.patchedFilePath =
outFile.copySync('${appCache.path}/lastPatchedApp.apk').path; outFile.copySync('${appCache.path}/lastPatchedApp.apk').path;
app.fileSize = outFile.lengthSync(); app.fileSize = outFile.lengthSync();
await _prefs.setString( await _prefs.setString('lastPatchedApp', json.encode(app.toJson()));
'lastPatchedApp',
json.encode(app.toJson()),
);
} }
List<PatchedApplication> getPatchedApps() { List<PatchedApplication> getPatchedApps() {
@ -388,9 +390,7 @@ class ManagerAPI {
return apps.map((a) => PatchedApplication.fromJson(jsonDecode(a))).toList(); return apps.map((a) => PatchedApplication.fromJson(jsonDecode(a))).toList();
} }
Future<void> setPatchedApps( Future<void> setPatchedApps(List<PatchedApplication> patchedApps) async {
List<PatchedApplication> patchedApps,
) async {
if (patchedApps.length > 1) { if (patchedApps.length > 1) {
patchedApps.sort((a, b) => a.name.compareTo(b.name)); patchedApps.sort((a, b) => a.name.compareTo(b.name));
} }
@ -403,10 +403,8 @@ class ManagerAPI {
Future<void> savePatchedApp(PatchedApplication app) async { Future<void> savePatchedApp(PatchedApplication app) async {
final List<PatchedApplication> patchedApps = getPatchedApps(); final List<PatchedApplication> patchedApps = getPatchedApps();
patchedApps.removeWhere((a) => a.packageName == app.packageName); patchedApps.removeWhere((a) => a.packageName == app.packageName);
final ApplicationWithIcon? installed = await DeviceApps.getApp( final ApplicationWithIcon? installed =
app.packageName, await DeviceApps.getApp(app.packageName, true) as ApplicationWithIcon?;
true,
) as ApplicationWithIcon?;
if (installed != null) { if (installed != null) {
app.name = installed.appName; app.name = installed.appName;
app.version = installed.versionName!; app.version = installed.versionName!;
@ -446,12 +444,11 @@ class ManagerAPI {
try { try {
final String patchesJson = await PatcherAPI.patcherChannel.invokeMethod( final String patchesJson = await PatcherAPI.patcherChannel.invokeMethod(
'getPatches', 'getPatches',
{ {'patchBundleFilePath': patchBundleFile.path},
'patchBundleFilePath': patchBundleFile.path,
},
); );
final List<dynamic> patchesJsonList = jsonDecode(patchesJson); final List<dynamic> patchesJsonList = jsonDecode(patchesJson);
patches = patchesJsonList patches =
patchesJsonList
.map((patchJson) => Patch.fromJson(patchJson)) .map((patchJson) => Patch.fromJson(patchJson))
.toList(); .toList();
return patches; return patches;
@ -498,8 +495,9 @@ class ManagerAPI {
} else { } else {
final release = await _githubAPI.getLatestRelease(getPatchesRepo()); final release = await _githubAPI.getLatestRelease(getPatchesRepo());
if (release != null) { if (release != null) {
final DateTime timestamp = final DateTime timestamp = DateTime.parse(
DateTime.parse(release['created_at'] as String); release['created_at'] as String,
);
return format(timestamp, locale: 'en_short'); return format(timestamp, locale: 'en_short');
} else { } else {
return null; return null;
@ -508,22 +506,16 @@ class ManagerAPI {
} }
Future<String?> getLatestManagerReleaseTime() async { Future<String?> getLatestManagerReleaseTime() async {
return await _revancedAPI.getLatestReleaseTime( return await _revancedAPI.getLatestReleaseTime('manager');
'manager',
);
} }
Future<String?> getLatestManagerVersion() async { Future<String?> getLatestManagerVersion() async {
return await _revancedAPI.getLatestReleaseVersion( return await _revancedAPI.getLatestReleaseVersion('manager');
'manager',
);
} }
Future<String?> getLatestPatchesVersion() async { Future<String?> getLatestPatchesVersion() async {
if (!isUsingAlternativeSources()) { if (!isUsingAlternativeSources()) {
return await _revancedAPI.getLatestReleaseVersion( return await _revancedAPI.getLatestReleaseVersion('patches');
'patches',
);
} else { } else {
final release = await _githubAPI.getLatestRelease(getPatchesRepo()); final release = await _githubAPI.getLatestRelease(getPatchesRepo());
if (release != null) { if (release != null) {
@ -537,8 +529,9 @@ class ManagerAPI {
String getLastUsedPatchesVersion() { String getLastUsedPatchesVersion() {
final String lastPatchesVersions = final String lastPatchesVersions =
_prefs.getString('lastUsedPatchesVersion') ?? '{}'; _prefs.getString('lastUsedPatchesVersion') ?? '{}';
final Map<String, dynamic> lastPatchesVersionMap = final Map<String, dynamic> lastPatchesVersionMap = jsonDecode(
jsonDecode(lastPatchesVersions); lastPatchesVersions,
);
final String repo = getPatchesRepo(); final String repo = getPatchesRepo();
return lastPatchesVersionMap[repo] ?? '0.0.0'; return lastPatchesVersionMap[repo] ?? '0.0.0';
} }
@ -546,8 +539,9 @@ class ManagerAPI {
void setLastUsedPatchesVersion({String? version}) { void setLastUsedPatchesVersion({String? version}) {
final String lastPatchesVersions = final String lastPatchesVersions =
_prefs.getString('lastUsedPatchesVersion') ?? '{}'; _prefs.getString('lastUsedPatchesVersion') ?? '{}';
final Map<String, dynamic> lastPatchesVersionMap = final Map<String, dynamic> lastPatchesVersionMap = jsonDecode(
jsonDecode(lastPatchesVersions); lastPatchesVersions,
);
final repo = getPatchesRepo(); final repo = getPatchesRepo();
final String lastPatchesVersion = final String lastPatchesVersion =
version ?? lastPatchesVersionMap[repo] ?? '0.0.0'; version ?? lastPatchesVersionMap[repo] ?? '0.0.0';
@ -604,10 +598,8 @@ class ManagerAPI {
if (hasRootPermissions) { if (hasRootPermissions) {
final List<String> installedApps = await _rootAPI.getInstalledApps(); final List<String> installedApps = await _rootAPI.getInstalledApps();
for (final String packageName in installedApps) { for (final String packageName in installedApps) {
final ApplicationWithIcon? application = await DeviceApps.getApp( final ApplicationWithIcon? application =
packageName, await DeviceApps.getApp(packageName, true) as ApplicationWithIcon?;
true,
) as ApplicationWithIcon?;
if (application != null) { if (application != null) {
mountedApps.add( mountedApps.add(
PatchedApplication( PatchedApplication(
@ -628,12 +620,14 @@ class ManagerAPI {
} }
Future<void> showPatchesChangeWarningDialog(BuildContext context) { Future<void> showPatchesChangeWarningDialog(BuildContext context) {
final ValueNotifier<bool> noShow = final ValueNotifier<bool> noShow = ValueNotifier(
ValueNotifier(!showPatchesChangeWarning()); !showPatchesChangeWarning(),
);
return showDialog( return showDialog(
barrierDismissible: false, barrierDismissible: false,
context: context, context: context,
builder: (context) => PopScope( builder:
(context) => PopScope(
canPop: false, canPop: false,
child: AlertDialog( child: AlertDialog(
title: Text(t.warning), title: Text(t.warning),
@ -655,9 +649,7 @@ class ManagerAPI {
HapticCheckboxListTile( HapticCheckboxListTile(
value: value, value: value,
contentPadding: EdgeInsets.zero, contentPadding: EdgeInsets.zero,
title: Text( title: Text(t.noShowAgain),
t.noShowAgain,
),
onChanged: (selected) { onChanged: (selected) {
noShow.value = selected!; noShow.value = selected!;
}, },
@ -684,29 +676,21 @@ class ManagerAPI {
final List<PatchedApplication> patchedApps = getPatchedApps(); final List<PatchedApplication> patchedApps = getPatchedApps();
// Remove apps that are not installed anymore. // Remove apps that are not installed anymore.
final List<PatchedApplication> toRemove = final List<PatchedApplication> toRemove = await getAppsToRemove(
await getAppsToRemove(patchedApps); patchedApps,
);
patchedApps.removeWhere((a) => toRemove.contains(a)); patchedApps.removeWhere((a) => toRemove.contains(a));
// Determine all apps that are installed by mounting. // Determine all apps that are installed by mounting.
final List<PatchedApplication> mountedApps = await getMountedApps(); final List<PatchedApplication> mountedApps = await getMountedApps();
mountedApps.removeWhere( mountedApps.removeWhere(
(app) => patchedApps (app) => patchedApps.any(
.any((patchedApp) => patchedApp.packageName == app.packageName), (patchedApp) => patchedApp.packageName == app.packageName,
),
); );
patchedApps.addAll(mountedApps); patchedApps.addAll(mountedApps);
await setPatchedApps(patchedApps); await setPatchedApps(patchedApps);
// Delete the saved app if the file is not found.
final PatchedApplication? lastPatchedApp = getLastPatchedApp();
if (lastPatchedApp != null) {
final File file = File(lastPatchedApp.patchedFilePath);
if (!file.existsSync()) {
deleteLastPatchedApp();
_prefs.remove('lastPatchedApp');
}
}
} }
Future<bool> isAppUninstalled(PatchedApplication app) async { Future<bool> isAppUninstalled(PatchedApplication app) async {
@ -732,10 +716,7 @@ class ManagerAPI {
return app != null && app.isSplit; return app != null && app.isSplit;
} }
Future<void> setSelectedPatches( Future<void> setSelectedPatches(String app, List<String> patches) async {
String app,
List<String> patches,
) async {
final File selectedPatchesFile = File(storedPatchesFile); final File selectedPatchesFile = File(storedPatchesFile);
final Map<String, dynamic> patchesMap = await readSelectedPatchesFile(); final Map<String, dynamic> patchesMap = await readSelectedPatchesFile();
if (patches.isEmpty) { if (patches.isEmpty) {
@ -818,11 +799,11 @@ class ManagerAPI {
} }
void resetAllOptions() { void resetAllOptions() {
_prefs.getKeys().where((key) => key.startsWith('patchOption-')).forEach( _prefs.getKeys().where((key) => key.startsWith('patchOption-')).forEach((
(key) { key,
) {
_prefs.remove(key); _prefs.remove(key);
}, });
);
} }
Future<void> resetLastSelectedPatches() async { Future<void> resetLastSelectedPatches() async {

View File

@ -14,6 +14,7 @@ import 'package:timeago/timeago.dart';
class RevancedAPI { class RevancedAPI {
late final Dio _dio; late final Dio _dio;
late final DownloadManager _downloadManager = locator<DownloadManager>(); late final DownloadManager _downloadManager = locator<DownloadManager>();
late final ManagerAPI _managerAPI = locator<ManagerAPI>();
final Lock getToolsLock = Lock(); final Lock getToolsLock = Lock();
@ -43,15 +44,15 @@ class RevancedAPI {
return contributors; return contributors;
} }
Future<Map<String, dynamic>?> _getLatestRelease( Future<Map<String, dynamic>?> _getLatestRelease(String toolName) {
String toolName,
) {
if (!locator<ManagerAPI>().getDownloadConsent()) { if (!locator<ManagerAPI>().getDownloadConsent()) {
return Future(() => null); return Future(() => null);
} }
return getToolsLock.synchronized(() async { return getToolsLock.synchronized(() async {
try { try {
final response = await _dio.get('/$toolName'); final response = await _dio.get(
'/$toolName?prerelease=${_managerAPI.usePrereleases()}',
);
return response.data; return response.data;
} on Exception catch (e) { } on Exception catch (e) {
if (kDebugMode) { if (kDebugMode) {
@ -62,13 +63,9 @@ class RevancedAPI {
}); });
} }
Future<String?> getLatestReleaseVersion( Future<String?> getLatestReleaseVersion(String toolName) async {
String toolName,
) async {
try { try {
final Map<String, dynamic>? release = await _getLatestRelease( final Map<String, dynamic>? release = await _getLatestRelease(toolName);
toolName,
);
if (release != null) { if (release != null) {
return release['version']; return release['version'];
} }
@ -81,13 +78,9 @@ class RevancedAPI {
return null; return null;
} }
Future<File?> getLatestReleaseFile( Future<File?> getLatestReleaseFile(String toolName) async {
String toolName,
) async {
try { try {
final Map<String, dynamic>? release = await _getLatestRelease( final Map<String, dynamic>? release = await _getLatestRelease(toolName);
toolName,
);
if (release != null) { if (release != null) {
final String url = release['download_url']; final String url = release['download_url'];
return await _downloadManager.getSingleFile(url); return await _downloadManager.getSingleFile(url);
@ -136,16 +129,13 @@ class RevancedAPI {
return outputFile; return outputFile;
} }
Future<String?> getLatestReleaseTime( Future<String?> getLatestReleaseTime(String toolName) async {
String toolName,
) async {
try { try {
final Map<String, dynamic>? release = await _getLatestRelease( final Map<String, dynamic>? release = await _getLatestRelease(toolName);
toolName,
);
if (release != null) { if (release != null) {
final DateTime timestamp = final DateTime timestamp = DateTime.parse(
DateTime.parse(release['created_at'] as String); release['created_at'] as String,
);
return format(timestamp, locale: 'en_short'); return format(timestamp, locale: 'en_short');
} }
} on Exception catch (e) { } on Exception catch (e) {

View File

@ -82,10 +82,13 @@ class HomeViewModel extends BaseViewModel {
); );
flutterLocalNotificationsPlugin flutterLocalNotificationsPlugin
.resolvePlatformSpecificImplementation< .resolvePlatformSpecificImplementation<
AndroidFlutterLocalNotificationsPlugin>() AndroidFlutterLocalNotificationsPlugin
>()
?.requestNotificationsPermission(); ?.requestNotificationsPermission();
final bool isConnected = !(await Connectivity().checkConnectivity()) final bool isConnected =
.contains(ConnectivityResult.none); !(await Connectivity().checkConnectivity()).contains(
ConnectivityResult.none,
);
if (!isConnected) { if (!isConnected) {
_toast.showBottom(t.homeView.noConnection); _toast.showBottom(t.homeView.noConnection);
} }
@ -106,8 +109,10 @@ class HomeViewModel extends BaseViewModel {
void navigateToAppInfo(PatchedApplication app, bool isLastPatchedApp) { void navigateToAppInfo(PatchedApplication app, bool isLastPatchedApp) {
_navigationService.navigateTo( _navigationService.navigateTo(
Routes.appInfoView, Routes.appInfoView,
arguments: arguments: AppInfoViewArguments(
AppInfoViewArguments(app: app, isLastPatchedApp: isLastPatchedApp), app: app,
isLastPatchedApp: isLastPatchedApp,
),
); );
} }
@ -118,8 +123,8 @@ class HomeViewModel extends BaseViewModel {
Future<void> navigateToPatcher(PatchedApplication app) async { Future<void> navigateToPatcher(PatchedApplication app) async {
locator<PatcherViewModel>().selectedApp = app; locator<PatcherViewModel>().selectedApp = app;
locator<PatcherViewModel>().selectedPatches = locator<PatcherViewModel>().selectedPatches = await _patcherAPI
await _patcherAPI.getAppliedPatches(app.appliedPatches); .getAppliedPatches(app.appliedPatches);
locator<PatcherViewModel>().notifyListeners(); locator<PatcherViewModel>().notifyListeners();
locator<NavigationViewModel>().setIndex(1); locator<NavigationViewModel>().setIndex(1);
} }
@ -135,9 +140,6 @@ class HomeViewModel extends BaseViewModel {
} }
Future<bool> hasManagerUpdates() async { Future<bool> hasManagerUpdates() async {
if (!_managerAPI.releaseBuild) {
return false;
}
latestManagerVersion = latestManagerVersion =
await _managerAPI.getLatestManagerVersion() ?? _currentManagerVersion; await _managerAPI.getLatestManagerVersion() ?? _currentManagerVersion;
@ -151,10 +153,12 @@ class HomeViewModel extends BaseViewModel {
latestPatchesVersion = await _managerAPI.getLatestPatchesVersion(); latestPatchesVersion = await _managerAPI.getLatestPatchesVersion();
if (latestPatchesVersion != null) { if (latestPatchesVersion != null) {
try { try {
final int latestVersionInt = final int latestVersionInt = int.parse(
int.parse(latestPatchesVersion!.replaceAll(RegExp('[^0-9]'), '')); latestPatchesVersion!.replaceAll(RegExp('[^0-9]'), ''),
final int currentVersionInt = );
int.parse(_currentPatchesVersion.replaceAll(RegExp('[^0-9]'), '')); final int currentVersionInt = int.parse(
_currentPatchesVersion.replaceAll(RegExp('[^0-9]'), ''),
);
return latestVersionInt > currentVersionInt; return latestVersionInt > currentVersionInt;
} on Exception catch (e) { } on Exception catch (e) {
if (kDebugMode) { if (kDebugMode) {
@ -187,7 +191,8 @@ class HomeViewModel extends BaseViewModel {
await showDialog( await showDialog(
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) => PopScope( builder:
(context) => PopScope(
canPop: false, canPop: false,
child: AlertDialog( child: AlertDialog(
title: Text(t.homeView.downloadConsentDialogTitle), title: Text(t.homeView.downloadConsentDialogTitle),
@ -246,11 +251,13 @@ class HomeViewModel extends BaseViewModel {
} }
void showUpdateDialog(BuildContext context, bool isPatches) { void showUpdateDialog(BuildContext context, bool isPatches) {
final ValueNotifier<bool> noShow = final ValueNotifier<bool> noShow = ValueNotifier(
ValueNotifier(!_managerAPI.showUpdateDialog()); !_managerAPI.showUpdateDialog(),
);
showDialog( showDialog(
context: context, context: context,
builder: (innerContext) => AlertDialog( builder:
(innerContext) => AlertDialog(
title: Text(t.homeView.updateDialogTitle), title: Text(t.homeView.updateDialogTitle),
content: ValueListenableBuilder( content: ValueListenableBuilder(
valueListenable: noShow, valueListenable: noShow,
@ -261,8 +268,10 @@ class HomeViewModel extends BaseViewModel {
children: [ children: [
Text( Text(
t.homeView.updateDialogText( t.homeView.updateDialogText(
file: isPatches ? 'ReVanced Patches' : 'ReVanced Manager', file:
version: isPatches isPatches ? 'ReVanced Patches' : 'ReVanced Manager',
version:
isPatches
? _currentPatchesVersion ? _currentPatchesVersion
: _currentManagerVersion, : _currentManagerVersion,
), ),
@ -326,7 +335,8 @@ class HomeViewModel extends BaseViewModel {
_toast.showBottom(t.homeView.downloadingMessage); _toast.showBottom(t.homeView.downloadingMessage);
showDialog( showDialog(
context: context, context: context,
builder: (context) => ValueListenableBuilder( builder:
(context) => ValueListenableBuilder(
valueListenable: downloaded, valueListenable: downloaded,
builder: (context, value, child) { builder: (context, value, child) {
return AlertDialog( return AlertDialog(
@ -468,7 +478,8 @@ class HomeViewModel extends BaseViewModel {
shape: const RoundedRectangleBorder( shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.vertical(top: Radius.circular(24.0)), borderRadius: BorderRadius.vertical(top: Radius.circular(24.0)),
), ),
builder: (context) => UpdateConfirmationSheet( builder:
(context) => UpdateConfirmationSheet(
isPatches: isPatches, isPatches: isPatches,
changelog: changelog, changelog: changelog,
), ),

View File

@ -125,7 +125,7 @@ class InstallerViewModel extends BaseViewModel {
}); });
await WakelockPlus.enable(); await WakelockPlus.enable();
await handlePlatformChannelMethods(); await handlePlatformChannelMethods();
await runPatcher(context); await runPatcher();
} }
Future<dynamic> handlePlatformChannelMethods() async { Future<dynamic> handlePlatformChannelMethods() async {
@ -164,6 +164,16 @@ class InstallerViewModel extends BaseViewModel {
_managerAPI.setLastUsedPatchesVersion( _managerAPI.setLastUsedPatchesVersion(
version: _managerAPI.patchesVersion, version: _managerAPI.patchesVersion,
); );
_app.appliedPatches = _patches.map((p) => p.name).toList();
if (_managerAPI.isLastPatchedAppEnabled()) {
await _managerAPI.setLastPatchedApp(_app, _patcherAPI.outFile!);
} else {
_app.patchedFilePath = _patcherAPI.outFile!.path;
}
final homeViewModel = locator<HomeViewModel>();
_managerAPI
.reAssessPatchedApps()
.then((_) => homeViewModel.getPatchedApps());
} else if (value == -100.0) { } else if (value == -100.0) {
isPatching = false; isPatching = false;
hasErrors = true; hasErrors = true;
@ -187,7 +197,7 @@ class InstallerViewModel extends BaseViewModel {
notifyListeners(); notifyListeners();
} }
Future<void> runPatcher(BuildContext context) async { Future<void> runPatcher() async {
try { try {
await _patcherAPI.runPatcher( await _patcherAPI.runPatcher(
_app.packageName, _app.packageName,
@ -195,16 +205,6 @@ class InstallerViewModel extends BaseViewModel {
_patches, _patches,
_app.isFromStorage, _app.isFromStorage,
); );
_app.appliedPatches = _patches.map((p) => p.name).toList();
if (_managerAPI.isLastPatchedAppEnabled()) {
await _managerAPI.setLastPatchedApp(_app, _patcherAPI.outFile!);
} else {
_app.patchedFilePath = _patcherAPI.outFile!.path;
}
final homeViewModel = locator<HomeViewModel>();
_managerAPI
.reAssessPatchedApps()
.then((_) => homeViewModel.getPatchedApps());
} on Exception catch (e) { } on Exception catch (e) {
update( update(
-100.0, -100.0,
@ -506,7 +506,7 @@ class InstallerViewModel extends BaseViewModel {
_app.isRooted = installAsRoot; _app.isRooted = installAsRoot;
if (headerLogs != 'Installing...') { if (headerLogs != 'Installing...') {
update( update(
.85, -1.0,
'Installing...', 'Installing...',
_app.isRooted ? 'Mounting patched app' : 'Installing patched app', _app.isRooted ? 'Mounting patched app' : 'Installing patched app',
); );
@ -534,7 +534,7 @@ class InstallerViewModel extends BaseViewModel {
update(1.0, 'Installed', 'Installed'); update(1.0, 'Installed', 'Installed');
} else if (response == 3) { } else if (response == 3) {
update( update(
.85, -1.0,
'Installation canceled', 'Installation canceled',
'Installation canceled', 'Installation canceled',
); );
@ -542,7 +542,7 @@ class InstallerViewModel extends BaseViewModel {
installResult(context, installAsRoot); installResult(context, installAsRoot);
} else { } else {
update( update(
.85, -1.0,
'Installation failed', 'Installation failed',
'Installation failed', 'Installation failed',
); );

View File

@ -40,6 +40,10 @@ class SettingsViewModel extends BaseViewModel {
notifyListeners(); notifyListeners();
} }
bool usePrereleases() {
return _managerAPI.usePrereleases();
}
bool showUpdateDialog() { bool showUpdateDialog() {
return _managerAPI.showUpdateDialog(); return _managerAPI.showUpdateDialog();
} }
@ -64,6 +68,45 @@ class SettingsViewModel extends BaseViewModel {
return _managerAPI.isUsingAlternativeSources(); return _managerAPI.isUsingAlternativeSources();
} }
Future<void> showUsePrereleasesDialog(
BuildContext context,
bool value,
) async {
if (value) {
return showDialog(
context: context,
builder:
(context) => AlertDialog(
title: Text(t.warning),
content: Text(
t.settingsView.usePrereleasesWarningText,
style: const TextStyle(
fontSize: 16,
fontWeight: FontWeight.w500,
),
),
actions: [
TextButton(
onPressed: () {
_managerAPI.setPrereleases(true);
Navigator.of(context).pop();
},
child: Text(t.yesButton),
),
FilledButton(
onPressed: () {
Navigator.of(context).pop();
},
child: Text(t.noButton),
),
],
),
);
} else {
_managerAPI.setPrereleases(false);
}
}
Future<void> showPatchesChangeEnableDialog( Future<void> showPatchesChangeEnableDialog(
bool value, bool value,
BuildContext context, BuildContext context,
@ -71,7 +114,8 @@ class SettingsViewModel extends BaseViewModel {
if (value) { if (value) {
return showDialog( return showDialog(
context: context, context: context,
builder: (context) => AlertDialog( builder:
(context) => AlertDialog(
title: Text(t.warning), title: Text(t.warning),
content: Text( content: Text(
t.settingsView.enablePatchesSelectionWarningText, t.settingsView.enablePatchesSelectionWarningText,
@ -101,7 +145,8 @@ class SettingsViewModel extends BaseViewModel {
} else { } else {
return showDialog( return showDialog(
context: context, context: context,
builder: (context) => AlertDialog( builder:
(context) => AlertDialog(
title: Text(t.warning), title: Text(t.warning),
content: Text( content: Text(
t.settingsView.disablePatchesSelectionWarningText, t.settingsView.disablePatchesSelectionWarningText,
@ -173,7 +218,8 @@ class SettingsViewModel extends BaseViewModel {
if (!value) { if (!value) {
return showDialog( return showDialog(
context: context, context: context,
builder: (context) => AlertDialog( builder:
(context) => AlertDialog(
title: Text(t.warning), title: Text(t.warning),
content: Text( content: Text(
t.settingsView.requireSuggestedAppVersionDialogText, t.settingsView.requireSuggestedAppVersionDialogText,
@ -249,9 +295,7 @@ class SettingsViewModel extends BaseViewModel {
Future<void> importSettings() async { Future<void> importSettings() async {
try { try {
final String? result = await FlutterFileDialog.pickFile( final String? result = await FlutterFileDialog.pickFile(
params: const OpenFileDialogParams( params: const OpenFileDialogParams(fileExtensionsFilter: ['json']),
fileExtensionsFilter: ['json'],
),
); );
if (result != null) { if (result != null) {
final File inFile = File(result); final File inFile = File(result);
@ -298,9 +342,7 @@ class SettingsViewModel extends BaseViewModel {
if (isPatchesChangeEnabled()) { if (isPatchesChangeEnabled()) {
try { try {
final String? result = await FlutterFileDialog.pickFile( final String? result = await FlutterFileDialog.pickFile(
params: const OpenFileDialogParams( params: const OpenFileDialogParams(fileExtensionsFilter: ['json']),
fileExtensionsFilter: ['json'],
),
); );
if (result != null) { if (result != null) {
final File inFile = File(result); final File inFile = File(result);
@ -393,8 +435,9 @@ class SettingsViewModel extends BaseViewModel {
.replaceAll(':', '') .replaceAll(':', '')
.replaceAll('T', '') .replaceAll('T', '')
.replaceAll('.', ''); .replaceAll('.', '');
final File logcat = final File logcat = File(
File('${logDir.path}/revanced-manager_logcat_$dateTime.log'); '${logDir.path}/revanced-manager_logcat_$dateTime.log',
);
final String logs = await Logcat.execute(); final String logs = await Logcat.execute();
logcat.writeAsStringSync(logs); logcat.writeAsStringSync(logs);
await Share.shareXFiles([XFile(logcat.path)]); await Share.shareXFiles([XFile(logcat.path)]);

View File

@ -5,6 +5,7 @@ import 'package:revanced_manager/gen/strings.g.dart';
import 'package:revanced_manager/ui/views/settings/settingsFragment/settings_manage_api_url.dart'; import 'package:revanced_manager/ui/views/settings/settingsFragment/settings_manage_api_url.dart';
import 'package:revanced_manager/ui/widgets/settingsView/settings_section.dart'; import 'package:revanced_manager/ui/widgets/settingsView/settings_section.dart';
import 'package:revanced_manager/ui/widgets/settingsView/settings_use_alternative_sources.dart'; import 'package:revanced_manager/ui/widgets/settingsView/settings_use_alternative_sources.dart';
import 'package:revanced_manager/ui/widgets/settingsView/settings_use_prereleases.dart';
class SDataSection extends StatelessWidget { class SDataSection extends StatelessWidget {
const SDataSection({super.key}); const SDataSection({super.key});
@ -15,6 +16,7 @@ class SDataSection extends StatelessWidget {
title: t.settingsView.dataSectionTitle, title: t.settingsView.dataSectionTitle,
children: const <Widget>[ children: const <Widget>[
SManageApiUrlUI(), SManageApiUrlUI(),
SUsePrereleases(),
SUseAlternativeSources(), SUseAlternativeSources(),
], ],
); );

View File

@ -0,0 +1,32 @@
import 'package:flutter/material.dart';
import 'package:revanced_manager/gen/strings.g.dart';
import 'package:revanced_manager/ui/views/settings/settings_viewmodel.dart';
import 'package:revanced_manager/ui/widgets/shared/haptics/haptic_switch_list_tile.dart';
class SUsePrereleases extends StatefulWidget {
const SUsePrereleases({super.key});
@override
State<SUsePrereleases> createState() => _SUsePrereleasesState();
}
final _settingsViewModel = SettingsViewModel();
class _SUsePrereleasesState extends State<SUsePrereleases> {
@override
Widget build(BuildContext context) {
return HapticSwitchListTile(
contentPadding: const EdgeInsets.symmetric(horizontal: 20.0),
title: Text(
t.settingsView.usePrereleasesLabel,
style: const TextStyle(fontSize: 20, fontWeight: FontWeight.w500),
),
subtitle: Text(t.settingsView.usePrereleasesHint),
value: _settingsViewModel.usePrereleases(),
onChanged: (value) async {
await _settingsViewModel.showUsePrereleasesDialog(context, value);
setState(() {});
},
);
}
}

View File

@ -34,10 +34,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: args name: args
sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6 sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.6.0" version: "2.7.0"
async: async:
dependency: transitive dependency: transitive
description: description:
@ -74,10 +74,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: build_daemon name: build_daemon
sha256: "294a2edaf4814a378725bfe6358210196f5ea37af89ecd81bfa32960113d4948" sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.0.3" version: "4.0.4"
build_resolvers: build_resolvers:
dependency: transitive dependency: transitive
description: description:
@ -114,10 +114,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: built_value name: built_value
sha256: "28a712df2576b63c6c005c465989a348604960c0958d28be5303ba9baa841ac2" sha256: "082001b5c3dc495d4a42f1d5789990505df20d8547d42507c29050af6933ee27"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "8.9.3" version: "8.10.1"
characters: characters:
dependency: transitive dependency: transitive
description: description:
@ -162,10 +162,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: connectivity_plus name: connectivity_plus
sha256: "04bf81bb0b77de31557b58d052b24b3eee33f09a6e7a8c68a3e247c7df19ec27" sha256: "051849e2bd7c7b3bc5844ea0d096609ddc3a859890ec3a9ac4a65a2620cc1f99"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "6.1.3" version: "6.1.4"
connectivity_plus_platform_interface: connectivity_plus_platform_interface:
dependency: transitive dependency: transitive
description: description:
@ -210,18 +210,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: dart_style name: dart_style
sha256: "7856d364b589d1f08986e140938578ed36ed948581fbc3bc9aef1805039ac5ab" sha256: "7306ab8a2359a48d22310ad823521d723acfed60ee1f7e37388e8986853b6820"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.3.7" version: "2.3.8"
dbus: dbus:
dependency: transitive dependency: transitive
description: description:
name: dbus name: dbus
sha256: "365c771ac3b0e58845f39ec6deebc76e3276aa9922b0cc60840712094d9047ac" sha256: "79e0c23480ff85dc68de79e2cd6334add97e48f7f4865d17686dd6ea81a47e8c"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.7.10" version: "0.7.11"
device_apps: device_apps:
dependency: "direct main" dependency: "direct main"
description: description:
@ -235,10 +235,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: device_info_plus name: device_info_plus
sha256: "306b78788d1bb569edb7c55d622953c2414ca12445b41c9117963e03afc5c513" sha256: "0c6396126421b590089447154c5f98a5de423b70cfb15b1578fd018843ee6f53"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "11.3.3" version: "11.4.0"
device_info_plus_platform_interface: device_info_plus_platform_interface:
dependency: transitive dependency: transitive
description: description:
@ -251,10 +251,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: dio name: dio
sha256: "5598aa796bbf4699afd5c67c0f5f6e2ed542afc956884b9cd58c306966efc260" sha256: "253a18bbd4851fecba42f7343a1df3a9a4c1d31a2c1b37e221086b4fa8c8dbc9"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "5.7.0" version: "5.8.0+1"
dio_cache_interceptor: dio_cache_interceptor:
dependency: "direct main" dependency: "direct main"
description: description:
@ -267,10 +267,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: dio_web_adapter name: dio_web_adapter
sha256: "33259a9276d6cea88774a0000cfae0d861003497755969c92faa223108620dc8" sha256: "7586e476d70caecaf1686d21eee7247ea43ef5c345eab9e0cc3583ff13378d78"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.0.0" version: "2.1.1"
dynamic_color: dynamic_color:
dependency: "direct main" dependency: "direct main"
description: description:
@ -299,10 +299,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: fake_async name: fake_async
sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.3.3" version: "1.3.2"
ffi: ffi:
dependency: transitive dependency: transitive
description: description:
@ -323,10 +323,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: file_picker name: file_picker
sha256: "7423298f08f6fc8cce05792bae329f9a93653fc9c08712831b1a55540127995d" sha256: "77f8e81d22d2a07d0dee2c62e1dda71dc1da73bf43bb2d45af09727406167964"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "9.0.2" version: "10.1.9"
fixnum: fixnum:
dependency: transitive dependency: transitive
description: description:
@ -405,18 +405,18 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: flutter_markdown name: flutter_markdown
sha256: e7bbc718adc9476aa14cfddc1ef048d2e21e4e8f18311aaac723266db9f9e7b5 sha256: "08fb8315236099ff8e90cb87bb2b935e0a724a3af1623000a9cec930468e0f27"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.7.6+2" version: "0.7.7+1"
flutter_plugin_android_lifecycle: flutter_plugin_android_lifecycle:
dependency: transitive dependency: transitive
description: description:
name: flutter_plugin_android_lifecycle name: flutter_plugin_android_lifecycle
sha256: "615a505aef59b151b46bbeef55b36ce2b6ed299d160c51d84281946f0aa0ce0e" sha256: f948e346c12f8d5480d2825e03de228d0eb8c3a737e4cdaa122267b89c022b5e
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.0.24" version: "2.0.28"
flutter_test: flutter_test:
dependency: transitive dependency: transitive
description: flutter description: flutter
@ -463,10 +463,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: get name: get
sha256: e4e7335ede17452b391ed3b2ede016545706c01a02292a6c97619705e7d2a85e sha256: c79eeb4339f1f3deffd9ec912f8a923834bec55f7b49c9e882b8fef2c139d425
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.6.6" version: "4.7.2"
get_it: get_it:
dependency: transitive dependency: transitive
description: description:
@ -479,10 +479,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: glob name: glob
sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.1.2" version: "2.1.3"
google_fonts: google_fonts:
dependency: "direct main" dependency: "direct main"
description: description:
@ -503,10 +503,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: http name: http
sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010 sha256: "2c11f3f94c687ee9bad77c171151672986360b2b001d109814ee7140b2cf261b"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.2.2" version: "1.4.0"
http_multi_server: http_multi_server:
dependency: transitive dependency: transitive
description: description:
@ -519,10 +519,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: http_parser name: http_parser
sha256: "76d306a1c3afb33fe82e2bbacad62a61f409b5634c915fceb0d799de1a913360" sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.1.1" version: "4.1.2"
injectable: injectable:
dependency: "direct main" dependency: "direct main"
description: description:
@ -543,10 +543,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: intl name: intl
sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5" sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.20.2" version: "0.19.0"
io: io:
dependency: transitive dependency: transitive
description: description:
@ -559,18 +559,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: js name: js
sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf sha256: "53385261521cc4a0c4658fd0ad07a7d14591cf8fc33abbceae306ddb974888dc"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.7.1" version: "0.7.2"
json2yaml:
dependency: transitive
description:
name: json2yaml
sha256: da94630fbc56079426fdd167ae58373286f603371075b69bf46d848d63ba3e51
url: "https://pub.dev"
source: hosted
version: "3.0.1"
json_annotation: json_annotation:
dependency: "direct main" dependency: "direct main"
description: description:
@ -599,10 +591,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: leak_tracker name: leak_tracker
sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "10.0.9" version: "10.0.8"
leak_tracker_flutter_testing: leak_tracker_flutter_testing:
dependency: transitive dependency: transitive
description: description:
@ -623,10 +615,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: lints name: lints
sha256: "4a16b3f03741e1252fda5de3ce712666d010ba2122f8e912c94f9f7b90e1a4c3" sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "5.1.0" version: "5.1.1"
logcat: logcat:
dependency: "direct main" dependency: "direct main"
description: description:
@ -664,10 +656,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: markdown name: markdown
sha256: ef2a1298144e3f985cc736b22e0ccdaf188b5b3970648f2d9dc13efd1d9df051 sha256: "935e23e1ff3bc02d390bad4d4be001208ee92cc217cb5b5a6c19bc14aaa318c1"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "7.2.2" version: "7.3.0"
matcher: matcher:
dependency: transitive dependency: transitive
description: description:
@ -720,10 +712,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: package_config name: package_config
sha256: "92d4488434b520a62570293fbd33bb556c7d49230791c1b4bbd973baf6d2dc67" sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.1.1" version: "2.2.0"
package_info_plus: package_info_plus:
dependency: "direct main" dependency: "direct main"
description: description:
@ -760,10 +752,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: path_provider_android name: path_provider_android
sha256: "4adf4fd5423ec60a29506c76581bc05854c55e3a0b72d35bb28d661c9686edf2" sha256: d0d310befe2c8ab9e7f393288ccbb11b60c019c6b5afc21973eeee4dda2b35e9
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.2.15" version: "2.2.17"
path_provider_foundation: path_provider_foundation:
dependency: transitive dependency: transitive
description: description:
@ -800,26 +792,26 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: permission_handler name: permission_handler
sha256: "59adad729136f01ea9e35a48f5d1395e25cba6cea552249ddbe9cf950f5d7849" sha256: "2d070d8684b68efb580a5997eb62f675e8a885ef0be6e754fb9ef489c177470f"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "11.4.0" version: "12.0.0+1"
permission_handler_android: permission_handler_android:
dependency: transitive dependency: transitive
description: description:
name: permission_handler_android name: permission_handler_android
sha256: d3971dcdd76182a0c198c096b5db2f0884b0d4196723d21a866fc4cdea057ebc sha256: "1e3bc410ca1bf84662104b100eb126e066cb55791b7451307f9708d4007350e6"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "12.1.0" version: "13.0.1"
permission_handler_apple: permission_handler_apple:
dependency: transitive dependency: transitive
description: description:
name: permission_handler_apple name: permission_handler_apple
sha256: f84a188e79a35c687c132a0a0556c254747a08561e99ab933f12f6ca71ef3c98 sha256: f000131e755c54cf4d84a5d8bd6e4149e262cc31c5a8b1d698de1ac85fa41023
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "9.4.6" version: "9.4.7"
permission_handler_html: permission_handler_html:
dependency: transitive dependency: transitive
description: description:
@ -848,10 +840,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: petitparser name: petitparser
sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 sha256: "07c8f0b1913bcde1ff0d26e57ace2f3012ccbf2b204e070290dad3bb22797646"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "6.0.2" version: "6.1.0"
platform: platform:
dependency: transitive dependency: transitive
description: description:
@ -880,26 +872,26 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: provider name: provider
sha256: c8a055ee5ce3fd98d6fc872478b03823ffdb448699c6ebdbbc71d59b596fd48c sha256: "4abbd070a04e9ddc287673bf5a030c7ca8b685ff70218720abab8b092f53dd84"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "6.1.2" version: "6.1.5"
pub_semver: pub_semver:
dependency: transitive dependency: transitive
description: description:
name: pub_semver name: pub_semver
sha256: "7b3cfbf654f3edd0c6298ecd5be782ce997ddf0e00531b9464b55245185bbbbd" sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.1.5" version: "2.2.0"
pubspec_parse: pubspec_parse:
dependency: transitive dependency: transitive
description: description:
name: pubspec_parse name: pubspec_parse
sha256: c799b721d79eb6ee6fa56f00c04b472dcd44a30d258fac2174a6ec57302678f8 sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.3.0" version: "1.5.0"
recase: recase:
dependency: transitive dependency: transitive
description: description:
@ -954,18 +946,18 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: shared_preferences name: shared_preferences
sha256: "846849e3e9b68f3ef4b60c60cf4b3e02e9321bc7f4d8c4692cf87ffa82fc8a3a" sha256: "6e8bf70b7fef813df4e9a36f658ac46d107db4b4cfe1048b477d4e453a8159f5"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.5.2" version: "2.5.3"
shared_preferences_android: shared_preferences_android:
dependency: transitive dependency: transitive
description: description:
name: shared_preferences_android name: shared_preferences_android
sha256: "02a7d8a9ef346c9af715811b01fbd8e27845ad2c41148eefd31321471b41863d" sha256: "20cbd561f743a342c76c151d6ddb93a9ce6005751e7aa458baad3858bfbfb6ac"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.4.0" version: "2.4.10"
shared_preferences_foundation: shared_preferences_foundation:
dependency: transitive dependency: transitive
description: description:
@ -994,10 +986,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: shared_preferences_web name: shared_preferences_web
sha256: d2ca4132d3946fec2184261726b355836a82c33d7d5b67af32692aff18a4684e sha256: c49bd060261c9a3f0ff445892695d6212ff603ef3115edbb448509d407600019
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.4.2" version: "2.4.3"
shared_preferences_windows: shared_preferences_windows:
dependency: transitive dependency: transitive
description: description:
@ -1018,10 +1010,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: shelf_web_socket name: shelf_web_socket
sha256: cc36c297b52866d203dbf9332263c94becc2fe0ceaa9681d07b6ef9807023b67 sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.0.1" version: "3.0.0"
skeletons: skeletons:
dependency: "direct main" dependency: "direct main"
description: description:
@ -1040,18 +1032,18 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: slang name: slang
sha256: "354283dfe5d6b5bb72d17a52c2acba0ad08c98f8de317a00aa2c801814093982" sha256: "6668a08355b370d5cb5446fc869c4492ed23c6433934fe88228876460fedac22"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.5.0" version: "4.7.2"
slang_flutter: slang_flutter:
dependency: "direct main" dependency: "direct main"
description: description:
name: slang_flutter name: slang_flutter
sha256: "6891526b13641dd2667ce60a9a65ef2c1611f838105396e5e8ad39edc4ecb191" sha256: fff13b6fc8b0378ee23856c4f9fd7f8e2777b430090681f4d19ab14c47de9bc6
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.5.0" version: "4.7.0"
source_gen: source_gen:
dependency: transitive dependency: transitive
description: description:
@ -1088,34 +1080,34 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: sqflite name: sqflite
sha256: "2d7299468485dca85efeeadf5d38986909c5eb0cd71fd3db2c2f000e6c9454bb" sha256: e2297b1da52f127bc7a3da11439985d9b536f75070f3325e62ada69a5c585d03
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.4.1" version: "2.4.2"
sqflite_android: sqflite_android:
dependency: transitive dependency: transitive
description: description:
name: sqflite_android name: sqflite_android
sha256: "78f489aab276260cdd26676d2169446c7ecd3484bbd5fead4ca14f3ed4dd9ee3" sha256: "2b3070c5fa881839f8b402ee4a39c1b4d561704d4ebbbcfb808a119bc2a1701b"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.4.0" version: "2.4.1"
sqflite_common: sqflite_common:
dependency: transitive dependency: transitive
description: description:
name: sqflite_common name: sqflite_common
sha256: "761b9740ecbd4d3e66b8916d784e581861fd3c3553eda85e167bc49fdb68f709" sha256: "84731e8bfd8303a3389903e01fb2141b6e59b5973cacbb0929021df08dddbe8b"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.5.4+6" version: "2.5.5"
sqflite_darwin: sqflite_darwin:
dependency: transitive dependency: transitive
description: description:
name: sqflite_darwin name: sqflite_darwin
sha256: "96a698e2bc82bd770a4d6aab00b42396a7c63d9e33513a56945cbccb594c2474" sha256: "279832e5cde3fe99e8571879498c9211f3ca6391b0d818df4e17d9fff5c6ccb3"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.4.1" version: "2.4.2"
sqflite_platform_interface: sqflite_platform_interface:
dependency: transitive dependency: transitive
description: description:
@ -1225,10 +1217,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: timezone name: timezone
sha256: ffc9d5f4d1193534ef051f9254063fa53d588609418c84299956c3db9383587d sha256: dd14a3b83cfd7cb19e7888f1cbc20f258b8d71b54c06f79ac585f14093a287d1
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.10.0" version: "0.10.1"
timing: timing:
dependency: transitive dependency: transitive
description: description:
@ -1265,18 +1257,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_android name: url_launcher_android
sha256: "6fc2f56536ee873eeb867ad176ae15f304ccccc357848b351f6f0d8d4a40d193" sha256: "8582d7f6fe14d2652b4c45c9b6c14c0b678c2af2d083a11b604caeba51930d79"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "6.3.14" version: "6.3.16"
url_launcher_ios: url_launcher_ios:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_ios name: url_launcher_ios
sha256: "16a513b6c12bb419304e72ea0ae2ab4fed569920d1c7cb850263fe3acc824626" sha256: "7f2022359d4c099eea7df3fdf739f7d3d3b9faf3166fb1dd390775176e0b76cb"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "6.3.2" version: "6.3.3"
url_launcher_linux: url_launcher_linux:
dependency: transitive dependency: transitive
description: description:
@ -1305,18 +1297,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_web name: url_launcher_web
sha256: "772638d3b34c779ede05ba3d38af34657a05ac55b06279ea6edd409e323dca8e" sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.3.3" version: "2.4.1"
url_launcher_windows: url_launcher_windows:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_windows name: url_launcher_windows
sha256: "44cf3aabcedde30f2dba119a9dea3b0f2672fbe6fa96e85536251d678216b3c4" sha256: "3284b6d2ac454cf34f114e1d3319866fdd1e19cdc329999057e44ffe936cfa77"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.1.3" version: "3.1.4"
uuid: uuid:
dependency: transitive dependency: transitive
description: description:
@ -1337,26 +1329,26 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: vm_service name: vm_service
sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02 sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "15.0.0" version: "14.3.1"
wakelock_plus: wakelock_plus:
dependency: "direct main" dependency: "direct main"
description: description:
name: wakelock_plus name: wakelock_plus
sha256: "36c88af0b930121941345306d259ec4cc4ecca3b151c02e3a9e71aede83c615e" sha256: a474e314c3e8fb5adef1f9ae2d247e57467ad557fa7483a2b895bc1b421c5678
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.2.10" version: "1.3.2"
wakelock_plus_platform_interface: wakelock_plus_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: wakelock_plus_platform_interface name: wakelock_plus_platform_interface
sha256: "70e780bc99796e1db82fe764b1e7dcb89a86f1e5b3afb1db354de50f2e41eb7a" sha256: e10444072e50dbc4999d7316fd303f7ea53d31c824aa5eb05d7ccbdd98985207
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.2.2" version: "1.2.3"
watcher: watcher:
dependency: transitive dependency: transitive
description: description:
@ -1369,34 +1361,34 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: web name: web
sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.1.0" version: "1.1.1"
web_socket: web_socket:
dependency: transitive dependency: transitive
description: description:
name: web_socket name: web_socket
sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83" sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.1.6" version: "1.0.1"
web_socket_channel: web_socket_channel:
dependency: transitive dependency: transitive
description: description:
name: web_socket_channel name: web_socket_channel
sha256: "9f187088ed104edd8662ca07af4b124465893caf063ba29758f97af57e61da8f" sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.0.1" version: "3.0.3"
win32: win32:
dependency: transitive dependency: transitive
description: description:
name: win32 name: win32
sha256: b89e6e24d1454e149ab20fbb225af58660f0c0bf4475544650700d8e2da54aef sha256: "329edf97fdd893e0f1e3b9e88d6a0e627128cc17cc316a8d67fda8f1451178ba"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "5.11.0" version: "5.13.0"
win32_registry: win32_registry:
dependency: transitive dependency: transitive
description: description:
@ -1425,10 +1417,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: yaml name: yaml
sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.1.2" version: "3.1.3"
sdks: sdks:
dart: ">=3.7.0 <4.0.0" dart: ">=3.7.0 <4.0.0"
flutter: ">=3.29.0" flutter: ">=3.29.3"

View File

@ -4,11 +4,11 @@ homepage: https://revanced.app
publish_to: 'none' publish_to: 'none'
version: 1.24.1-dev.5+101800060 version: 1.25.1+101800065
environment: environment:
sdk: '>=3.7.0' sdk: '>=3.7.0'
flutter: '>=3.29.0' flutter: '>=3.29.3 <=3.32.0' # Do NOT use 3.32.0, sees https://github.com/flutter/flutter/issues/169215
dependencies: dependencies:
animations: ^2.0.11 animations: ^2.0.11
@ -24,7 +24,7 @@ dependencies:
dynamic_color: ^1.7.0 dynamic_color: ^1.7.0
dynamic_themes: ^1.1.0 dynamic_themes: ^1.1.0
expandable: ^5.0.1 expandable: ^5.0.1
file_picker: ^9.0.2 file_picker: ^10.1.9
flutter: flutter:
sdk: flutter sdk: flutter
flutter_background: ^1.3.0+1 flutter_background: ^1.3.0+1
@ -47,7 +47,7 @@ dependencies:
ref: 4a6d5e0e22292c8eb160cfb9365b9ea29735fd43 # Branch: master ref: 4a6d5e0e22292c8eb160cfb9365b9ea29735fd43 # Branch: master
package_info_plus: ^8.3.0 package_info_plus: ^8.3.0
path_provider: ^2.1.5 path_provider: ^2.1.5
permission_handler: ^11.4.0 permission_handler: ^12.0.0
root: root:
git: git:
url: https://github.com/validcube/root url: https://github.com/validcube/root