mirror of
https://github.com/ReVanced/revanced-manager.git
synced 2025-07-15 01:05:27 +08:00
Compare commits
23 Commits
ci/prebuil
...
v1.25.1
Author | SHA1 | Date | |
---|---|---|---|
40dd81eba3 | |||
9f99fcf808 | |||
1b11a0ad7a | |||
8f60bf44e5 | |||
3b459160d7 | |||
c97e4adace | |||
875ce6439d | |||
c45d579406 | |||
b6b8f4e069 | |||
21ceadaf7f | |||
83fc7f131a | |||
8e4a9088ea | |||
7ee2b1a026 | |||
40c99ab4dc | |||
1752fae9d9 | |||
d264a2a363 | |||
a5e909cfc8 | |||
bdb0317a9e | |||
b0464408f1 | |||
767fa77436 | |||
89b48cebcf | |||
dedcb3c51a | |||
3074766ff2 |
4
.github/workflows/build_pull_request.yml
vendored
4
.github/workflows/build_pull_request.yml
vendored
@ -27,7 +27,6 @@ jobs:
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: refs/pull/${{ inputs.pr-number }}/merge
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup Java
|
||||
uses: actions/setup-java@v4
|
||||
@ -39,10 +38,11 @@ jobs:
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
channel: stable
|
||||
flutter-version: 3.29.x
|
||||
cache: true
|
||||
|
||||
- name: Cache Gradle
|
||||
uses: burrunan/gradle-cache-action@v1
|
||||
uses: burrunan/gradle-cache-action@v3
|
||||
with:
|
||||
build-root-directory: ${{ github.workspace }}/android
|
||||
|
||||
|
7
.github/workflows/release.yml
vendored
7
.github/workflows/release.yml
vendored
@ -18,8 +18,6 @@ jobs:
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup Java
|
||||
uses: actions/setup-java@v4
|
||||
@ -37,15 +35,16 @@ jobs:
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
channel: stable
|
||||
flutter-version: 3.29.x
|
||||
cache: true
|
||||
|
||||
- name: Cache Gradle
|
||||
uses: burrunan/gradle-cache-action@v1
|
||||
uses: burrunan/gradle-cache-action@v3
|
||||
with:
|
||||
build-root-directory: ${{ github.workspace }}/android
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
run: npm i
|
||||
|
||||
- name: Get dependencies
|
||||
run: flutter pub get
|
||||
|
8
.github/workflows/sync_crowdin.yml
vendored
8
.github/workflows/sync_crowdin.yml
vendored
@ -22,11 +22,14 @@ jobs:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
ref: dev
|
||||
clean: true
|
||||
|
||||
- name: Setup Flutter
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
channel: stable
|
||||
flutter-version: 3.29.x
|
||||
cache: true
|
||||
|
||||
- name: Sync translations from Crowdin
|
||||
@ -37,6 +40,7 @@ jobs:
|
||||
upload_translations: false
|
||||
download_translations: true
|
||||
localization_branch_name: feat/translations
|
||||
skip_ref_checkout: true
|
||||
create_pull_request: true
|
||||
pull_request_title: "chore: Sync translations"
|
||||
pull_request_body: "Sync translations from [crowdin.com/project/revanced](https://crowdin.com/project/revanced)"
|
||||
@ -70,6 +74,8 @@ jobs:
|
||||
|
||||
- name: Commit translations
|
||||
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
|
||||
git commit -m "chore: Remove empty values from JSON" assets/i18n/*.i18n.json
|
||||
git push origin HEAD:feat/translations
|
||||
|
45
.gitignore
vendored
45
.gitignore
vendored
@ -1,14 +1,14 @@
|
||||
# Miscellaneous
|
||||
*.class
|
||||
*.lock
|
||||
*.log
|
||||
*.pyc
|
||||
*.swp
|
||||
.DS_Store
|
||||
.atom/
|
||||
.buildlog/
|
||||
.history
|
||||
.svn/
|
||||
migrate_working_dir/
|
||||
|
||||
# packages file containing multi-root paths
|
||||
.packages.generated
|
||||
|
||||
# IntelliJ related
|
||||
*.iml
|
||||
@ -16,32 +16,41 @@ migrate_working_dir/
|
||||
*.iws
|
||||
.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
|
||||
**/doc/api/
|
||||
**/ios/Flutter/.last_build_id
|
||||
.dart_tool/
|
||||
.flutter-plugins
|
||||
.flutter-plugins-dependencies
|
||||
.pub-cache/
|
||||
**/generated_plugin_registrant.dart
|
||||
.packages
|
||||
.pub-preload-cache/
|
||||
.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
|
||||
|
||||
# Obfuscation related
|
||||
app.*.map.json
|
||||
|
||||
# Android Studio will place build artifacts here
|
||||
/android/app/debug
|
||||
/android/app/profile
|
||||
/android/app/release
|
||||
|
||||
# Generated files
|
||||
android/app/.cxx
|
||||
**/*.g.dart
|
||||
|
@ -28,6 +28,9 @@
|
||||
android:largeHeap="true"
|
||||
android:requestLegacyExternalStorage="true"
|
||||
android:enableOnBackInvokedCallback="true">
|
||||
<meta-data
|
||||
android:name="io.flutter.embedding.android.EnableImpeller"
|
||||
android:value="false" />
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:exported="true"
|
||||
|
@ -180,6 +180,9 @@
|
||||
"disablePatchesSelectionWarningText": "أنت على وشك تعطيل تغيير تحديد التعديلات.\nستتم استعادة التحديد الافتراضي للتعديلات.\n\nهل تريد التعطيل على أي حال؟",
|
||||
"autoUpdatePatchesLabel": "تحديث التعديلات تلقائيًا",
|
||||
"autoUpdatePatchesHint": "تحديث التعديلات تلقائيًا إلى الإصدار الأحدث",
|
||||
"usePrereleasesLabel": "استخدام الإصدارات التجريبية",
|
||||
"usePrereleasesHint": "استخدام الإصدارات التجريبية من ReVanced Manager و ReVanced Patches",
|
||||
"usePrereleasesWarningText": "قد تتسبب الإصدارات التجريبية في حدوث مشكلات غير متوقعة.\n\nهل تريد التمكين على أي حال؟",
|
||||
"showUpdateDialogLabel": "عرض مربع حوار التحديث",
|
||||
"showUpdateDialogHint": "عرض مربع حوار عندما يتوفر تحديث جديد",
|
||||
"universalPatchesLabel": "عرض التعديلات العامة",
|
||||
|
@ -34,7 +34,25 @@
|
||||
"updatePatchesSheetTitle": "ReVanced পেট্চবোৰ আপডে’ট কৰক",
|
||||
"updateChangelogTitle": "সলনি-পঞ্জী",
|
||||
"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": {
|
||||
"saveOptions": "ছে’ভ কৰক",
|
||||
@ -50,9 +68,28 @@
|
||||
"darkThemeLabel": "গাঢ়",
|
||||
"dynamicThemeLabel": "মেটেৰিয়েল ইউ",
|
||||
"languageLabel": "ভাষা",
|
||||
"languageUpdated": "ভাষা আপডে’ট কৰা হ’ল"
|
||||
"languageUpdated": "ভাষা আপডে’ট কৰা হ’ল",
|
||||
"importKeystoreLabel": "কীষ্ট’ৰ ইম্প’ৰ্ট কৰক",
|
||||
"importKeystoreHint": "এপবোৰত চহী কৰিবলৈ ব্যৱহাৰ কৰা কীষ্ট’ৰ এটা ইম্প’ৰ্ট কৰক",
|
||||
"importedKeystore": "কীষ্ট’ৰ ইম্প’ৰ্ট কৰা হ’ল",
|
||||
"selectKeystorePassword": "কীষ্ট’ৰৰ পাছৱৰ্ড",
|
||||
"selectKeystorePasswordHint": "এপবোৰত চহী কৰিবলৈ ব্যৱহাৰ কৰা কীষ্ট’ৰৰ পাছৱৰ্ড বাছনি কৰক",
|
||||
"jsonSelectorErrorMessage": "বাছনি কৰা JSON ফাইলটো ব্যৱহাৰ কৰিব পৰা নগ’ল",
|
||||
"keystoreSelectorErrorMessage": "বাছনি কৰা কীষ্ট’ৰ ফাইলটো ব্যৱহাৰ কৰিব পৰা নগ’ল"
|
||||
},
|
||||
"appInfoView": {
|
||||
"widgetTitle": "এপৰ তথ্য",
|
||||
"openButton": "খোলক",
|
||||
"installButton": "ইনষ্টল কৰক",
|
||||
"uninstallButton": "আনইনষ্টল কৰক",
|
||||
"unmountButton": "আনমাউণ্ট কৰক",
|
||||
"exportButton": "এক্সপ’ৰ্ট কৰক",
|
||||
"deleteButton": "মচক",
|
||||
"rootDialogTitle": "ত্ৰুটি",
|
||||
"lastPatchedAppDescription": "এইটো শেষবাৰৰ বাবে পেট্চ কৰা এপটোৰ বেকআপ।",
|
||||
"unmountDialogText": "আপুনি এই এপটো আনমাউণ্ট কৰিব বিচৰাটো নিশ্চিতনে?",
|
||||
"uninstallDialogText": "আপুনি এই এপটো আনইনষ্টল কৰিব বিচৰাটো নিশ্চিতনে?",
|
||||
"rootDialogText": "এপটো ছুপাৰইউজাৰৰ অনুমতিৰে ইনষ্টল কৰা হৈছে, কিন্তু বৰ্তমান ReVanced Manager-ৰ কোনো অনুমতি নাই।\nঅনুগ্ৰহ কৰি প্ৰথমে ছুপাৰইউজাৰৰ অনুমতি দিয়ক।",
|
||||
"removeAppDialogTitle": "এপ মচিবনে?",
|
||||
"removeAppDialogText": "আপুনি এই বেকআপ মচি পেলাব বিচৰাটো নিশ্চিতনে?",
|
||||
"packageNameLabel": "পেকেজৰ নাম",
|
||||
@ -75,14 +112,24 @@
|
||||
"mount_missing_installation": "ইনষ্টলেশ্যন পোৱা নগ’ল",
|
||||
"status_failure_blocked": "ইনষ্টলেশ্যন অৱৰুদ্ধ",
|
||||
"install_failed_verification_failure": "ভেৰিফিকেশ্যন বিফল",
|
||||
"status_failure_invalid": "ইনষ্টলেশ্যন অবৈধ",
|
||||
"install_failed_version_downgrade": "ডাউনগ্ৰে’ড কৰিব নোৱাৰি",
|
||||
"status_failure_conflict": "ইনষ্টলেশ্যনৰ সংঘাত",
|
||||
"status_failure_storage": "ইনষ্টলেশ্যন ষ্ট’ৰেজৰ সমস্যা",
|
||||
"status_failure_incompatible": "ইনষ্টলেশ্যন নিমিলে",
|
||||
"status_failure_timeout": "ইনষ্টলেশ্যনৰ সময় উকলিল",
|
||||
"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_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": "অজ্ঞাত কাৰণত ইনষ্টলেশ্যন বিফল হ’ল। অনুগ্ৰহ কৰি আকৌ চেষ্টা কৰক।"
|
||||
}
|
||||
}
|
@ -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?",
|
||||
"autoUpdatePatchesLabel": "Yamaqları 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",
|
||||
"showUpdateDialogHint": "Təzə yenilənmə mövcud olduqda dialoq pəncərəsi göstər",
|
||||
"universalPatchesLabel": "Ümumi yamaqları göstər",
|
||||
|
@ -180,6 +180,9 @@
|
||||
"disablePatchesSelectionWarningText": "Вы збіраецеся адключыць змяненне выбару выпраўленняў.\nБудзе адноўлены прадвызначаны выбар выпраўленняў.\n\nАдключыць усё роўна?",
|
||||
"autoUpdatePatchesLabel": "Аўтаматычнае абнаўленне выпраўленняў",
|
||||
"autoUpdatePatchesHint": "Аўтаматычна абнаўляць выпраўленні да апошняй версіі",
|
||||
"usePrereleasesLabel": "Выкарыстоўваць тэставыя версіі",
|
||||
"usePrereleasesHint": "Выкарыстоўваць тэставыя версіі ReVanced Manager і ReVanced Patches",
|
||||
"usePrereleasesWarningText": "Выкарыстанне папярэдніх версій можа выклікаць нечаканыя праблемы.\n\nУсё роўна ўключыць?",
|
||||
"showUpdateDialogLabel": "Паказваць акно абнаўлення",
|
||||
"showUpdateDialogHint": "Паказваць акно, калі даступна новае абнаўленне",
|
||||
"universalPatchesLabel": "Паказваць універсальныя выпраўленні",
|
||||
|
@ -180,6 +180,9 @@
|
||||
"disablePatchesSelectionWarningText": "Предстои да забраните промени в избора на модификации.\nИзбраните модификации по подразбиране ще бъдат възстановени.\n\nЗабранявате ли въпреки това?",
|
||||
"autoUpdatePatchesLabel": "Автоматична актуализация на модификациите",
|
||||
"autoUpdatePatchesHint": "Автоматично актуализира модификациите до последната им версия",
|
||||
"usePrereleasesLabel": "Използвай предварителни версии",
|
||||
"usePrereleasesHint": "Използвай предварителни версии на ReVanced Manager и ReVanced Patches",
|
||||
"usePrereleasesWarningText": "Използването на предварителни версии може да причини неочаквани проблеми.\n\nВсе пак да активирам?",
|
||||
"showUpdateDialogLabel": "Показване на диалоговия прозорец за актуализиране",
|
||||
"showUpdateDialogHint": "Показва диалогов прозорец, когато е налична нова актуализация",
|
||||
"universalPatchesLabel": "Покажи универсални модификации",
|
||||
|
@ -180,6 +180,9 @@
|
||||
"disablePatchesSelectionWarningText": "আপনি নির্বাচিত প্যাচ পরিবর্তনকে নিষ্ক্রিয় করতে যাচ্ছেন।\nপূর্বনির্ধারিত নির্বাচিত প্যাচসমূহ ফিরিয়ে আনা হবে।\n\nযেকোন ভাবে নিষ্ক্রিয় করতে চান?",
|
||||
"autoUpdatePatchesLabel": "প্যাচসমূহ স্বয়ংক্রিয়ভাবে আপডেট করুন",
|
||||
"autoUpdatePatchesHint": "প্যাচসমূহ স্বয়ংক্রিয়ভাবে সর্বশেষ সংস্করণে আপডেট হবে",
|
||||
"usePrereleasesLabel": "প্রি-রিলিজ ব্যবহার করুন",
|
||||
"usePrereleasesHint": "ReVanced Manager এবং ReVanced প্যাচ এর প্রি-রিলিজ সংস্করণ ব্যবহার করুন",
|
||||
"usePrereleasesWarningText": "প্রাক-প্রকাশ সংস্করণ ব্যবহার করলে অপ্রত্যাশিত সমস্যা হতে পারে।\n\nতবুও সক্ষম করবেন?",
|
||||
"showUpdateDialogLabel": "হালনাগাদ ডায়ালগ দেখান",
|
||||
"showUpdateDialogHint": "যখন হালনাগাদ উপলব্ধ থাকবে তখন একটি ডায়ালগ দেখান",
|
||||
"universalPatchesLabel": "বৈশ্বিক প্যাচসমূহ দেখান",
|
||||
|
@ -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."
|
||||
}
|
||||
}
|
@ -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?",
|
||||
"autoUpdatePatchesLabel": "Automaticky aktualizovat záplaty",
|
||||
"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",
|
||||
"showUpdateDialogHint": "Zobrazit dialogové okno, když je dostupná nová aktualizace",
|
||||
"universalPatchesLabel": "Zobrazit univerzální záplaty",
|
||||
|
@ -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?",
|
||||
"autoUpdatePatchesLabel": "Opdatér patches automatisk",
|
||||
"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",
|
||||
"showUpdateDialogHint": "Vis en dialog når en ny opdatering er tilgængelig",
|
||||
"universalPatchesLabel": "Vis universelle patches",
|
||||
|
@ -180,6 +180,9 @@
|
||||
"disablePatchesSelectionWarningText": "Sie sind im Begriff, die Auswahl der Patches zu deaktivieren.\nDie Standardauswahl der Patches wird wiederhergestellt.\n\nTrotzdem deaktivieren?",
|
||||
"autoUpdatePatchesLabel": "Patches automatisch 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",
|
||||
"showUpdateDialogHint": "Dialog anzeigen, wenn ein neues Update verfügbar ist",
|
||||
"universalPatchesLabel": "Universelle Patches zeigen",
|
||||
|
@ -180,6 +180,9 @@
|
||||
"disablePatchesSelectionWarningText": "Πρόκειται να απενεργοποιήσετε τη δυνατότητα αλλαγής των επιλογών τροποποιήσεων.\nΟι προεπιλεγμένες επιλογές τροποποιήσεων θα επαναφερθούν.\n\nΑπενεργοποίηση παρόλα αυτά;",
|
||||
"autoUpdatePatchesLabel": "Αυτόματες ενημερώσεις τροποποιήσεων",
|
||||
"autoUpdatePatchesHint": "Αυτόματη ενημέρωση τροποποιήσεων στην τελευταία έκδοση",
|
||||
"usePrereleasesLabel": "Χρήση πρώιμων εκδόσεων",
|
||||
"usePrereleasesHint": "Χρήση πρώιμων εκδόσεων του ReVanced Manager και των τροποποιήσεων ReVanced",
|
||||
"usePrereleasesWarningText": "Η χρήση πρώιμων εκδόσεων μπορεί να προκαλέσει απρόβλεπτα προβλήματα.\\n\\nΕνεργοποίηση ούτως ή άλλως;",
|
||||
"showUpdateDialogLabel": "Εμφάνιση προτροπής για ενημερώσεις",
|
||||
"showUpdateDialogHint": "Εμφάνιση ειδοποίησης όταν είναι διαθέσιμη κάποια νέα ενημέρωση",
|
||||
"universalPatchesLabel": "Εμφάνιση γενικευμένων τροποποιήσεων",
|
||||
|
@ -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?",
|
||||
"autoUpdatePatchesLabel": "Auto update patches",
|
||||
"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",
|
||||
"showUpdateDialogHint": "Show a dialog when a new update is available",
|
||||
"universalPatchesLabel": "Show universal patches",
|
||||
|
@ -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?",
|
||||
"autoUpdatePatchesLabel": "Actualizar automáticamente los parches",
|
||||
"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",
|
||||
"showUpdateDialogHint": "Mostrar un diálogo cuando una nueva actualización esté disponible",
|
||||
"universalPatchesLabel": "Mostrar parches universales",
|
||||
|
@ -180,6 +180,9 @@
|
||||
"disablePatchesSelectionWarningText": "Te olete peaaegu keelamas paranduste valiku muutmise.\nParanduste vaikimisi valik taastatakse.\n\nKas keelate ikkagi?",
|
||||
"autoUpdatePatchesLabel": "Automaatne paranduste uuendamine",
|
||||
"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",
|
||||
"showUpdateDialogHint": "Näita dialoogi, kui on saadaval uus uuendus",
|
||||
"universalPatchesLabel": "Näita universaalseid parandusi",
|
||||
|
@ -104,7 +104,7 @@
|
||||
"setRequiredOption": "Joillekin paikkauksille on määritettävä asetuksia:\n\n${patches}\n\nMääritä ne ennen kuin jatkat."
|
||||
},
|
||||
"patchOptionsView": {
|
||||
"customValue": "Oma arvo",
|
||||
"customValue": "Mukautettu arvo",
|
||||
"setToNull": "Aseta nollaksi",
|
||||
"nullValue": "Tämän asetuksen arvo on tällä hetkellä tyhjä",
|
||||
"viewTitle": "Paikkausasetukset",
|
||||
@ -180,6 +180,9 @@
|
||||
"disablePatchesSelectionWarningText": "Olet poistamassa paikkausvalikoiman muokkauksen käytöstä.\nOletusarvoiset paikkasvalikoimat palautetaan.\n\nEstetäänkö se silti?",
|
||||
"autoUpdatePatchesLabel": "Päivitä paikkaukset automaattisesti",
|
||||
"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",
|
||||
"showUpdateDialogHint": "Näytä ilmoitus, kun uusi päivitys on saatavilla",
|
||||
"universalPatchesLabel": "Näytä yleispaikkaukset",
|
||||
|
@ -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?",
|
||||
"autoUpdatePatchesLabel": "Auto update patches",
|
||||
"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",
|
||||
"showUpdateDialogHint": "Ipakita ang isang dialog kapag magagamit ang isang bagong update",
|
||||
"universalPatchesLabel": "Ipakita ang mga pangkalahatang patch",
|
||||
|
@ -137,7 +137,7 @@
|
||||
"notificationText": "Appuyez pour revenir à l'installation",
|
||||
"exportApkButtonTooltip": "Exporter l'APK patché",
|
||||
"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",
|
||||
"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 ?",
|
||||
"autoUpdatePatchesLabel": "Mise à jour auto. des patchs",
|
||||
"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",
|
||||
"showUpdateDialogHint": "Afficher une boîte de dialogue lorsqu'une nouvelle mise à jour est disponible",
|
||||
"universalPatchesLabel": "Afficher les patchs universels",
|
||||
|
@ -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?",
|
||||
"autoUpdatePatchesLabel": "Paistí nuashonruithe uathoibríoch",
|
||||
"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ú",
|
||||
"showUpdateDialogHint": "Taispeáin dialóg nuair a bhíonn nuashonrú nua ar fáil",
|
||||
"universalPatchesLabel": "Taispeáin paistí uilíocha",
|
||||
|
@ -180,6 +180,9 @@
|
||||
"disablePatchesSelectionWarningText": "אתה עומד לכבות את שינוי בחירת התיקונים.\nהבחירה ברירת המחדל של התיקונים תשוחזר.\n\nלכבות בכל מקרה?",
|
||||
"autoUpdatePatchesLabel": "עדכון תיקונים באופן אוטומטי",
|
||||
"autoUpdatePatchesHint": "עדכן אוטומטית את התיקונים לגרסה העדכנית ביותר",
|
||||
"usePrereleasesLabel": "השתמש בגרסאות קדם-שחרור",
|
||||
"usePrereleasesHint": "השתמש בגרסאות קדם-שחרור של ReVanced Manager ושל ReVanced Patches",
|
||||
"usePrereleasesWarningText": "שימוש בגרסאות קדם-הפצה עלול לגרום לבעיות בלתי צפויות.\n\nלאפשר בכל זאת?",
|
||||
"showUpdateDialogLabel": "הצג תיבת עדכון",
|
||||
"showUpdateDialogHint": "הצג תיבת דו-שיח כאשר עדכון חדש זמין",
|
||||
"universalPatchesLabel": "הצג תיקונים אוניברסליים",
|
||||
|
@ -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?",
|
||||
"autoUpdatePatchesLabel": "Patchek automatikus frissítése",
|
||||
"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",
|
||||
"showUpdateDialogHint": "Panel megjelenítése, ha új frissítés érhető el",
|
||||
"universalPatchesLabel": "Univerzális patchek megjelenítése",
|
||||
|
@ -180,6 +180,9 @@
|
||||
"disablePatchesSelectionWarningText": "Ոն թոչնաբ լրասուառ վորուսուն սնւսնայուելցով.\nնաչսուառսոն րավուկուտուասոր գոտաղնայուոան դոյնոօուն ռայուաստոնւտոր ձնայուարոյունելցով.\n\nնաչստո դուոանիյոյուն?",
|
||||
"autoUpdatePatchesLabel": "Ավտոմատ վերանորոգել փաթչերը",
|
||||
"autoUpdatePatchesHint": "Ավտոմատ ձևով վերանորոգել փաթչերը մինչև վերջին տարբերակը",
|
||||
"usePrereleasesLabel": "Օգտագործել նախաթողարկումներ",
|
||||
"usePrereleasesHint": "Օգտագործել ReVanced Manager-ի և ReVanced Patches-ի նախաթողարկման տարբերակները",
|
||||
"usePrereleasesWarningText": "Նախնական թողարկման տարբերակների օգտագործումը կարող է անսպասելի խնդիրներ առաջացնել։\n\nՄիևնույն է, միացնե՞լ։",
|
||||
"showUpdateDialogLabel": "Ցույց տալ թարմացման երկխոսություն",
|
||||
"showUpdateDialogHint": "Ցույց տալ երկխոսություն, երբ նոր թարմացում է հասանելի",
|
||||
"universalPatchesLabel": "Ընդհանուր փոփոխումներ ցուցադրել",
|
||||
|
@ -26,7 +26,7 @@
|
||||
"lastPatchedAppSubtitle": "Aplikasi terakhir ditambal",
|
||||
"patchedSubtitle": "Aplikasi terpasang",
|
||||
"changeLaterSubtitle": "Anda dapat mengubahnya di pengaturan nanti.",
|
||||
"noSavedAppFound": "App tidak ditemukan",
|
||||
"noSavedAppFound": "Aplikasi tidak ditemukan",
|
||||
"noInstallations": "Aplikasi tertambal tidak terpasang",
|
||||
"installUpdate": "Lanjut mengunduh pembaruan?",
|
||||
"updateSheetTitle": "Perbarui ReVanced Manager",
|
||||
@ -180,6 +180,9 @@
|
||||
"disablePatchesSelectionWarningText": "Anda akan menonaktifkan pengubahan pilihan tambalan.\nPilihan tambalan bawaan akan dikembalikan.\n\nTetap nonaktifkan?",
|
||||
"autoUpdatePatchesLabel": "Otomatis perbarui tambalan",
|
||||
"autoUpdatePatchesHint": "Otomatis perbarui tambalan ke versi 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",
|
||||
"showUpdateDialogHint": "Tampilkan dialog ketika pembaruan tersedia",
|
||||
"universalPatchesLabel": "Tampilkan tambalan universal",
|
||||
|
@ -180,6 +180,9 @@
|
||||
"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",
|
||||
"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",
|
||||
"showUpdateDialogHint": "Mostra una finestra di dialogo quando è disponibile un nuovo aggiornamento",
|
||||
"universalPatchesLabel": "Mostra patch universali",
|
||||
|
@ -4,11 +4,11 @@
|
||||
"dismissButton": "閉じる",
|
||||
"quitButton": "終了",
|
||||
"updateButton": "更新",
|
||||
"suggested": "推奨: ${version}",
|
||||
"suggested": "推奨バージョン: ${version}",
|
||||
"yesButton": "はい",
|
||||
"noButton": "いいえ",
|
||||
"warning": "警告",
|
||||
"notice": "お知らせ",
|
||||
"notice": "注意",
|
||||
"noShowAgain": "今後表示しない",
|
||||
"add": "追加",
|
||||
"remove": "削除",
|
||||
@ -27,17 +27,17 @@
|
||||
"patchedSubtitle": "インストール済みのアプリ",
|
||||
"changeLaterSubtitle": "この設定は後から変更できます",
|
||||
"noSavedAppFound": "アプリが見つかりません",
|
||||
"noInstallations": "パッチ済みのアプリはインストールされていません",
|
||||
"installUpdate": "更新を適用しますか?",
|
||||
"noInstallations": "パッチを適用したアプリはインストールされていません",
|
||||
"installUpdate": "更新をインストールしますか?",
|
||||
"updateSheetTitle": "ReVanced Managerを更新",
|
||||
"updateDialogTitle": "新しいアップデートが利用可能",
|
||||
"updateDialogTitle": "新しいアップデートが利用可能です",
|
||||
"updatePatchesSheetTitle": "ReVanced Patchesを更新",
|
||||
"updateChangelogTitle": "変更履歴",
|
||||
"updateChangelogTitle": "更新履歴",
|
||||
"updateDialogText": "${file} の更新が利用可能です。\n現在のバージョン: ${version} ",
|
||||
"downloadConsentDialogTitle": "必要なファイルをダウンロードしますか?",
|
||||
"downloadConsentDialogText": "ReVanced Managerを正常に動作させるためのファイルをダウンロードする必要があります。",
|
||||
"downloadConsentDialogText": "ReVanced Managerを正常に動作させるために必要なファイルをダウンロードする必要があります。",
|
||||
"downloadConsentDialogText2": "${url} に接続します。",
|
||||
"downloadingMessage": "更新データをダウンロードしています...",
|
||||
"downloadingMessage": "更新データをダウンロードしています…",
|
||||
"downloadedMessage": "アップデートのダウンロードが完了しました",
|
||||
"installingMessage": "更新を適用しています...",
|
||||
"errorDownloadMessage": "更新データをダウンロードできませんでした",
|
||||
@ -74,7 +74,7 @@
|
||||
},
|
||||
"socialMediaCard": {
|
||||
"widgetTitle": "SNS",
|
||||
"widgetSubtitle": "私たちはここにいます!"
|
||||
"widgetSubtitle": "私たちはここにいます!"
|
||||
},
|
||||
"appSelectorView": {
|
||||
"viewTitle": "アプリを選択",
|
||||
@ -82,10 +82,10 @@
|
||||
"storageButton": "APKファイルを選択",
|
||||
"selectFromStorageButton": "ストレージから選択",
|
||||
"errorMessage": "選択したアプリは使用できません",
|
||||
"downloadToast": "ダウンロード機能は現在開発中です",
|
||||
"downloadToast": "ダウンロード機能はまだ実装されていないため、利用できません",
|
||||
"requireSuggestedAppVersionDialogText": "選択したアプリのバージョンは推奨バージョンではありません。予期せぬ問題が発生する可能性があります。\n推奨バージョンを選択してください。\n\n選択されたバージョン ${selected}\n推奨バージョン ${suggested}\n\n選択されたバージョンを使用する場合、設定から「推奨バージョンの使用を強制」を無効にしてください。",
|
||||
"featureNotAvailable": "この機能は未実装です",
|
||||
"featureNotAvailableText": "このアプリは分割APKであり、パッチの適用とインストールにはroot権限でマウントする必要があります。ただし、ストレージから単一APKを選択することでパッチの適用とインストールが可能です。"
|
||||
"featureNotAvailableText": "このアプリは分割APKであり、パッチの適用とインストールにはルート権限でマウントする必要があります。ただし、ストレージから単一APKを選択することでパッチの適用とインストールが可能です。"
|
||||
},
|
||||
"patchesSelectorView": {
|
||||
"viewTitle": "パッチを選択",
|
||||
@ -111,8 +111,8 @@
|
||||
"saveOptions": "保存",
|
||||
"unselectPatch": "パッチの選択を解除",
|
||||
"tooltip": "他の入力オプション",
|
||||
"selectFilePath": "ファイルパスを選択",
|
||||
"selectFolder": "フォルダーを選択",
|
||||
"selectFilePath": "ファイルのパスを選択",
|
||||
"selectFolder": "フォルダを選択",
|
||||
"requiredOption": "このオプションは必須です",
|
||||
"unsupportedOption": "このオプションはサポートされていません",
|
||||
"requiredOptionNull": "以下のオプションを設定する必要があります:\n\n${options}"
|
||||
@ -130,12 +130,12 @@
|
||||
"installButton": "インストール",
|
||||
"installRootType": "マウント",
|
||||
"installNonRootType": "標準",
|
||||
"warning": "予期しない問題を避けるため、パッチを適用したアプリの自動更新を無効にします。",
|
||||
"pressBackAgain": "キャンセルするには、もう一度戻るを押してください",
|
||||
"warning": "予期しない問題を避けるため、パッチを適用したアプリの自動更新を無効にすることを推奨します。",
|
||||
"pressBackAgain": "キャンセルするには、もう一度戻るボタンを押してください",
|
||||
"openButton": "開く",
|
||||
"notificationTitle": "ReVanced Manager はパッチを適用しています",
|
||||
"notificationTitle": "ReVanced Managerはパッチを適用しています",
|
||||
"notificationText": "インストーラーに戻るにはタップしてください",
|
||||
"exportApkButtonTooltip": "パッチ済みの APK をエクスポート",
|
||||
"exportApkButtonTooltip": "パッチ済みのAPKをエクスポート",
|
||||
"exportLogButtonTooltip": "ログをエクスポート",
|
||||
"screenshotDetected": "スクリーンショットが検出されました。ログを共有しようとしてる場合は、代わりにテキストをコピーしてください。\n\nクリップボードにログをコピーしますか?",
|
||||
"copiedToClipboard": "ログをクリップボードにコピーしました",
|
||||
@ -147,14 +147,14 @@
|
||||
"teamSectionTitle": "開発チーム",
|
||||
"debugSectionTitle": "デバッグ",
|
||||
"advancedSectionTitle": "高度な設定",
|
||||
"exportSectionTitle": "インポート&エクスポート",
|
||||
"exportSectionTitle": "インポート/エクスポート",
|
||||
"dataSectionTitle": "データソース",
|
||||
"themeModeLabel": "アプリのテーマ",
|
||||
"systemThemeLabel": "システム",
|
||||
"systemThemeLabel": "システムの設定に従う",
|
||||
"lightThemeLabel": "ライト",
|
||||
"darkThemeLabel": "ダーク",
|
||||
"dynamicThemeLabel": "Material You",
|
||||
"dynamicThemeHint": "よりデバイスに近い体験が楽しめます",
|
||||
"dynamicThemeHint": "お使いのデバイスに近い体験をお楽しみください",
|
||||
"languageLabel": "言語",
|
||||
"languageUpdated": "言語が更新されました",
|
||||
"sourcesLabel": "代替ソース",
|
||||
@ -163,31 +163,34 @@
|
||||
"useAlternativeSourcesHint": "APIの代わりにReVended Patchesの代替ソースを使用します",
|
||||
"sourcesResetDialogTitle": "リセット",
|
||||
"sourcesResetDialogText": "ソースをデフォルト値にリセットしてもよろしいですか?",
|
||||
"apiURLResetDialogText": "API の URL をデフォルト値にリセットしてもよろしいですか?",
|
||||
"apiURLResetDialogText": "APIのURLをデフォルト値にリセットしてもよろしいですか?",
|
||||
"sourcesUpdateNote": "注意: 自動的に代替ソースからReVanced Patchesをダウンロードします。\n\nこれにより、代替ソースに接続されます。",
|
||||
"apiURLLabel": "API の URL",
|
||||
"apiURLHint": "ReVinced ManagerのAPI URLを設定します",
|
||||
"selectApiURL": "API の URL",
|
||||
"apiURLLabel": "APIのURL",
|
||||
"apiURLHint": "ReVanced ManagerのAPI URLを設定します",
|
||||
"selectApiURL": "APIのURL",
|
||||
"orgPatchesLabel": "Patches の組織",
|
||||
"sourcesPatchesLabel": "Patches のソース",
|
||||
"contributorsLabel": "貢献者",
|
||||
"contributorsHint": "ReVancedの貢献者一覧",
|
||||
"logsLabel": "ログを共有",
|
||||
"logsHint": "ReVanced Manager のログを共有します",
|
||||
"logsHint": "ReVanced Managerのログを共有します",
|
||||
"enablePatchesSelectionLabel": "パッチ選択の変更を許可",
|
||||
"enablePatchesSelectionHint": "パッチの選択・解除を禁止しません",
|
||||
"enablePatchesSelectionHint": "パッチの選択/解除を禁止しません",
|
||||
"enablePatchesSelectionWarningText": "パッチの選択を変更すると、予期せぬ問題が起こる可能性があります。\n\n有効にしますか?",
|
||||
"disablePatchesSelectionWarningText": "パッチ選択の変更を無効にしようとしています。\nデフォルトのパッチの選択が復元されます。\n\n無効にしますか?",
|
||||
"autoUpdatePatchesLabel": "パッチの自動アップデート",
|
||||
"autoUpdatePatchesHint": "パッチを自動的に最新バージョンに更新する",
|
||||
"usePrereleasesLabel": "プレリリースを使用",
|
||||
"usePrereleasesHint": "ReVanced ManagerとReVanced Patchesのプレリリース版を使用する",
|
||||
"usePrereleasesWarningText": "プレリリース版を使用すると、予期せぬ問題が発生する可能性があります。\n\nそれでも有効にしますか?",
|
||||
"showUpdateDialogLabel": "アップデートの通知を表示",
|
||||
"showUpdateDialogHint": "新しいアップデートが利用可能な場合にダイアログを表示します",
|
||||
"universalPatchesLabel": "共通パッチの表示",
|
||||
"universalPatchesHint": "すべてのアプリと共通パッチを表示します(アプリ一覧の読み込みが遅くなる可能性があります)",
|
||||
"universalPatchesHint": "すべてのアプリと共通パッチを表示します (アプリ一覧の読み込みが遅くなる可能性があります)",
|
||||
"lastPatchedAppLabel": "パッチを適用したアプリを保存",
|
||||
"lastPatchedAppHint": "最後にパッチされた内容を保存して、後でインストールまたはエクスポートできます",
|
||||
"versionCompatibilityCheckLabel": "バージョンの互換性の確認",
|
||||
"versionCompatibilityCheckHint": "選択したアプリのバージョンと互換性のないパッチの選択を禁止する",
|
||||
"versionCompatibilityCheckHint": "選択したアプリのバージョンと互換性のないパッチの選択を防止します",
|
||||
"requireSuggestedAppVersionLabel": "推奨バージョンの使用を強制",
|
||||
"requireSuggestedAppVersionHint": "推奨されていないバージョンのアプリを選択できないようにします",
|
||||
"requireSuggestedAppVersionDialogText": "推奨バージョンではないアプリを選択すると、予期しない問題が発生する可能性があります。\n\nこのまま続行しますか?",
|
||||
@ -195,24 +198,24 @@
|
||||
"snackbarMessage": "クリップボードにコピーしました",
|
||||
"restartAppForChanges": "変更を適用するにはアプリを再起動してください",
|
||||
"deleteTempDirLabel": "一時ファイルを削除",
|
||||
"deleteTempDirHint": "未使用の一時ファイルを削除",
|
||||
"deleteTempDirHint": "未使用の一時ファイルを削除します",
|
||||
"deletedTempDir": "一時ファイルを削除しました",
|
||||
"exportSettingsLabel": "設定をエクスポート",
|
||||
"exportSettingsHint": "設定をJSONファイルにエクスポートします",
|
||||
"exportedSettings": "設定をエクスポートしました",
|
||||
"importSettingsLabel": "設定をインポート",
|
||||
"importSettingsHint": "JSONファイルから設定をインポートします",
|
||||
"importedSettings": "設定がインポートされました",
|
||||
"importedSettings": "設定をインポートしました",
|
||||
"exportPatchesLabel": "パッチ選択をエクスポート",
|
||||
"exportPatchesHint": "パッチ選択を JSON ファイルにエクスポートします",
|
||||
"exportPatchesHint": "パッチ選択をJSONファイルにエクスポートします",
|
||||
"exportedPatches": "パッチ選択をエクスポートしました",
|
||||
"noExportFileFound": "エクスポートするパッチの選択がありません",
|
||||
"importPatchesLabel": "パッチ選択をインポート",
|
||||
"importPatchesHint": "パッチ選択を JSON ファイルからインポートします",
|
||||
"importPatchesHint": "パッチ選択をJSONファイルからインポートします",
|
||||
"importedPatches": "パッチ選択をインポートしました",
|
||||
"resetStoredPatchesLabel": "パッチの選択をリセット",
|
||||
"resetStoredPatchesHint": "保存されたパッチの選択をリセットする",
|
||||
"resetStoredPatchesDialogTitle": "パッチの選択をリセット",
|
||||
"resetStoredPatchesDialogTitle": "パッチの選択をリセットしますか?",
|
||||
"resetStoredPatchesDialogText": "デフォルトのパッチの選択が復元されます。",
|
||||
"resetStoredPatches": "パッチの選択をリセットしました",
|
||||
"resetStoredOptionsLabel": "パッチオプションをリセット",
|
||||
@ -221,7 +224,7 @@
|
||||
"resetStoredOptionsDialogText": "パッチオプションをリセットすると、保存されたすべてのオプションが削除されます。",
|
||||
"resetStoredOptions": "オプションをリセットしました",
|
||||
"deleteLogsLabel": "ログを削除",
|
||||
"deleteLogsHint": "収集された ReVanced Manager のログを削除します",
|
||||
"deleteLogsHint": "収集されたReVanced Managerのログを削除します",
|
||||
"deletedLogs": "ログを削除しました",
|
||||
"regenerateKeystoreLabel": "キーストアを再生成",
|
||||
"regenerateKeystoreHint": "アプリの署名に使われるキーストアを再生成します",
|
||||
@ -237,11 +240,11 @@
|
||||
"importedKeystore": "キーストアをインポートしました",
|
||||
"selectKeystorePassword": "キーストアのパスワード",
|
||||
"selectKeystorePasswordHint": "アプリの署名に使用するキーストアのパスワードを入力してください",
|
||||
"jsonSelectorErrorMessage": "選択したJSON ファイルは使用できません",
|
||||
"jsonSelectorErrorMessage": "選択したJSONファイルは使用できません",
|
||||
"keystoreSelectorErrorMessage": "選択したキーストアファイルは使用できません"
|
||||
},
|
||||
"appInfoView": {
|
||||
"widgetTitle": "アプリ情報",
|
||||
"widgetTitle": "アプリの情報",
|
||||
"openButton": "開く",
|
||||
"installButton": "インストール",
|
||||
"uninstallButton": "アンインストール",
|
||||
@ -250,11 +253,11 @@
|
||||
"deleteButton": "削除",
|
||||
"rootDialogTitle": "エラー",
|
||||
"lastPatchedAppDescription": "これは最後にパッチを適用したアプリのバックアップです。",
|
||||
"unmountDialogText": "このアプリをアンマウントしてもよろしいですか?",
|
||||
"uninstallDialogText": "本当にこのアプリをアンインストールしますか?",
|
||||
"rootDialogText": "アプリはスーパーユーザー権限でインストールされましたが、現在 ReVanced Manager にはその権限がありません。 スーパーユーザー権限を付与してください。",
|
||||
"unmountDialogText": "このアプリをマウント解除してもよろしいですか?",
|
||||
"uninstallDialogText": "このアプリをアンインストールしてもよろしいですか?",
|
||||
"rootDialogText": "アプリはルート権限でインストールされましたが、現在ReVanced Managerにはその権限がありません。 ルート権限を付与してください。",
|
||||
"removeAppDialogTitle": "アプリを削除しますか?",
|
||||
"removeAppDialogText": "本当にバックアップを削除してもよろしいですか?",
|
||||
"removeAppDialogText": "バックアップを削除してもよろしいですか?",
|
||||
"packageNameLabel": "パッケージ名",
|
||||
"installTypeLabel": "インストールの種類",
|
||||
"mountTypeLabel": "マウント",
|
||||
@ -263,7 +266,7 @@
|
||||
"appliedPatchesLabel": "適用されたパッチ",
|
||||
"sizeLabel": "ファイルのサイズ",
|
||||
"patchedDateHint": "${date} ${time}",
|
||||
"appliedPatchesHint": "${quantity} 個の適用されたパッチ",
|
||||
"appliedPatchesHint": "${quantity}個の適用されたパッチ",
|
||||
"updateNotImplemented": "この機能はまだ実装されていません"
|
||||
},
|
||||
"contributorsView": {
|
||||
@ -271,7 +274,7 @@
|
||||
},
|
||||
"installErrorDialog": {
|
||||
"mount_version_mismatch": "バージョンが一致しません",
|
||||
"mount_no_root": "ルート権限がありません",
|
||||
"mount_no_root": "ルート権限が付与されていません",
|
||||
"mount_missing_installation": "インストールが見つかりませんでした",
|
||||
"status_failure_blocked": "インストールはブロックされました",
|
||||
"install_failed_verification_failure": "検証に失敗しました",
|
||||
@ -283,16 +286,16 @@
|
||||
"status_failure_timeout": "インストールがタイムアウトしました",
|
||||
"status_unknown": "インストールに失敗しました",
|
||||
"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マウントする前にパッチが適用されていないアプリをインストールし、もう一度お試しください。",
|
||||
"status_failure_timeout_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_blocked_description": "インストールは ${packageName} によってブロックされました。\n\nセキュリティ設定を調整して、もう一度お試しください。",
|
||||
"install_failed_verification_failure_description": "認証の問題によりインストールに失敗しました。\n\nセキュリティ設定を調整して、もう一度お試しください。",
|
||||
"install_failed_version_downgrade_description": "インストールに失敗しました。パッチを当てたアプリがインストールされたアプリよりも低いバージョンであるためです。\n\nアプリをアンインストールしてもう一度お試しください。",
|
||||
"status_failure_conflict_description": "既にインストールされているアプリがあるため、インストールが中止されました。\n\nインストールされているアプリをアンインストールして、再試行しますか?",
|
||||
"status_failure_blocked_description": "インストールは${packageName}によってブロックされました。\n\nセキュリティ設定を確認して、もう一度お試しください。",
|
||||
"install_failed_verification_failure_description": "認証の問題によりインストールに失敗しました。\n\nセキュリティ設定を確認して、もう一度お試しください。",
|
||||
"install_failed_version_downgrade_description": "インストールに失敗しました。パッチが適用されたアプリがインストールされたアプリよりも低いバージョンであるためです。\n\nアプリをアンインストールしてもう一度お試しください。",
|
||||
"status_unknown_description": "不明な理由によりインストールに失敗しました。もう一度やり直してください。"
|
||||
}
|
||||
}
|
@ -11,7 +11,7 @@
|
||||
"notice": "알림",
|
||||
"noShowAgain": "다시 보지 않기",
|
||||
"add": "추가",
|
||||
"remove": "제거",
|
||||
"remove": "삭제",
|
||||
"showChangelogButton": "변경 사항 보기",
|
||||
"showUpdateButton": "업데이트 보기",
|
||||
"navigationView": {
|
||||
@ -25,18 +25,18 @@
|
||||
"updatesSubtitle": "업데이트",
|
||||
"lastPatchedAppSubtitle": "마지막으로 패치된 앱",
|
||||
"patchedSubtitle": "설치된 앱",
|
||||
"changeLaterSubtitle": "나중에 설정에서 변경할 수 있습니다",
|
||||
"changeLaterSubtitle": "나중에 설정에서 변경할 수 있습니다.",
|
||||
"noSavedAppFound": "앱을 찾을 수 없습니다",
|
||||
"noInstallations": "패치된 앱이 설치되어 있지 않습니다",
|
||||
"installUpdate": "업데이트를 계속 설치하시겠습니까?",
|
||||
"updateSheetTitle": "ReVanced Manager 업데이트",
|
||||
"updateDialogTitle": "새 업데이트가 있습니다",
|
||||
"updatePatchesSheetTitle": "ReVanced 패치 업데이트",
|
||||
"updateDialogTitle": "새로운 업데이트가 있습니다",
|
||||
"updatePatchesSheetTitle": "ReVanced Patches 업데이트",
|
||||
"updateChangelogTitle": "변경 사항",
|
||||
"updateDialogText": "'${file}'에 대한 새 업데이트를 할 수 있습니다\n\n현재 설치된 버전은 '${version}' 입니다",
|
||||
"updateDialogText": "'${file}'에 대한 새로운 업데이트를 할 수 있습니다.\n\n현재 설치된 버전은 '${version}' 입니다.",
|
||||
"downloadConsentDialogTitle": "필요한 파일을 다운로드하시겠습니까?",
|
||||
"downloadConsentDialogText": "ReVanced Manager가 제대로 작동하려면 필요한 파일을 다운로드해야 합니다",
|
||||
"downloadConsentDialogText2": "진행하면 '${url}' 에 연결됩니다",
|
||||
"downloadConsentDialogText": "ReVanced Manager가 제대로 작동하려면 필요한 파일을 다운로드해야 합니다.",
|
||||
"downloadConsentDialogText2": "진행하면 '${url}' 에 연결됩니다.",
|
||||
"downloadingMessage": "업데이트 다운로드 중 ...",
|
||||
"downloadedMessage": "업데이트를 다운로드 완료하였습니다",
|
||||
"installingMessage": "업데이트 설치 중 ...",
|
||||
@ -55,9 +55,9 @@
|
||||
"widgetTitle": "Patcher",
|
||||
"patchButton": "패치하기",
|
||||
"incompatibleArchWarningDialogText": "이 아키텍처에 대한 패치는 아직 지원되지 않으므로 실패할 수 있습니다. 그래도 계속하시겠습니까?",
|
||||
"removedPatchesWarningDialogText": "이 앱을 마지막으로 패치한 이후 제거된 패치입니다:\n\n${patches}\n\n${newPatches}\n\n그래도 계속하시겠습니까?",
|
||||
"removedPatchesWarningDialogText": "이 앱을 마지막으로 패치한 이후 삭제된 패치입니다:\n\n${patches}\n\n${newPatches}\n\n그래도 계속하시겠습니까?",
|
||||
"addedPatchesDialogText": "이 앱을 마지막으로 패치한 이후 추가된 패치입니다:\n\n${addedPatches}",
|
||||
"requiredOptionDialogText": "일부 패치 옵션을 설정해야 합니다"
|
||||
"requiredOptionDialogText": "일부 패치 옵션을 설정해야 합니다."
|
||||
},
|
||||
"appSelectorCard": {
|
||||
"widgetTitle": "앱 선택하기",
|
||||
@ -83,15 +83,15 @@
|
||||
"selectFromStorageButton": "기기 저장소에서 선택",
|
||||
"errorMessage": "선택한 앱을 사용할 수 없습니다",
|
||||
"downloadToast": "다운로드 기능은 아직 사용할 수 없습니다",
|
||||
"requireSuggestedAppVersionDialogText": "선택한 앱 버전이 권장 앱 버전과 일치하지 않아서 예상되지 않은 문제점이 발생할 수 있습니다. 권장 앱 버전을 사용하세요\n\n선택한 앱 버전: ${selected}\n권장 앱 버전: ${suggested}\n\n계속하려면 설정에서 '권장 앱 버전 요구'를 비활성화하세요",
|
||||
"requireSuggestedAppVersionDialogText": "선택한 앱 버전이 권장 앱 버전과 일치하지 않아서 예상되지 않은 문제점이 발생할 수 있습니다. 권장 앱 버전을 사용하세요.\n\n선택한 앱 버전: ${selected}\n권장 앱 버전: ${suggested}\n\n계속하려면 설정에서 '권장 앱 버전 요구'를 비활성화하세요.",
|
||||
"featureNotAvailable": "기능이 구현되지 않았습니다",
|
||||
"featureNotAvailableText": "이 기기에서 추출할 수 있는 앱이 분할된 APK 파일이므로 Root 권한으로 마운트해야만 안정적으로 패치 및 설치할 수 있습니다. 그러나 Non-Root 사용자는 기기 저장소에서 '외부에서 다운로드한 완전한 APK 파일'을 선택하여 패치 및 설치할 수 있습니다"
|
||||
"featureNotAvailableText": "이 기기에서 추출할 수 있는 앱이 분할 APK 파일이므로 Root 권한으로 마운트해야만 안정적으로 패치 및 설치할 수 있습니다. 그러나 Non-Root 사용자는 기기 저장소에서 '외부에서 다운로드한 완전한 APK 파일'을 선택하여 패치 및 설치할 수 있습니다."
|
||||
},
|
||||
"patchesSelectorView": {
|
||||
"viewTitle": "패치 선택하기",
|
||||
"searchBarHint": "패치 검색하기",
|
||||
"universalPatches": "공용 패치",
|
||||
"newPatches": "새 패치",
|
||||
"newPatches": "새로운 패치",
|
||||
"patches": "패치",
|
||||
"doneButton": "선택완료",
|
||||
"defaultChip": "기본값",
|
||||
@ -99,9 +99,9 @@
|
||||
"noneChip": "선택안함",
|
||||
"noneTooltip": "모든 패치 선택 해제",
|
||||
"loadPatchesSelection": "패치 선택목록 가져오기",
|
||||
"noSavedPatches": "선택한 앱에 적용할 패치가 저장되지 않았습니다\n'선택완료' 버튼을 눌러서 현재 선택목록을 저장하세요",
|
||||
"noSavedPatches": "선택한 앱에 적용할 패치가 저장되지 않았습니다.\n'선택완료' 버튼을 눌러서 현재 선택목록을 저장하세요.",
|
||||
"noPatchesFound": "선택한 앱에 대한 패치를 찾을 수 없습니다",
|
||||
"setRequiredOption": "옵션을 설정해야 하는 패치가 있습니다:\n\n${patches}\n\n진행하기 전 설정을 마쳐주세요"
|
||||
"setRequiredOption": "옵션을 설정해야 하는 패치가 있습니다:\n\n${patches}\n\n진행하기 전 설정을 마쳐주세요."
|
||||
},
|
||||
"patchOptionsView": {
|
||||
"customValue": "사용자 정의 값",
|
||||
@ -118,26 +118,26 @@
|
||||
"requiredOptionNull": "다음 옵션들이 설정되어 있어야 합니다:\n\n${options}"
|
||||
},
|
||||
"patchItem": {
|
||||
"unsupportedDialogText": "이 패치는 문제점을 발생시킬 수 있습니다\n\n앱 버전: ${packageVersion}\n지원되는 버전:\n${supportedVersions}",
|
||||
"unsupportedPatchVersion": "패치가 이 앱 버전을 지원하지 않습니다",
|
||||
"unsupportedDialogText": "이 패치는 문제점을 발생시킬 수 있습니다.\n\n앱 버전: ${packageVersion}\n지원되는 버전:\n${supportedVersions}",
|
||||
"unsupportedPatchVersion": "패치가 이 앱 버전을 지원하지 않습니다.",
|
||||
"unsupportedRequiredOption": "패치에 이 앱을 지원하지 않는 필수 옵션이 포함되어 있습니다",
|
||||
"patchesChangeWarningDialogText": "기본 패치 선택을 사용하는 것을 권장합니다. 설정을 변경할 경우에는 예상되지 않은 문제점의 원인이 될 수 있습니다\n\n패치 선택을 변경하기 위해서는 설정에서 \"패치 선택 변경 허용\"을 활성화해야 합니다",
|
||||
"patchesChangeWarningDialogText": "기본 패치 선택을 사용하는 것을 권장합니다. 설정을 변경할 경우에는 예상되지 않은 문제점의 원인이 될 수 있습니다.\n\n패치 선택을 변경하기 위해서는 설정에서 \"패치 선택 변경 허용\"을 활성화해야 합니다.",
|
||||
"patchesChangeWarningDialogButton": "기본 선택목록 사용"
|
||||
},
|
||||
"installerView": {
|
||||
"installType": "설치 유형 선택",
|
||||
"installTypeDescription": "설치를 진행할 유형을 선택해주세요",
|
||||
"installTypeDescription": "설치를 진행할 유형을 선택해주세요.",
|
||||
"installButton": "설치하기",
|
||||
"installRootType": "마운트",
|
||||
"installNonRootType": "일반",
|
||||
"warning": "패치된 앱의 자동 업데이트를 비활성화하여 예상되지 않은 문제점을 방지하세요",
|
||||
"warning": "패치된 앱의 자동 업데이트를 비활성화하여 예상되지 않은 문제점을 방지하세요.",
|
||||
"pressBackAgain": "취소하려면 뒤로가기 버튼을 다시 누르세요",
|
||||
"openButton": "열기",
|
||||
"notificationTitle": "ReVanced Manager가 패치 중입니다",
|
||||
"notificationText": "설치 관리자로 돌아가려면 여기를 누르세요",
|
||||
"exportApkButtonTooltip": "패치된 APK 내보내기",
|
||||
"exportLogButtonTooltip": "로그 내보내기",
|
||||
"screenshotDetected": "스크린샷이 감지되었습니다. 로그를 공유할 목적이라면, 대신 텍스트 사본으로 공유해주세요\n\n로그를 클립보드에 복사하시겠습니까?",
|
||||
"screenshotDetected": "스크린샷이 감지되었습니다. 로그를 공유할 목적이라면, 대신 텍스트 사본으로 공유해주세요.\n\n로그를 클립보드에 복사하시겠습니까?",
|
||||
"copiedToClipboard": "로그를 클립보드에 복사하였습니다",
|
||||
"noExit": "설치 관리자가 실행 중이므로 중단할 수 없습니다 ..."
|
||||
},
|
||||
@ -164,7 +164,7 @@
|
||||
"sourcesResetDialogTitle": "초기화",
|
||||
"sourcesResetDialogText": "정말 사용자 정의 소스를 기본값으로 초기화하시겠습니까?",
|
||||
"apiURLResetDialogText": "정말 API URL을 기본값으로 초기화하시겠습니까?",
|
||||
"sourcesUpdateNote": "알림: 변경하면 대체 소스에서 ReVanced Patches가 자동으로 다운로드됩니다\n\n그 이후에는 대체 소스로 연결됩니다",
|
||||
"sourcesUpdateNote": "알림: 변경하면 대체 소스에서 ReVanced Patches가 자동으로 다운로드됩니다.\n\n그 이후에는 대체 소스로 연결됩니다.",
|
||||
"apiURLLabel": "API URL",
|
||||
"apiURLHint": "ReVanced Manager의 API URL를 설정할 수 있습니다",
|
||||
"selectApiURL": "API URL",
|
||||
@ -176,12 +176,15 @@
|
||||
"logsHint": "수집된 ReVanced Manager 로그를 공유합니다",
|
||||
"enablePatchesSelectionLabel": "패치 선택 변경 허용",
|
||||
"enablePatchesSelectionHint": "패치를 선택하거나 선택 해제할 수 있습니다",
|
||||
"enablePatchesSelectionWarningText": "패치 선택을 변경하는 경우에는 예상되지 않은 문제점이 발생할 수 있습니다\n\n그래도 활성화하시겠습니까?",
|
||||
"disablePatchesSelectionWarningText": "패치 선택 변경을 비활성화하려 합니다\n기본 패치 선택목록으로 복원될 것입니다\n\n그래도 비활성화하시겠습니까?",
|
||||
"enablePatchesSelectionWarningText": "패치 선택을 변경하는 경우에는 예상되지 않은 문제점이 발생할 수 있습니다.\n\n그래도 활성화하시겠습니까?",
|
||||
"disablePatchesSelectionWarningText": "패치 선택 변경을 비활성화하려 합니다.\n기본 패치 선택목록으로 복원될 것입니다.\n\n그래도 비활성화하시겠습니까?",
|
||||
"autoUpdatePatchesLabel": "패치 자동 업데이트",
|
||||
"autoUpdatePatchesHint": "ReVanced Manager 앱 내에서 사용되는 패치를 최신 버전으로 자동 업데이트합니다",
|
||||
"autoUpdatePatchesHint": "ReVanced Patches를 최신 버전으로 자동 업데이트합니다",
|
||||
"usePrereleasesLabel": "Pre-releases 버전 사용",
|
||||
"usePrereleasesHint": "ReVanced Manager 및 ReVanced Patches의 Pre-release 버전을 사용합니다",
|
||||
"usePrereleasesWarningText": "Pre-release 버전을 사용하는 경우에는 예상되지 않은 문제점이 발생할 수 있습니다.\n\n그래도 활성화하시겠습니까?",
|
||||
"showUpdateDialogLabel": "업데이트 팝업창 보기",
|
||||
"showUpdateDialogHint": "새 업데이트가 있으면 팝업창을 표시합니다",
|
||||
"showUpdateDialogHint": "새로운 업데이트가 있으면 팝업창을 표시합니다",
|
||||
"universalPatchesLabel": "공용 패치 보기",
|
||||
"universalPatchesHint": "기기에 설치된 모든 앱과 공용 패치를 표시합니다 (앱 목록이 느려질 수 있음)",
|
||||
"lastPatchedAppLabel": "패치된 앱 저장",
|
||||
@ -190,18 +193,18 @@
|
||||
"versionCompatibilityCheckHint": "선택한 앱 버전과 호환되지 않는 패치를 선택할 수 없습니다",
|
||||
"requireSuggestedAppVersionLabel": "권장 앱 버전 요구",
|
||||
"requireSuggestedAppVersionHint": "권장되지 않은 앱 버전은 선택할 수 없습니다",
|
||||
"requireSuggestedAppVersionDialogText": "권장 앱 버전이 아닌 앱을 선택하는 경우에는 예상되지 않은 문제점이 발생할 수 있습니다\n\n그래도 계속하시겠습니까?",
|
||||
"requireSuggestedAppVersionDialogText": "권장 앱 버전이 아닌 앱을 선택하는 경우에는 예상되지 않은 문제점이 발생할 수 있습니다.\n\n그래도 계속하시겠습니까?",
|
||||
"aboutLabel": "정보",
|
||||
"snackbarMessage": "클립보드에 복사하였습니다",
|
||||
"restartAppForChanges": "변경 사항을 적용하려면 앱을 다시 시작하세요",
|
||||
"deleteTempDirLabel": "임시 파일 제거",
|
||||
"deleteTempDirHint": "사용하지 않는 임시 파일을 제거합니다",
|
||||
"deletedTempDir": "임시 파일을 제거하였습니다",
|
||||
"deleteTempDirLabel": "임시 파일 삭제",
|
||||
"deleteTempDirHint": "사용하지 않는 임시 파일을 삭제합니다",
|
||||
"deletedTempDir": "임시 파일을 삭제하였습니다",
|
||||
"exportSettingsLabel": "설정 내보내기",
|
||||
"exportSettingsHint": "설정을 JSON 파일로 내보낼 수 있습니다",
|
||||
"exportSettingsHint": "설정을 JSON 파일로 내보냅니다",
|
||||
"exportedSettings": "설정을 내보냈습니다",
|
||||
"importSettingsLabel": "설정 가져오기",
|
||||
"importSettingsHint": "설정을 JSON 파일에서 가져올 수 있습니다",
|
||||
"importSettingsHint": "설정을 JSON 파일에서 가져옵니다",
|
||||
"importedSettings": "설정을 가져왔습니다",
|
||||
"exportPatchesLabel": "패치 선택목록 내보내기",
|
||||
"exportPatchesHint": "패치 선택목록을 JSON 파일로 내보냅니다",
|
||||
@ -218,15 +221,15 @@
|
||||
"resetStoredOptionsLabel": "패치 옵션 초기화",
|
||||
"resetStoredOptionsHint": "모든 패치 옵션을 초기화합니다",
|
||||
"resetStoredOptionsDialogTitle": "패치 옵션을 초기화하시겠습니까?",
|
||||
"resetStoredOptionsDialogText": "패치 옵션을 초기화하면 저장한 모든 옵션이 제거됩니다",
|
||||
"resetStoredOptionsDialogText": "패치 옵션을 초기화하면 저장한 모든 옵션이 삭제됩니다.",
|
||||
"resetStoredOptions": "옵션을 초기화하였습니다",
|
||||
"deleteLogsLabel": "로그 제거하기",
|
||||
"deleteLogsHint": "수집된 ReVanced Manager 로그를 제거합니다",
|
||||
"deletedLogs": "로그를 제거하였습니다",
|
||||
"deleteLogsLabel": "로그 삭제하기",
|
||||
"deleteLogsHint": "수집된 ReVanced Manager 로그를 삭제합니다",
|
||||
"deletedLogs": "로그를 삭제하였습니다",
|
||||
"regenerateKeystoreLabel": "키스토어 재생성",
|
||||
"regenerateKeystoreHint": "앱을 서명할 때 사용한 키스토어를 재생성합니다",
|
||||
"regenerateKeystoreDialogTitle": "키스토어를 재생성하시겠습니까?",
|
||||
"regenerateKeystoreDialogText": "기존 키스토어로 서명한 패치된 앱을 더 이상 업데이트할 수 없게 됩니다",
|
||||
"regenerateKeystoreDialogText": "기존 키스토어로 서명한 패치된 앱을 더 이상 업데이트할 수 없게 됩니다.",
|
||||
"regeneratedKeystore": "키스토어를 재생성하였습니다",
|
||||
"exportKeystoreLabel": "키스토어 내보내기",
|
||||
"exportKeystoreHint": "앱을 서명할 때 사용한 키스토어를 내보냅니다",
|
||||
@ -244,17 +247,17 @@
|
||||
"widgetTitle": "앱 정보",
|
||||
"openButton": "열기",
|
||||
"installButton": "설치하기",
|
||||
"uninstallButton": "제거하기",
|
||||
"uninstallButton": "삭제하기",
|
||||
"unmountButton": "마운트 해제",
|
||||
"exportButton": "내보내기",
|
||||
"deleteButton": "제거하기",
|
||||
"deleteButton": "삭제하기",
|
||||
"rootDialogTitle": "오류",
|
||||
"lastPatchedAppDescription": "마지막으로 패치된 앱의 백업입니다",
|
||||
"lastPatchedAppDescription": "마지막으로 패치된 앱의 백업입니다.",
|
||||
"unmountDialogText": "이 앱의 마운트를 해제하시겠습니까?",
|
||||
"uninstallDialogText": "이 앱을 제거하시겠습니까?",
|
||||
"rootDialogText": "앱이 슈퍼유저 권한으로 설치되었으나 현재 ReVanced Manager에는 권한이 없습니다\n먼저 슈퍼유저 권한을 부여하세요",
|
||||
"removeAppDialogTitle": "앱을 제거하시겠습니까?",
|
||||
"removeAppDialogText": "이 백업을 제거하시겠습니까?",
|
||||
"uninstallDialogText": "이 앱을 삭제하시겠습니까?",
|
||||
"rootDialogText": "앱이 슈퍼유저 권한으로 설치되었으나 현재 ReVanced Manager에는 권한이 없습니다.\n먼저 슈퍼유저 권한을 부여하세요.",
|
||||
"removeAppDialogTitle": "앱을 삭제하시겠습니까?",
|
||||
"removeAppDialogText": "이 백업을 삭제하시겠습니까?",
|
||||
"packageNameLabel": "패키지 이름",
|
||||
"installTypeLabel": "설치 유형",
|
||||
"mountTypeLabel": "마운트",
|
||||
@ -282,17 +285,17 @@
|
||||
"status_failure_incompatible": "설치 미호환",
|
||||
"status_failure_timeout": "설치 시간 초과",
|
||||
"status_unknown": "설치 실패",
|
||||
"mount_version_mismatch_description": "패치된 앱과 설치된 앱의 버전이 달라서 설치에 실패하였습니다\n\n마운트하고 있는 앱의 버전으로 설치한 후에 다시 시도하세요",
|
||||
"mount_no_root_description": "Root 권한이 주어지지 않아서 설치에 실패하였습니다\n\nReVanced Manager에 Root 권한을 부여한 후에 다시 시도하세요",
|
||||
"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_blocked_description": "설치가 '${packageName}'에 의해 차단되었습니다\n\n보안 설정을 조정한 후에 다시 시도하세요",
|
||||
"install_failed_verification_failure_description": "인증 문제로 인해 설치에 실패하였습니다\n\n보안 설정을 조정한 후에 다시 시도하세요",
|
||||
"install_failed_version_downgrade_description": "패치된 앱의 버전이 설치된 앱의 버전보다 낮아서 설치에 실패하였습니다\n\n앱을 제거한 후에 다시 시도하시겠습니까?",
|
||||
"status_unknown_description": "알 수 없는 이유로 설치에 실패하였습니다. 다시 시도하세요"
|
||||
"mount_version_mismatch_description": "패치된 앱과 설치된 앱의 버전이 달라서 설치에 실패하였습니다.\n\n마운트하고 있는 앱의 버전으로 설치한 후에 다시 시도하세요.",
|
||||
"mount_no_root_description": "Root 권한이 주어지지 않아서 설치에 실패하였습니다.\n\nReVanced Manager에 Root 권한을 부여한 후에 다시 시도하세요.",
|
||||
"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_blocked_description": "설치가 '${packageName}'에 의해 차단되었습니다.\n\n보안 설정을 조정한 후에 다시 시도하세요.",
|
||||
"install_failed_verification_failure_description": "인증 문제로 인해 설치에 실패하였습니다.\n\n보안 설정을 조정한 후에 다시 시도하세요.",
|
||||
"install_failed_version_downgrade_description": "패치된 앱의 버전이 설치된 앱의 버전보다 낮아서 설치에 실패하였습니다.\n\n앱을 삭제한 후에 다시 시도하시겠습니까?",
|
||||
"status_unknown_description": "알 수 없는 이유로 설치에 실패하였습니다. 다시 시도하세요."
|
||||
}
|
||||
}
|
@ -9,9 +9,9 @@
|
||||
"noButton": "Ne",
|
||||
"warning": "Įspėjimas",
|
||||
"notice": "Pranešimas",
|
||||
"noShowAgain": "Daugiau to nerodyti",
|
||||
"noShowAgain": "Daugiau neberodyti",
|
||||
"add": "Pridėti",
|
||||
"remove": "Pašalinti",
|
||||
"remove": "Šalinti",
|
||||
"showChangelogButton": "Rodyti pakeitimų sąrašą",
|
||||
"showUpdateButton": "Rodyti naujinimą",
|
||||
"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?",
|
||||
"autoUpdatePatchesLabel": "Automatiškai atnaujinti pataisymus",
|
||||
"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ą",
|
||||
"showUpdateDialogHint": "Rodyti dialogą, kai pasiekiamas naujas atnaujinimas",
|
||||
"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_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_conflict_description": "Esamas programos įdiegimas sustabdė įdiegimą.\n\nPašalinkite įdiegtą programą ir bandykite dar kartą?",
|
||||
"status_failure_blocked_description": "Įdiegimą blokavo ${packageName}.\n\nSureguliuokite saugos 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_version_downgrade_description": "Įdiegimas nepavyko, nes pataisyta programa yra senesnė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_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ą užblokavo „${packageName}“.\n\nSureguliuokite saugumo 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 ž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ą."
|
||||
}
|
||||
}
|
@ -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?",
|
||||
"autoUpdatePatchesLabel": "Automātiski atjaunināt ielāpus",
|
||||
"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",
|
||||
"showUpdateDialogHint": "Rādīt dialoglodziņu, kad ir pieejams jauns atjauninājums",
|
||||
"universalPatchesLabel": "Rādīt universālos ielāpus",
|
||||
|
@ -1,18 +1,41 @@
|
||||
{
|
||||
"okButton": "OK",
|
||||
"cancelButton": "Batal",
|
||||
"dismissButton": "Melepaskan",
|
||||
"quitButton": "Henti",
|
||||
"updateButton": "Kemas kini",
|
||||
"suggested": "Versi dicadangkan: ${version}",
|
||||
"yesButton": "Ya",
|
||||
"noButton": "Tidak",
|
||||
"warning": "Amaran",
|
||||
"notice": "Notis",
|
||||
"noShowAgain": "Jangan tunjukkan lagi",
|
||||
"add": "Tambah",
|
||||
"remove": "Buang",
|
||||
"showChangelogButton": "Tunjuk log perubahan",
|
||||
"showUpdateButton": "Tunjuk kemas kini",
|
||||
"navigationView": {
|
||||
"dashboardTab": "Papan Pemuka",
|
||||
"patcherTab": "Pemodifikasi",
|
||||
"settingsTab": "Tetapan"
|
||||
},
|
||||
"homeView": {
|
||||
"refreshSuccess": "Muat semula berjaya",
|
||||
"widgetTitle": "Papan Pemuka",
|
||||
"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",
|
||||
"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...",
|
||||
"downloadedMessage": "Kemaskini dimuat turun",
|
||||
"installingMessage": "Memasang pengemaskinian...",
|
||||
|
@ -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?",
|
||||
"autoUpdatePatchesLabel": "Patch automatisch bijwerken",
|
||||
"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",
|
||||
"showUpdateDialogHint": "Een dialoogvenster weergeven wanneer een nieuwe update beschikbaar is",
|
||||
"universalPatchesLabel": "Toon universele patches",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"suggested": "Sugerowana wersja: ${version}",
|
||||
"yesButton": "Tak",
|
||||
"noButton": "Nie",
|
||||
"warning": "Ostrzeżenie",
|
||||
"warning": "Uwaga",
|
||||
"notice": "Komunikat",
|
||||
"noShowAgain": "Nie pokazuj ponownie",
|
||||
"add": "Dodaj",
|
||||
@ -23,7 +23,7 @@
|
||||
"refreshSuccess": "Odświeżono pomyślnie",
|
||||
"widgetTitle": "Panel główny",
|
||||
"updatesSubtitle": "Aktualizacje",
|
||||
"lastPatchedAppSubtitle": "Ostatnio poprawiona aplikacja",
|
||||
"lastPatchedAppSubtitle": "Ostatnio załatana aplikacja",
|
||||
"patchedSubtitle": "Zainstalowane aplikacje",
|
||||
"changeLaterSubtitle": "Możesz to zmienić w ustawieniach w późniejszym czasie.",
|
||||
"noSavedAppFound": "Nie znaleziono aplikacji",
|
||||
@ -52,7 +52,7 @@
|
||||
"timeagoLabel": "${time} temu"
|
||||
},
|
||||
"patcherView": {
|
||||
"widgetTitle": "Łataj",
|
||||
"widgetTitle": "Łatanie",
|
||||
"patchButton": "Załataj",
|
||||
"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ć?",
|
||||
@ -79,7 +79,7 @@
|
||||
"appSelectorView": {
|
||||
"viewTitle": "Wybierz aplikację",
|
||||
"searchBarHint": "Wyszukaj aplikację",
|
||||
"storageButton": "Pamięć",
|
||||
"storageButton": "Wybierz z pamięci",
|
||||
"selectFromStorageButton": "Wybierz z pamięci",
|
||||
"errorMessage": "Nie można użyć wybranej aplikacji",
|
||||
"downloadToast": "Funkcja pobierania jest jeszcze niedostępna",
|
||||
@ -107,7 +107,7 @@
|
||||
"customValue": "Niestandardowa wartość",
|
||||
"setToNull": "Ustaw na zerowy",
|
||||
"nullValue": "Ta opcja jest obecnie pusta",
|
||||
"viewTitle": "Opcje łatek",
|
||||
"viewTitle": "Opcje łatki",
|
||||
"saveOptions": "Zapisz",
|
||||
"unselectPatch": "Odznacz łatkę",
|
||||
"tooltip": "Więcej opcji wejściowych",
|
||||
@ -154,9 +154,9 @@
|
||||
"lightThemeLabel": "Jasny",
|
||||
"darkThemeLabel": "Ciemny",
|
||||
"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",
|
||||
"languageUpdated": "Zaktualizowano język",
|
||||
"languageUpdated": "Zmieniono język",
|
||||
"sourcesLabel": "Alternatywne źródło",
|
||||
"sourcesLabelHint": "Skonfiguruj alternatywne źródła dla łatek ReVanced",
|
||||
"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?",
|
||||
"autoUpdatePatchesLabel": "Automatycznie aktualizuj łatki",
|
||||
"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",
|
||||
"showUpdateDialogHint": "Pokaż powiadomienie, gdy nowa wersja jest dostępna",
|
||||
"universalPatchesLabel": "Pokaż uniwersalne łatki",
|
||||
|
@ -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?",
|
||||
"autoUpdatePatchesLabel": "Atualizar patches automaticamente",
|
||||
"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",
|
||||
"showUpdateDialogHint": "Mostra um aviso quando uma nova atualização estiver disponível",
|
||||
"universalPatchesLabel": "Mostrar patches universais",
|
||||
|
@ -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?",
|
||||
"autoUpdatePatchesLabel": "Atualizar automaticamente as modificações",
|
||||
"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",
|
||||
"showUpdateDialogHint": "Mostrar uma notificação quando uma atualização estiver disponível",
|
||||
"universalPatchesLabel": "Mostrar modificações universais",
|
||||
|
@ -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?",
|
||||
"autoUpdatePatchesLabel": "Actualizare automată a patch-urilor",
|
||||
"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",
|
||||
"showUpdateDialogHint": "Arată un dialog atunci când este disponibilă o nouă actualizare",
|
||||
"universalPatchesLabel": "Arată patch-urile universale",
|
||||
|
@ -180,6 +180,9 @@
|
||||
"disablePatchesSelectionWarningText": "Вы собираетесь выключить измененную выборку патчей.\nБудет восстановлен стандартный выбор патчей.\n\nВсе равно выключить?",
|
||||
"autoUpdatePatchesLabel": "Автообновление патчей",
|
||||
"autoUpdatePatchesHint": "Автоматически обновлять патчи до последней версии",
|
||||
"usePrereleasesLabel": "Использовать предрелизные версии",
|
||||
"usePrereleasesHint": "Использовать предрелизные версии ReVanced Manager и ReVanced Patches",
|
||||
"usePrereleasesWarningText": "Использование предварительных версий может вызвать непредвиденные проблемы.\n\nВключить в любом случае?",
|
||||
"showUpdateDialogLabel": "Показать диалог обновления",
|
||||
"showUpdateDialogHint": "Показывать диалоговое окно, когда доступно новое обновление",
|
||||
"universalPatchesLabel": "Показать универсальные патчи",
|
||||
|
@ -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?",
|
||||
"autoUpdatePatchesLabel": "Automaticky aktualizovať záplaty",
|
||||
"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",
|
||||
"showUpdateDialogHint": "Zobraziť dialógové okno, keď je k dispozícii nová aktualizácia",
|
||||
"universalPatchesLabel": "Zobraziť univerzálne patchy",
|
||||
|
@ -8,7 +8,7 @@
|
||||
"yesButton": "Da",
|
||||
"noButton": "Ne",
|
||||
"warning": "Opozorilo",
|
||||
"notice": "Notice",
|
||||
"notice": "Obvestilo",
|
||||
"noShowAgain": "Ne prikazuj več",
|
||||
"add": "Dodaj",
|
||||
"remove": "Odstrani",
|
||||
@ -180,6 +180,9 @@
|
||||
"disablePatchesSelectionWarningText": "Opozorilo: onemogočite spreminjanje izbire popravkov.\nPrivzeta izbira popravkov bo obnovljena.\n\nVseeno onemogočite?",
|
||||
"autoUpdatePatchesLabel": "Samodejno posodabljanje popravkov",
|
||||
"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",
|
||||
"showUpdateDialogHint": "Pokaži pogovorno okno, ko je na voljo posodobitev",
|
||||
"universalPatchesLabel": "Pokaži splošne popravke",
|
||||
|
@ -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ë?",
|
||||
"autoUpdatePatchesLabel": "Përditëso automatikisht përditësimet",
|
||||
"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",
|
||||
"showUpdateDialogHint": "Trego një dialog kur një përditësim i ri është i disponueshëm",
|
||||
"universalPatchesLabel": "Shfaq përditësime universale",
|
||||
|
@ -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?",
|
||||
"autoUpdatePatchesLabel": "Automatski ažuriraj pečeve",
|
||||
"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",
|
||||
"showUpdateDialogHint": "Prikazivanje dijaloga kada je novo ažuriranje dostupno",
|
||||
"universalPatchesLabel": "Prikaži univerzalne pečeve",
|
||||
|
@ -180,6 +180,9 @@
|
||||
"disablePatchesSelectionWarningText": "Управо ћете да онемогућите промену избора печева.\nПодразумевани избор печева ће бити враћен.\n\nИпак онемогућити?",
|
||||
"autoUpdatePatchesLabel": "Аутоматски ажурирај печеве",
|
||||
"autoUpdatePatchesHint": "Инсталира најновију верзију печева аутоматски",
|
||||
"usePrereleasesLabel": "Користи предиздања",
|
||||
"usePrereleasesHint": "Користите верзије предиздања ReVanced Manager-а и ReVanced печева",
|
||||
"usePrereleasesWarningText": "Коришћење верзија предиздања може изазвати неочекиване проблеме.\n\nИпак омогућити?",
|
||||
"showUpdateDialogLabel": "Прикажи дијалог о ажурирању",
|
||||
"showUpdateDialogHint": "Приказивање дијалога када је ново ажурирање доступно",
|
||||
"universalPatchesLabel": "Прикажи универзалне печеве",
|
||||
|
@ -180,6 +180,9 @@
|
||||
"disablePatchesSelectionWarningText": "Du håller på att inaktivera valet av patchar.\nStandardvalet av patchar kommer att återställas.\n\nInaktivera ändå?",
|
||||
"autoUpdatePatchesLabel": "Uppdatera patchar automatiskt",
|
||||
"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",
|
||||
"showUpdateDialogHint": "Visa en dialog när en ny uppdatering är tillgänglig",
|
||||
"universalPatchesLabel": "Visa universella patchar",
|
||||
|
@ -180,6 +180,9 @@
|
||||
"disablePatchesSelectionWarningText": "คุณกำลังจะปิดใช้งานการเปลี่ยนการเลือกการแก้ไข\nการเลือกการแก้ไขเริ่มต้นจะถูกคืนค่า\n\nปิดใช้งานอยู่ดี?",
|
||||
"autoUpdatePatchesLabel": "อัปเดตการแก้ไขโดยอัตโนมัติ",
|
||||
"autoUpdatePatchesHint": "อัปเดตการแก้ไขเป็นเวอร์ชันล่าสุดโดยอัตโนมัติ",
|
||||
"usePrereleasesLabel": "ใช้เวอร์ชันก่อนเปิดตัว",
|
||||
"usePrereleasesHint": "ใช้เวอร์ชันก่อนเปิดตัวของ ReVanced Manager และ ReVanced Patches",
|
||||
"usePrereleasesWarningText": "การใช้เวอร์ชันก่อนเปิดตัวอาจทำให้เกิดปัญหาที่ไม่คาดคิด\n\nเปิดใช้งานต่อไปหรือไม่?",
|
||||
"showUpdateDialogLabel": "แสดงกล่องโต้ตอบการอัปเดต",
|
||||
"showUpdateDialogHint": "แสดงกล่องโต้ตอบเมื่อมีการอัปเดตใหม่",
|
||||
"universalPatchesLabel": "แสดงการแก้ไขแบบสากล",
|
||||
|
@ -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ı?",
|
||||
"autoUpdatePatchesLabel": "Yamaları otomatik 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",
|
||||
"showUpdateDialogHint": "Yeni bir güncelleme mevcut olduğunda bir pencere göster",
|
||||
"universalPatchesLabel": "Ortak yamaları göster",
|
||||
|
@ -180,6 +180,9 @@
|
||||
"disablePatchesSelectionWarningText": "Ви збираєтеся вимкнути зміну вибору патчів.\nБуде відновлено стандартний вибір патчів.\n\nВсе одно вимкнути?",
|
||||
"autoUpdatePatchesLabel": "Автоматичне оновлення патчів",
|
||||
"autoUpdatePatchesHint": "Автоматично оновлювати патчі до останньої версії",
|
||||
"usePrereleasesLabel": "Використовувати передрелізи",
|
||||
"usePrereleasesHint": "Використовувати передрелізні версії ReVanced Manager та ReVanced Patches",
|
||||
"usePrereleasesWarningText": "Використання передрелізних версій може спричинити несподівані проблеми.\n\nВсе одно увімкнути?",
|
||||
"showUpdateDialogLabel": "Показувати вікно оновлення",
|
||||
"showUpdateDialogHint": "Показувати діалогове вікно, коли доступне нове оновлення",
|
||||
"universalPatchesLabel": "Показувати універсальні патчі",
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"okButton": "Đồng ý",
|
||||
"cancelButton": "Hủy",
|
||||
"dismissButton": "Từ bỏ",
|
||||
"dismissButton": "Bỏ qua",
|
||||
"quitButton": "Thoát",
|
||||
"updateButton": "Cập nhật",
|
||||
"suggested": "Được đề xuất: ${version}",
|
||||
@ -9,7 +9,7 @@
|
||||
"noButton": "Không",
|
||||
"warning": "Cảnh báo",
|
||||
"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",
|
||||
"remove": "Loại bỏ",
|
||||
"showChangelogButton": "Hiển thị nhật ký thay đổi",
|
||||
@ -20,27 +20,27 @@
|
||||
"settingsTab": "Cài đặt"
|
||||
},
|
||||
"homeView": {
|
||||
"refreshSuccess": "Đã làm mới thành công",
|
||||
"refreshSuccess": "Làm mới thành công",
|
||||
"widgetTitle": "Tổng quan",
|
||||
"updatesSubtitle": "Các bản cập nhật",
|
||||
"lastPatchedAppSubtitle": "Ứng dụng đã vá lần cuối",
|
||||
"patchedSubtitle": "Các ứng dụng đã cài đặt",
|
||||
"updatesSubtitle": "Cập nhật",
|
||||
"lastPatchedAppSubtitle": "Ứng dụng đã vá gần nhất",
|
||||
"patchedSubtitle": "Ứng dụng đã cài đặt",
|
||||
"changeLaterSubtitle": "Bạn có thể thay đổi cài đặt này sau.",
|
||||
"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?",
|
||||
"updateSheetTitle": "Cập nhật ReVanced Manager",
|
||||
"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",
|
||||
"updateDialogText": "Có một bản cập nhật cho ${file}.\n\nPhiên bản đã cài hiện tại là ${version}.",
|
||||
"downloadConsentDialogTitle": "Tải các tập tin 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.",
|
||||
"downloadConsentDialogText2": "Điều này sẽ kết nối bạn đến ${url}.",
|
||||
"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 xuống các tệp cần thiết?",
|
||||
"downloadConsentDialogText": "ReVanced Manager cần tải xuống các tệp cần thiết để hoạt động đúng cách.",
|
||||
"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...",
|
||||
"downloadedMessage": "Đã tải xuống 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",
|
||||
"noConnection": "Không có kết nối mạng"
|
||||
},
|
||||
@ -54,23 +54,23 @@
|
||||
"patcherView": {
|
||||
"widgetTitle": "Trình vá",
|
||||
"patchButton": "Vá",
|
||||
"incompatibleArchWarningDialogText": "Việc vá ứng dụng trên kiến trúc này hiện chưa được hỗ trợ và có thể thất bại. Bạn vẫn muốn tiếp tục?",
|
||||
"removedPatchesWarningDialogText": "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?",
|
||||
"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}",
|
||||
"requiredOptionDialogText": "Một số tùy chọn bản vá cần được thiết đặt."
|
||||
"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á đã 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á đã đượ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 lập."
|
||||
},
|
||||
"appSelectorCard": {
|
||||
"widgetTitle": "Chọn một ứng dụng",
|
||||
"widgetTitle": "Chọn ứng dụng",
|
||||
"widgetTitleSelected": "Ứng dụng đã 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ỳ"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "Chọn bản vá",
|
||||
"widgetTitleSelected": "Các bản vá đã chọn",
|
||||
"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": {
|
||||
"widgetTitle": "Mạng xã hội",
|
||||
@ -78,30 +78,30 @@
|
||||
},
|
||||
"appSelectorView": {
|
||||
"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ữ",
|
||||
"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",
|
||||
"downloadToast": "Tính năng tải về 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.",
|
||||
"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 khớp với 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",
|
||||
"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": {
|
||||
"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",
|
||||
"newPatches": "Các bản vá mới",
|
||||
"patches": "Các bản vá",
|
||||
"doneButton": "Hoàn tất",
|
||||
"defaultChip": "Mặc định",
|
||||
"defaultTooltip": "Chọn tất cả bản vá mặc định",
|
||||
"noneChip": "Không có",
|
||||
"noneChip": "Không",
|
||||
"noneTooltip": "Bỏ chọn tất cả bản vá",
|
||||
"loadPatchesSelection": "Nạp các bản vá được chọn",
|
||||
"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.",
|
||||
"loadPatchesSelection": "Nạp lựa chọn bản vá",
|
||||
"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",
|
||||
"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": {
|
||||
"customValue": "Giá trị tùy chỉnh",
|
||||
@ -110,35 +110,35 @@
|
||||
"viewTitle": "Tùy chọn bản vá",
|
||||
"saveOptions": "Lưu",
|
||||
"unselectPatch": "Bỏ chọn bản vá",
|
||||
"tooltip": "Tùy chọn nhập thêm",
|
||||
"selectFilePath": "Chọn đường dẫn tập tin",
|
||||
"tooltip": "Thêm tuỳ chọn nhập",
|
||||
"selectFilePath": "Chọn đường dẫn tệp",
|
||||
"selectFolder": "Chọn thư mụ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ợ",
|
||||
"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": {
|
||||
"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.",
|
||||
"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"
|
||||
},
|
||||
"installerView": {
|
||||
"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",
|
||||
"installRootType": "Gắn kết",
|
||||
"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",
|
||||
"openButton": "Mở",
|
||||
"notificationTitle": "ReVanced Manager đang vá",
|
||||
"notificationText": "Nhấn để trở lại trình cài đặt",
|
||||
"exportApkButtonTooltip": "Xuất APK đã vá",
|
||||
"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?",
|
||||
"copiedToClipboard": "Đã sao 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 nhớ tạm",
|
||||
"noExit": "Trình cài đặt vẫn đang chạy, không thể thoát..."
|
||||
},
|
||||
"settingsView": {
|
||||
@ -147,24 +147,24 @@
|
||||
"teamSectionTitle": "Đội ngũ",
|
||||
"debugSectionTitle": "Gỡ Lỗi",
|
||||
"advancedSectionTitle": "Nâng cao",
|
||||
"exportSectionTitle": "Nhập và xuất",
|
||||
"exportSectionTitle": "Nhập & xuất",
|
||||
"dataSectionTitle": "Nguồn dữ liệu",
|
||||
"themeModeLabel": "Chủ đề ứng dụng",
|
||||
"systemThemeLabel": "Hệ thống",
|
||||
"lightThemeLabel": "Sáng",
|
||||
"darkThemeLabel": "Chế độ tối",
|
||||
"dynamicThemeLabel": "Cá nhân",
|
||||
"dynamicThemeHint": "Tận hưởng trải nghiệm gần hơn với thiết bị của bạn",
|
||||
"darkThemeLabel": "Tối",
|
||||
"dynamicThemeLabel": "Material You",
|
||||
"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ữ",
|
||||
"languageUpdated": "Ngôn ngữ đã cập nhập",
|
||||
"languageUpdated": "Đã cập nhật ngôn ngữ",
|
||||
"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ế",
|
||||
"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 vì API",
|
||||
"sourcesResetDialogTitle": "Đặt lại",
|
||||
"sourcesResetDialogText": "Bạn có chắc chắn muốn đặt lại nguồn của mình về giá trị mặc định không?",
|
||||
"apiURLResetDialogText": "Bạn có chắc bạn muốn đặt lại API URL của bạn về giá trị mặc định của nó không?",
|
||||
"sourcesUpdateNote": "Lưu ý: Việc này sẽ tự động tải Bản vá ReVanced từ nguồn thay thế.",
|
||||
"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 ý: Ứ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",
|
||||
"apiURLHint": "Cấu hình địa chỉ URL API của ReVanced Manager",
|
||||
"selectApiURL": "Địa chỉ URL của API",
|
||||
@ -175,84 +175,87 @@
|
||||
"logsLabel": "Chia sẻ nhật ký",
|
||||
"logsHint": "Chia sẻ nhật ký ReVanced Manager",
|
||||
"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á",
|
||||
"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?",
|
||||
"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?",
|
||||
"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ể dẫn đến các sự cố không mong muốn.\n\nVẫn bậ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á",
|
||||
"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",
|
||||
"showUpdateDialogHint": "Hiện một hộp thoại khi có một bản cập nhật",
|
||||
"universalPatchesLabel": "Các bản vá phổ quá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)",
|
||||
"usePrereleasesLabel": "Sử dụng bản phát hành trước",
|
||||
"usePrereleasesHint": "Sử dụng phiên bản phát hành trước của ReVanced Manager và ReVanced Patches",
|
||||
"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?",
|
||||
"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á",
|
||||
"lastPatchedAppHint": "Lưu bản vá cuối để 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",
|
||||
"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",
|
||||
"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 phiên bả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",
|
||||
"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",
|
||||
"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?",
|
||||
"requireSuggestedAppVersionHint": "Ngăn không cho chọn một ứng dụng có phiên bản không khớp với phiên bản được đề xuất",
|
||||
"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",
|
||||
"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",
|
||||
"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",
|
||||
"deletedTempDir": "Đã xóa các tệp tạm thời",
|
||||
"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",
|
||||
"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",
|
||||
"exportPatchesLabel": "Xuất bản vá được chọn",
|
||||
"exportPatchesHint": "Xuất bản vá được chọn thành tệp JSON",
|
||||
"exportedPatches": "Đã xuất các bản vá được chọn",
|
||||
"exportPatchesLabel": "Xuất lựa chọn bản vá",
|
||||
"exportPatchesHint": "Xuất lựa chọn bản vá thành tệp JSON",
|
||||
"exportedPatches": "Đã xuất lựa chọn bản vá",
|
||||
"noExportFileFound": "Không có lựa chọn bản vá để xuất",
|
||||
"importPatchesLabel": "Nhập lựa chọn bản vá",
|
||||
"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á",
|
||||
"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á?",
|
||||
"resetStoredPatchesDialogText": "Lựa chọn mặc định của các bản vá lỗi sẽ được khôi phục.",
|
||||
"resetStoredPatches": "Lựa chọn bản vá đã được đặt lại",
|
||||
"resetStoredPatchesDialogText": "Lựa chọn mặc định của các bản vá sẽ được khôi phục.",
|
||||
"resetStoredPatches": "Đã đặt lại lựa 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á?",
|
||||
"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ý",
|
||||
"deleteLogsHint": "Xóa nhật ký ReVanced Manager đã thu thập",
|
||||
"deletedLogs": "Đã xóa nhật ký",
|
||||
"regenerateKeystoreLabel": "Tái sinh kho khóa",
|
||||
"regenerateKeystoreHint": "Tạo lại kho khóa được sử dụng để ký ứng dụng",
|
||||
"regenerateKeystoreDialogTitle": "Tái sinh 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.",
|
||||
"regeneratedKeystore": "Kho khóa đã tái sinh",
|
||||
"regenerateKeystoreLabel": "Tạo lại kho khoá",
|
||||
"regenerateKeystoreHint": "Tạo lại kho khóa dùng để ký ứng dụng",
|
||||
"regenerateKeystoreDialogTitle": "Tạo lại kho khóa?",
|
||||
"regenerateKeystoreDialogText": "Các ứng dụng đã vá và được ký bằng kho khóa cũ sẽ không thể cập nhật được nữa.",
|
||||
"regeneratedKeystore": "Đã tạo lại kho khoá",
|
||||
"exportKeystoreLabel": "Xuất kho khóa",
|
||||
"exportKeystoreHint": "Xuất kho khóa được sử dụng để ký ứng dụng",
|
||||
"exportedKeystore": "Kho khóa đã được xuất",
|
||||
"noKeystoreExportFileFound": "Không có kho khóa nào được xuất",
|
||||
"exportKeystoreHint": "Xuất kho khóa dùng để ký ứng dụng",
|
||||
"exportedKeystore": "Đã xuất kho khoá",
|
||||
"noKeystoreExportFileFound": "Không có kho khóa để xuất",
|
||||
"importKeystoreLabel": "Nhập kho khóa",
|
||||
"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",
|
||||
"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 dùng để ký ứng dụng",
|
||||
"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ể dùng tệp kho khóa đã chọn"
|
||||
},
|
||||
"appInfoView": {
|
||||
"widgetTitle": "Thông tin ứng dụng",
|
||||
"openButton": "Mở",
|
||||
"installButton": "Cài đặt",
|
||||
"uninstallButton": "Gỡ cài đặt",
|
||||
"unmountButton": "Bỏ gắn kết",
|
||||
"unmountButton": "Gỡ gắn kết",
|
||||
"exportButton": "Xuất",
|
||||
"deleteButton": "Xoá",
|
||||
"rootDialogTitle": "Lỗi",
|
||||
"lastPatchedAppDescription": "Đây là bản sao lưu của ứng dụng đã được vá lần cuối.",
|
||||
"unmountDialogText": "Bạn có chắc muốn bỏ 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?",
|
||||
"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.",
|
||||
"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 gỡ gắn kế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 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?",
|
||||
"removeAppDialogText": "Bạn có chắc chắn muốn xóa bản sao lưu này?",
|
||||
"packageNameLabel": "Tên gói",
|
||||
@ -261,38 +264,38 @@
|
||||
"regularTypeLabel": "Thông thường",
|
||||
"patchedDateLabel": "Ngày vá",
|
||||
"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}",
|
||||
"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"
|
||||
},
|
||||
"contributorsView": {
|
||||
"widgetTitle": "Những người đóng góp"
|
||||
},
|
||||
"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_missing_installation": "Không tìm thấy bản cài đặt",
|
||||
"status_failure_blocked": "Bản cài đặt đã bị chặn",
|
||||
"install_failed_verification_failure": "Xác thực thất bại",
|
||||
"status_failure_invalid": "Bản cài đặt không hợp lệ",
|
||||
"mount_missing_installation": "Không tìm thấy cài đặt",
|
||||
"status_failure_blocked": "Cài đặt bị chặn",
|
||||
"install_failed_verification_failure": "Xác minh thất bại",
|
||||
"status_failure_invalid": "Cài đặt không hợp lệ",
|
||||
"install_failed_version_downgrade": "Không thể hạ cấp",
|
||||
"status_failure_conflict": "Xung đột cài đặt",
|
||||
"status_failure_storage": "Phát sinh lưu trữ cài đặt",
|
||||
"status_failure_incompatible": "Bản cài đặt không tương thích",
|
||||
"status_failure_timeout": "Hết hạn cài đặt",
|
||||
"status_failure_storage": "Không đủ bộ nhớ để cài đặt",
|
||||
"status_failure_incompatible": "Cài đặt không tương thích",
|
||||
"status_failure_timeout": "Quá thời gian chờ cài đặt",
|
||||
"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_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_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.",
|
||||
"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_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_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_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_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_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.",
|
||||
"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_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?",
|
||||
"status_unknown_description": "Việc cài đặt đã thất bại do một lý do chưa rõ. Xin 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": "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": "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": "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": "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": "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\nHãy dùng APK được thiết bị này hỗ trợ 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": "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": "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": "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": "Cài đặt thất bại vì lý do không xác định. Vui lòng thử lại."
|
||||
}
|
||||
}
|
@ -180,6 +180,9 @@
|
||||
"disablePatchesSelectionWarningText": "您将禁用更改补丁选择。\n将恢复默认的补丁选择。\n\n无论如何都要禁用?",
|
||||
"autoUpdatePatchesLabel": "自动更新补丁",
|
||||
"autoUpdatePatchesHint": "自动更新补丁至最新版本",
|
||||
"usePrereleasesLabel": "使用预发布版本",
|
||||
"usePrereleasesHint": "使用 ReVanced Manager 和 ReVanced Patches 的预发布版本",
|
||||
"usePrereleasesWarningText": "使用预发布版本可能会导致意外问题。\n\n仍要启用吗?",
|
||||
"showUpdateDialogLabel": "显示更新提示",
|
||||
"showUpdateDialogHint": "当有新的更新时显示对话框",
|
||||
"universalPatchesLabel": "显示通用补丁",
|
||||
|
@ -27,7 +27,7 @@
|
||||
"patchedSubtitle": "已安裝應用程式",
|
||||
"changeLaterSubtitle": "你稍後可以在設定中變更此選項。",
|
||||
"noSavedAppFound": "找不到應用程式",
|
||||
"noInstallations": "未安裝已修補的應用程式",
|
||||
"noInstallations": "未安裝已修補應用程式",
|
||||
"installUpdate": "是否要繼續更新?",
|
||||
"updateSheetTitle": "更新 ReVanced Manager",
|
||||
"updateDialogTitle": "有可用的更新",
|
||||
@ -99,7 +99,7 @@
|
||||
"noneChip": "無",
|
||||
"noneTooltip": "取消選取修補檔",
|
||||
"loadPatchesSelection": "載入修補檔選項",
|
||||
"noSavedPatches": "所選的應用程式沒有已儲存的修補選項。\n按下「完成」以儲存目前的選擇。",
|
||||
"noSavedPatches": "所選的應用程式沒有已儲存的修補選項。\n按下「完成」以儲存目前的修補選項。",
|
||||
"noPatchesFound": "找不到適合所選應用程式的修補檔",
|
||||
"setRequiredOption": "某些修補檔選項需要進行設定:\n\n${patches}\n\n請在繼續之前進行設定。"
|
||||
},
|
||||
@ -180,6 +180,9 @@
|
||||
"disablePatchesSelectionWarningText": "即將停用修補選項的變更功能,並還原到預設選項。\n\n仍要停用嗎?",
|
||||
"autoUpdatePatchesLabel": "自動更新修補檔",
|
||||
"autoUpdatePatchesHint": "自動將修補檔更新至最新版本",
|
||||
"usePrereleasesLabel": "使用預發行版本",
|
||||
"usePrereleasesHint": "使用 ReVanced Manager 和 ReVanced Patches 的預發行版本",
|
||||
"usePrereleasesWarningText": "使用預發行版本可能會導致非預期的問題。\n\n仍要啟用嗎?",
|
||||
"showUpdateDialogLabel": "顯示更新對話方塊",
|
||||
"showUpdateDialogHint": "當有新更新可用時,顯示對話方塊",
|
||||
"universalPatchesLabel": "顯示通用修補檔",
|
||||
|
@ -33,13 +33,16 @@ class GithubAPI {
|
||||
});
|
||||
}
|
||||
|
||||
Future<Map<String, dynamic>?> getLatestRelease(
|
||||
String repoName,
|
||||
) async {
|
||||
Future<Map<String, dynamic>?> getLatestRelease(String repoName) async {
|
||||
final String target =
|
||||
_managerAPI.usePrereleases() ? '?per_page=1' : '/latest';
|
||||
try {
|
||||
final response = await _dioGetSynchronously(
|
||||
'/repos/$repoName/releases/latest',
|
||||
'/repos/$repoName/releases$target',
|
||||
);
|
||||
if (_managerAPI.usePrereleases()) {
|
||||
return response.data.first;
|
||||
}
|
||||
return response.data;
|
||||
} on Exception catch (e) {
|
||||
if (kDebugMode) {
|
||||
@ -50,17 +53,19 @@ class GithubAPI {
|
||||
}
|
||||
|
||||
Future<String?> getChangelogs(bool isPatches) async {
|
||||
final String repoName = isPatches
|
||||
? _managerAPI.getPatchesRepo()
|
||||
: _managerAPI.defaultManagerRepo;
|
||||
final String repoName =
|
||||
isPatches
|
||||
? _managerAPI.getPatchesRepo()
|
||||
: _managerAPI.defaultManagerRepo;
|
||||
try {
|
||||
final response = await _dioGetSynchronously(
|
||||
'/repos/$repoName/releases?per_page=50',
|
||||
);
|
||||
final buffer = StringBuffer();
|
||||
final String version = isPatches
|
||||
? _managerAPI.getLastUsedPatchesVersion()
|
||||
: await _managerAPI.getCurrentManagerVersion();
|
||||
final String version =
|
||||
isPatches
|
||||
? _managerAPI.getLastUsedPatchesVersion()
|
||||
: await _managerAPI.getCurrentManagerVersion();
|
||||
int releases = 0;
|
||||
for (final release in response.data) {
|
||||
if (release['tag_name'] == version) {
|
||||
@ -70,7 +75,7 @@ class GithubAPI {
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (release['prerelease']) {
|
||||
if (!_managerAPI.usePrereleases() && release['prerelease']) {
|
||||
continue;
|
||||
}
|
||||
buffer.writeln(release['body']);
|
||||
@ -96,25 +101,21 @@ class GithubAPI {
|
||||
) async {
|
||||
try {
|
||||
if (url.isNotEmpty) {
|
||||
return await _downloadManager.getSingleFile(
|
||||
url,
|
||||
);
|
||||
return await _downloadManager.getSingleFile(url);
|
||||
}
|
||||
final response = await _dioGetSynchronously(
|
||||
'/repos/$repoName/releases/tags/$version',
|
||||
);
|
||||
final Map<String, dynamic>? release = response.data;
|
||||
if (release != null) {
|
||||
final Map<String, dynamic>? asset =
|
||||
(release['assets'] as List<dynamic>).firstWhereOrNull(
|
||||
(asset) => (asset['name'] as String).endsWith(extension),
|
||||
);
|
||||
final Map<String, dynamic>? asset = (release['assets'] as List<dynamic>)
|
||||
.firstWhereOrNull(
|
||||
(asset) => (asset['name'] as String).endsWith(extension),
|
||||
);
|
||||
if (asset != null) {
|
||||
final String downloadUrl = asset['browser_download_url'];
|
||||
_managerAPI.setPatchesDownloadURL(downloadUrl);
|
||||
return await _downloadManager.getSingleFile(
|
||||
downloadUrl,
|
||||
);
|
||||
return await _downloadManager.getSingleFile(downloadUrl);
|
||||
}
|
||||
}
|
||||
} on Exception catch (e) {
|
||||
|
@ -36,7 +36,6 @@ class ManagerAPI {
|
||||
Patch? selectedPatch;
|
||||
BuildContext? ctx;
|
||||
bool isRooted = false;
|
||||
bool releaseBuild = false;
|
||||
bool suggestedAppVersionSelected = true;
|
||||
bool isDynamicThemeAvailable = false;
|
||||
bool isScopedStorageAvailable = false;
|
||||
@ -63,11 +62,9 @@ class ManagerAPI {
|
||||
isScopedStorageAvailable = sdkVersion >= 30; // ANDROID_11_SDK_VERSION = 30
|
||||
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) {
|
||||
final apiUrl = getApiUrl().toLowerCase();
|
||||
|
||||
@ -168,6 +165,18 @@ class ManagerAPI {
|
||||
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() {
|
||||
return _prefs.getBool('patchesChangeEnabled') ?? false;
|
||||
}
|
||||
@ -207,32 +216,36 @@ class ManagerAPI {
|
||||
List<Patch> getSavedPatches(String packageName) {
|
||||
final List<String> patchesJson =
|
||||
_prefs.getStringList('savedPatches-$packageName') ?? [];
|
||||
final List<Patch> patches = patchesJson.map((String patchJson) {
|
||||
return Patch.fromJson(jsonDecode(patchJson));
|
||||
}).toList();
|
||||
final List<Patch> patches =
|
||||
patchesJson.map((String patchJson) {
|
||||
return Patch.fromJson(jsonDecode(patchJson));
|
||||
}).toList();
|
||||
return patches;
|
||||
}
|
||||
|
||||
Future<void> savePatches(List<Patch> patches, String packageName) async {
|
||||
final List<String> patchesJson = patches.map((Patch patch) {
|
||||
return jsonEncode(patch.toJson());
|
||||
}).toList();
|
||||
final List<String> patchesJson =
|
||||
patches.map((Patch patch) {
|
||||
return jsonEncode(patch.toJson());
|
||||
}).toList();
|
||||
await _prefs.setStringList('savedPatches-$packageName', patchesJson);
|
||||
}
|
||||
|
||||
List<Patch> getUsedPatches(String packageName) {
|
||||
final List<String> patchesJson =
|
||||
_prefs.getStringList('usedPatches-$packageName') ?? [];
|
||||
final List<Patch> patches = patchesJson.map((String patchJson) {
|
||||
return Patch.fromJson(jsonDecode(patchJson));
|
||||
}).toList();
|
||||
final List<Patch> patches =
|
||||
patchesJson.map((String patchJson) {
|
||||
return Patch.fromJson(jsonDecode(patchJson));
|
||||
}).toList();
|
||||
return patches;
|
||||
}
|
||||
|
||||
Future<void> setUsedPatches(List<Patch> patches, String packageName) async {
|
||||
final List<String> patchesJson = patches.map((Patch patch) {
|
||||
return jsonEncode(patch.toJson());
|
||||
}).toList();
|
||||
final List<String> patchesJson =
|
||||
patches.map((Patch patch) {
|
||||
return jsonEncode(patch.toJson());
|
||||
}).toList();
|
||||
await _prefs.setStringList('usedPatches-$packageName', patchesJson);
|
||||
}
|
||||
|
||||
@ -246,8 +259,9 @@ class ManagerAPI {
|
||||
}
|
||||
|
||||
Option? getPatchOption(String packageName, String patchName, String key) {
|
||||
final String? optionJson =
|
||||
_prefs.getString('patchOption-$packageName-$patchName-$key');
|
||||
final String? optionJson = _prefs.getString(
|
||||
'patchOption-$packageName-$patchName-$key',
|
||||
);
|
||||
if (optionJson != null) {
|
||||
final Option option = Option.fromJson(jsonDecode(optionJson));
|
||||
return option;
|
||||
@ -325,13 +339,7 @@ class ManagerAPI {
|
||||
}
|
||||
|
||||
String getLocale() {
|
||||
final String? savedLocale = _prefs.getString('locale');
|
||||
if (savedLocale != null && savedLocale.isNotEmpty) {
|
||||
return savedLocale;
|
||||
} else {
|
||||
final Locale deviceLocale = PlatformDispatcher.instance.locale;
|
||||
return deviceLocale.languageCode.isNotEmpty ? deviceLocale.languageCode : 'en';
|
||||
}
|
||||
return _prefs.getString('locale') ?? Platform.localeName;
|
||||
}
|
||||
|
||||
Future<void> setLocale(String value) async {
|
||||
@ -346,9 +354,7 @@ class ManagerAPI {
|
||||
}
|
||||
|
||||
Future<void> deleteKeystore() async {
|
||||
final File keystore = File(
|
||||
keystoreFile,
|
||||
);
|
||||
final File keystore = File(keystoreFile);
|
||||
if (await keystore.exists()) {
|
||||
await keystore.delete();
|
||||
}
|
||||
@ -370,17 +376,13 @@ class ManagerAPI {
|
||||
|
||||
Future<void> setLastPatchedApp(
|
||||
PatchedApplication app,
|
||||
File outFile,
|
||||
File outFile
|
||||
) async {
|
||||
deleteLastPatchedApp();
|
||||
final Directory appCache = await getApplicationSupportDirectory();
|
||||
app.patchedFilePath =
|
||||
outFile.copySync('${appCache.path}/lastPatchedApp.apk').path;
|
||||
app.fileSize = outFile.lengthSync();
|
||||
await _prefs.setString(
|
||||
'lastPatchedApp',
|
||||
json.encode(app.toJson()),
|
||||
);
|
||||
await _prefs.setString('lastPatchedApp', json.encode(app.toJson()));
|
||||
}
|
||||
|
||||
List<PatchedApplication> getPatchedApps() {
|
||||
@ -388,9 +390,7 @@ class ManagerAPI {
|
||||
return apps.map((a) => PatchedApplication.fromJson(jsonDecode(a))).toList();
|
||||
}
|
||||
|
||||
Future<void> setPatchedApps(
|
||||
List<PatchedApplication> patchedApps,
|
||||
) async {
|
||||
Future<void> setPatchedApps(List<PatchedApplication> patchedApps) async {
|
||||
if (patchedApps.length > 1) {
|
||||
patchedApps.sort((a, b) => a.name.compareTo(b.name));
|
||||
}
|
||||
@ -403,10 +403,8 @@ class ManagerAPI {
|
||||
Future<void> savePatchedApp(PatchedApplication app) async {
|
||||
final List<PatchedApplication> patchedApps = getPatchedApps();
|
||||
patchedApps.removeWhere((a) => a.packageName == app.packageName);
|
||||
final ApplicationWithIcon? installed = await DeviceApps.getApp(
|
||||
app.packageName,
|
||||
true,
|
||||
) as ApplicationWithIcon?;
|
||||
final ApplicationWithIcon? installed =
|
||||
await DeviceApps.getApp(app.packageName, true) as ApplicationWithIcon?;
|
||||
if (installed != null) {
|
||||
app.name = installed.appName;
|
||||
app.version = installed.versionName!;
|
||||
@ -446,14 +444,13 @@ class ManagerAPI {
|
||||
try {
|
||||
final String patchesJson = await PatcherAPI.patcherChannel.invokeMethod(
|
||||
'getPatches',
|
||||
{
|
||||
'patchBundleFilePath': patchBundleFile.path,
|
||||
},
|
||||
{'patchBundleFilePath': patchBundleFile.path},
|
||||
);
|
||||
final List<dynamic> patchesJsonList = jsonDecode(patchesJson);
|
||||
patches = patchesJsonList
|
||||
.map((patchJson) => Patch.fromJson(patchJson))
|
||||
.toList();
|
||||
patches =
|
||||
patchesJsonList
|
||||
.map((patchJson) => Patch.fromJson(patchJson))
|
||||
.toList();
|
||||
return patches;
|
||||
} on Exception catch (e) {
|
||||
if (kDebugMode) {
|
||||
@ -498,8 +495,9 @@ class ManagerAPI {
|
||||
} else {
|
||||
final release = await _githubAPI.getLatestRelease(getPatchesRepo());
|
||||
if (release != null) {
|
||||
final DateTime timestamp =
|
||||
DateTime.parse(release['created_at'] as String);
|
||||
final DateTime timestamp = DateTime.parse(
|
||||
release['created_at'] as String,
|
||||
);
|
||||
return format(timestamp, locale: 'en_short');
|
||||
} else {
|
||||
return null;
|
||||
@ -508,22 +506,16 @@ class ManagerAPI {
|
||||
}
|
||||
|
||||
Future<String?> getLatestManagerReleaseTime() async {
|
||||
return await _revancedAPI.getLatestReleaseTime(
|
||||
'manager',
|
||||
);
|
||||
return await _revancedAPI.getLatestReleaseTime('manager');
|
||||
}
|
||||
|
||||
Future<String?> getLatestManagerVersion() async {
|
||||
return await _revancedAPI.getLatestReleaseVersion(
|
||||
'manager',
|
||||
);
|
||||
return await _revancedAPI.getLatestReleaseVersion('manager');
|
||||
}
|
||||
|
||||
Future<String?> getLatestPatchesVersion() async {
|
||||
if (!isUsingAlternativeSources()) {
|
||||
return await _revancedAPI.getLatestReleaseVersion(
|
||||
'patches',
|
||||
);
|
||||
return await _revancedAPI.getLatestReleaseVersion('patches');
|
||||
} else {
|
||||
final release = await _githubAPI.getLatestRelease(getPatchesRepo());
|
||||
if (release != null) {
|
||||
@ -537,8 +529,9 @@ class ManagerAPI {
|
||||
String getLastUsedPatchesVersion() {
|
||||
final String lastPatchesVersions =
|
||||
_prefs.getString('lastUsedPatchesVersion') ?? '{}';
|
||||
final Map<String, dynamic> lastPatchesVersionMap =
|
||||
jsonDecode(lastPatchesVersions);
|
||||
final Map<String, dynamic> lastPatchesVersionMap = jsonDecode(
|
||||
lastPatchesVersions,
|
||||
);
|
||||
final String repo = getPatchesRepo();
|
||||
return lastPatchesVersionMap[repo] ?? '0.0.0';
|
||||
}
|
||||
@ -546,8 +539,9 @@ class ManagerAPI {
|
||||
void setLastUsedPatchesVersion({String? version}) {
|
||||
final String lastPatchesVersions =
|
||||
_prefs.getString('lastUsedPatchesVersion') ?? '{}';
|
||||
final Map<String, dynamic> lastPatchesVersionMap =
|
||||
jsonDecode(lastPatchesVersions);
|
||||
final Map<String, dynamic> lastPatchesVersionMap = jsonDecode(
|
||||
lastPatchesVersions,
|
||||
);
|
||||
final repo = getPatchesRepo();
|
||||
final String lastPatchesVersion =
|
||||
version ?? lastPatchesVersionMap[repo] ?? '0.0.0';
|
||||
@ -604,10 +598,8 @@ class ManagerAPI {
|
||||
if (hasRootPermissions) {
|
||||
final List<String> installedApps = await _rootAPI.getInstalledApps();
|
||||
for (final String packageName in installedApps) {
|
||||
final ApplicationWithIcon? application = await DeviceApps.getApp(
|
||||
packageName,
|
||||
true,
|
||||
) as ApplicationWithIcon?;
|
||||
final ApplicationWithIcon? application =
|
||||
await DeviceApps.getApp(packageName, true) as ApplicationWithIcon?;
|
||||
if (application != null) {
|
||||
mountedApps.add(
|
||||
PatchedApplication(
|
||||
@ -628,55 +620,55 @@ class ManagerAPI {
|
||||
}
|
||||
|
||||
Future<void> showPatchesChangeWarningDialog(BuildContext context) {
|
||||
final ValueNotifier<bool> noShow =
|
||||
ValueNotifier(!showPatchesChangeWarning());
|
||||
final ValueNotifier<bool> noShow = ValueNotifier(
|
||||
!showPatchesChangeWarning(),
|
||||
);
|
||||
return showDialog(
|
||||
barrierDismissible: false,
|
||||
context: context,
|
||||
builder: (context) => PopScope(
|
||||
canPop: false,
|
||||
child: AlertDialog(
|
||||
title: Text(t.warning),
|
||||
content: ValueListenableBuilder(
|
||||
valueListenable: noShow,
|
||||
builder: (context, value, child) {
|
||||
return Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
t.patchItem.patchesChangeWarningDialogText,
|
||||
style: const TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
HapticCheckboxListTile(
|
||||
value: value,
|
||||
contentPadding: EdgeInsets.zero,
|
||||
title: Text(
|
||||
t.noShowAgain,
|
||||
),
|
||||
onChanged: (selected) {
|
||||
noShow.value = selected!;
|
||||
},
|
||||
),
|
||||
],
|
||||
);
|
||||
},
|
||||
),
|
||||
actions: [
|
||||
FilledButton(
|
||||
onPressed: () {
|
||||
setPatchesChangeWarning(noShow.value);
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
child: Text(t.okButton),
|
||||
builder:
|
||||
(context) => PopScope(
|
||||
canPop: false,
|
||||
child: AlertDialog(
|
||||
title: Text(t.warning),
|
||||
content: ValueListenableBuilder(
|
||||
valueListenable: noShow,
|
||||
builder: (context, value, child) {
|
||||
return Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
t.patchItem.patchesChangeWarningDialogText,
|
||||
style: const TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
HapticCheckboxListTile(
|
||||
value: value,
|
||||
contentPadding: EdgeInsets.zero,
|
||||
title: Text(t.noShowAgain),
|
||||
onChanged: (selected) {
|
||||
noShow.value = selected!;
|
||||
},
|
||||
),
|
||||
],
|
||||
);
|
||||
},
|
||||
),
|
||||
actions: [
|
||||
FilledButton(
|
||||
onPressed: () {
|
||||
setPatchesChangeWarning(noShow.value);
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
child: Text(t.okButton),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@ -684,29 +676,21 @@ class ManagerAPI {
|
||||
final List<PatchedApplication> patchedApps = getPatchedApps();
|
||||
|
||||
// Remove apps that are not installed anymore.
|
||||
final List<PatchedApplication> toRemove =
|
||||
await getAppsToRemove(patchedApps);
|
||||
final List<PatchedApplication> toRemove = await getAppsToRemove(
|
||||
patchedApps,
|
||||
);
|
||||
patchedApps.removeWhere((a) => toRemove.contains(a));
|
||||
|
||||
// Determine all apps that are installed by mounting.
|
||||
final List<PatchedApplication> mountedApps = await getMountedApps();
|
||||
mountedApps.removeWhere(
|
||||
(app) => patchedApps
|
||||
.any((patchedApp) => patchedApp.packageName == app.packageName),
|
||||
(app) => patchedApps.any(
|
||||
(patchedApp) => patchedApp.packageName == app.packageName,
|
||||
),
|
||||
);
|
||||
patchedApps.addAll(mountedApps);
|
||||
|
||||
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 {
|
||||
@ -732,10 +716,7 @@ class ManagerAPI {
|
||||
return app != null && app.isSplit;
|
||||
}
|
||||
|
||||
Future<void> setSelectedPatches(
|
||||
String app,
|
||||
List<String> patches,
|
||||
) async {
|
||||
Future<void> setSelectedPatches(String app, List<String> patches) async {
|
||||
final File selectedPatchesFile = File(storedPatchesFile);
|
||||
final Map<String, dynamic> patchesMap = await readSelectedPatchesFile();
|
||||
if (patches.isEmpty) {
|
||||
@ -791,9 +772,9 @@ class ManagerAPI {
|
||||
final Map<String, dynamic> settings = _prefs
|
||||
.getKeys()
|
||||
.fold<Map<String, dynamic>>({}, (Map<String, dynamic> map, String key) {
|
||||
map[key] = _prefs.get(key);
|
||||
return map;
|
||||
});
|
||||
map[key] = _prefs.get(key);
|
||||
return map;
|
||||
});
|
||||
return jsonEncode(settings);
|
||||
}
|
||||
|
||||
@ -818,11 +799,11 @@ class ManagerAPI {
|
||||
}
|
||||
|
||||
void resetAllOptions() {
|
||||
_prefs.getKeys().where((key) => key.startsWith('patchOption-')).forEach(
|
||||
(key) {
|
||||
_prefs.remove(key);
|
||||
},
|
||||
);
|
||||
_prefs.getKeys().where((key) => key.startsWith('patchOption-')).forEach((
|
||||
key,
|
||||
) {
|
||||
_prefs.remove(key);
|
||||
});
|
||||
}
|
||||
|
||||
Future<void> resetLastSelectedPatches() async {
|
||||
|
@ -14,6 +14,7 @@ import 'package:timeago/timeago.dart';
|
||||
class RevancedAPI {
|
||||
late final Dio _dio;
|
||||
late final DownloadManager _downloadManager = locator<DownloadManager>();
|
||||
late final ManagerAPI _managerAPI = locator<ManagerAPI>();
|
||||
|
||||
final Lock getToolsLock = Lock();
|
||||
|
||||
@ -43,15 +44,15 @@ class RevancedAPI {
|
||||
return contributors;
|
||||
}
|
||||
|
||||
Future<Map<String, dynamic>?> _getLatestRelease(
|
||||
String toolName,
|
||||
) {
|
||||
Future<Map<String, dynamic>?> _getLatestRelease(String toolName) {
|
||||
if (!locator<ManagerAPI>().getDownloadConsent()) {
|
||||
return Future(() => null);
|
||||
}
|
||||
return getToolsLock.synchronized(() async {
|
||||
try {
|
||||
final response = await _dio.get('/$toolName');
|
||||
final response = await _dio.get(
|
||||
'/$toolName?prerelease=${_managerAPI.usePrereleases()}',
|
||||
);
|
||||
return response.data;
|
||||
} on Exception catch (e) {
|
||||
if (kDebugMode) {
|
||||
@ -62,13 +63,9 @@ class RevancedAPI {
|
||||
});
|
||||
}
|
||||
|
||||
Future<String?> getLatestReleaseVersion(
|
||||
String toolName,
|
||||
) async {
|
||||
Future<String?> getLatestReleaseVersion(String toolName) async {
|
||||
try {
|
||||
final Map<String, dynamic>? release = await _getLatestRelease(
|
||||
toolName,
|
||||
);
|
||||
final Map<String, dynamic>? release = await _getLatestRelease(toolName);
|
||||
if (release != null) {
|
||||
return release['version'];
|
||||
}
|
||||
@ -81,13 +78,9 @@ class RevancedAPI {
|
||||
return null;
|
||||
}
|
||||
|
||||
Future<File?> getLatestReleaseFile(
|
||||
String toolName,
|
||||
) async {
|
||||
Future<File?> getLatestReleaseFile(String toolName) async {
|
||||
try {
|
||||
final Map<String, dynamic>? release = await _getLatestRelease(
|
||||
toolName,
|
||||
);
|
||||
final Map<String, dynamic>? release = await _getLatestRelease(toolName);
|
||||
if (release != null) {
|
||||
final String url = release['download_url'];
|
||||
return await _downloadManager.getSingleFile(url);
|
||||
@ -136,16 +129,13 @@ class RevancedAPI {
|
||||
return outputFile;
|
||||
}
|
||||
|
||||
Future<String?> getLatestReleaseTime(
|
||||
String toolName,
|
||||
) async {
|
||||
Future<String?> getLatestReleaseTime(String toolName) async {
|
||||
try {
|
||||
final Map<String, dynamic>? release = await _getLatestRelease(
|
||||
toolName,
|
||||
);
|
||||
final Map<String, dynamic>? release = await _getLatestRelease(toolName);
|
||||
if (release != null) {
|
||||
final DateTime timestamp =
|
||||
DateTime.parse(release['created_at'] as String);
|
||||
final DateTime timestamp = DateTime.parse(
|
||||
release['created_at'] as String,
|
||||
);
|
||||
return format(timestamp, locale: 'en_short');
|
||||
}
|
||||
} on Exception catch (e) {
|
||||
|
@ -82,10 +82,13 @@ class HomeViewModel extends BaseViewModel {
|
||||
);
|
||||
flutterLocalNotificationsPlugin
|
||||
.resolvePlatformSpecificImplementation<
|
||||
AndroidFlutterLocalNotificationsPlugin>()
|
||||
AndroidFlutterLocalNotificationsPlugin
|
||||
>()
|
||||
?.requestNotificationsPermission();
|
||||
final bool isConnected = !(await Connectivity().checkConnectivity())
|
||||
.contains(ConnectivityResult.none);
|
||||
final bool isConnected =
|
||||
!(await Connectivity().checkConnectivity()).contains(
|
||||
ConnectivityResult.none,
|
||||
);
|
||||
if (!isConnected) {
|
||||
_toast.showBottom(t.homeView.noConnection);
|
||||
}
|
||||
@ -106,8 +109,10 @@ class HomeViewModel extends BaseViewModel {
|
||||
void navigateToAppInfo(PatchedApplication app, bool isLastPatchedApp) {
|
||||
_navigationService.navigateTo(
|
||||
Routes.appInfoView,
|
||||
arguments:
|
||||
AppInfoViewArguments(app: app, isLastPatchedApp: isLastPatchedApp),
|
||||
arguments: AppInfoViewArguments(
|
||||
app: app,
|
||||
isLastPatchedApp: isLastPatchedApp,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@ -118,8 +123,8 @@ class HomeViewModel extends BaseViewModel {
|
||||
|
||||
Future<void> navigateToPatcher(PatchedApplication app) async {
|
||||
locator<PatcherViewModel>().selectedApp = app;
|
||||
locator<PatcherViewModel>().selectedPatches =
|
||||
await _patcherAPI.getAppliedPatches(app.appliedPatches);
|
||||
locator<PatcherViewModel>().selectedPatches = await _patcherAPI
|
||||
.getAppliedPatches(app.appliedPatches);
|
||||
locator<PatcherViewModel>().notifyListeners();
|
||||
locator<NavigationViewModel>().setIndex(1);
|
||||
}
|
||||
@ -135,9 +140,6 @@ class HomeViewModel extends BaseViewModel {
|
||||
}
|
||||
|
||||
Future<bool> hasManagerUpdates() async {
|
||||
if (!_managerAPI.releaseBuild) {
|
||||
return false;
|
||||
}
|
||||
latestManagerVersion =
|
||||
await _managerAPI.getLatestManagerVersion() ?? _currentManagerVersion;
|
||||
|
||||
@ -151,10 +153,12 @@ class HomeViewModel extends BaseViewModel {
|
||||
latestPatchesVersion = await _managerAPI.getLatestPatchesVersion();
|
||||
if (latestPatchesVersion != null) {
|
||||
try {
|
||||
final int latestVersionInt =
|
||||
int.parse(latestPatchesVersion!.replaceAll(RegExp('[^0-9]'), ''));
|
||||
final int currentVersionInt =
|
||||
int.parse(_currentPatchesVersion.replaceAll(RegExp('[^0-9]'), ''));
|
||||
final int latestVersionInt = int.parse(
|
||||
latestPatchesVersion!.replaceAll(RegExp('[^0-9]'), ''),
|
||||
);
|
||||
final int currentVersionInt = int.parse(
|
||||
_currentPatchesVersion.replaceAll(RegExp('[^0-9]'), ''),
|
||||
);
|
||||
return latestVersionInt > currentVersionInt;
|
||||
} on Exception catch (e) {
|
||||
if (kDebugMode) {
|
||||
@ -187,123 +191,128 @@ class HomeViewModel extends BaseViewModel {
|
||||
await showDialog(
|
||||
context: context,
|
||||
barrierDismissible: false,
|
||||
builder: (context) => PopScope(
|
||||
canPop: false,
|
||||
child: AlertDialog(
|
||||
title: Text(t.homeView.downloadConsentDialogTitle),
|
||||
content: ValueListenableBuilder(
|
||||
valueListenable: autoUpdate,
|
||||
builder: (context, value, child) {
|
||||
return Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
t.homeView.downloadConsentDialogText,
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Theme.of(context).colorScheme.secondary,
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: const EdgeInsets.symmetric(vertical: 10),
|
||||
child: Text(
|
||||
t.homeView.downloadConsentDialogText2(
|
||||
url: _managerAPI.defaultApiUrl.split('/')[2],
|
||||
builder:
|
||||
(context) => PopScope(
|
||||
canPop: false,
|
||||
child: AlertDialog(
|
||||
title: Text(t.homeView.downloadConsentDialogTitle),
|
||||
content: ValueListenableBuilder(
|
||||
valueListenable: autoUpdate,
|
||||
builder: (context, value, child) {
|
||||
return Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
t.homeView.downloadConsentDialogText,
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Theme.of(context).colorScheme.secondary,
|
||||
),
|
||||
),
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Theme.of(context).colorScheme.error,
|
||||
Padding(
|
||||
padding: const EdgeInsets.symmetric(vertical: 10),
|
||||
child: Text(
|
||||
t.homeView.downloadConsentDialogText2(
|
||||
url: _managerAPI.defaultApiUrl.split('/')[2],
|
||||
),
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Theme.of(context).colorScheme.error,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
},
|
||||
],
|
||||
);
|
||||
},
|
||||
),
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () async {
|
||||
_managerAPI.setDownloadConsent(false);
|
||||
SystemNavigator.pop();
|
||||
},
|
||||
child: Text(t.quitButton),
|
||||
),
|
||||
FilledButton(
|
||||
onPressed: () async {
|
||||
_managerAPI.setDownloadConsent(true);
|
||||
_managerAPI.setPatchesAutoUpdate(autoUpdate.value);
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
child: Text(t.okButton),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () async {
|
||||
_managerAPI.setDownloadConsent(false);
|
||||
SystemNavigator.pop();
|
||||
},
|
||||
child: Text(t.quitButton),
|
||||
),
|
||||
FilledButton(
|
||||
onPressed: () async {
|
||||
_managerAPI.setDownloadConsent(true);
|
||||
_managerAPI.setPatchesAutoUpdate(autoUpdate.value);
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
child: Text(t.okButton),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
void showUpdateDialog(BuildContext context, bool isPatches) {
|
||||
final ValueNotifier<bool> noShow =
|
||||
ValueNotifier(!_managerAPI.showUpdateDialog());
|
||||
final ValueNotifier<bool> noShow = ValueNotifier(
|
||||
!_managerAPI.showUpdateDialog(),
|
||||
);
|
||||
showDialog(
|
||||
context: context,
|
||||
builder: (innerContext) => AlertDialog(
|
||||
title: Text(t.homeView.updateDialogTitle),
|
||||
content: ValueListenableBuilder(
|
||||
valueListenable: noShow,
|
||||
builder: (context, value, child) {
|
||||
return Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
t.homeView.updateDialogText(
|
||||
file: isPatches ? 'ReVanced Patches' : 'ReVanced Manager',
|
||||
version: isPatches
|
||||
? _currentPatchesVersion
|
||||
: _currentManagerVersion,
|
||||
),
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Theme.of(context).colorScheme.secondary,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 10),
|
||||
HapticCheckboxListTile(
|
||||
value: value,
|
||||
contentPadding: EdgeInsets.zero,
|
||||
title: Text(t.noShowAgain),
|
||||
subtitle: Text(t.homeView.changeLaterSubtitle),
|
||||
onChanged: (selected) {
|
||||
noShow.value = selected!;
|
||||
},
|
||||
),
|
||||
],
|
||||
);
|
||||
},
|
||||
),
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () async {
|
||||
_managerAPI.setShowUpdateDialog(!noShow.value);
|
||||
Navigator.pop(innerContext);
|
||||
},
|
||||
child: Text(t.dismissButton), // Decide later
|
||||
builder:
|
||||
(innerContext) => AlertDialog(
|
||||
title: Text(t.homeView.updateDialogTitle),
|
||||
content: ValueListenableBuilder(
|
||||
valueListenable: noShow,
|
||||
builder: (context, value, child) {
|
||||
return Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
t.homeView.updateDialogText(
|
||||
file:
|
||||
isPatches ? 'ReVanced Patches' : 'ReVanced Manager',
|
||||
version:
|
||||
isPatches
|
||||
? _currentPatchesVersion
|
||||
: _currentManagerVersion,
|
||||
),
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Theme.of(context).colorScheme.secondary,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 10),
|
||||
HapticCheckboxListTile(
|
||||
value: value,
|
||||
contentPadding: EdgeInsets.zero,
|
||||
title: Text(t.noShowAgain),
|
||||
subtitle: Text(t.homeView.changeLaterSubtitle),
|
||||
onChanged: (selected) {
|
||||
noShow.value = selected!;
|
||||
},
|
||||
),
|
||||
],
|
||||
);
|
||||
},
|
||||
),
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () async {
|
||||
_managerAPI.setShowUpdateDialog(!noShow.value);
|
||||
Navigator.pop(innerContext);
|
||||
},
|
||||
child: Text(t.dismissButton), // Decide later
|
||||
),
|
||||
FilledButton(
|
||||
onPressed: () async {
|
||||
_managerAPI.setShowUpdateDialog(!noShow.value);
|
||||
Navigator.pop(innerContext);
|
||||
await showUpdateConfirmationDialog(context, isPatches);
|
||||
},
|
||||
child: Text(t.showUpdateButton),
|
||||
),
|
||||
],
|
||||
),
|
||||
FilledButton(
|
||||
onPressed: () async {
|
||||
_managerAPI.setShowUpdateDialog(!noShow.value);
|
||||
Navigator.pop(innerContext);
|
||||
await showUpdateConfirmationDialog(context, isPatches);
|
||||
},
|
||||
child: Text(t.showUpdateButton),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@ -326,94 +335,95 @@ class HomeViewModel extends BaseViewModel {
|
||||
_toast.showBottom(t.homeView.downloadingMessage);
|
||||
showDialog(
|
||||
context: context,
|
||||
builder: (context) => ValueListenableBuilder(
|
||||
valueListenable: downloaded,
|
||||
builder: (context, value, child) {
|
||||
return AlertDialog(
|
||||
title: Text(
|
||||
!value
|
||||
? t.homeView.downloadingMessage
|
||||
: t.homeView.downloadedMessage,
|
||||
),
|
||||
content: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
if (!value)
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
StreamBuilder<double>(
|
||||
initialData: 0.0,
|
||||
stream: _revancedAPI.managerUpdateProgress.stream,
|
||||
builder: (context, snapshot) {
|
||||
return LinearProgressIndicator(
|
||||
value: snapshot.data! * 0.01,
|
||||
valueColor: AlwaysStoppedAnimation<Color>(
|
||||
Theme.of(context).colorScheme.secondary,
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
const SizedBox(height: 16.0),
|
||||
Align(
|
||||
alignment: Alignment.centerRight,
|
||||
child: FilledButton(
|
||||
onPressed: () {
|
||||
_revancedAPI.disposeManagerUpdateProgress();
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
child: Text(t.cancelButton),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
if (value)
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
t.homeView.installUpdate,
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Theme.of(context).colorScheme.secondary,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 16.0),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
builder:
|
||||
(context) => ValueListenableBuilder(
|
||||
valueListenable: downloaded,
|
||||
builder: (context, value, child) {
|
||||
return AlertDialog(
|
||||
title: Text(
|
||||
!value
|
||||
? t.homeView.downloadingMessage
|
||||
: t.homeView.downloadedMessage,
|
||||
),
|
||||
content: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
if (!value)
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
StreamBuilder<double>(
|
||||
initialData: 0.0,
|
||||
stream: _revancedAPI.managerUpdateProgress.stream,
|
||||
builder: (context, snapshot) {
|
||||
return LinearProgressIndicator(
|
||||
value: snapshot.data! * 0.01,
|
||||
valueColor: AlwaysStoppedAnimation<Color>(
|
||||
Theme.of(context).colorScheme.secondary,
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
const SizedBox(height: 16.0),
|
||||
Align(
|
||||
alignment: Alignment.centerRight,
|
||||
child: TextButton(
|
||||
child: FilledButton(
|
||||
onPressed: () {
|
||||
_revancedAPI.disposeManagerUpdateProgress();
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
child: Text(t.cancelButton),
|
||||
),
|
||||
),
|
||||
const SizedBox(width: 8.0),
|
||||
Align(
|
||||
alignment: Alignment.centerRight,
|
||||
child: FilledButton(
|
||||
onPressed: () async {
|
||||
await _patcherAPI.installApk(
|
||||
context,
|
||||
downloadedApk!.path,
|
||||
);
|
||||
},
|
||||
child: Text(t.updateButton),
|
||||
],
|
||||
),
|
||||
if (value)
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
t.homeView.installUpdate,
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Theme.of(context).colorScheme.secondary,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 16.0),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
children: [
|
||||
Align(
|
||||
alignment: Alignment.centerRight,
|
||||
child: TextButton(
|
||||
onPressed: () {
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
child: Text(t.cancelButton),
|
||||
),
|
||||
),
|
||||
const SizedBox(width: 8.0),
|
||||
Align(
|
||||
alignment: Alignment.centerRight,
|
||||
child: FilledButton(
|
||||
onPressed: () async {
|
||||
await _patcherAPI.installApk(
|
||||
context,
|
||||
downloadedApk!.path,
|
||||
);
|
||||
},
|
||||
child: Text(t.updateButton),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
);
|
||||
final File? managerApk = await downloadManager();
|
||||
if (managerApk != null) {
|
||||
@ -468,10 +478,11 @@ class HomeViewModel extends BaseViewModel {
|
||||
shape: const RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.vertical(top: Radius.circular(24.0)),
|
||||
),
|
||||
builder: (context) => UpdateConfirmationSheet(
|
||||
isPatches: isPatches,
|
||||
changelog: changelog,
|
||||
),
|
||||
builder:
|
||||
(context) => UpdateConfirmationSheet(
|
||||
isPatches: isPatches,
|
||||
changelog: changelog,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -125,7 +125,7 @@ class InstallerViewModel extends BaseViewModel {
|
||||
});
|
||||
await WakelockPlus.enable();
|
||||
await handlePlatformChannelMethods();
|
||||
await runPatcher(context);
|
||||
await runPatcher();
|
||||
}
|
||||
|
||||
Future<dynamic> handlePlatformChannelMethods() async {
|
||||
@ -164,6 +164,16 @@ class InstallerViewModel extends BaseViewModel {
|
||||
_managerAPI.setLastUsedPatchesVersion(
|
||||
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) {
|
||||
isPatching = false;
|
||||
hasErrors = true;
|
||||
@ -187,7 +197,7 @@ class InstallerViewModel extends BaseViewModel {
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
Future<void> runPatcher(BuildContext context) async {
|
||||
Future<void> runPatcher() async {
|
||||
try {
|
||||
await _patcherAPI.runPatcher(
|
||||
_app.packageName,
|
||||
@ -195,16 +205,6 @@ class InstallerViewModel extends BaseViewModel {
|
||||
_patches,
|
||||
_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) {
|
||||
update(
|
||||
-100.0,
|
||||
@ -506,7 +506,7 @@ class InstallerViewModel extends BaseViewModel {
|
||||
_app.isRooted = installAsRoot;
|
||||
if (headerLogs != 'Installing...') {
|
||||
update(
|
||||
.85,
|
||||
-1.0,
|
||||
'Installing...',
|
||||
_app.isRooted ? 'Mounting patched app' : 'Installing patched app',
|
||||
);
|
||||
@ -534,7 +534,7 @@ class InstallerViewModel extends BaseViewModel {
|
||||
update(1.0, 'Installed', 'Installed');
|
||||
} else if (response == 3) {
|
||||
update(
|
||||
.85,
|
||||
-1.0,
|
||||
'Installation canceled',
|
||||
'Installation canceled',
|
||||
);
|
||||
@ -542,7 +542,7 @@ class InstallerViewModel extends BaseViewModel {
|
||||
installResult(context, installAsRoot);
|
||||
} else {
|
||||
update(
|
||||
.85,
|
||||
-1.0,
|
||||
'Installation failed',
|
||||
'Installation failed',
|
||||
);
|
||||
|
@ -40,6 +40,10 @@ class SettingsViewModel extends BaseViewModel {
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
bool usePrereleases() {
|
||||
return _managerAPI.usePrereleases();
|
||||
}
|
||||
|
||||
bool showUpdateDialog() {
|
||||
return _managerAPI.showUpdateDialog();
|
||||
}
|
||||
@ -64,6 +68,45 @@ class SettingsViewModel extends BaseViewModel {
|
||||
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(
|
||||
bool value,
|
||||
BuildContext context,
|
||||
@ -71,63 +114,65 @@ class SettingsViewModel extends BaseViewModel {
|
||||
if (value) {
|
||||
return showDialog(
|
||||
context: context,
|
||||
builder: (context) => AlertDialog(
|
||||
title: Text(t.warning),
|
||||
content: Text(
|
||||
t.settingsView.enablePatchesSelectionWarningText,
|
||||
style: const TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
builder:
|
||||
(context) => AlertDialog(
|
||||
title: Text(t.warning),
|
||||
content: Text(
|
||||
t.settingsView.enablePatchesSelectionWarningText,
|
||||
style: const TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
),
|
||||
),
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
_managerAPI.setChangingToggleModified(true);
|
||||
_managerAPI.setPatchesChangeEnabled(true);
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
child: Text(t.yesButton),
|
||||
),
|
||||
FilledButton(
|
||||
onPressed: () {
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
child: Text(t.noButton),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
_managerAPI.setChangingToggleModified(true);
|
||||
_managerAPI.setPatchesChangeEnabled(true);
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
child: Text(t.yesButton),
|
||||
),
|
||||
FilledButton(
|
||||
onPressed: () {
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
child: Text(t.noButton),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
} else {
|
||||
return showDialog(
|
||||
context: context,
|
||||
builder: (context) => AlertDialog(
|
||||
title: Text(t.warning),
|
||||
content: Text(
|
||||
t.settingsView.disablePatchesSelectionWarningText,
|
||||
style: const TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
builder:
|
||||
(context) => AlertDialog(
|
||||
title: Text(t.warning),
|
||||
content: Text(
|
||||
t.settingsView.disablePatchesSelectionWarningText,
|
||||
style: const TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
),
|
||||
),
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
child: Text(t.noButton),
|
||||
),
|
||||
FilledButton(
|
||||
onPressed: () {
|
||||
_managerAPI.setChangingToggleModified(true);
|
||||
_patchesSelectorViewModel.selectDefaultPatches();
|
||||
_managerAPI.setPatchesChangeEnabled(false);
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
child: Text(t.yesButton),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
child: Text(t.noButton),
|
||||
),
|
||||
FilledButton(
|
||||
onPressed: () {
|
||||
_managerAPI.setChangingToggleModified(true);
|
||||
_patchesSelectorViewModel.selectDefaultPatches();
|
||||
_managerAPI.setPatchesChangeEnabled(false);
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
child: Text(t.yesButton),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -173,31 +218,32 @@ class SettingsViewModel extends BaseViewModel {
|
||||
if (!value) {
|
||||
return showDialog(
|
||||
context: context,
|
||||
builder: (context) => AlertDialog(
|
||||
title: Text(t.warning),
|
||||
content: Text(
|
||||
t.settingsView.requireSuggestedAppVersionDialogText,
|
||||
style: const TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
builder:
|
||||
(context) => AlertDialog(
|
||||
title: Text(t.warning),
|
||||
content: Text(
|
||||
t.settingsView.requireSuggestedAppVersionDialogText,
|
||||
style: const TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
),
|
||||
),
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
_managerAPI.enableRequireSuggestedAppVersionStatus(false);
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
child: Text(t.yesButton),
|
||||
),
|
||||
FilledButton(
|
||||
onPressed: () {
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
child: Text(t.noButton),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
_managerAPI.enableRequireSuggestedAppVersionStatus(false);
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
child: Text(t.yesButton),
|
||||
),
|
||||
FilledButton(
|
||||
onPressed: () {
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
child: Text(t.noButton),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
} else {
|
||||
_managerAPI.enableRequireSuggestedAppVersionStatus(true);
|
||||
@ -249,9 +295,7 @@ class SettingsViewModel extends BaseViewModel {
|
||||
Future<void> importSettings() async {
|
||||
try {
|
||||
final String? result = await FlutterFileDialog.pickFile(
|
||||
params: const OpenFileDialogParams(
|
||||
fileExtensionsFilter: ['json'],
|
||||
),
|
||||
params: const OpenFileDialogParams(fileExtensionsFilter: ['json']),
|
||||
);
|
||||
if (result != null) {
|
||||
final File inFile = File(result);
|
||||
@ -298,9 +342,7 @@ class SettingsViewModel extends BaseViewModel {
|
||||
if (isPatchesChangeEnabled()) {
|
||||
try {
|
||||
final String? result = await FlutterFileDialog.pickFile(
|
||||
params: const OpenFileDialogParams(
|
||||
fileExtensionsFilter: ['json'],
|
||||
),
|
||||
params: const OpenFileDialogParams(fileExtensionsFilter: ['json']),
|
||||
);
|
||||
if (result != null) {
|
||||
final File inFile = File(result);
|
||||
@ -393,8 +435,9 @@ class SettingsViewModel extends BaseViewModel {
|
||||
.replaceAll(':', '')
|
||||
.replaceAll('T', '')
|
||||
.replaceAll('.', '');
|
||||
final File logcat =
|
||||
File('${logDir.path}/revanced-manager_logcat_$dateTime.log');
|
||||
final File logcat = File(
|
||||
'${logDir.path}/revanced-manager_logcat_$dateTime.log',
|
||||
);
|
||||
final String logs = await Logcat.execute();
|
||||
logcat.writeAsStringSync(logs);
|
||||
await Share.shareXFiles([XFile(logcat.path)]);
|
||||
|
@ -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/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_prereleases.dart';
|
||||
|
||||
class SDataSection extends StatelessWidget {
|
||||
const SDataSection({super.key});
|
||||
@ -15,6 +16,7 @@ class SDataSection extends StatelessWidget {
|
||||
title: t.settingsView.dataSectionTitle,
|
||||
children: const <Widget>[
|
||||
SManageApiUrlUI(),
|
||||
SUsePrereleases(),
|
||||
SUseAlternativeSources(),
|
||||
],
|
||||
);
|
||||
|
32
lib/ui/widgets/settingsView/settings_use_prereleases.dart
Normal file
32
lib/ui/widgets/settingsView/settings_use_prereleases.dart
Normal 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(() {});
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
226
pubspec.lock
226
pubspec.lock
@ -34,10 +34,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: args
|
||||
sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6
|
||||
sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.6.0"
|
||||
version: "2.7.0"
|
||||
async:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -74,10 +74,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: build_daemon
|
||||
sha256: "294a2edaf4814a378725bfe6358210196f5ea37af89ecd81bfa32960113d4948"
|
||||
sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.0.3"
|
||||
version: "4.0.4"
|
||||
build_resolvers:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -114,10 +114,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: built_value
|
||||
sha256: "28a712df2576b63c6c005c465989a348604960c0958d28be5303ba9baa841ac2"
|
||||
sha256: "082001b5c3dc495d4a42f1d5789990505df20d8547d42507c29050af6933ee27"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "8.9.3"
|
||||
version: "8.10.1"
|
||||
characters:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -162,10 +162,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: connectivity_plus
|
||||
sha256: "04bf81bb0b77de31557b58d052b24b3eee33f09a6e7a8c68a3e247c7df19ec27"
|
||||
sha256: "051849e2bd7c7b3bc5844ea0d096609ddc3a859890ec3a9ac4a65a2620cc1f99"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.1.3"
|
||||
version: "6.1.4"
|
||||
connectivity_plus_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -210,18 +210,18 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: dart_style
|
||||
sha256: "7856d364b589d1f08986e140938578ed36ed948581fbc3bc9aef1805039ac5ab"
|
||||
sha256: "7306ab8a2359a48d22310ad823521d723acfed60ee1f7e37388e8986853b6820"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.7"
|
||||
version: "2.3.8"
|
||||
dbus:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: dbus
|
||||
sha256: "365c771ac3b0e58845f39ec6deebc76e3276aa9922b0cc60840712094d9047ac"
|
||||
sha256: "79e0c23480ff85dc68de79e2cd6334add97e48f7f4865d17686dd6ea81a47e8c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.7.10"
|
||||
version: "0.7.11"
|
||||
device_apps:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@ -235,10 +235,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: device_info_plus
|
||||
sha256: "306b78788d1bb569edb7c55d622953c2414ca12445b41c9117963e03afc5c513"
|
||||
sha256: "0c6396126421b590089447154c5f98a5de423b70cfb15b1578fd018843ee6f53"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "11.3.3"
|
||||
version: "11.4.0"
|
||||
device_info_plus_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -251,10 +251,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: dio
|
||||
sha256: "5598aa796bbf4699afd5c67c0f5f6e2ed542afc956884b9cd58c306966efc260"
|
||||
sha256: "253a18bbd4851fecba42f7343a1df3a9a4c1d31a2c1b37e221086b4fa8c8dbc9"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.7.0"
|
||||
version: "5.8.0+1"
|
||||
dio_cache_interceptor:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@ -267,10 +267,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: dio_web_adapter
|
||||
sha256: "33259a9276d6cea88774a0000cfae0d861003497755969c92faa223108620dc8"
|
||||
sha256: "7586e476d70caecaf1686d21eee7247ea43ef5c345eab9e0cc3583ff13378d78"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.0"
|
||||
version: "2.1.1"
|
||||
dynamic_color:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@ -299,10 +299,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: fake_async
|
||||
sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44"
|
||||
sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.3"
|
||||
version: "1.3.2"
|
||||
ffi:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -323,10 +323,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: file_picker
|
||||
sha256: "7423298f08f6fc8cce05792bae329f9a93653fc9c08712831b1a55540127995d"
|
||||
sha256: "77f8e81d22d2a07d0dee2c62e1dda71dc1da73bf43bb2d45af09727406167964"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "9.0.2"
|
||||
version: "10.1.9"
|
||||
fixnum:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -405,18 +405,18 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_markdown
|
||||
sha256: e7bbc718adc9476aa14cfddc1ef048d2e21e4e8f18311aaac723266db9f9e7b5
|
||||
sha256: "08fb8315236099ff8e90cb87bb2b935e0a724a3af1623000a9cec930468e0f27"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.7.6+2"
|
||||
version: "0.7.7+1"
|
||||
flutter_plugin_android_lifecycle:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_plugin_android_lifecycle
|
||||
sha256: "615a505aef59b151b46bbeef55b36ce2b6ed299d160c51d84281946f0aa0ce0e"
|
||||
sha256: f948e346c12f8d5480d2825e03de228d0eb8c3a737e4cdaa122267b89c022b5e
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.24"
|
||||
version: "2.0.28"
|
||||
flutter_test:
|
||||
dependency: transitive
|
||||
description: flutter
|
||||
@ -463,10 +463,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: get
|
||||
sha256: e4e7335ede17452b391ed3b2ede016545706c01a02292a6c97619705e7d2a85e
|
||||
sha256: c79eeb4339f1f3deffd9ec912f8a923834bec55f7b49c9e882b8fef2c139d425
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.6.6"
|
||||
version: "4.7.2"
|
||||
get_it:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -479,10 +479,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: glob
|
||||
sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63"
|
||||
sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.2"
|
||||
version: "2.1.3"
|
||||
google_fonts:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@ -503,10 +503,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: http
|
||||
sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010
|
||||
sha256: "2c11f3f94c687ee9bad77c171151672986360b2b001d109814ee7140b2cf261b"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.2"
|
||||
version: "1.4.0"
|
||||
http_multi_server:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -519,10 +519,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: http_parser
|
||||
sha256: "76d306a1c3afb33fe82e2bbacad62a61f409b5634c915fceb0d799de1a913360"
|
||||
sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.1.1"
|
||||
version: "4.1.2"
|
||||
injectable:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@ -543,10 +543,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: intl
|
||||
sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5"
|
||||
sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.20.2"
|
||||
version: "0.19.0"
|
||||
io:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -559,18 +559,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: js
|
||||
sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf
|
||||
sha256: "53385261521cc4a0c4658fd0ad07a7d14591cf8fc33abbceae306ddb974888dc"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.7.1"
|
||||
json2yaml:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: json2yaml
|
||||
sha256: da94630fbc56079426fdd167ae58373286f603371075b69bf46d848d63ba3e51
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.1"
|
||||
version: "0.7.2"
|
||||
json_annotation:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@ -599,10 +591,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: leak_tracker
|
||||
sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0"
|
||||
sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "10.0.9"
|
||||
version: "10.0.8"
|
||||
leak_tracker_flutter_testing:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -623,10 +615,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: lints
|
||||
sha256: "4a16b3f03741e1252fda5de3ce712666d010ba2122f8e912c94f9f7b90e1a4c3"
|
||||
sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.1.0"
|
||||
version: "5.1.1"
|
||||
logcat:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@ -664,10 +656,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: markdown
|
||||
sha256: ef2a1298144e3f985cc736b22e0ccdaf188b5b3970648f2d9dc13efd1d9df051
|
||||
sha256: "935e23e1ff3bc02d390bad4d4be001208ee92cc217cb5b5a6c19bc14aaa318c1"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.2.2"
|
||||
version: "7.3.0"
|
||||
matcher:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -720,10 +712,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: package_config
|
||||
sha256: "92d4488434b520a62570293fbd33bb556c7d49230791c1b4bbd973baf6d2dc67"
|
||||
sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.1"
|
||||
version: "2.2.0"
|
||||
package_info_plus:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@ -760,10 +752,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_android
|
||||
sha256: "4adf4fd5423ec60a29506c76581bc05854c55e3a0b72d35bb28d661c9686edf2"
|
||||
sha256: d0d310befe2c8ab9e7f393288ccbb11b60c019c6b5afc21973eeee4dda2b35e9
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.15"
|
||||
version: "2.2.17"
|
||||
path_provider_foundation:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -800,26 +792,26 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: permission_handler
|
||||
sha256: "59adad729136f01ea9e35a48f5d1395e25cba6cea552249ddbe9cf950f5d7849"
|
||||
sha256: "2d070d8684b68efb580a5997eb62f675e8a885ef0be6e754fb9ef489c177470f"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "11.4.0"
|
||||
version: "12.0.0+1"
|
||||
permission_handler_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: permission_handler_android
|
||||
sha256: d3971dcdd76182a0c198c096b5db2f0884b0d4196723d21a866fc4cdea057ebc
|
||||
sha256: "1e3bc410ca1bf84662104b100eb126e066cb55791b7451307f9708d4007350e6"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "12.1.0"
|
||||
version: "13.0.1"
|
||||
permission_handler_apple:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: permission_handler_apple
|
||||
sha256: f84a188e79a35c687c132a0a0556c254747a08561e99ab933f12f6ca71ef3c98
|
||||
sha256: f000131e755c54cf4d84a5d8bd6e4149e262cc31c5a8b1d698de1ac85fa41023
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "9.4.6"
|
||||
version: "9.4.7"
|
||||
permission_handler_html:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -848,10 +840,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: petitparser
|
||||
sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27
|
||||
sha256: "07c8f0b1913bcde1ff0d26e57ace2f3012ccbf2b204e070290dad3bb22797646"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.0.2"
|
||||
version: "6.1.0"
|
||||
platform:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -880,26 +872,26 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: provider
|
||||
sha256: c8a055ee5ce3fd98d6fc872478b03823ffdb448699c6ebdbbc71d59b596fd48c
|
||||
sha256: "4abbd070a04e9ddc287673bf5a030c7ca8b685ff70218720abab8b092f53dd84"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.1.2"
|
||||
version: "6.1.5"
|
||||
pub_semver:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: pub_semver
|
||||
sha256: "7b3cfbf654f3edd0c6298ecd5be782ce997ddf0e00531b9464b55245185bbbbd"
|
||||
sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.5"
|
||||
version: "2.2.0"
|
||||
pubspec_parse:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: pubspec_parse
|
||||
sha256: c799b721d79eb6ee6fa56f00c04b472dcd44a30d258fac2174a6ec57302678f8
|
||||
sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.0"
|
||||
version: "1.5.0"
|
||||
recase:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -954,18 +946,18 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: shared_preferences
|
||||
sha256: "846849e3e9b68f3ef4b60c60cf4b3e02e9321bc7f4d8c4692cf87ffa82fc8a3a"
|
||||
sha256: "6e8bf70b7fef813df4e9a36f658ac46d107db4b4cfe1048b477d4e453a8159f5"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.5.2"
|
||||
version: "2.5.3"
|
||||
shared_preferences_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_android
|
||||
sha256: "02a7d8a9ef346c9af715811b01fbd8e27845ad2c41148eefd31321471b41863d"
|
||||
sha256: "20cbd561f743a342c76c151d6ddb93a9ce6005751e7aa458baad3858bfbfb6ac"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.0"
|
||||
version: "2.4.10"
|
||||
shared_preferences_foundation:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -994,10 +986,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_web
|
||||
sha256: d2ca4132d3946fec2184261726b355836a82c33d7d5b67af32692aff18a4684e
|
||||
sha256: c49bd060261c9a3f0ff445892695d6212ff603ef3115edbb448509d407600019
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.2"
|
||||
version: "2.4.3"
|
||||
shared_preferences_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -1018,10 +1010,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shelf_web_socket
|
||||
sha256: cc36c297b52866d203dbf9332263c94becc2fe0ceaa9681d07b6ef9807023b67
|
||||
sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.1"
|
||||
version: "3.0.0"
|
||||
skeletons:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@ -1040,18 +1032,18 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: slang
|
||||
sha256: "354283dfe5d6b5bb72d17a52c2acba0ad08c98f8de317a00aa2c801814093982"
|
||||
sha256: "6668a08355b370d5cb5446fc869c4492ed23c6433934fe88228876460fedac22"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.5.0"
|
||||
version: "4.7.2"
|
||||
slang_flutter:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: slang_flutter
|
||||
sha256: "6891526b13641dd2667ce60a9a65ef2c1611f838105396e5e8ad39edc4ecb191"
|
||||
sha256: fff13b6fc8b0378ee23856c4f9fd7f8e2777b430090681f4d19ab14c47de9bc6
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.5.0"
|
||||
version: "4.7.0"
|
||||
source_gen:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -1088,34 +1080,34 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: sqflite
|
||||
sha256: "2d7299468485dca85efeeadf5d38986909c5eb0cd71fd3db2c2f000e6c9454bb"
|
||||
sha256: e2297b1da52f127bc7a3da11439985d9b536f75070f3325e62ada69a5c585d03
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.1"
|
||||
version: "2.4.2"
|
||||
sqflite_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: sqflite_android
|
||||
sha256: "78f489aab276260cdd26676d2169446c7ecd3484bbd5fead4ca14f3ed4dd9ee3"
|
||||
sha256: "2b3070c5fa881839f8b402ee4a39c1b4d561704d4ebbbcfb808a119bc2a1701b"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.0"
|
||||
version: "2.4.1"
|
||||
sqflite_common:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: sqflite_common
|
||||
sha256: "761b9740ecbd4d3e66b8916d784e581861fd3c3553eda85e167bc49fdb68f709"
|
||||
sha256: "84731e8bfd8303a3389903e01fb2141b6e59b5973cacbb0929021df08dddbe8b"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.5.4+6"
|
||||
version: "2.5.5"
|
||||
sqflite_darwin:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: sqflite_darwin
|
||||
sha256: "96a698e2bc82bd770a4d6aab00b42396a7c63d9e33513a56945cbccb594c2474"
|
||||
sha256: "279832e5cde3fe99e8571879498c9211f3ca6391b0d818df4e17d9fff5c6ccb3"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.1"
|
||||
version: "2.4.2"
|
||||
sqflite_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -1225,10 +1217,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: timezone
|
||||
sha256: ffc9d5f4d1193534ef051f9254063fa53d588609418c84299956c3db9383587d
|
||||
sha256: dd14a3b83cfd7cb19e7888f1cbc20f258b8d71b54c06f79ac585f14093a287d1
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.10.0"
|
||||
version: "0.10.1"
|
||||
timing:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -1265,18 +1257,18 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_android
|
||||
sha256: "6fc2f56536ee873eeb867ad176ae15f304ccccc357848b351f6f0d8d4a40d193"
|
||||
sha256: "8582d7f6fe14d2652b4c45c9b6c14c0b678c2af2d083a11b604caeba51930d79"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.3.14"
|
||||
version: "6.3.16"
|
||||
url_launcher_ios:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_ios
|
||||
sha256: "16a513b6c12bb419304e72ea0ae2ab4fed569920d1c7cb850263fe3acc824626"
|
||||
sha256: "7f2022359d4c099eea7df3fdf739f7d3d3b9faf3166fb1dd390775176e0b76cb"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.3.2"
|
||||
version: "6.3.3"
|
||||
url_launcher_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -1305,18 +1297,18 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_web
|
||||
sha256: "772638d3b34c779ede05ba3d38af34657a05ac55b06279ea6edd409e323dca8e"
|
||||
sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.3"
|
||||
version: "2.4.1"
|
||||
url_launcher_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_windows
|
||||
sha256: "44cf3aabcedde30f2dba119a9dea3b0f2672fbe6fa96e85536251d678216b3c4"
|
||||
sha256: "3284b6d2ac454cf34f114e1d3319866fdd1e19cdc329999057e44ffe936cfa77"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.3"
|
||||
version: "3.1.4"
|
||||
uuid:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -1337,26 +1329,26 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: vm_service
|
||||
sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02
|
||||
sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "15.0.0"
|
||||
version: "14.3.1"
|
||||
wakelock_plus:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: wakelock_plus
|
||||
sha256: "36c88af0b930121941345306d259ec4cc4ecca3b151c02e3a9e71aede83c615e"
|
||||
sha256: a474e314c3e8fb5adef1f9ae2d247e57467ad557fa7483a2b895bc1b421c5678
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.10"
|
||||
version: "1.3.2"
|
||||
wakelock_plus_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: wakelock_plus_platform_interface
|
||||
sha256: "70e780bc99796e1db82fe764b1e7dcb89a86f1e5b3afb1db354de50f2e41eb7a"
|
||||
sha256: e10444072e50dbc4999d7316fd303f7ea53d31c824aa5eb05d7ccbdd98985207
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.2"
|
||||
version: "1.2.3"
|
||||
watcher:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -1369,34 +1361,34 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: web
|
||||
sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb
|
||||
sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.0"
|
||||
version: "1.1.1"
|
||||
web_socket:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: web_socket
|
||||
sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83"
|
||||
sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.1.6"
|
||||
version: "1.0.1"
|
||||
web_socket_channel:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: web_socket_channel
|
||||
sha256: "9f187088ed104edd8662ca07af4b124465893caf063ba29758f97af57e61da8f"
|
||||
sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.1"
|
||||
version: "3.0.3"
|
||||
win32:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: win32
|
||||
sha256: b89e6e24d1454e149ab20fbb225af58660f0c0bf4475544650700d8e2da54aef
|
||||
sha256: "329edf97fdd893e0f1e3b9e88d6a0e627128cc17cc316a8d67fda8f1451178ba"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.11.0"
|
||||
version: "5.13.0"
|
||||
win32_registry:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -1425,10 +1417,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: yaml
|
||||
sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5"
|
||||
sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.2"
|
||||
version: "3.1.3"
|
||||
sdks:
|
||||
dart: ">=3.7.0 <4.0.0"
|
||||
flutter: ">=3.29.0"
|
||||
flutter: ">=3.29.3"
|
||||
|
10
pubspec.yaml
10
pubspec.yaml
@ -4,11 +4,11 @@ homepage: https://revanced.app
|
||||
|
||||
publish_to: 'none'
|
||||
|
||||
version: 1.24.1-dev.5+101800060
|
||||
version: 1.25.1+101800065
|
||||
|
||||
environment:
|
||||
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:
|
||||
animations: ^2.0.11
|
||||
@ -24,7 +24,7 @@ dependencies:
|
||||
dynamic_color: ^1.7.0
|
||||
dynamic_themes: ^1.1.0
|
||||
expandable: ^5.0.1
|
||||
file_picker: ^9.0.2
|
||||
file_picker: ^10.1.9
|
||||
flutter:
|
||||
sdk: flutter
|
||||
flutter_background: ^1.3.0+1
|
||||
@ -47,7 +47,7 @@ dependencies:
|
||||
ref: 4a6d5e0e22292c8eb160cfb9365b9ea29735fd43 # Branch: master
|
||||
package_info_plus: ^8.3.0
|
||||
path_provider: ^2.1.5
|
||||
permission_handler: ^11.4.0
|
||||
permission_handler: ^12.0.0
|
||||
root:
|
||||
git:
|
||||
url: https://github.com/validcube/root
|
||||
@ -78,7 +78,7 @@ dependencies:
|
||||
wakelock_plus: ^1.2.10
|
||||
|
||||
dev_dependencies:
|
||||
analyzer: ^6.3.0
|
||||
analyzer: ^6.3.0
|
||||
build_runner: ^2.4.15
|
||||
flutter_lints: ^5.0.0
|
||||
injectable_generator: ^2.6.1
|
||||
|
Reference in New Issue
Block a user