Compare commits

..

897 Commits

Author SHA1 Message Date
c62650bee9 renamed files dir 2025-05-09 15:44:38 -07:00
2de57952a0 Update patcher_api.dart 2025-05-09 10:38:55 -07:00
63f23652a8 Update patcher_api.dart 2025-05-09 09:58:37 -07:00
9687caf342 Merge remote-tracking branch 'origin/dev' into fix/last-app-dir 2025-05-09 09:53:59 -07:00
767fa77436 chore(release): 1.25.0-dev.1 [skip ci]
# [1.25.0-dev.1](https://github.com/ReVanced/revanced-manager/compare/v1.24.1-dev.5...v1.25.0-dev.1) (2025-05-05)

### Bug Fixes

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

### Features

* Add toggle to use pre-releases ([#2485](https://github.com/ReVanced/revanced-manager/issues/2485)) ([89b48ce](89b48cebcf))
2025-05-05 14:15:17 +00:00
89b48cebcf feat: Add toggle to use pre-releases (#2485)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2025-05-05 16:00:41 +02:00
dedcb3c51a fix: Fix installation being cancelled at installation by not prematurely deleting patched APK (#2490) 2025-05-05 15:56:28 +02:00
3074766ff2 fix: Use device locale for app language (Default to English) (#2488) 2025-05-05 15:54:42 +02:00
722f2b645f chore(release): 1.24.1-dev.5 [skip ci]
## [1.24.1-dev.5](https://github.com/ReVanced/revanced-manager/compare/v1.24.1-dev.4...v1.24.1-dev.5) (2025-04-17)

### Bug Fixes

* Use device locale when no preference is set ([#2483](https://github.com/ReVanced/revanced-manager/issues/2483)) ([f79aa9e](f79aa9edd7))
2025-04-17 13:17:52 +00:00
f79aa9edd7 fix: Use device locale when no preference is set (#2483) 2025-04-17 20:06:57 +07:00
5127c7f599 ci: Cache Gradle on PR build 2025-04-16 02:12:11 +07:00
23dcbbecb2 ci: Avoid repository push access token 2025-04-14 19:08:01 +07:00
1c84265dc4 chore: Sync translations (#2384)
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
Co-authored-by: Pun Butrach <pun.butrach@gmail.com>
2025-04-14 18:53:36 +07:00
7ccc689bd3 chore: Modify language assets to match Nuke 2025-04-14 17:50:42 +07:00
007dce800e build: Nuke script now able to remove empty JSON/File 2025-04-14 17:50:15 +07:00
ba758f3d8b ci: Flutter caching for build PR 2025-04-14 17:20:20 +07:00
a1f9a2786f chore: Miscellaneous code clean-up 2025-04-14 17:17:51 +07:00
b11a720621 chore: Remove x86 libaapt2.so binary (#2480) 2025-04-14 17:16:22 +07:00
aedf475310 ci: Use correct directory for Gradle cache 2025-04-14 15:51:28 +07:00
10f35eb727 chore(release): 1.24.1-dev.4 [skip ci]
## [1.24.1-dev.4](https://github.com/ReVanced/revanced-manager/compare/v1.24.1-dev.3...v1.24.1-dev.4) (2025-04-13)

### Bug Fixes

* Log errors and warnings when compiling resources ([5c7d52c](5c7d52c8e9))
2025-04-13 15:48:47 +00:00
5c7d52c8e9 fix: Log errors and warnings when compiling resources 2025-04-13 17:38:20 +02:00
841d61278b chore: Ignore Dart analysis on generated slang file 2025-04-12 01:27:28 +07:00
534e4c2453 ci: Point to Android directory 2025-04-10 23:59:39 +07:00
062f28387f ci: Modernize workflows (#2473)
Co-authored-by: Pun Butrach <pun.butrach@gmail.com>
2025-04-10 23:47:26 +07:00
a8a4ffabed chore(release): 1.24.1-dev.3 [skip ci]
## [1.24.1-dev.3](https://github.com/ReVanced/revanced-manager/compare/v1.24.1-dev.2...v1.24.1-dev.3) (2025-04-10)

### Bug Fixes

* Correct supported required patch option types  ([#2475](https://github.com/ReVanced/revanced-manager/issues/2475)) ([cde3f8d](cde3f8d62c))
2025-04-10 15:26:56 +00:00
cde3f8d62c fix: Correct supported required patch option types (#2475)
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
2025-04-10 22:15:29 +07:00
8182228a46 chore: Default project Flutter devtools options configuration for debugging 2025-04-10 22:08:04 +07:00
7fa5daf623 chore: Remove Android cxx generated file
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
2025-04-10 22:05:38 +07:00
221e663e47 chore(release): 1.24.1-dev.2 [skip ci]
## [1.24.1-dev.2](https://github.com/ReVanced/revanced-manager/compare/v1.24.1-dev.1...v1.24.1-dev.2) (2025-04-09)

### Bug Fixes

* Unable to Share Logs due to missing ProGuard rules ([#2474](https://github.com/ReVanced/revanced-manager/issues/2474)) ([915ec0e](915ec0e260))
2025-04-09 20:20:00 +00:00
915ec0e260 fix: Unable to Share Logs due to missing ProGuard rules (#2474)
Technical commit message: fix: Unable to Share Logs due to CCE in FileProvider

Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
2025-04-10 03:09:15 +07:00
783f313ed8 chore(release): 1.24.1-dev.1 [skip ci]
## [1.24.1-dev.1](https://github.com/ReVanced/revanced-manager/compare/v1.24.0...v1.24.1-dev.1) (2025-04-04)

### Bug Fixes

* Crash using when Integer type in Patch Options ([#2453](https://github.com/ReVanced/revanced-manager/issues/2453)) ([05575cc](05575cccfb))
2025-04-04 16:11:35 +00:00
05575cccfb fix: Crash using when Integer type in Patch Options (#2453) 2025-04-04 22:59:06 +07:00
a8e192b85f chore(release): 1.24.0 [skip ci]
# [1.24.0](https://github.com/ReVanced/revanced-manager/compare/v1.23.3...v1.24.0) (2025-03-07)

### Bug Fixes

* Build failure caused by Internal R8 NPE on field "b" ([08a9d2a](08a9d2a64f))
* Change duplicated app suffix and allow profile variant compilation ([5b6426c](5b6426c453))
* Flutter Impeller renderer causing artifacts on rare occasions ([7462291](746229120c))
* Slight tweak and use Flutter suggested config ([4b7b05a](4b7b05ac0f))

### Features

* Distinguish between release, debug, and profile variants ([64cbb68](64cbb68344))
2025-03-07 17:53:22 +00:00
4b591effed chore: Merge branch dev to main (#2406) 2025-03-08 00:42:05 +07:00
123c51794b chore(release): 1.24.0-dev.1 [skip ci]
# [1.24.0-dev.1](https://github.com/ReVanced/revanced-manager/compare/v1.23.4-dev.1...v1.24.0-dev.1) (2025-03-06)

### Bug Fixes

* Flutter Impeller renderer causing artifacts on rare occasions ([7462291](746229120c))

### Features

* Distinguish between release, debug, and profile variants ([64cbb68](64cbb68344))
2025-03-06 16:56:44 +00:00
53d64a0636 build: Use dependency meant for Stable branch of Flutter
Signed-off-by: validcube <pun.butrach@gmail.com>
2025-03-06 23:44:47 +07:00
64cbb68344 feat: Distinguish between release, debug, and profile variants
Signed-off-by: validcube <pun.butrach@gmail.com>
2025-03-06 23:12:35 +07:00
00950c79f0 build: Bump pubspec dependencies
Signed-off-by: validcube <pun.butrach@gmail.com>
2025-03-06 23:06:09 +07:00
746229120c fix: Flutter Impeller renderer causing artifacts on rare occasions
This sets minimum flutter version to 3.29.0 so that it will discourage any version lower than that.

Signed-off-by: validcube <pun.butrach@gmail.com>
2025-03-06 22:36:06 +07:00
133f6ee28f chore(release): 1.23.4-dev.1 [skip ci]
## [1.23.4-dev.1](https://github.com/ReVanced/revanced-manager/compare/v1.23.3...v1.23.4-dev.1) (2025-03-06)

### Bug Fixes

* Build failure caused by Internal R8 NPE on field "b" ([08a9d2a](08a9d2a64f))
* Change duplicated app suffix and allow profile variant compilation ([5b6426c](5b6426c453))
* Slight tweak and use Flutter suggested config ([4b7b05a](4b7b05ac0f))
2025-03-06 14:56:29 +00:00
08a9d2a64f fix: Build failure caused by Internal R8 NPE on field "b"
See: https://issuetracker.google.com/issues/389508413
2025-03-06 21:45:11 +07:00
4b7b05ac0f fix: Slight tweak and use Flutter suggested config
Signed-off-by: validcube <pun.butrach@gmail.com>
2025-02-15 17:25:29 +07:00
5b6426c453 fix: Change duplicated app suffix and allow profile variant compilation 2025-02-15 13:54:57 +07:00
235489dcdf ci: Use american spelling
ReVanced uses US EN spelling.
2025-02-14 21:35:19 +07:00
b4e5c66f9c ci: Fix commit hash related issues 2025-02-14 21:22:42 +07:00
5c58f624de ci: Cover before build failure and registry authentication 2025-02-14 21:20:47 +07:00
89ad88c0ef ci: Improve build pull request v3 2025-02-14 21:06:18 +07:00
d3036105bb ci: Make attestation runs on every release (stable)
Sometimes build will not be made due to CI Configuration
2025-02-11 19:54:39 +07:00
3e8862ea5a ci: Generate release artifact provenance (#2315) 2025-02-10 19:34:12 +07:00
0c59bbb7be build(deps-dev): bump the npm group with 2 updates (#2404) 2025-02-01 10:23:30 +07:00
f4b279d1fd chore(release): 1.23.3 [skip ci]
## [1.23.3](https://github.com/ReVanced/revanced-manager/compare/v1.23.2...v1.23.3) (2025-01-15)

### Bug Fixes

* Delete cached APK only after successful patch ([#2331](https://github.com/ReVanced/revanced-manager/issues/2331)) ([4ba7ec1](4ba7ec1854))
2025-01-15 15:21:07 +00:00
c652d196fc ci: Move Nuke script to after normalisation 2025-01-15 21:39:44 +07:00
632b9502b2 chore: Sync translations (#2316)
Co-authored-by: Pun Butrach <pun.butrach@gmail.com>
2025-01-15 21:32:42 +07:00
dfb3fe3749 build(deps): bump slang_flutter and slang (#2374)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Pun Butrach <pun.butrach@gmail.com>
2025-01-15 21:15:30 +07:00
b3ba0fcd6a chore: Remove deprecated linter rules 2025-01-03 23:39:32 +07:00
8a98b8448b build(deps-dev): bump semantic-release-pub from 0.9.1 to 0.9.3 in the npm group (#2372)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-01 11:21:20 +07:00
da604e89ac build(deps): bump the pubspec group with 2 updates (#2373)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-01 11:18:54 +07:00
624b43733e chore(release): 1.23.3-dev.1 [skip ci]
## [1.23.3-dev.1](https://github.com/ReVanced/revanced-manager/compare/v1.23.2...v1.23.3-dev.1) (2024-12-24)

### Bug Fixes

* Delete cached APK only after successful patch ([#2331](https://github.com/ReVanced/revanced-manager/issues/2331)) ([4ba7ec1](4ba7ec1854))
2024-12-24 00:59:50 +00:00
4ba7ec1854 fix: Delete cached APK only after successful patch (#2331) 2024-12-24 01:48:57 +01:00
1d6b074856 build(deps): bump the pubspec group with 13 updates (#2338)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Pun Butrach <pun.butrach@gmail.com>
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
2024-12-19 19:35:55 +07:00
695329088b docs: Navigate to next sub-page and explain mounting [skip ci] 2024-12-18 04:18:23 +01:00
f2b20e6e7f build(deps-dev): bump the npm group with 2 updates (#2334)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-01 11:03:14 +07:00
5387fabcee Use permanent path 2024-11-30 14:20:06 -08:00
5cc449d4fb fix: Use cache directory for the last patched app
This should hopefully solve the issue where it can't write the patched app for some reason
2024-11-30 13:52:46 -08:00
a5c3aa3744 chore: Sync translations (#2314) 2024-11-13 22:56:59 +07:00
900058a6e5 chore: Sync translations (#2296) 2024-11-13 22:50:41 +07:00
4c51ad3650 chore(release): 1.23.2 [skip ci]
## [1.23.2](https://github.com/ReVanced/revanced-manager/compare/v1.23.1...v1.23.2) (2024-11-12)

### Bug Fixes

* Handle migration of default URL used in v1.22 as well ([851b06b](851b06b0d2))
2024-11-12 23:45:30 +00:00
a0c2a17bab chore: Merge branch dev to main (#2311) 2024-11-13 00:34:25 +01:00
851b06b0d2 fix: Handle migration of default URL used in v1.22 as well 2024-11-13 00:33:58 +01:00
57018a65df chore(release): 1.23.1 [skip ci]
## [1.23.1](https://github.com/ReVanced/revanced-manager/compare/v1.23.0...v1.23.1) (2024-11-10)
2024-11-10 16:24:53 +00:00
b44419133a build(Needs bump): Put keystore to correct file path 2024-11-10 17:14:10 +01:00
8961cf9044 chore(release): 1.23.0 [skip ci]
# [1.23.0](https://github.com/ReVanced/revanced-manager/compare/v1.22.0...v1.23.0) (2024-11-10)

### Bug Fixes

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

### Features

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

### Performance Improvements

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

### Features

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

### Performance Improvements

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

### Features

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

### Bug Fixes

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

### Features

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

### Bug Fixes

* Don't show toasts when export cancelled ([#2230](https://github.com/ReVanced/revanced-manager/issues/2230)) ([bd79496](bd79496433))
* missing parameter in translations ([1c6c5d5](1c6c5d53ae))

### Features

* Also show new patches in the removed patches dialog ([#2257](https://github.com/ReVanced/revanced-manager/issues/2257)) ([8872165](8872165a99))
2024-10-17 19:10:51 +00:00
1c6c5d53ae fix: missing parameter in translations 2024-10-18 00:02:54 +05:45
1b110e5bd5 fixup: string correction 2024-10-17 22:00:11 +05:45
8872165a99 feat: Also show new patches in the removed patches dialog (#2257)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-10-17 17:48:19 +02:00
bd79496433 fix: Don't show toasts when export cancelled (#2230) 2024-10-17 17:48:04 +02:00
820cd720b5 chore: Modernize project setup
Update dependencies, move to Gradle KTs and overall improve build and project files.
2024-10-06 03:14:12 +02:00
31ff1e0492 chore: Sync translations (#2200) 2024-10-01 00:02:20 +07:00
8b429f03c2 ci: Use the correct expression to grab translation files (#2232) 2024-09-30 23:59:43 +07:00
a68a83940d chore(release): 1.22.1-dev.2 [skip ci]
## [1.22.1-dev.2](https://github.com/ReVanced/revanced-manager/compare/v1.22.1-dev.1...v1.22.1-dev.2) (2024-09-19)

### Bug Fixes

* Get changelogs for alternative sources ([#1766](https://github.com/ReVanced/revanced-manager/issues/1766)) ([c729842](c7298424e5))
* Resolve EACCESS error in special cases ([#2135](https://github.com/ReVanced/revanced-manager/issues/2135)) ([1f95767](1f95767aeb))
2024-09-19 23:07:33 +00:00
1f95767aeb fix: Resolve EACCESS error in special cases (#2135)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-09-20 00:59:27 +02:00
c7298424e5 fix: Get changelogs for alternative sources (#1766) 2024-09-20 00:57:07 +02:00
d53f8cf130 chore(release): 1.22.1-dev.1 [skip ci]
## [1.22.1-dev.1](https://github.com/ReVanced/revanced-manager/compare/v1.22.0...v1.22.1-dev.1) (2024-09-17)

### Bug Fixes

* Fix the connectivity check toast again ([#2216](https://github.com/ReVanced/revanced-manager/issues/2216)) ([a7e2281](a7e2281805))
2024-09-17 12:56:13 +00:00
a7e2281805 fix: Fix the connectivity check toast again (#2216) 2024-09-17 19:48:05 +07:00
0ce23d2d60 chore(release): 1.22.0 [skip ci]
# [1.22.0](https://github.com/ReVanced/revanced-manager/compare/v1.21.2...v1.22.0) (2024-09-09)

### Bug Fixes

* Bump SDK of each plugin using SDK lower than 31 ([01e4a76](01e4a76caa)), closes [/github.com/flutter/flutter/issues/153281#issuecomment-2292201697](https://github.com//github.com/flutter/flutter/issues/153281/issues/issuecomment-2292201697)
* Empty “tmp-XXXXXX” directory keeps growing in cacheDir ([#2194](https://github.com/ReVanced/revanced-manager/issues/2194)) ([f5a12e0](f5a12e01bd))
* Fix missing notification icon when shrinking resouces ([#2195](https://github.com/ReVanced/revanced-manager/issues/2195)) ([224be29](224be29a3d))
* Handle selecting files and folders for patch options correctly ([#2144](https://github.com/ReVanced/revanced-manager/issues/2144)) ([f1c2f41](f1c2f4146c))
* Lack of connectivity toast not showing due to incorrect comparison ([81f05e1](81f05e1b19))
* Migrate to onPopInvokedWithResult ([43d5888](43d5888182))
* Move temporary files outside of the cache directory ([#2193](https://github.com/ReVanced/revanced-manager/issues/2193)) ([1ef1f8d](1ef1f8d47a))
* Reland commit 01e4a76caa06b4ab7934cc786ca57204501dd983 ([3dc695e](3dc695eafb))
* Specify our own FGS Type ([37c912b](37c912b598))

### Features

* Improve "Installation incompatible" dialog message ([#2164](https://github.com/ReVanced/revanced-manager/issues/2164)) ([51c0f14](51c0f14055))
* Support Flutter 3.24 ([3d8318d](3d8318da14))
2024-09-09 10:59:13 +00:00
d0fe57970f chore: Merge branch dev to main (#2149) 2024-09-09 13:51:11 +03:00
4dcdc57ffd chore(release): 1.22.0-dev.4 [skip ci]
# [1.22.0-dev.4](https://github.com/ReVanced/revanced-manager/compare/v1.22.0-dev.3...v1.22.0-dev.4) (2024-09-09)

### Bug Fixes

* Move temporary files outside of the cache directory ([#2193](https://github.com/ReVanced/revanced-manager/issues/2193)) ([1ef1f8d](1ef1f8d47a))
2024-09-09 10:50:05 +00:00
1ef1f8d47a fix: Move temporary files outside of the cache directory (#2193)
Co-authored-by: Pun Butrach <pun.butrach@gmail.com>
2024-09-09 17:42:03 +07:00
d688f38a63 chore: Sync translations (#2166)
Signed-off-by: validcube <pun.butrach@gmail.com>
Co-authored-by: validcube <pun.butrach@gmail.com>
2024-09-09 14:14:59 +07:00
582db18d83 chore(release): 1.22.0-dev.3 [skip ci]
# [1.22.0-dev.3](https://github.com/ReVanced/revanced-manager/compare/v1.22.0-dev.2...v1.22.0-dev.3) (2024-09-07)

### Bug Fixes

* Empty “tmp-XXXXXX” directory keeps growing in cacheDir ([#2194](https://github.com/ReVanced/revanced-manager/issues/2194)) ([f5a12e0](f5a12e01bd))
2024-09-07 03:09:04 +00:00
f5a12e01bd fix: Empty “tmp-XXXXXX” directory keeps growing in cacheDir (#2194) 2024-09-07 09:59:37 +07:00
09fd9c4e04 chore(release): 1.22.0-dev.2 [skip ci]
# [1.22.0-dev.2](https://github.com/ReVanced/revanced-manager/compare/v1.22.0-dev.1...v1.22.0-dev.2) (2024-09-06)

### Bug Fixes

* Bump SDK of each plugin using SDK lower than 31 ([01e4a76](01e4a76caa)), closes [/github.com/flutter/flutter/issues/153281#issuecomment-2292201697](https://github.com//github.com/flutter/flutter/issues/153281/issues/issuecomment-2292201697)
* Fix missing notification icon when shrinking resouces ([#2195](https://github.com/ReVanced/revanced-manager/issues/2195)) ([224be29](224be29a3d))
* Lack of connectivity toast not showing due to incorrect comparison ([81f05e1](81f05e1b19))
* Migrate to onPopInvokedWithResult ([43d5888](43d5888182))
* Reland commit 01e4a76caa06b4ab7934cc786ca57204501dd983 ([3dc695e](3dc695eafb))
* Specify our own FGS Type ([37c912b](37c912b598))

### Features

* Support Flutter 3.24 ([3d8318d](3d8318da14))
2024-09-06 14:53:03 +00:00
43d5888182 fix: Migrate to onPopInvokedWithResult
Reference: https://docs.flutter.dev/release/breaking-changes/popscope-with-result
Signed-off-by: validcube <pun.butrach@gmail.com>
2024-09-06 21:44:56 +07:00
646feae0ec build: Bump dependency and resolve removed function(s)
Signed-off-by: validcube <pun.butrach@gmail.com>
2024-09-06 21:44:55 +07:00
e73ce99f1d build: Restrict Flutter 4.0.0
Signed-off-by: validcube <pun.butrach@gmail.com>
2024-09-06 21:44:55 +07:00
af2d8226de docs: Specify Android 8.x version & CPU arch requirements
Signed-off-by: validcube <pun.butrach@gmail.com>
2024-09-06 21:44:55 +07:00
37c912b598 fix: Specify our own FGS Type
Signed-off-by: validcube <pun.butrach@gmail.com>
2024-09-06 21:44:54 +07:00
3102272a31 build: Reduce clutter in buildTypes
Signed-off-by: validcube <pun.butrach@gmail.com>
2024-09-06 21:44:54 +07:00
3dc695eafb fix: Reland commit 01e4a76caa06b4ab7934cc786ca57204501dd983
Amended: Remove secret @ Fri Sep 6 21:06:58 2024 +0700

Signed-off-by: validcube <pun.butrach@gmail.com>
2024-09-06 21:44:33 +07:00
6f0721b066 chore: Temporary disable workaround for testing
The local enviroment deemed unreliable, before applying it doesn't work - after applying the workaround, it work - after removing the workaround with clearing cache, it doesn't work. (what?)

Signed-off-by: validcube <pun.butrach@gmail.com>
2024-09-06 20:52:21 +07:00
3dfe6b1080 ci: Attempt to group all dependabot dependency update
Signed-off-by: validcube <pun.butrach@gmail.com>
2024-09-06 20:44:40 +07:00
02e5641227 build: Bump Gradle to v8.10
Signed-off-by: validcube <pun.butrach@gmail.com>
2024-09-06 20:18:53 +07:00
01e4a76caa fix: Bump SDK of each plugin using SDK lower than 31
Reference: https://github.com/flutter/flutter/issues/153281#issuecomment-2292201697
Signed-off-by: validcube <pun.butrach@gmail.com>
2024-09-06 20:12:01 +07:00
59838a51ca ci: Potientially improve Gradle detection
Signed-off-by: validcube <pun.butrach@gmail.com>
2024-09-06 19:27:55 +07:00
224be29a3d fix: Fix missing notification icon when shrinking resouces (#2195) 2024-09-06 18:10:30 +07:00
921052acce build(deps): bump burrunan/gradle-cache-action from 1 to 2 (#2177)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-03 06:02:32 +07:00
81f05e1b19 fix: Lack of connectivity toast not showing due to incorrect comparison
Signed-off-by: validcube <pun.butrach@gmail.com>
2024-08-28 00:26:41 +07:00
b769a66d16 chore: Sync translations (#2090)
Signed-off-by: validcube <pun.butrach@gmail.com>
Co-authored-by: validcube <pun.butrach@gmail.com>
2024-08-27 22:01:29 +07:00
5d612fe790 ci: Run nuke in correct steps 2024-08-27 21:11:52 +07:00
61251deffa ci: Fix permission not given to Slang 2024-08-27 21:09:33 +07:00
f2931443d9 ci: Fix translation normalization feature (#2165) 2024-08-27 21:04:15 +07:00
3d8318da14 feat: Support Flutter 3.24
Signed-off-by: validcube <pun.butrach@gmail.com>
2024-08-27 21:01:41 +07:00
f6bfe0d3f9 chore(release): 1.22.0-dev.1 [skip ci]
# [1.22.0-dev.1](https://github.com/ReVanced/revanced-manager/compare/v1.21.3-dev.1...v1.22.0-dev.1) (2024-08-27)

### Features

* Improve "Installation incompatible" dialog message ([#2164](https://github.com/ReVanced/revanced-manager/issues/2164)) ([51c0f14](51c0f14055))
2024-08-27 08:07:13 +00:00
51c0f14055 feat: Improve "Installation incompatible" dialog message (#2164) 2024-08-27 09:59:18 +02:00
2a6dc09a9b chore(release): 1.21.3-dev.1 [skip ci]
## [1.21.3-dev.1](https://github.com/ReVanced/revanced-manager/compare/v1.21.2...v1.21.3-dev.1) (2024-08-18)

### Bug Fixes

* Handle selecting files and folders for patch options correctly ([#2144](https://github.com/ReVanced/revanced-manager/issues/2144)) ([f1c2f41](f1c2f4146c))
2024-08-18 08:19:05 +00:00
f1c2f4146c fix: Handle selecting files and folders for patch options correctly (#2144) 2024-08-18 12:11:10 +04:00
2f46b3c84e chore(release): 1.21.2 [skip ci]
## [1.21.2](https://github.com/ReVanced/revanced-manager/compare/v1.21.1...v1.21.2) (2024-08-11)

### Bug Fixes

* Add haptics to save last APK switch ([#2133](https://github.com/ReVanced/revanced-manager/issues/2133)) ([e063b3d](e063b3d102))
* Don't crash installation when saving last APK is disabled ([#2128](https://github.com/ReVanced/revanced-manager/issues/2128)) ([427928e](427928e542))
* Don't crash when installing the last patched APK ([#2131](https://github.com/ReVanced/revanced-manager/issues/2131)) ([cb722f2](cb722f2634))
* Unable to scroll in the removed patches dialog ([#2113](https://github.com/ReVanced/revanced-manager/issues/2113)) ([295c5a7](295c5a74ea))
2024-08-11 16:08:42 +00:00
5f388abf95 chore: Merge branch dev to main (#2118) 2024-08-11 09:00:47 -07:00
7acdb8e660 chore(release): 1.21.2-dev.3 [skip ci]
## [1.21.2-dev.3](https://github.com/ReVanced/revanced-manager/compare/v1.21.2-dev.2...v1.21.2-dev.3) (2024-08-11)

### Bug Fixes

* Add haptics to save last APK switch ([#2133](https://github.com/ReVanced/revanced-manager/issues/2133)) ([e063b3d](e063b3d102))
* Don't crash when installing the last patched APK ([#2131](https://github.com/ReVanced/revanced-manager/issues/2131)) ([cb722f2](cb722f2634))
2024-08-11 15:59:16 +00:00
e063b3d102 fix: Add haptics to save last APK switch (#2133) 2024-08-11 08:51:18 -07:00
cb722f2634 fix: Don't crash when installing the last patched APK (#2131) 2024-08-11 08:51:02 -07:00
0499d2b08a chore(release): 1.21.2-dev.2 [skip ci]
## [1.21.2-dev.2](https://github.com/ReVanced/revanced-manager/compare/v1.21.2-dev.1...v1.21.2-dev.2) (2024-08-11)

### Bug Fixes

* Don't crash installation when saving last APK is disabled ([#2128](https://github.com/ReVanced/revanced-manager/issues/2128)) ([427928e](427928e542))
2024-08-11 15:39:29 +00:00
427928e542 fix: Don't crash installation when saving last APK is disabled (#2128) 2024-08-11 19:31:18 +04:00
ceb9d66f17 chore(release): 1.21.2-dev.1 [skip ci]
## [1.21.2-dev.1](https://github.com/ReVanced/revanced-manager/compare/v1.21.1...v1.21.2-dev.1) (2024-08-06)

### Bug Fixes

* Unable to scroll in the removed patches dialog ([#2113](https://github.com/ReVanced/revanced-manager/issues/2113)) ([295c5a7](295c5a74ea))
2024-08-06 00:55:10 +00:00
295c5a74ea fix: Unable to scroll in the removed patches dialog (#2113) 2024-08-06 03:46:01 +03:00
400df69528 chore(release): 1.21.1 [skip ci]
## [1.21.1](https://github.com/ReVanced/revanced-manager/compare/v1.21.0...v1.21.1) (2024-07-29)

### Bug Fixes

* Revert commit b26760b2 to fix file and folder selection ([e707e51](e707e51719))
2024-07-29 20:47:18 +00:00
5bc7b135d5 chore: Merge branch dev to main (#2092) 2024-07-30 02:22:56 +05:45
6dce353d78 chore(release): 1.21.1-dev.1 [skip ci]
## [1.21.1-dev.1](https://github.com/ReVanced/revanced-manager/compare/v1.21.0...v1.21.1-dev.1) (2024-07-29)

### Bug Fixes

* Revert commit b26760b2 to fix file and folder selection ([e707e51](e707e51719))
2024-07-29 20:12:35 +00:00
e707e51719 fix: Revert commit b26760b2 to fix file and folder selection 2024-07-29 22:00:25 +02:00
1cea9600a2 chore(release): 1.21.0 [skip ci]
# [1.21.0](https://github.com/ReVanced/revanced-manager/compare/v1.20.1...v1.21.0) (2024-07-29)

### Bug Fixes

* Add missing import to patch options field ([d60f9aa](d60f9aa1d8))
* Adjust scroll from clipping children form fields in `AlertDialog` from `showSourcesDialog` ([#1782](https://github.com/ReVanced/revanced-manager/issues/1782)) ([bbeb836](bbeb836923))
* Cache external API calls  ([#1911](https://github.com/ReVanced/revanced-manager/issues/1911)) ([2c3e2e6](2c3e2e639f))
* Change problematic translation string ([6b03f3a](6b03f3a169))
* Correct architecture to armeabi-v7a ([63c6412](63c6412736))
* Download latest integrations non-pre-release ([4a72267](4a72267d41))
* Follow language update immediately ([#1944](https://github.com/ReVanced/revanced-manager/issues/1944)) ([c13827e](c13827e8e1))
* Follow system theme immediately ([#1942](https://github.com/ReVanced/revanced-manager/issues/1942)) ([694f2a9](694f2a9fae))
* Handle selecting files and folders for patch options correctly ([#1941](https://github.com/ReVanced/revanced-manager/issues/1941)) ([b26760b](b26760b216))
* Increase dashboard RefreshIndicator edge offset ([#1859](https://github.com/ReVanced/revanced-manager/issues/1859)) ([232b702](232b702789))
* Patching Screen draw-behind Navigation Bar ([#1945](https://github.com/ReVanced/revanced-manager/issues/1945)) ([f1b25d0](f1b25d09da))
* Restore consistency with the app ([ea9654e](ea9654edec))
* SecurityException when patching application ([#1856](https://github.com/ReVanced/revanced-manager/issues/1856)) ([e0a6de2](e0a6de2c2b))
* Select previously applied patches when loading patch selection ([#1865](https://github.com/ReVanced/revanced-manager/issues/1865)) ([7ef8f04](7ef8f0454b))
* Unable to install application regardless of preference ([c7627ce](c7627ced8e))
* Unsupported patch toast says "patchItem.unsupportedPatchVersion" ([#2011](https://github.com/ReVanced/revanced-manager/issues/2011)) ([3209c0e](3209c0e430))
* Update dialog shows dev version & loading gets stuck in certain circumstances ([#1792](https://github.com/ReVanced/revanced-manager/issues/1792)) ([fc52560](fc52560244))

### Features

* Add ability to set `null` in patch options ([#1947](https://github.com/ReVanced/revanced-manager/issues/1947)) ([5c68d51](5c68d513a3))
* Include primary architecture in external search ([#2068](https://github.com/ReVanced/revanced-manager/issues/2068)) ([23690a9](23690a98df))
* open browser when clicking on changelog link ([bc300d8](bc300d81d9))
* Save last patched app ([#1414](https://github.com/ReVanced/revanced-manager/issues/1414)) ([7720408](77204087bb))
* Support patching on ARMv7a ([a766352](a7663524e6))
2024-07-29 18:38:53 +00:00
d81808ad7b chore: Merge branch dev to main (#1857) 2024-07-30 01:30:51 +07:00
ea9654edec fix: Restore consistency with the app 2024-07-30 01:30:59 +07:00
ced37f7c76 chore(release): 1.21.0-dev.9 [skip ci]
# [1.21.0-dev.9](https://github.com/ReVanced/revanced-manager/compare/v1.21.0-dev.8...v1.21.0-dev.9) (2024-07-29)

### Bug Fixes

* Patching Screen draw-behind Navigation Bar ([#1945](https://github.com/ReVanced/revanced-manager/issues/1945)) ([f1b25d0](f1b25d09da))
2024-07-29 18:24:51 +00:00
4c6e214bf6 refactor: Remove empty keys 2024-07-30 01:16:48 +07:00
d10abd4829 ci: Remove redundancy 2024-07-30 01:15:23 +07:00
25f1640fd6 ci: Remove empty value 2024-07-30 01:13:05 +07:00
5690adc0de chore: Sync translations (#2005) 2024-07-30 01:02:02 +07:00
f1b25d09da fix: Patching Screen draw-behind Navigation Bar (#1945)
Co-authored-by: surya-technovert <surya.m@technovert.com>
2024-07-30 00:58:40 +07:00
96a21a5564 chore(release): 1.21.0-dev.8 [skip ci]
# [1.21.0-dev.8](https://github.com/ReVanced/revanced-manager/compare/v1.21.0-dev.7...v1.21.0-dev.8) (2024-07-29)

### Bug Fixes

* Correct architecture to armeabi-v7a ([63c6412](63c6412736))
* Unable to install application regardless of preference ([c7627ce](c7627ced8e))

### Features

* Support patching on ARMv7a ([a766352](a7663524e6))
2024-07-29 17:51:14 +00:00
0b21bb9807 build: Allocate more memory 2024-07-30 00:43:25 +07:00
557ee8d472 ci: Fix accident 2024-07-30 00:22:22 +07:00
6da3751a8a ci: Don't include Slang's analyser generated file 2024-07-30 00:17:29 +07:00
cf708de005 ci: Remove deleted strings from translated file 2024-07-30 00:12:43 +07:00
b649c4539f chore: Remove all long forever deleted translated strings 2024-07-30 00:11:09 +07:00
c63342bc21 chore: Normalise all translated strings 2024-07-30 00:03:06 +07:00
9f56b277ca ci: Use Slang's Normalisation feature 2024-07-30 00:03:06 +07:00
73c92b9c72 build: Update multiple dependencies at once
Signed-off-by: validcube <pun.butrach@gmail.com>
2024-07-30 00:03:06 +07:00
c7627ced8e fix: Unable to install application regardless of preference
Signed-off-by: validcube <pun.butrach@gmail.com>
2024-07-30 00:03:06 +07:00
63c6412736 fix: Correct architecture to armeabi-v7a
Signed-off-by: validcube <pun.butrach@gmail.com>
2024-07-30 00:03:05 +07:00
a7663524e6 feat: Support patching on ARMv7a
Signed-off-by: validcube <pun.butrach@gmail.com>
2024-07-30 00:03:05 +07:00
65feb34242 chore(release): 1.21.0-dev.7 [skip ci]
# [1.21.0-dev.7](https://github.com/ReVanced/revanced-manager/compare/v1.21.0-dev.6...v1.21.0-dev.7) (2024-07-29)

### Features

* Include primary architecture in external search ([#2068](https://github.com/ReVanced/revanced-manager/issues/2068)) ([23690a9](23690a98df))
2024-07-29 16:04:12 +00:00
23690a98df feat: Include primary architecture in external search (#2068) 2024-07-29 22:56:00 +07:00
7449d4e318 docs: Link user to the latest version of app (#2077) 2024-07-25 09:27:29 +07:00
c6f9e36f4b refactor: Migrate deprecated member 2024-07-13 17:32:34 +07:00
e9cee0abe2 ci: Prefer installing NPM dependencies from lock 2024-07-13 17:04:43 +07:00
9440f23b55 chore: Remove NDK constraint (#2016)
Co-authored-by: Pun Butrach <pun.butrach@gmail.com>
2024-07-13 16:55:02 +07:00
c67b4b438c build(deps): bump flutter_markdown from 0.7.1 to 0.7.3 (#2022)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-12 14:07:16 +07:00
1bdb820aed refactor: Remove unused strings (#2010) 2024-07-11 11:28:02 +07:00
a28d77bc65 chore(release): 1.21.0-dev.6 [skip ci]
# [1.21.0-dev.6](https://github.com/ReVanced/revanced-manager/compare/v1.21.0-dev.5...v1.21.0-dev.6) (2024-06-30)

### Bug Fixes

* Add missing import to patch options field ([d60f9aa](d60f9aa1d8))
* Follow system theme immediately ([#1942](https://github.com/ReVanced/revanced-manager/issues/1942)) ([694f2a9](694f2a9fae))
* Handle selecting files and folders for patch options correctly ([#1941](https://github.com/ReVanced/revanced-manager/issues/1941)) ([b26760b](b26760b216))
* Increase dashboard RefreshIndicator edge offset ([#1859](https://github.com/ReVanced/revanced-manager/issues/1859)) ([232b702](232b702789))
* Select previously applied patches when loading patch selection ([#1865](https://github.com/ReVanced/revanced-manager/issues/1865)) ([7ef8f04](7ef8f0454b))
* Unsupported patch toast says "patchItem.unsupportedPatchVersion" ([#2011](https://github.com/ReVanced/revanced-manager/issues/2011)) ([3209c0e](3209c0e430))

### Features

* Save last patched app ([#1414](https://github.com/ReVanced/revanced-manager/issues/1414)) ([7720408](77204087bb))
2024-06-30 20:45:38 +00:00
d60f9aa1d8 fix: Add missing import to patch options field
Patch options fields was missing the `patch_options_viewmodel` import, preventing building to complete successfully
2024-06-30 13:38:01 -07:00
3209c0e430 fix: Unsupported patch toast says "patchItem.unsupportedPatchVersion" (#2011) 2024-06-30 15:24:25 +07:00
7ef8f0454b fix: Select previously applied patches when loading patch selection (#1865) 2024-06-29 14:40:20 +02:00
232b702789 fix: Increase dashboard RefreshIndicator edge offset (#1859) 2024-06-29 14:40:04 +02:00
694f2a9fae fix: Follow system theme immediately (#1942)
Co-authored-by: surya-technovert <surya.m@technovert.com>
2024-06-29 14:39:00 +02:00
77204087bb feat: Save last patched app (#1414)
Co-authored-by: aAbed <39409020+TheAabedKhan@users.noreply.github.com>
Co-authored-by: Ushie <ushiekane@gmail.com>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
Co-authored-by: Mr. X <79870712+n30mrx@users.noreply.github.com>
Co-authored-by: festry0 <153519925+festry0@users.noreply.github.com>
2024-06-29 14:38:00 +02:00
b26760b216 fix: Handle selecting files and folders for patch options correctly (#1941) 2024-06-29 14:34:34 +02:00
3c36950aeb chore(release): 1.21.0-dev.5 [skip ci]
# [1.21.0-dev.5](https://github.com/ReVanced/revanced-manager/compare/v1.21.0-dev.4...v1.21.0-dev.5) (2024-06-26)

### Bug Fixes

* Adjust scroll from clipping children form fields in `AlertDialog` from `showSourcesDialog` ([#1782](https://github.com/ReVanced/revanced-manager/issues/1782)) ([bbeb836](bbeb836923))
2024-06-26 22:53:56 +00:00
bbeb836923 fix: Adjust scroll from clipping children form fields in AlertDialog from showSourcesDialog (#1782) 2024-06-27 05:45:55 +07:00
a99406f0a9 chore(release): 1.21.0-dev.4 [skip ci]
# [1.21.0-dev.4](https://github.com/ReVanced/revanced-manager/compare/v1.21.0-dev.3...v1.21.0-dev.4) (2024-06-24)

### Bug Fixes

* Cache external API calls  ([#1911](https://github.com/ReVanced/revanced-manager/issues/1911)) ([2c3e2e6](2c3e2e639f))
* Follow language update immediately ([#1944](https://github.com/ReVanced/revanced-manager/issues/1944)) ([c13827e](c13827e8e1))
* SecurityException when patching application ([#1856](https://github.com/ReVanced/revanced-manager/issues/1856)) ([e0a6de2](e0a6de2c2b))
* Update dialog shows dev version & loading gets stuck in certain circumstances ([#1792](https://github.com/ReVanced/revanced-manager/issues/1792)) ([fc52560](fc52560244))

### Features

* Add ability to set `null` in patch options ([#1947](https://github.com/ReVanced/revanced-manager/issues/1947)) ([5c68d51](5c68d513a3))
2024-06-24 17:03:46 +00:00
73368b58be build: Support for Flutter 3.22 (#1921)
Signed-off-by: validcube <pun.butrach@gmail.com>
2024-06-24 23:55:37 +07:00
ca14e77ba3 chore: Sync translations (#1899) 2024-06-24 23:55:03 +07:00
cafdfcda47 ci: Don't fail validation on unimportant warnings 2024-06-24 23:52:23 +07:00
5c68d513a3 feat: Add ability to set null in patch options (#1947) 2024-06-24 23:37:16 +07:00
fc52560244 fix: Update dialog shows dev version & loading gets stuck in certain circumstances (#1792)
Signed-off-by: validcube <pun.butrach@gmail.com>
Co-authored-by: validcube <pun.butrach@gmail.com>
2024-06-19 14:44:09 +07:00
46f6a49a7a ci: Always run on dev branch only 2024-06-15 17:36:25 +07:00
c13827e8e1 fix: Follow language update immediately (#1944)
Co-authored-by: surya-technovert <surya.m@technovert.com>
2024-06-15 17:21:47 +07:00
e0a6de2c2b fix: SecurityException when patching application (#1856) 2024-05-28 11:36:31 +07:00
afdba00722 build: Fix invalid Gradle wrapper checksum (#1919) 2024-05-28 09:31:48 +07:00
9084c71aa3 build: Bump dependencies 2024-05-26 01:21:14 +02:00
8fc5fb6a80 docs: Improve issue templates 2024-05-26 00:43:38 +02:00
5f762c5442 build: Update Dart dependencies
Signed-off-by: validcube <pun.butrach@gmail.com>
2024-05-19 19:15:35 +07:00
8b21ec1ea3 ci: Switch to Flutter instead 2024-05-19 18:54:48 +07:00
e83fbb864e ci: Run slang first before validating translation 2024-05-19 18:46:49 +07:00
f03af17f71 docs: Fix issue template mistakes (#1910) 2024-05-19 01:33:18 +07:00
2c3e2e639f fix: Cache external API calls (#1911) 2024-05-18 10:52:13 -07:00
cc85b393dc docs: Fix punctuation in issue forms (#1909) 2024-05-18 01:18:29 +07:00
fa6ad214f9 chore(release): 1.21.0-dev.3 [skip ci]
# [1.21.0-dev.3](https://github.com/ReVanced/revanced-manager/compare/v1.21.0-dev.2...v1.21.0-dev.3) (2024-05-07)

### Bug Fixes

* Change problematic translation string ([6b03f3a](6b03f3a169))
2024-05-07 14:01:16 +00:00
3ceb63be1d build: Downgrade intl to 0.18.1
1.19.0 is for beta channel atm
2024-05-07 20:53:43 +07:00
200483d733 ci: Always validate Dart file during translation 2024-05-07 20:51:34 +07:00
6b03f3a169 fix: Change problematic translation string 2024-05-07 20:51:01 +07:00
612a3bab49 build: Safely upgrade dependencies 2024-05-07 20:50:26 +07:00
3ac08512f3 chore: Sync translations (#1888)
Co-authored-by: Pun Butrach <pun.butrach@gmail.com>
2024-05-06 21:24:51 +07:00
1adc673c44 chore: Sync translations (#1842) 2024-04-29 10:24:25 +07:00
1aa1bd84cf chore(release): 1.21.0-dev.2 [skip ci]
# [1.21.0-dev.2](https://github.com/ReVanced/revanced-manager/compare/v1.21.0-dev.1...v1.21.0-dev.2) (2024-04-28)

### Bug Fixes

* Download latest integrations non-pre-release ([4a72267](4a72267d41))
2024-04-28 21:49:47 +00:00
4a72267d41 fix: Download latest integrations non-pre-release 2024-04-28 23:40:28 +02:00
7e0f18e3b7 build: Bump dependencies 2024-04-28 23:39:20 +02:00
aab5d4411b docs: Remove duplicate section in README (#1879)
[skip ci]
2024-04-23 18:29:06 +02:00
e5d83f424a chore(release): 1.21.0-dev.1 [skip ci]
# [1.21.0-dev.1](https://github.com/ReVanced/revanced-manager/compare/v1.20.1...v1.21.0-dev.1) (2024-04-16)

### Features

* open browser when clicking on changelog link ([bc300d8](bc300d81d9))
2024-04-16 14:39:51 +00:00
bc300d81d9 feat: open browser when clicking on changelog link 2024-04-16 20:00:46 +05:30
5e6cc86c7e build(deps-dev): bump semantic-release from 23.0.6 to 23.0.7 (#1844)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-05 14:57:28 +07:00
d91ea62903 build(deps): bump flutter_local_notifications from 16.3.2 to 17.0.0 (#1848)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-05 14:57:16 +07:00
f00dc4d3e6 build(deps): bump flutter_markdown from 0.6.20+1 to 0.6.22+1 (#1851)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-05 14:55:48 +07:00
6c0c961ca0 build(deps): bump build_runner from 2.4.8 to 2.4.9 (#1850)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-05 14:54:31 +07:00
a99de99202 build(deps): bump share_plus from 7.2.2 to 8.0.2 (#1853)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-05 14:53:59 +07:00
a31ec9d1fe build(deps): bump permission_handler from 11.3.0 to 11.3.1 (#1852)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-05 14:53:30 +07:00
a23f032fd2 chore(release): 1.20.1 [skip ci]
## [1.20.1](https://github.com/ReVanced/revanced-manager/compare/v1.20.0...v1.20.1) (2024-04-05)

### Bug Fixes

* Don't crash on patch ([a7e481c](a7e481c827))
2024-04-05 02:52:15 +00:00
95a8234e2d chore: Merge branch dev to main (#1855) 2024-04-05 05:43:17 +03:00
a7e481c827 fix: Don't crash on patch
This reverts commit 7833a0d552d05946f50434e799c46272e6eb30a3.
2024-04-05 05:35:36 +03:00
975870e254 chore(release): 1.20.0 [skip ci]
# [1.20.0](https://github.com/ReVanced/revanced-manager/compare/v1.19.3...v1.20.0) (2024-04-05)

### Bug Fixes

* disable proguard obfuscation ([401646a](401646ace4))
* Do not crash when selecting an APK from storage ([#1768](https://github.com/ReVanced/revanced-manager/issues/1768)) ([8564c1a](8564c1a72e))
* Don't translation ReVanced repository ([c265794](c265794d0e))
* Ensure safe area usage in Changelogs Modal Bottom Sheet ([#1772](https://github.com/ReVanced/revanced-manager/issues/1772)) ([c981cb4](c981cb4a41))
* Pre-releases changelog being shown ([#1767](https://github.com/ReVanced/revanced-manager/issues/1767)) ([add49e1](add49e14fb))
* Replace Spacer with Expanded to avoid overflow ([#1791](https://github.com/ReVanced/revanced-manager/issues/1791)) ([6f70a07](6f70a07970))
* Set text colour on dropdown menu for Custom Value ([966796d](966796dfec)), closes [#1584](https://github.com/ReVanced/revanced-manager/issues/1584)
* **ui:** Support free-scroll and auto-scroll for the installer logs ([#1736](https://github.com/ReVanced/revanced-manager/issues/1736)) ([#1836](https://github.com/ReVanced/revanced-manager/issues/1836)) ([025ff52](025ff527ee))

### Features

* Improve language update settings ([#1838](https://github.com/ReVanced/revanced-manager/issues/1838)) ([f9e6ef3](f9e6ef3fd3))
2024-04-05 01:19:30 +00:00
b7c838fd25 chore: Merge branch dev to main (#1763) 2024-04-05 04:11:17 +03:00
3776674eb4 chore(release): 1.20.0-dev.1 [skip ci]
# [1.20.0-dev.1](https://github.com/ReVanced/revanced-manager/compare/v1.19.4-dev.7...v1.20.0-dev.1) (2024-04-05)

### Bug Fixes

* Do not crash when selecting an APK from storage ([#1768](https://github.com/ReVanced/revanced-manager/issues/1768)) ([8564c1a](8564c1a72e))

### Features

* Improve language update settings ([#1838](https://github.com/ReVanced/revanced-manager/issues/1838)) ([f9e6ef3](f9e6ef3fd3))
2024-04-05 01:10:39 +00:00
4293e27681 chore: Sync translations (#1804) 2024-04-05 04:03:11 +03:00
8564c1a72e fix: Do not crash when selecting an APK from storage (#1768) 2024-04-05 03:58:59 +03:00
f9e6ef3fd3 feat: Improve language update settings (#1838) 2024-04-05 03:55:16 +03:00
e80ee09893 chore(release): 1.19.4-dev.7 [skip ci]
## [1.19.4-dev.7](https://github.com/ReVanced/revanced-manager/compare/v1.19.4-dev.6...v1.19.4-dev.7) (2024-04-04)

### Bug Fixes

* **ui:** Support free-scroll and auto-scroll for the installer logs ([#1736](https://github.com/ReVanced/revanced-manager/issues/1736)) ([#1836](https://github.com/ReVanced/revanced-manager/issues/1836)) ([025ff52](025ff527ee))
2024-04-04 02:35:20 +00:00
025ff527ee fix(ui): Support free-scroll and auto-scroll for the installer logs (#1736) (#1836) 2024-04-04 09:27:47 +07:00
35fdbb5988 chore(release): 1.19.4-dev.6 [skip ci]
## [1.19.4-dev.6](https://github.com/ReVanced/revanced-manager/compare/v1.19.4-dev.5...v1.19.4-dev.6) (2024-04-02)

### Bug Fixes

* disable proguard obfuscation ([401646a](401646ace4))
2024-04-02 16:19:30 +00:00
401646ace4 fix: disable proguard obfuscation 2024-04-02 18:09:38 +02:00
a62a8852e7 build(deps): bump connectivity_plus from 5.0.2 to 6.0.1 (#1808)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-01 11:49:03 +07:00
04a3df3642 build(deps): bump package_info_plus from 5.0.1 to 6.0.0 (#1806)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-01 11:48:46 +07:00
ecb041187b build(deps-dev): bump semantic-release from 23.0.2 to 23.0.6 (#1816)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-01 11:43:57 +07:00
1fd44e1cfc build(deps-dev): bump @droidsolutions-oss/semantic-release-update-file from 1.4.0-beta.1 to 1.4.0 (#1815)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-01 11:43:29 +07:00
fb29036d0a build(deps): bump flutter_lints from 3.0.1 to 3.0.2 (#1805)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-01 10:18:52 +07:00
aba2ed4378 ci: Don't specify bundle 2024-03-30 03:16:39 +03:00
076e17d670 chore: Don't preserve hierachy in Crowdin 2024-03-30 03:12:06 +03:00
a971cbd519 chore(release): 1.19.4-dev.5 [skip ci]
## [1.19.4-dev.5](https://github.com/ReVanced/revanced-manager/compare/v1.19.4-dev.4...v1.19.4-dev.5) (2024-03-28)

### Bug Fixes

* Don't translation ReVanced repository ([c265794](c265794d0e))
2024-03-28 06:23:34 +00:00
c265794d0e fix: Don't translation ReVanced repository
Regex:

,
    "patcherContributors":.*,
    "patchesContributors":.*,
    "integrationsContributors":.*,
    "cliContributors":.*,
    "managerContributors":.*
2024-03-28 06:13:05 +00:00
ecadb80113 chore(release): 1.19.4-dev.4 [skip ci]
## [1.19.4-dev.4](https://github.com/ReVanced/revanced-manager/compare/v1.19.4-dev.3...v1.19.4-dev.4) (2024-03-28)

### Bug Fixes

* Set text colour on dropdown menu for Custom Value ([966796d](966796dfec)), closes [#1584](https://github.com/ReVanced/revanced-manager/issues/1584)
2024-03-28 05:35:25 +00:00
9a66357f7a refactor: slight format change
This is so unreadable, there must've been a better way to do this.
2024-03-28 05:26:35 +00:00
63d83a43ad chore: Remove unused en_US file
This file contains absolulely nothing, whereabout: Unknown.
2024-03-28 05:20:32 +00:00
7833a0d552 build: Switch flutter_background to official sources
https://github.com/JulianAssmann/flutter_background/pull/79 is merged.
2024-03-28 05:17:49 +00:00
966796dfec fix: Set text colour on dropdown menu for Custom Value
This fix #1584 and a continuation of acb1e2434b28efca852297e0a0a8ffce155e67e4

Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
2024-03-28 05:15:02 +00:00
2d19f36901 chore(release): 1.19.4-dev.3 [skip ci]
## [1.19.4-dev.3](https://github.com/ReVanced/revanced-manager/compare/v1.19.4-dev.2...v1.19.4-dev.3) (2024-03-28)

### Bug Fixes

* Replace Spacer with Expanded to avoid overflow ([#1791](https://github.com/ReVanced/revanced-manager/issues/1791)) ([6f70a07](6f70a07970))
2024-03-28 04:45:28 +00:00
6f70a07970 fix: Replace Spacer with Expanded to avoid overflow (#1791) 2024-03-28 11:38:07 +07:00
e85ed5a8e3 build: Bump language_code to v0.4.2
This fix #1714 regarding country name of es-AR (Argentina) does not exist.

Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
2024-03-28 04:06:52 +00:00
ad416387c2 ci(Crowdin): Specify bundle to download 2024-03-28 02:02:55 +03:00
58d8e7f34f build: Bump dependencies (#1796) 2024-03-27 13:46:37 +01:00
bb105b5662 chore(Branding): Update ReVanced Logo name (#1794) 2024-03-27 17:33:42 +07:00
a71a930125 chore(release): 1.19.4-dev.2 [skip ci]
## [1.19.4-dev.2](https://github.com/ReVanced/revanced-manager/compare/v1.19.4-dev.1...v1.19.4-dev.2) (2024-03-23)

### Bug Fixes

* Ensure safe area usage in Changelogs Modal Bottom Sheet ([#1772](https://github.com/ReVanced/revanced-manager/issues/1772)) ([c981cb4](c981cb4a41))
2024-03-23 11:03:27 +00:00
af7e39b7f0 chore(i18n): Sync translations (#1719)
Co-authored-by: revanced-bot <github@revanced.app>
2024-03-23 17:55:11 +07:00
c981cb4a41 fix: Ensure safe area usage in Changelogs Modal Bottom Sheet (#1772) 2024-03-23 17:51:17 +07:00
3ea6ef0bbf ci(Dependabot): Add Gradle ecosystem to RVM Flutter 2024-03-22 04:54:57 +00:00
2772a96727 docs(Build): Shorten build_runner args 2024-03-22 04:41:34 +00:00
50b4a5f1d8 ci: Fix PR build success message 2024-03-18 11:51:07 +01:00
e52a6ce734 chore(release): 1.19.4-dev.1 [skip ci]
## [1.19.4-dev.1](https://github.com/ReVanced/revanced-manager/compare/v1.19.3...v1.19.4-dev.1) (2024-03-17)

### Bug Fixes

* Pre-releases changelog being shown ([#1767](https://github.com/ReVanced/revanced-manager/issues/1767)) ([add49e1](add49e14fb))
2024-03-17 17:22:14 +00:00
add49e14fb fix: Pre-releases changelog being shown (#1767) 2024-03-17 10:14:22 -07:00
ab13895196 docs(Security): Improve badges' accessibility
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
2024-03-11 15:05:40 +07:00
846afb420b ci(PR Sync): Use revanced-bot acount
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
2024-03-11 14:59:29 +07:00
dca8a1dab6 ci(Crowdin): Add workflow change to trigger event
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
2024-03-11 14:49:46 +07:00
d1c36c1bcc ci(Crowdin): Improve configuration of the workflow
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
2024-03-11 14:49:13 +07:00
c209c32613 chore(release): 1.19.3 [skip ci]
## [1.19.3](https://github.com/ReVanced/revanced-manager/compare/v1.19.2...v1.19.3) (2024-03-09)

### Bug Fixes

* Copy APK to working directory before trying to write to it ([5cd1cba](5cd1cba668))
2024-03-09 09:16:08 +00:00
9e5e89ac95 chore: Merge branch dev to main (#1756) 2024-03-09 10:09:13 +01:00
7cc6b88e4e chore(release): 1.19.3-dev.1 [skip ci]
## [1.19.3-dev.1](https://github.com/ReVanced/revanced-manager/compare/v1.19.2...v1.19.3-dev.1) (2024-03-09)

### Bug Fixes

* Copy APK to working directory before trying to write to it ([5cd1cba](5cd1cba668))
2024-03-09 09:09:02 +00:00
5cd1cba668 fix: Copy APK to working directory before trying to write to it 2024-03-09 10:01:36 +01:00
ca365bac6e build: Bump dependencies to fix generating keystore 2024-03-09 09:58:41 +01:00
f1fc48ce5a chore(release): 1.19.2 [skip ci]
## [1.19.2](https://github.com/ReVanced/revanced-manager/compare/v1.19.1...v1.19.2) (2024-03-09)

### Bug Fixes

* App list is empty if all apps are installed ([#1750](https://github.com/ReVanced/revanced-manager/issues/1750)) ([1f5461f](1f5461fbe5))
* Fix white-screen when trying to install conflicting apps ([4acd738](4acd738353))
2024-03-09 03:55:35 +00:00
316e440d0d chore: Merge branch dev to main (#1739) 2024-03-09 04:48:12 +01:00
95018814a7 ci: Bump dependencies to fix release workflow 2024-03-09 04:44:38 +01:00
b52e49d90a build: Bump dependencies to fix signing issues 2024-03-09 04:39:58 +01:00
4acd738353 fix: Fix white-screen when trying to install conflicting apps
When you tried to install a patched app, but it conflicted with an existing installation, the screen would go blank. This was caused by trying to use an argument on a translation with no arguments.
2024-03-09 04:39:58 +01:00
982249f974 chore(release): 1.19.2-dev.1 [skip ci]
## [1.19.2-dev.1](https://github.com/ReVanced/revanced-manager/compare/v1.19.1...v1.19.2-dev.1) (2024-03-08)

### Bug Fixes

* App list is empty if all apps are installed ([#1750](https://github.com/ReVanced/revanced-manager/issues/1750)) ([1f5461f](1f5461fbe5))
2024-03-08 14:49:35 +00:00
1f5461fbe5 fix: App list is empty if all apps are installed (#1750)
Co-authored-by: Nikita <n.petrjakov@niitp.in>
2024-03-08 21:41:16 +07:00
adb7e5663a docs: Fix small mistakes [skip ci] 2024-03-05 14:58:11 +01:00
ffc14f2146 chore: Upgrade dependencies (#1734) 2024-03-05 14:09:02 +07:00
0c57322051 chore(release): 1.19.1 [skip ci]
## [1.19.1](https://github.com/ReVanced/revanced-manager/compare/v1.19.0...v1.19.1) (2024-03-05)

### Bug Fixes

* Keep names for needed classes to fix crash at launch ([eef7016](eef701615b))
2024-03-05 02:29:37 +00:00
a8b7debf8d chore: Merge branch dev to main (#1729) 2024-03-05 03:22:11 +01:00
7ed9787b58 ci: Add workflow to open a PR to main 2024-03-05 03:21:07 +01:00
eef701615b fix: Keep names for needed classes to fix crash at launch 2024-03-05 03:19:20 +01:00
97d8519b8b chore(release): 1.19.0 [skip ci]
# [1.19.0](https://github.com/ReVanced/revanced-manager/compare/v1.18.0...v1.19.0) (2024-03-05)

### Bug Fixes

* added a trailing comma ([975180b](975180b075))
* adjust padding ([3559477](3559477247))
* Allow mounting without Magisk ([3f96608](3f96608398))
* Bump dependencies to support BCS keystore ([6ec6546](6ec6546cc5))
* Do not delete files from post-fs-data.d ([70a1086](70a1086edf))
* Fix patched APKs exports after installation ([1200360](1200360588))
* fix redundant buttons on dialog ([079c0de](079c0defaf))
* Incorrect strings and logics ([#1619](https://github.com/ReVanced/revanced-manager/issues/1619)) ([4f22e88](4f22e88e42))
* **Keystore Password:** textfield title display ([8e52abd](8e52abda9a))
* Mount script causes build to fail ([#1613](https://github.com/ReVanced/revanced-manager/issues/1613)) ([f3c78c2](f3c78c2c24))
* **Patch Option:** Set text colour on dropdown menu ([acb1e24](acb1e2434b))
* **PopScope:** User able to exit patch screen when the installer is still running ([#1663](https://github.com/ReVanced/revanced-manager/issues/1663)) ([eb6d3cd](eb6d3cd64e))
* **Release CI:** truncate the "v" from version ([8595099](85950991ab))
* Show version label correctly ([c72d10a](c72d10ac85))
* Specify that dark theme is dark ([#1699](https://github.com/ReVanced/revanced-manager/issues/1699)) ([d4b15ae](d4b15aee4d))
* Stop patch when signing fails ([#1553](https://github.com/ReVanced/revanced-manager/issues/1553)) ([5b2c551](5b2c55142e))
* **Update Confirmation Sheet:** Add top padding ([9aeb156](9aeb156d92))
* Use correct title size for bottom sheet ([#1687](https://github.com/ReVanced/revanced-manager/issues/1687)) ([3436523](34365239c1))
* Use correct version code & name ([#1647](https://github.com/ReVanced/revanced-manager/issues/1647)) ([d933997](d933997c89))
* use lowercase repo names ([#1626](https://github.com/ReVanced/revanced-manager/issues/1626)) ([edd8602](edd86024b9))

### Features

* Add a toggle for alternative sources ([#1686](https://github.com/ReVanced/revanced-manager/issues/1686)) ([f89c742](f89c742c90))
* Add API migration code ([#1615](https://github.com/ReVanced/revanced-manager/issues/1615)) ([28ae276](28ae2766f0))
* add haptic feedback ([#1459](https://github.com/ReVanced/revanced-manager/issues/1459)) ([7911459](7911459817))
* Allow changing languages ([#1488](https://github.com/ReVanced/revanced-manager/issues/1488)) ([f82c439](f82c439b26))
* Display current app language at the top of the list ([aa0575a](aa0575a637))
* Hide the Install button during installation ([#1633](https://github.com/ReVanced/revanced-manager/issues/1633)) ([3e696d6](3e696d6847))
* Improve app selector and patcher UI ([#1616](https://github.com/ReVanced/revanced-manager/issues/1616)) ([efb2d5e](efb2d5ef32))
* Improve consistency on language selector ([b2119ce](b2119ce60e))
* Improve language distinguishness and resolve language-specific issues ([#1706](https://github.com/ReVanced/revanced-manager/issues/1706)) ([6d866d4](6d866d4424))
* Improve Split APK warning readability ([#1625](https://github.com/ReVanced/revanced-manager/issues/1625)) ([6fd740f](6fd740f8c0))
* Show a dialog when an update is available ([#1654](https://github.com/ReVanced/revanced-manager/issues/1654)) ([c7d975e](c7d975e612))
* Simplify settings strings ([#1618](https://github.com/ReVanced/revanced-manager/issues/1618)) ([0d45fe4](0d45fe4a97))
* Use more appropriate progress values ([2d7026a](2d7026ac7a))
* use native TextField ([9ed43ef](9ed43efe5d))

### Performance Improvements

* Load patched apps as soon as possible ([c94eb7a](c94eb7a48e))

### Reverts

* WillPopScope migration ([3b0fed5](3b0fed55e4))
2024-03-05 01:57:21 +00:00
00210f7f0e chore: Workaround CI bug by setting the expected version 2024-03-05 02:49:42 +01:00
cea4c6c27a chore: Merge dev to main (#1611)
100 commits 
2024-03-05 07:48:42 +07:00
bc83a39b0f chore(release): 1.19.0-dev.21 [skip ci]
# [1.19.0-dev.21](https://github.com/ReVanced/revanced-manager/compare/v1.19.0-dev.20...v1.19.0-dev.21) (2024-03-05)

### Features

* Display current app language at the top of the list ([aa0575a](aa0575a637))
2024-03-05 00:12:19 +00:00
aa0575a637 feat: Display current app language at the top of the list 2024-03-05 03:04:01 +03:00
4ca7b8a7c1 chore(release): 1.19.0-dev.20 [skip ci]
# [1.19.0-dev.20](https://github.com/ReVanced/revanced-manager/compare/v1.19.0-dev.19...v1.19.0-dev.20) (2024-03-04)

### Bug Fixes

* Bump dependencies to support BCS keystore ([6ec6546](6ec6546cc5))
2024-03-04 14:56:19 +00:00
6ec6546cc5 fix: Bump dependencies to support BCS keystore 2024-03-04 15:48:13 +01:00
c5e04cc824 build: Bump dependencies 2024-03-04 13:53:33 +01:00
4fc913eae1 chore(release): 1.19.0-dev.19 [skip ci]
# [1.19.0-dev.19](https://github.com/ReVanced/revanced-manager/compare/v1.19.0-dev.18...v1.19.0-dev.19) (2024-03-04)

### Bug Fixes

* Fix patched APKs exports after installation ([1200360](1200360588))

### Features

* Use more appropriate progress values ([2d7026a](2d7026ac7a))
2024-03-04 12:51:06 +00:00
2d7026ac7a feat: Use more appropriate progress values 2024-03-04 13:43:35 +01:00
1200360588 fix: Fix patched APKs exports after installation 2024-03-04 13:43:34 +01:00
02722fc0be chore(release): 1.19.0-dev.18 [skip ci]
# [1.19.0-dev.18](https://github.com/ReVanced/revanced-manager/compare/v1.19.0-dev.17...v1.19.0-dev.18) (2024-03-04)
2024-03-04 12:25:39 +00:00
2e1de94623 chore: Fix builds 2024-03-04 13:14:30 +01:00
10bae69db6 build(Needs bump): Bump dependencies (#1717) 2024-03-04 12:47:38 +01:00
6dee3aa1b7 docs: Fix consistency issues with other repositories (#1707) 2024-03-04 12:42:46 +01:00
e76418d48d chore: Sync translations (#1701) 2024-03-04 11:28:34 +01:00
52e1020a90 chore(Dependency): Switch language_code back to Upstream version 2024-03-04 13:31:51 +07:00
c170392123 ci(Release): Use ReVanced account instead of semantic-release 2024-03-04 11:51:54 +07:00
d414a91f40 ci: Match changelog format of other ReVanced repos (#1705) 2024-02-26 03:01:30 +01:00
6d6fae1ecd chore(release): 1.19.0-dev.17 [skip ci]
## Features
* Improve language distinguishness and resolve language-specific issues (#1706) ([Ushie](6d866d4424))
2024-02-26 01:15:28 +00:00
6d866d4424 feat: Improve language distinguishness and resolve language-specific issues (#1706) 2024-02-26 08:08:14 +07:00
f4dea6e58c chore(release): 1.19.0-dev.16 [skip ci]
## Features
* Hide the Install button during installation (#1633) ([Eray Erdin (&mut self)](3e696d6847))
## Bug Fixes
* Show version label correctly ([oSumAtrIX](c72d10ac85))
2024-02-25 20:57:07 +00:00
c72d10ac85 fix: Show version label correctly 2024-02-25 21:49:38 +01:00
3e696d6847 feat: Hide the Install button during installation (#1633)
Co-authored-by: Ushie <ushiekane@gmail.com>
2024-02-25 23:48:52 +03:00
28d6ab692e chore(release): 1.19.0-dev.15 [skip ci]
## Bug Fixes
* Specify that dark theme is dark (#1699) ([Benjamin](d4b15aee4d))
## Documentation
* Switch order of note and tip [skip ci] ([oSumAtrIX](d0689555f1))
## Continuous Integration
* **Release:** Remove unnecessary upload (#1695) ([Benjamin](82d6e3f105))
## Chores
* **i18n:** Sync translations (#1694) ([github-actions[bot]](f7747809f2))
2024-02-25 02:50:24 +00:00
f7747809f2 chore(i18n): Sync translations (#1694)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
Co-authored-by: revanced-bot <github@revanced.app>
2024-02-25 09:42:15 +07:00
d4b15aee4d fix: Specify that dark theme is dark (#1699) 2024-02-25 09:37:55 +07:00
d0689555f1 docs: Switch order of note and tip [skip ci] 2024-02-25 01:01:00 +01:00
82d6e3f105 ci(Release): Remove unnecessary upload (#1695) 2024-02-20 06:41:03 +07:00
244d078b11 chore(release): 1.19.0-dev.14 [skip ci]
## Features
* Add a toggle for alternative sources (#1686) ([aAbed](f89c742c90))
2024-02-19 14:49:04 +00:00
f89c742c90 feat: Add a toggle for alternative sources (#1686)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-02-19 20:26:42 +05:45
ce5088ab53 chore(release): 1.19.0-dev.13 [skip ci]
## Chores
* **i18n:** Sync translations (#1688) ([github-actions[bot]](0443c8c200))
* Upgrade dependencies (#1693) ([Benjamin](8a4161753e))
2024-02-18 22:40:36 +00:00
0443c8c200 chore(i18n): Sync translations (#1688)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
Co-authored-by: revanced-bot <github@revanced.app>
2024-02-19 05:33:11 +07:00
8a4161753e chore: Upgrade dependencies (#1693) 2024-02-19 05:31:24 +07:00
f2e7071f6d chore(release): 1.19.0-dev.12 [skip ci]
## Documentation
* Add a tip for the prompt to select an APK from storage ([oSumAtrIX](bfe59ea57a))
* Adjust footnote regarding obtaining APK files ([oSumAtrIX](f5ba84d81e))
* Use consistent wording ([oSumAtrIX](933c71923e))
## Code Refactoring
* PopScope Migration (#1674) ([Pun Butrach](3b58d229da))
## Continuous Integration
* Dependabot (#1692) ([Benjamin](25d53ce9a8))
2024-02-18 22:05:57 +00:00
25d53ce9a8 ci: Dependabot (#1692)
And accept more commit.

Co-authored-by: Pun Butrach <pun.butrach@gmail.com>
2024-02-19 04:58:29 +07:00
3b58d229da refactor: PopScope Migration (#1674)
Co-authored-by: Benjamin Halko <benjaminhalko@hotmail.com>
2024-02-18 08:32:32 +07:00
f5ba84d81e docs: Adjust footnote regarding obtaining APK files 2024-02-15 19:03:35 +01:00
933c71923e docs: Use consistent wording 2024-02-15 18:55:54 +01:00
bfe59ea57a docs: Add a tip for the prompt to select an APK from storage 2024-02-15 18:54:32 +01:00
953209ca13 chore(release): 1.19.0-dev.11 [skip ci]
## Features
* Improve consistency on language selector ([Pun Butrach](b2119ce60e))
## Code Refactoring
* Check-in pubspec.lock ([Pun Butrach](5a24911fad))
## Build System
* Bump Gradle to v8.6 ([Pun Butrach](f57898a471))
* Enable ProGuard (#1650) ([kitadai31](b754a045eb))
## Continuous Integration
* **build:** Upload build artifact ([Pun Butrach](e0c750d27e))
## Chores
* Update .gitignore ([Pun Butrach](0ec6897fda))
2024-02-15 09:48:29 +00:00
b2119ce60e feat: Improve consistency on language selector 2024-02-15 16:41:09 +07:00
e0c750d27e ci(build): Upload build artifact 2024-02-15 16:31:19 +07:00
b754a045eb build: Enable ProGuard (#1650) 2024-02-15 16:24:24 +07:00
5a24911fad refactor: Check-in pubspec.lock 2024-02-15 08:17:11 +00:00
0ec6897fda chore: Update .gitignore 2024-02-15 08:17:10 +00:00
f57898a471 build: Bump Gradle to v8.6 2024-02-15 08:17:10 +00:00
3ee29c2256 chore(release): 1.19.0-dev.10 [skip ci]
## Chores
* **i18n:** Sync translations (#1685) ([github-actions[bot]](31a32eb11d))
## Reverts
* WillPopScope migration ([Pun Butrach](3b0fed55e4))
2024-02-15 08:08:25 +00:00
3b0fed55e4 revert: WillPopScope migration
This reverts commit ef9b1d5c2d72c6787246c4b6d11929044a13b54d.

Why is this so hard to implement??? Are we missing something??
2024-02-15 08:00:52 +00:00
31a32eb11d chore(i18n): Sync translations (#1685)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
Co-authored-by: revanced-bot <github@revanced.app>
2024-02-13 13:26:08 +07:00
64c10b44f5 chore(release): 1.19.0-dev.9 [skip ci]
## Bug Fixes
* Use correct title size for bottom sheet (#1687) ([oSumAtrIX](34365239c1))
2024-02-12 19:55:06 +00:00
34365239c1 fix: Use correct title size for bottom sheet (#1687)
Co-authored-by: aAbed <aabedhkhan@gmail.com>
2024-02-12 20:46:58 +01:00
bdfeda23b6 chore(release): 1.19.0-dev.8 [skip ci]
## Features
* Allow changing languages (#1488) ([Ushie](f82c439b26))
## Chores
* **i18n:** Sync translations (#1671) ([github-actions[bot]](f5578b0fc1))
* update dependencies ([Benjamin Halko](1aaeac1fe3))
2024-02-12 17:39:10 +00:00
1aaeac1fe3 chore: update dependencies 2024-02-13 09:31:23 -08:00
f5578b0fc1 chore(i18n): Sync translations (#1671) 2024-02-12 02:25:59 +03:00
f82c439b26 feat: Allow changing languages (#1488)
Co-authored-by: validcube <pun.butrach@gmail.com>
2024-02-12 02:22:25 +03:00
c498cff096 chore(release): 1.19.0-dev.7 [skip ci]
## Bug Fixes
* adjust padding ([aAbed](3559477247))
## Documentation
* **Security:** Format badges ([Pun Butrach](b9241fa1b2))
2024-02-06 15:14:29 +00:00
3559477247 fix: adjust padding 2024-02-06 20:52:19 +05:45
b9241fa1b2 docs(Security): Format badges 2024-02-03 08:16:33 +00:00
9bf5153e6b chore(release): 1.19.0-dev.6 [skip ci]
## Bug Fixes
* **PopScope:** User able to exit patch screen when the installer is still running (#1663) ([Benjamin](eb6d3cd64e))
## Code Refactoring
* Disable update for dev build (#1662) ([Benjamin](c900d09cf8))
## Continuous Integration
* Add scope to changelog (#1672) ([Benjamin](8cda2c164d))
2024-02-03 03:36:47 +00:00
eb6d3cd64e fix(PopScope): User able to exit patch screen when the installer is still running (#1663) 2024-02-03 10:29:34 +07:00
8cda2c164d ci: Add scope to changelog (#1672) 2024-02-03 09:02:53 +07:00
c900d09cf8 refactor: Disable update for dev build (#1662) 2024-02-02 21:12:10 +07:00
edc8ef4f44 chore(release): 1.19.0-dev.5 [skip ci]
## Bug Fixes
* Add top padding ([Pun Butrach](9aeb156d92))
2024-02-02 13:12:37 +00:00
9aeb156d92 fix(Update Confirmation Sheet): Add top padding
Before the "Changelog" or homeView.updateChangelogTitle was almost at the edge of the [DraggableScrollableSheet]

We fix it by adding 12px padding off the top, 12px was chosen because [bottom] padding is using 12px so it would make sense for [top] to be using 12px.
2024-02-02 13:05:15 +00:00
8be07de373 ci(release): Migrate deprecated Node version 2024-02-02 11:38:53 +07:00
93482b0041 chore(release): 1.19.0-dev.4 [skip ci]
## Bug Fixes
* Stop patch when signing fails ([#1553](https://github.com/ReVanced/revanced-manager/issues/1553)) ([kitadai31](5b2c55142e))
2024-02-02 00:02:38 +00:00
5b2c55142e fix: Stop patch when signing fails (#1553) 2024-02-02 00:55:18 +01:00
088a3b7c28 ci: Improve build workflow (#1668) 2024-02-01 08:57:15 +07:00
b115643034 chore(release): 1.19.0-dev.3 [skip ci]
# [1.19.0-dev.3](https://github.com/ReVanced/revanced-manager/compare/v1.19.0-dev.2...v1.19.0-dev.3) (2024-01-29)

### Bug Fixes

* Do not delete files from post-fs-data.d ([70a1086](70a1086edf))

### Features

* Show a dialog when an update is available ([#1654](https://github.com/ReVanced/revanced-manager/issues/1654)) ([c7d975e](c7d975e612))
2024-01-29 10:19:31 +00:00
07fc964f9c ci: Specify paths in release workflow (#1664) 2024-01-29 11:11:42 +01:00
3e51caf111 docs(Security): Avoid table shifting layout 2024-01-29 11:11:42 +01:00
deb1ba339f docs(Security): Use dynamic information on version
Meanwhile latest get the static treatment.
2024-01-29 11:11:42 +01:00
70a1086edf fix: Do not delete files from post-fs-data.d 2024-01-27 09:08:44 +05:45
c7d975e612 feat: Show a dialog when an update is available (#1654) 2024-01-27 09:08:44 +05:45
7104d6d6dd chore(release): 1.19.0-dev.2 [skip ci]
# [1.19.0-dev.2](https://github.com/ReVanced/revanced-manager/compare/v1.19.0-dev.1...v1.19.0-dev.2) (2024-01-22)

### Bug Fixes

* Use correct version code & name ([#1647](https://github.com/ReVanced/revanced-manager/issues/1647)) ([d933997](d933997c89))
2024-01-22 22:34:38 +00:00
d933997c89 fix: Use correct version code & name (#1647) 2024-01-23 05:27:33 +07:00
bea99bb4c6 chore(release): 1.19.0-dev.1 [skip ci]
# [1.19.0-dev.1](https://github.com/ReVanced/revanced-manager/compare/v1.18.0...v1.19.0-dev.1) (2024-01-22)

### Bug Fixes

* added a trailing comma ([975180b](975180b075))
* Allow mounting without Magisk ([3f96608](3f96608398))
* fix redundant buttons on dialog ([079c0de](079c0defaf))
* Incorrect strings and logics ([#1619](https://github.com/ReVanced/revanced-manager/issues/1619)) ([4f22e88](4f22e88e42))
* **Keystore Password:** textfield title display ([8e52abd](8e52abda9a))
* Mount script causes build to fail ([#1613](https://github.com/ReVanced/revanced-manager/issues/1613)) ([f3c78c2](f3c78c2c24))
* **Patch Option:** Set text colour on dropdown menu ([acb1e24](acb1e2434b))
* **Release CI:** truncate the "v" from version ([8595099](85950991ab))
* use lowercase repo names ([#1626](https://github.com/ReVanced/revanced-manager/issues/1626)) ([edd8602](edd86024b9))

### Features

* Add API migration code ([#1615](https://github.com/ReVanced/revanced-manager/issues/1615)) ([28ae276](28ae2766f0))
* add haptic feedback ([#1459](https://github.com/ReVanced/revanced-manager/issues/1459)) ([7911459](7911459817))
* Improve app selector and patcher UI ([#1616](https://github.com/ReVanced/revanced-manager/issues/1616)) ([efb2d5e](efb2d5ef32))
* Improve Split APK warning readability ([#1625](https://github.com/ReVanced/revanced-manager/issues/1625)) ([6fd740f](6fd740f8c0))
* Simplify settings strings ([#1618](https://github.com/ReVanced/revanced-manager/issues/1618)) ([0d45fe4](0d45fe4a97))
* use native TextField ([9ed43ef](9ed43efe5d))

### Performance Improvements

* Load patched apps as soon as possible ([c94eb7a](c94eb7a48e))
2024-01-22 11:41:51 +00:00
f38a593434 ci(Release Build): Use correct syntax in getting the version 2024-01-22 18:34:35 +07:00
85950991ab fix(Release CI): truncate the "v" from version
ci: cleanup

force push soon™️
2024-01-22 18:30:16 +07:00
6fd740f8c0 feat: Improve Split APK warning readability (#1625)
Co-authored-by: Pun Butrach <pun.butrach@gmail.com>
2024-01-22 12:20:09 +01:00
ec2c2d8ccb ci: Build pre-release versions (#1606) 2024-01-22 09:29:57 +01:00
efb2d5ef32 feat: Improve app selector and patcher UI (#1616) 2024-01-22 09:20:17 +01:00
acb1e2434b fix(Patch Option): Set text colour on dropdown menu
Signed-off-by: validcube <pun.butrach@gmail.com>
2024-01-21 20:36:23 +07:00
8e52abda9a fix(Keystore Password): textfield title display
Signed-off-by: validcube <pun.butrach@gmail.com>
2024-01-21 16:58:00 +07:00
9764326242 chore(patch_item): Remove import directive
Signed-off-by: validcube <pun.butrach@gmail.com>
2024-01-21 15:15:37 +07:00
97c33d6c54 chore: Remove deprecated lint rules
Signed-off-by: validcube <pun.butrach@gmail.com>
2024-01-21 15:10:03 +07:00
30d5f3ad3f docs(security): Prepare for v1.19.0 2024-01-21 15:02:52 +07:00
079c0defaf fix: fix redundant buttons on dialog
Signed-off-by: validcube <pun.butrach@gmail.com>
2024-01-21 14:45:25 +07:00
cf1afddb9e chore: remove unused dependencies (#1603) 2024-01-21 14:07:30 +07:00
b07b9351c4 docs(security): init (#1599)
Co-authored-by: Ax333l <main@axelen.xyz>
2024-01-21 13:59:57 +07:00
7911459817 feat: add haptic feedback (#1459)
Co-authored-by: Ushie <ushiekane@gmail.com>
Co-authored-by: Pun Butrach <pun.butrach@gmail.com>
2024-01-14 14:29:24 -08:00
ef9b1d5c2d refactor: Replace deprecated WillPopScope (#1604) 2024-01-13 19:34:04 -08:00
fd2780624a chore: remove unused import 2024-01-12 09:49:26 -08:00
4f22e88e42 fix: Incorrect strings and logics (#1619) 2024-01-12 05:15:37 +07:00
0d45fe4a97 feat: Simplify settings strings (#1618) 2024-01-09 20:23:54 +01:00
28ae2766f0 feat: Add API migration code (#1615) 2024-01-09 20:23:26 +01:00
edd86024b9 fix: use lowercase repo names (#1626) 2024-01-09 05:07:18 +07:00
f3c78c2c24 fix: Mount script causes build to fail (#1613) 2024-01-01 00:32:57 +03:00
3f96608398 fix: Allow mounting without Magisk 2023-12-31 03:32:04 +03:00
9ed43efe5d feat: use native TextField
Signed-off-by: validcube <pun.butrach@gmail.com>
2023-12-30 14:37:46 +07:00
975180b075 fix: added a trailing comma 2023-12-28 13:17:25 -08:00
c94eb7a48e perf: Load patched apps as soon as possible 2023-12-24 00:12:33 +01:00
bb1b0da749 chore: merge dev to main (#1573) 2023-12-23 22:43:10 +01:00
85c8006977 build: Bump version to v1.18.0 2023-12-23 22:20:32 +01:00
850bdc4a4d fix: Reset progress if patch was cancelled 2023-12-23 22:19:56 +01:00
ca95e32164 chore: Ignore autogenerated project file 2023-12-23 22:14:44 +01:00
a141ec85b0 fix: Correct update message 2023-12-23 22:11:38 +01:00
1298a96b0e fix: Update the progress properly until installation finishes successfully 2023-12-23 22:10:22 +01:00
1928b150ad fix: Use correct installation type labels 2023-12-23 22:10:22 +01:00
7426f5484d fix: Update home screen after installation 2023-12-23 21:58:53 +01:00
11a8f313b0 feat: Clarify non root installation button 2023-12-23 21:46:58 +01:00
69b6ef07a1 feat: Improve dialog text clarity 2023-12-23 21:36:47 +01:00
7a1ba9dabf fix: Add missing confirmation dialog 2023-12-23 21:11:24 +01:00
48a739c94e refactor: Simplify uninstallApp code 2023-12-23 20:53:51 +01:00
9680f0cf12 refactor: Remove unnecessary quotation marks 2023-12-23 20:53:31 +01:00
5b1c89a0c5 perf: Reduce amount of shell commands 2023-12-23 20:52:52 +01:00
8a1ab478a3 fix: Prevent crash by escaping string correctly 2023-12-23 20:52:52 +01:00
2ae8d49526 fix: exported logs patch selection (#1535)
Co-authored-by: validcube <pun.butrach@gmail.com>
2023-12-23 11:29:36 +07:00
a0b673c138 refactor: apply suggestions from analyser
Signed-off-by: validcube <pun.butrach@gmail.com>
2023-12-23 10:47:12 +07:00
c56c445fb7 fix: migration latest changes to native buttons
Signed-off-by: validcube <pun.butrach@gmail.com>
2023-12-23 10:36:59 +07:00
c23275f2fe feat: Improve installation robustness (#1528)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
Co-authored-by: Ushie <ushiekane@gmail.com>
Co-authored-by: Dhruvan Bhalara <53393418+dhruvanbhalara@users.noreply.github.com>
Co-authored-by: Pun Butrach <pun.butrach@gmail.com>
2023-12-23 10:16:28 +07:00
8b28a33b73 ci(security): resolve arbitrary code execution 2023-12-22 20:39:21 +07:00
f8d086a743 feat: dialogs correctly follows Material 3 specifications (#1560)
Signed-off-by: validcube <pun.butrach@gmail.com>
2023-12-22 20:34:03 +07:00
c06d15de5f docs: Improve troubleshooting solutions (#1543)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-12-22 05:50:10 +01:00
dcaf1f54e4 build(gradle): bump Gradle to v8.5
Signed-off-by: validcube <pun.butrach@gmail.com>
2023-12-17 20:16:46 +07:00
aa91abb022 docs(readme): Correct grammar mistake (#1569) 2023-12-16 10:40:50 +07:00
67d204eb02 build: Bump version to v1.17.3 2023-12-12 08:22:10 +03:00
18e680b298 fix: Unable to unselect new patches 2023-12-12 10:37:35 +05:45
6ef1b072e8 build: Bump version to v1.17.2 2023-12-11 18:27:19 -08:00
ca9ef544ce chore: merge dev to main (#1545) 2023-12-11 18:23:08 -08:00
7831a3438d fix: Include new patches that are used by default 2023-12-12 02:32:57 +01:00
1fad90441c perf: Use hashset for fast comparison 2023-12-12 02:32:45 +01:00
7f26c5bd45 revert: "feat: improve predictive back (#1487)"
This reverts commit 06ff36c83628099f4214b1f129d94b7e103a3394.

Signed-off-by: validcube <pun.butrach@gmail.com>
2023-12-11 19:02:13 +07:00
637641cf54 feat: output suggested version into patch log (#1557)
Signed-off-by: validcube <pun.butrach@gmail.com>
2023-12-11 11:26:52 +07:00
d9a316abbb docs(contributing): update branding 2023-12-09 11:49:19 +07:00
093cfa5269 docs(contributing): use correct semantic 2023-12-09 11:48:20 +07:00
61a025de4d docs: correct styling issue 2023-12-09 11:47:26 +07:00
7df1ae7ed8 feat: append patch version to the APK name while sharing/exporting (#1547) 2023-12-05 12:58:32 +05:45
eb6e75b156 ci: use migrate setup-java to Node 20 (#1542) 2023-12-05 09:43:04 +07:00
8480b3ac3d chore: update repository's owner name 2023-12-02 17:39:02 +07:00
6339a31fec build(dart-dependency): bump FlutterToast to v8.2.4 2023-12-02 17:35:35 +07:00
71b5bb3f8f build(dart-dependency): prefer immutable for dependency using git 2023-12-02 17:33:42 +07:00
a9878dbbdf chore: Merge dev to main (#1544) 2023-12-02 03:46:17 +03:00
b1fb9dd7d3 build: Bump version to v1.17.1 2023-12-02 03:44:51 +03:00
de51fbd7be fix: Incorrect duplicate filename handling when exporting files (#1541) 2023-12-01 20:31:46 +05:45
c9412a97d0 build(dependency): Bump patcher to 19.1.0 2023-12-01 13:22:38 +01:00
63c29bdd75 chore: Merge dev to main (#1529) 2023-11-27 11:06:43 +03:00
bace26063d build: Bump version to v1.17.0 2023-11-27 11:05:56 +03:00
7931eb97b9 feat: updated logs (#1526) 2023-11-25 17:06:18 -08:00
9df89c7b74 fix: Disable wakelock when patching is canceled (#1514) 2023-11-22 16:21:27 +03:00
78978276c4 fix(App Selector): Unable to select APK from storage when asked to (#1513) 2023-11-22 16:20:51 +03:00
011eddbbc5 chore: Merge dev to main (#1478) 2023-11-21 17:37:40 +03:00
4e9f3fe1dc build: Bump version to v1.16.0 2023-11-21 17:36:24 +03:00
9bd48c19ff feat: ability to search query for suggested version (#1151)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
Co-authored-by: Ushie <ushiekane@gmail.com>
2023-11-21 17:33:21 +03:00
c0516c3665 ci(build): Improve pull request build (#1305)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-11-20 14:50:44 +07:00
06ff36c836 feat: improve predictive back (#1487)
Signed-off-by: validcube <pun.butrach@gmail.com>
2023-11-20 14:49:39 +07:00
98c16eb1dc docs(readme): remove redundant feature information 2023-11-20 07:34:08 +07:00
35d80840e5 fix: Remove incorrect punctuation (#1499) 2023-11-19 05:38:34 +01:00
ad3a778fb9 refactor: apply lint from analyzer 2023-11-12 10:02:40 +05:45
d25d1efe9c fix(build): allow profile variant to compile
fix backported from #1305
2023-11-12 10:02:10 +05:45
de58dff423 docs: improve readme (#1484) 2023-11-12 10:02:07 +05:45
ec26e4d8d1 feat: update color scheme (#1483) 2023-11-12 09:59:55 +05:45
c24da41505 refactor: replace deprecated command 2023-11-12 09:59:50 +05:45
f785185e1c chore: update label for template 2023-11-11 13:19:01 +07:00
5ed3ed9a2d fix: patcher logs hiding behind navigation bar (#1476) 2023-11-11 12:00:21 +07:00
a3adace60e build: Update Gradle to v8.4 2023-11-08 17:22:06 +01:00
3db4de09e2 chore: Remove unnecessary project files 2023-11-08 17:21:02 +01:00
70b2ee0a84 feat: Disable selection of un-suggested app version by default (#1471)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-11-08 03:38:54 +01:00
e7d82850c9 fix: Log saved patch option values (#1420) 2023-11-07 23:37:59 +01:00
e6a8f4e6dc build: Bump version to v1.15.1 2023-11-04 22:41:48 +01:00
494e268bc5 fix: Use correct method name for string replacement 2023-11-04 22:41:27 +01:00
e1c6f65b7e chore: Merge branch dev to main (#1446) 2023-11-04 22:10:14 +01:00
89075c5588 build: Bump version to v1.15.0 2023-11-04 22:08:20 +01:00
c7fa9b8ce7 chore: upgrade dependencies (#1404) 2023-11-04 22:08:20 +01:00
cb70082d31 docs: Remove unneeded steps to build from source 2023-11-04 22:08:19 +01:00
48b9ac8f5b docs: use correct directory path (#1440) 2023-11-04 22:08:19 +01:00
0be568bbbd fix: Hide empty patches category labels (#1439) 2023-11-04 22:08:19 +01:00
ba44fa620f build: Bump dependencies to support patch option values (#1431)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-11-04 22:08:19 +01:00
dde402afbf chore: merge dev to main (#1437) 2023-10-26 17:22:07 +03:00
bbe5142ca9 build: bump version to v1.14.2 2023-10-26 17:21:25 +03:00
e74ffac5b0 fix: unable to use custom API (#1435) 2023-10-26 17:20:34 +03:00
cfb8980e3a chore: merge dev to main (#1425) 2023-10-25 11:42:54 +03:00
e06e1bdcbe build: bump version to v1.14.1 2023-10-25 11:42:19 +03:00
d60ced2f61 fix: remove codeblock from log export
Fixes: #1416
2023-10-25 11:40:30 +03:00
e68689828e fix: Material You toggle not updating sometimes (#1421) 2023-10-25 11:37:03 +03:00
ba932758c8 build: bump version to v1.14.0 2023-10-21 23:00:51 +07:00
ee43fa6311 chore: merge dev to main (#1399) 2023-10-21 22:58:58 +07:00
ad6b164d51 feat: root status in export patch log (#1407)
Co-authored-by: Ushie <ushiekane@gmail.com>
2023-10-21 17:46:51 +07:00
4a5510acb2 refactor: remove the remaining of semantic release
Removal reason: not maintained
2023-10-21 15:37:23 +07:00
970dbc4428 refactor(social): use correct github organisation name
the correct name is "ReVanced" not "revanced", we changed for a while now.
2023-10-21 15:33:36 +07:00
f8f37325eb refactor(social): change Twitter to X 2023-10-21 15:32:13 +07:00
bb999019ef feat: show patch options in error log (#1394) 2023-10-17 13:21:59 +07:00
533b6a155a feat: clarify "Version compatibility check" description (#1397) 2023-10-17 13:20:46 +07:00
4cdc92388c refactor: fix patch log order to be consistent with settings order (#1398) 2023-10-17 13:19:18 +07:00
ccc6be1e71 refactor(accessibility): improve patch options (#1369)
Co-authored-by: Palm <palmpasuthorn@gmail.com>
2023-10-16 16:47:59 +07:00
b355778a92 chore: merge dev to main (#1388) 2023-10-15 20:19:54 +03:00
6a12e8f37a build: bump version to v1.13.1 2023-10-15 20:19:23 +03:00
59adb91f5f fix(settings): inverted version compatibility switch 2023-10-15 20:16:58 +03:00
53677e2f39 fix: typo in reset patch selection dialog (#1387) 2023-10-15 20:14:19 +03:00
1c74f43b22 build: bump version to 1.13.0 2023-10-15 18:22:42 +07:00
b4801970e8 chore: merge dev to main (#1384)
ReVanced Manager 1.13.0!!
2023-10-15 18:18:09 +07:00
7a3a6b512f docs(building): use new highlight format 2023-10-15 18:04:19 +07:00
72ea33b6de fix(patch_selector): correct popup menu style
fix: #1372
2023-10-15 17:46:44 +07:00
d97192e0ee refactor(patch_options): disable card tap (#1368) 2023-10-15 16:56:43 +07:00
196d9fe4d2 refactor: reorganize and rename settings (#1307)
Co-authored-by: Pun Butrach <pun.butrach@gmail.com>
Co-authored-by: Ushie <ushiekane@gmail.com>
2023-10-15 16:56:02 +07:00
e960fcc303 feat: add user agent (#1380)
Co-authored-by: Pun Butrach <pun.butrach@gmail.com>
2023-10-15 16:51:31 +07:00
f334da95ff feat: Remove full external storage access (#1381) 2023-10-15 16:44:11 +07:00
5d5f311e36 fix(settings-view): list items jumping on scroll up (#1375) 2023-10-15 16:17:28 +07:00
d577e97758 fix(app-bar): title not hiding completely (#1376) 2023-10-15 16:16:55 +07:00
2dc92e26d3 fix(patches-selector): ignore punctuation marks when searching for patch (#1377) 2023-10-14 19:43:18 +07:00
f4994a36a3 chore: Merge branch dev to main (#1366) 2023-10-13 00:22:02 +02:00
7a785a8163 build: Bump version to v1.12.1 2023-10-13 00:14:14 +02:00
6ad0d860c7 fix: Load patches from older versions of ReVanced Manager correctly 2023-10-13 00:12:27 +02:00
38a2fa55df chore: Merge branch dev to main (#1350) 2023-10-12 21:58:29 +02:00
a21b170b52 build: Bump version to v1.12.0 2023-10-12 21:55:06 +02:00
44265b2362 chore: Setup Crowdin configuration file 2023-10-12 18:51:16 +02:00
069193342b docs: use correct alert syntax 2023-10-12 14:25:13 +02:00
54e9a56cda docs: Add options setting 2023-10-12 14:22:20 +02:00
39bc9227dc docs: Improve readability 2023-10-12 14:20:44 +02:00
ac636670c3 feat: Add patch options (#1354) 2023-10-12 02:00:39 +02:00
2abadc73e4 fix: selected patches order (#1345) 2023-10-10 18:54:42 +07:00
377368f6bf docs: reflect the latest changes of ReVanced Manager (#1349) 2023-10-10 01:07:58 +07:00
4085c10bfc fix: search with package name (#1344) 2023-10-09 11:22:15 +07:00
657ba11e7e chore: Merge branch dev to main (#1340) 2023-10-07 02:04:26 +02:00
a9ae45fe63 build: Bump version to v1.11.2 2023-10-07 02:01:10 +02:00
61bb39b46f build: Bump dependencies to improve merging integrations speed 2023-10-07 02:01:10 +02:00
2ad106f7d7 fix(export-settings): remove boolean workaround 2023-10-07 02:01:09 +02:00
8fd4fe0e55 feat(patcher): improve logs (#1299)
Co-authored-by: Ushie <ushiekane@gmail.com>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-10-07 02:01:09 +02:00
b1c9aedac3 build: Bump version to v1.11.1 2023-10-05 17:45:56 +02:00
a80415be02 build: Bump dependencies 2023-10-05 17:45:56 +02:00
d9acd0d74b chore: Merge branch dev to main (#1329) 2023-10-05 01:35:08 +02:00
7ae09159ba build: Bump version to v1.11.0 2023-10-05 01:23:48 +02:00
a709abd80c perf: Do not load patches twice (#1328) 2023-10-04 21:58:25 +02:00
cd07f39b69 fix: reset patches after patching 2023-10-04 12:16:56 -07:00
f7c11d07a8 fix(export-settings): export patches as json object 2023-10-04 11:33:13 -07:00
b07439d402 fix: Reload patches 2023-10-04 19:38:34 +02:00
d8eadc2a2d feat: Use simpler wording 2023-10-04 19:01:17 +02:00
3a88d4d3e6 build: Bump dependencies 2023-10-04 18:39:24 +02:00
012110f008 perf: Do not load patches twice 2023-10-04 18:39:24 +02:00
4de274bf62 feat: Export settings migration activity (#1308) 2023-10-01 19:12:31 +02:00
76b89baee3 build: Bump dependencies (#1311) 2023-10-01 19:03:26 +02:00
697ae92031 Apply suggestions from code review [skip ci] 2023-10-01 19:02:49 +02:00
c87f92b346 feat: Adjust install dialog labels 2023-10-01 06:21:03 +02:00
6961bb7fd0 fix: Do not delete cached downloads 2023-10-01 04:48:24 +02:00
6e26130744 chore: Add todo 2023-09-30 22:15:46 +02:00
123a375a27 refactor: Remove unused strings 2023-09-30 22:14:51 +02:00
2b4b3ca0a5 fix: Retrieve app information from patched app 2023-09-30 21:40:03 +02:00
c4a795418f fix: Move installation log to correct place 2023-09-30 21:13:32 +02:00
91837ebade feat: Remove original package name in app info view 2023-09-30 21:07:26 +02:00
0492e910ea fix: Fill the preferred action 2023-09-30 20:11:53 +02:00
36c86e22b1 fix: Load installed apps 2023-09-30 20:03:09 +02:00
6bdc0c7bb2 feat: Simplify label 2023-09-30 19:58:45 +02:00
1e8d8f749a fix: do not ask for patches consent before initializing model 2023-09-30 14:57:48 +05:45
2e8e3b0d1e fix: Do not hardcode any predefined packages 2023-09-29 20:12:39 +02:00
15b8613d3c feat: Only log relevant records 2023-09-29 19:40:22 +02:00
8ce266bc94 perf: Reduce amount of network requests 2023-09-29 18:39:07 +02:00
8661d72e45 feat: Simplify label 2023-09-29 17:00:34 +02:00
62505f2543 build: Bump dependencies 2023-09-28 17:36:10 +02:00
37986c58ec docs(building): correct path to gradle.properties 2023-09-28 21:45:41 +07:00
2968d96fe9 remove log import 2023-09-27 14:42:11 -07:00
e7c8d0e78c use same fingerprint 2023-09-27 14:36:39 -07:00
83cbb34a5b use revanced fingerprint 2023-09-27 14:27:38 -07:00
7559c7b67e verify fingerprint of calling app 2023-09-27 14:17:29 -07:00
02822f4b38 remove user interaction 2023-09-27 13:47:59 -07:00
96736afb94 make bars transparent 2023-09-27 12:32:19 -07:00
72ae132fcd make export settings activity transparent 2023-09-27 12:21:27 -07:00
2250e1bcab convert Booleans to Ints 2023-09-26 16:46:49 -07:00
d9d5b746c3 Added ExportSettingsActivity 2023-09-26 16:21:46 -07:00
f1ea306291 change booleans to numbers 2023-09-25 14:42:40 -07:00
378d62395a remove newlines from base64 output 2023-09-25 10:15:56 -07:00
99c92069b9 export saved patches and keystore 2023-09-25 08:43:10 -07:00
2a89ef797f feat: share settings 2023-09-24 16:56:25 -07:00
5838550188 build: bump version to v1.10.3 2023-09-23 13:10:46 +03:00
e0e01ae3ee chore: merge dev to main (#1300) 2023-09-23 13:10:08 +03:00
0983ba8a0f fix: search bar overflow (#1301) 2023-09-23 00:51:25 +03:00
0bfa776ce7 fix: npe when loading patch bundle on android 8 2023-09-23 00:24:17 +03:00
d2b09936d1 chore: merge dev to main (#1295) 2023-09-22 22:08:13 +07:00
68e9f0f7c1 build: bump version 1.10.2
!!
2023-09-22 22:05:31 +07:00
c3d345de80 fix: force disable material you on Android 11 and below (#1293) 2023-09-22 21:05:13 +07:00
385c0e246a build: use correct version code
The user won't notice it :shhh: we're fine, continue as normal.
2023-09-21 19:32:10 +07:00
5ead49a5b7 build: bump version to v1.10.1 2023-09-20 20:06:19 -07:00
c0760b1347 chore: merge dev to main (#1289) 2023-09-20 20:04:10 -07:00
e01b323aee fix: make entire theme item clickable 2023-09-20 20:03:47 -07:00
6f4866ef63 fix: default theme not following system (#1288) 2023-09-20 20:03:15 -07:00
1b6d72661c build: bump version to v1.10.0 2023-09-20 17:40:23 -07:00
c59d4aea81 chore: merge dev to main (#1239) 2023-09-20 17:35:01 -07:00
6260a80738 feat(settings - appearance): add system option (#1279)
Closes #1260
2023-09-21 03:25:23 +03:00
e75d3c8273 fix(install-type): update padding and enable radio list scrolling (#1287)
fix(install-type): update padding and enable radio list scrolling
2023-09-20 17:24:37 -07:00
b7acb475e9 fix: update install type dialog padding 2023-09-20 16:57:13 -07:00
42b6bbff7c fix: update youtube link (#1286) 2023-09-21 02:16:55 +03:00
4b8542b35b fix: load patches via PatchBundle (#1242) 2023-09-21 01:35:32 +03:00
9ad1d6cbfb fix(custom-sources): ignore casing when checking if default repo is being used (#1281) 2023-09-21 00:42:29 +03:00
4cdd9acd73 docs(readme): add documentation and minor fixes (#1264)
Co-authored-by: Pun Butrach <pun.butrach@gmail.com>
2023-09-16 17:38:06 +07:00
f4b0a695d6 fix: improve app list loading speed (#1166) 2023-09-15 22:58:15 +07:00
b525ea1ba4 ci: remove analyze workflow (#1262)
Code style is not enforced so analysis is not needed.
2023-09-12 23:40:00 +07:00
c1fc2c4766 ci: bump actions/checkout to v4 2023-09-10 14:43:58 +07:00
5c733932c7 ci(pr-build): revert "sign apk with keystore (#1231)"
This reverts commit 8bf08ff4641451db64c80fddc9a3281cdf73098b, as it fails for PRs originating from forks
2023-09-08 01:14:13 +02:00
d1218616ec docs(readme): minor improvements 2023-09-08 01:14:13 +02:00
2bf6a03d56 fix: back button closing the app from any page 2023-09-08 01:14:13 +02:00
b6ee63c1ea ci(pr-build): sign apk with keystore (#1231) 2023-09-08 01:14:13 +02:00
6d08efdcd7 chore: fix issue template 2023-09-08 01:13:42 +02:00
a0a43a5651 build: bump version to v1.9.5 2023-09-08 01:13:42 +02:00
3af2f5b032 chore: merge dev to main (#1177) 2023-09-04 04:15:12 +03:00
8f54b226b4 refactor(patches-selector): improve universal patches header 2023-09-03 21:14:09 +03:00
9f64011b26 fix: npe when patching on android 8 2023-09-03 20:54:42 +03:00
c5fc54e721 fix(installer): open the patched app after install (#1233) 2023-09-03 21:48:28 +07:00
fc8a4fc5b6 fix: Don't use 'BuildContext's across async gaps. (#1148) 2023-09-03 01:47:20 +03:00
6f9ab232ae chore: ignore the root .gradle folder (#1160) 2023-09-02 09:29:49 -07:00
8cb96f1e45 fix: permissions handling at first launch 2023-08-31 19:34:12 +05:45
5733acb77a build(dependency): update patcher to v14.2.2
https://github.com/ReVanced/revanced-patcher/releases/tag/v14.2.2
2023-08-31 20:35:24 +07:00
e49bcb2a69 chore: simplify issue templates (#1165) 2023-08-31 17:36:29 +07:00
42e41c399f fix: hide install button on error 2023-08-28 19:05:30 +03:00
166a3180d3 build: correct version code 2023-08-28 03:20:15 +03:00
3bf4982f23 chore: merge dev to main (#1163) 2023-08-28 02:47:47 +03:00
f4e1cccfac build: bump version to v1.9.4 2023-08-28 01:44:46 +02:00
7911a8f49e fix: properly log messages and progress 2023-08-28 01:44:46 +02:00
64a96fc3ce fix: close before returning 2023-08-28 01:44:46 +02:00
8e2cfbddc5 fix: ignore the root .gradle folder 2023-08-27 14:05:39 -07:00
45fae3f0fd build: bump ReVanced Patcher back to v14.2.1
This reverts the previous regression with the dependency to ReVanced Patcher.
2023-08-27 22:35:03 +02:00
e45a7824c1 build: bump version to v1.9.3 2023-08-27 13:27:53 +07:00
5d72c48a76 chore: merge dev to main (#1157) 2023-08-27 13:27:01 +07:00
d6169c6fa2 fix: broken settings page 2023-08-27 11:55:21 +05:45
9df6d52e2d build: bump version to v1.9.2 2023-08-27 05:40:50 +03:00
239de8e923 chore: merge dev to main (#1156) 2023-08-27 05:40:13 +03:00
7d553a87f3 build: revert patcher to v11.0.4 2023-08-27 05:39:24 +03:00
557b42bc56 build: bump version to 1.9.1 2023-08-27 03:58:30 +03:00
8423914748 chore: merge dev to main (#1155) 2023-08-27 03:57:57 +03:00
07dce23794 build: bump patcher to v14.2.0 2023-08-27 03:55:56 +03:00
18fd0552db build: bump version to v1.9.0 2023-08-27 02:23:36 +03:00
d537d48f8e chore: merge dev to main (#1125) 2023-08-27 02:21:48 +03:00
b456512bbb build: bump patcher to v14.1.0 (#1153)
Co-authored-by: aAbed <aabedhkhan@gmail.com>
2023-08-27 02:21:16 +03:00
d9953b1473 fix(installer): use correct elevation level 2023-08-24 19:00:50 +07:00
c6ac898390 fix: universal patches not selectable 2023-08-17 18:25:23 +05:45
43f98cec43 build: make variant more identifiable
Release variant will use the "ReVanced Manager" app name, Debug will use "ReVanced Manager Debug"
2023-08-15 21:31:34 +07:00
63175cdec6 ci(build): create debug variant instead of release 2023-08-15 20:55:11 +07:00
6436a1ec61 build: debug apk come with application suffix
Instead of using the same one as Release, app.revanced.manager.flutter - We add .debug to it, yay, co-installation of two variants!
2023-08-15 20:37:43 +07:00
c400619338 feat: disable changing patches selection by default (#1132)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-08-15 16:05:27 +07:00
dcd5ba41cf build: add mavenlocal to repositories 2023-08-14 03:40:05 +03:00
7525e52fab fix(installer): use correct bg colour for dialog 2023-08-12 15:07:04 +07:00
72fd24e624 fix: use i18n translation for installer page 2023-08-12 15:06:17 +07:00
11d8f9fd30 refactor: apply changes according to Dart
trailing commas
2023-08-12 14:53:54 +07:00
4b0c8cecc8 ci(build): update event trigger
This add ".github/workflows/pr-build.yml" to build on every change to the CI Build to check if there's no error when it got modified.

And also remove "fastlane/**" because that's not related to the ReVanced Manager's code
2023-08-12 13:56:18 +07:00
372ce174c9 fix: overlapping issue in application selection page (#1128) 2023-08-11 19:19:44 +03:00
381daff980 fix: exclude x86 aapt2 binary from release builds (#1126) 2023-08-11 19:19:33 +03:00
94acebbebd docs(fixed): replaced some emoji icons, not rendering on chromium based browsers on windows (#1123) 2023-08-11 10:17:46 +07:00
f90f6e81ee feat: patch apps without internet (#1114) 2023-08-11 08:11:19 +07:00
97e37f304b refactor: migrate MediaQuery properties to InheritedModel (#1115)
Co-authored-by: Ushie <ushiekane@gmail.com>
2023-08-10 15:25:07 +03:00
f5e45ead26 ci(build): don't build on every pull request unrelated to application 2023-08-10 19:14:13 +07:00
14f765f4b4 ci(build): don't cache Gradle
Gradle take up so much space in cache that it wouldn't make sense for us to cache it since we are rapidly hitting the cache limit every time.
2023-08-10 19:12:15 +07:00
b77d46b2c2 feat(installer): redesign utility options (#1062)
Co-authored-by: Ushie <ushiekane@gmail.com>
2023-08-10 19:02:30 +07:00
1442916b20 build: bump version to 1.8.0 2023-08-10 03:01:03 +03:00
c6a5f42d23 chore: merge dev to main (#1120) 2023-08-10 03:00:27 +03:00
580d50eb8d fix: use right label for auto patch 2023-08-10 00:05:47 +03:00
9a66b6e50d fix(root-install): create service and postfs directories if they dont exist (#1116)
Fixes #860
2023-08-09 23:57:09 +03:00
acec064cb7 feat(patcher-view): show notice for removed patches that were used previously (#1107) 2023-08-09 22:32:13 +03:00
ea05d13a1f fix(patches-selector): New tag showing for old patches (#1113) 2023-08-09 22:31:37 +03:00
fd741f2ccf build: bump version to v1.7.0 2023-08-08 03:52:03 +03:00
055c52178f chore: merge dev branch to main branch (#1096) 2023-08-08 03:51:05 +03:00
722a5859a5 fix: pair integrations and patches updates (#1102) 2023-08-08 03:30:48 +03:00
1714c3fa86 feat(patches-selector): show New tag for new patches (#1099) 2023-08-07 22:28:09 +07:00
131df28110 docs(managing): update to reflect current changes
The chip was removed because it was not implemented for too long.
2023-08-07 20:13:23 +07:00
1be284f8d8 feat: switch to the new ReVanced API (#1101) 2023-08-07 17:14:16 +07:00
218e53ae75 refactor(analysis): migrate deprecated rule
deprecated since Dart 2.0, yike
2023-08-06 14:41:15 +07:00
264d8d90c4 refactor: apply changes according to analysis
trailing commas, and sort import alphabetically
2023-08-06 14:39:46 +07:00
0b529c2629 fix(patches-selector): separate all universal patches to the bottom (#1092) 2023-08-06 12:12:01 +07:00
5abcc7191f fix: experimental/universal patches being used even when turned off (#1090)
Co-authored-by: Pun Butrach <pun.butrach@gmail.com>
2023-08-06 12:10:57 +07:00
5346f6e1bf fix(patch-item): hide universal patches if not enabled (#1087) 2023-08-05 20:19:36 +07:00
2f471b3de4 fix: use user friendly strings (#1088) 2023-08-05 20:19:03 +07:00
3cf06efddf build: bump version to v1.6.1 2023-08-04 03:33:19 +03:00
1f4f0a3bb7 build: revert patcher to v11.0.4 2023-08-04 03:32:50 +03:00
c07f8eae9b build: bump version to v1.6.0 2023-08-04 00:54:13 +03:00
374eb3d06d feat: abort patching process at any time (#1072) 2023-08-04 00:40:08 +03:00
fe75b75ddc feat: dpi responsive layout (#361) 2023-08-04 00:38:38 +03:00
d3790bf64b refactor: remove unimplemented features (#1061)
Co-authored-by: Ushie <ushiekane@gmail.com>
2023-08-03 23:58:50 +03:00
f905a52988 feat: allow control over patches update (#1063)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-08-03 23:23:56 +03:00
e55f427b05 build: bump patcher version to v12.1.1 2023-08-04 01:53:19 +05:45
0f000fc4d1 build: bump version to v1.5.2 2023-08-04 01:52:24 +05:45
a0339e3c19 chore: merge dev to main (#1077) 2023-08-03 05:24:25 +03:00
9cfa274d81 build: bump version to v1.5.1 2023-08-03 05:23:47 +03:00
8c79f5e371 build: bump patcher to v12.1.0 2023-08-03 05:23:16 +03:00
0d716513d7 fix: keystore password dialog showing up before importing (#1068) 2023-08-03 08:36:39 +07:00
08f6724060 chore: merge dev branch to main branch (#1060) 2023-08-03 02:20:24 +03:00
29daf51e64 build: bump version to 2023-08-03 02:19:14 +03:00
b3b2b01c0f ci(build): use pr event trigger for now
I just heard of cache eviction policy :)
2023-08-01 20:20:27 +07:00
c3212d0308 ci(build): update event trigger
Run on every PR

Run on every Push, ignore main branch, and ignore tag
2023-08-01 19:32:52 +07:00
aaa114ba13 ci(pr-build): reinstate functionality
PR Build was never use because it have to be manually trigger
2023-08-01 19:26:26 +07:00
8ca6418630 refactor(settings): improve clarity of the warning dialogs (#1058) 2023-07-31 21:53:23 +07:00
95632b7f55 chore(deps): update revanced-patcher to v12.0.0 2023-07-30 11:49:01 +07:00
64744b2abf fix: original.apk not found despite existing (#1052) 2023-07-30 10:35:34 +07:00
096b315701 fix(patch-item): remove redundant patch version completely (#1059)
https://github.com/ReVanced/revanced-patches/pull/2709
2023-07-29 16:21:30 +07:00
c27ca08d3a docs: leftovers from 6495687841524cd82ab65990c9c44d53d377db6e 2023-07-29 16:08:54 +07:00
0011222371 chore:fix incorrect version 2023-07-23 14:25:11 +05:30
29db947e25 fix: using non const value in a const variable 2023-07-23 14:04:35 +05:30
fd43ac7581 chore: merge dev branch to main branch (#1032) 2023-07-23 13:53:25 +05:30
e49c19b3cd feat: support older version of android for reddit client patches 2023-07-23 13:51:36 +05:30
Pun
06f0e59967 chore(deps): update libsu to v5.2.0 2023-07-22 13:21:13 +07:00
Pun
c5fc5ee93b build: speed up compilation time
faster build faster build faster build faster build faster build
2023-07-19 18:30:50 +07:00
159c85bd1f fix: close previous dialog when user reset the API URL (#1025) 2023-07-16 21:04:35 +07:00
Pun
2460acf0f4 ci(analyze): don't run when PR is in draft 2023-07-16 17:10:29 +07:00
Pun
6495687841 docs: correct misspelling (EN_US)
This correct spelling to English American, because by default, we use English US.
2023-07-16 16:31:08 +07:00
Pun
d229ccb36c ci(analyze): clarify job name that the job do static analysis & format checking 2023-07-16 16:21:16 +07:00
Pun
4d6a57ddcf ci(analyze): restore run when commit push to dev branch 2023-07-16 16:17:15 +07:00
d161d55aaf fix: patched applications not showing at launch (#1031) 2023-07-16 12:46:01 +07:00
Pun
768ad0c9bc chore: merge dev branch to main branch (#1011)
ReVanced Manager v1.4.1
2023-07-15 20:33:30 +07:00
29323d4e20 build: update app version to v1.4.1 2023-07-15 12:55:59 +07:00
630b22e193 refactor: applies changes from formatter & linter 2023-07-15 12:41:03 +07:00
79116f9e67 fix(patched-applications): non-patched app showing on Installed section (#1022) 2023-07-15 08:11:51 +07:00
eb58475259 fix: showing Installed when it's actually not (#1021) 2023-07-15 08:10:36 +07:00
a879ac30fb fix: prevent unsupported operation exception (#1018) 2023-07-14 17:55:04 +07:00
c5b0621323 fix(navigation-view): back button closing the app from any page (#1019) 2023-07-13 19:25:48 +05:45
0462815014 fix(app-selector): fix text overflow on small screen (#1017) 2023-07-13 00:16:53 +05:45
e64318c947 fix(app-selector): fix text overflow on small screen 2023-07-13 00:14:47 +05:45
b784482788 chore: update libsu to 5.1.0
This should fixes some issues with root
2023-07-11 19:28:59 +07:00
2834e8b348 fix: patchable apps not showing if none of them is installed (#1009) 2023-07-11 17:11:45 +07:00
b23dfd4289 chore: merge dev branch to main branch (#1010) 2023-07-11 01:24:54 +05:30
217d525cb2 build: update app version to v1.4.0 2023-07-11 01:22:57 +05:30
85b166cbda fix: update hardcoded patch name 2023-07-11 01:21:45 +05:30
9a57f8b858 ci(build): use correct JDK version
There's no reasons to go higher than JDK 11 since we compile the application using JDK 11
2023-07-10 21:42:24 +07:00
Pun
3bfdc932c2 chore: update app description
👍👍 Patch your favourite apps, right on your device.
2023-07-10 21:27:20 +07:00
48c878af21 chore: merge dev branch to main branch (#996) 2023-07-10 16:56:50 +03:00
490a7a58fc build: update app version to v1.3.9
ReVanced Manager, 1.3.9 (10030009)

See PR #996
2023-07-10 20:40:40 +07:00
567b1a3ace refactor: improve code readability according to linter 2023-07-10 19:45:50 +07:00
6a45db8a38 refactor: improve code readability according to formatter 2023-07-10 19:36:50 +07:00
Pun
b272988929 build: always compile with the latest SDK supported by Flutter
`targetSdkVersion` is still the same, we want to test the application first before bumping up to latest.
2023-07-10 18:43:07 +07:00
9828857570 fix: fixed typo 2023-07-10 12:16:51 +05:45
ecb54d8e44 docs: improve clarity of speech in issue template (#1005)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-07-09 23:15:20 +02:00
344717b021 fix: app crash after custom source (#1003) 2023-07-08 23:07:19 +05:45
da6cf585c0 fix: app crash after custom source 2023-07-08 22:26:31 +05:45
9e93177afd feat: show warning dialog when resetting stored patches
This prevent user from accidentally resetting stored patches by showing
them warning dialog.
2023-07-08 11:01:10 +07:00
16318efb01 refactor: seperate translation string by context 2023-07-08 10:45:13 +07:00
e83e13b6d4 refactor: fix more problem with analyser
Missing trailing comma in app_selector_view
2023-07-07 22:21:22 +07:00
7c2c695d88 refactor: apply changes from analyser 2023-07-07 22:15:12 +07:00
c7b227529d chore: disable unnecessary tooltip
Remove tooltip in Navigation View, there's no impact to accessibility.

Tested using: Android TalkBack
2023-07-07 22:11:13 +07:00
14f49e9d30 docs: fix description for next page 2023-07-05 15:43:40 +02:00
1875c4ee73 fix: update button being clickable when offline (#987) 2023-07-05 19:59:53 +07:00
76c68baa1f build: update gradle to v7.6.2 2023-07-01 18:21:49 +07:00
68876a4414 build: bump version to v1.3.8 and patcher dep 2023-07-01 14:33:25 +05:30
26d7e5b60f build: bump version to v1.3.7 and patcher dep 2023-07-01 02:46:43 +03:00
e78af6ae99 chore: merge dev to main (#976) 2023-07-01 02:41:57 +03:00
6fe05cd86e feat: show all the unseen changelogs on changelog section (#970) 2023-07-01 02:41:03 +03:00
4100d7a391 fix: different message when trying to patch spilt apk (#973) 2023-07-01 02:40:30 +03:00
c1cc812ea4 build: bump version to v1.3.6 2023-06-24 19:17:59 +03:00
9663e3f0f4 chore: merge dev branch to main branch (#945) 2023-06-24 19:16:22 +03:00
941f618153 fix(app-selector): remove direct use of strings (#944) 2023-06-23 16:39:12 +03:00
716a30bf7b fix: experimental patches stay selected when toggled off (#946) 2023-06-23 16:37:23 +03:00
d051ae576b feat(updater): download successful dialog (#938) 2023-06-23 16:36:36 +03:00
35e99cb014 feat(mount): use /data/adb/revanced again and ensure migration scenario (#948) 2023-06-23 01:03:03 +03:00
af054fba49 docs: improve clarity of footnotes [skip ci] (#950) 2023-06-17 14:48:57 +02:00
58d837d641 feat(app-selector): Improve app item UI to avoid overflow issues (#943) 2023-06-16 10:04:55 +03:00
6cc1bd21cd fix(updater): ability to start again after cancelling (#937) 2023-06-16 10:04:07 +03:00
cebfa7c8ae docs: simplify steps 2023-06-16 05:09:52 +02:00
e2d7ab8f8f chore: fix broken docs link 2023-06-15 16:42:09 +02:00
ec77987fcd feat(app-selector): improve skeleton UI (#939) 2023-06-15 12:57:39 +03:00
b161608d02 feat(patches-selector): improve disabled card UI (#941) 2023-06-15 12:54:49 +03:00
5e7458ff1c fix: import patches selects unsupported patches (#942) 2023-06-14 21:34:11 +07:00
Pun
ed06aaa1f5 docs(readme): fix invalid url for building manager from source
📜 fix invalid URL for building manager from source.

Old: https://github.com/revanced/revanced-manager/blob/docs/docs/5_building-from-source.md
New: https://github.com/revanced/revanced-manager/blob/main/docs/4_building.md
2023-06-14 19:52:10 +07:00
13b7179941 fix: fix not asking for permission 2023-06-12 09:56:49 +05:30
da0d88d86f build: bump patcher 2023-06-12 09:08:29 +05:30
b7347c312a build: bump version to v1.3.4 2023-06-12 08:59:49 +05:30
c876f2f7e3 feat: add permission to manage storage 2023-06-12 08:59:14 +05:30
adad5fd8ff build: bump version to v1.3.3 2023-06-12 07:02:49 +05:30
2aaa7ae8c9 chore: merge dev to main (#935) 2023-06-12 07:01:12 +05:30
1f64ea37bd fix: using wrong string 2023-06-12 06:59:43 +05:30
cac1525da0 build: bump patcher 2023-06-12 06:02:16 +05:30
1ad906fedc refactor: improve code 2023-06-12 06:01:57 +05:30
20ffef39a3 fix: update button being shown as clickable on launch (#932) 2023-06-12 05:55:53 +05:30
185460c054 chore(fastlane): update description (#933)
Co-authored-by: Ushie <ushiekane@gmail.com>
2023-06-12 03:21:33 +03:00
0079e74d77 feat: clarify suggested version in app list (#934)
Co-authored-by: Aunali321 <48486084+Aunali321@users.noreply.github.com>
2023-06-12 05:35:02 +05:30
a8e019482f ci: add workflow to update documentation repository 2023-06-10 23:41:36 +02:00
f01b8e47aa fix: aborting message changed (#928)
Change aborting message from "aborting..." to "aborted..."

----------------------
Co-authored-by: Ushie <github@ushie.dev>
Co-authored-by: Ushie <ushiekane@gmail.com>
2023-06-09 17:34:55 +07:00
Pun
e43dfb7599 docs(troubleshooting): fix markdown styling (#929)
`docs`: `84a9168` - Self-explanatory, fix markdown styling issue
2023-06-09 17:24:31 +07:00
6b8cfe2b49 build: bump version to v1.3.2 2023-06-09 11:42:06 +03:00
7f7b14bae3 fix: use correct variable name for armv7 check 2023-06-09 11:40:54 +03:00
810b02d9fd build: bump version to v1.3.1 2023-06-09 10:45:22 +03:00
62813145b2 chore: merge dev to main (#926) 2023-06-09 01:59:18 +03:00
4877058253 chore(fastlane): add banner 2023-06-09 01:58:02 +03:00
2a9fd3abb8 chore(fastlane): add missing directory 2023-06-09 01:57:49 +03:00
a244f7b598 chore: merge dev to main 2023-06-08 21:31:41 +03:00
5396457ad5 chore: move fastlane to correct directory 2023-06-08 21:30:44 +03:00
0186b6ea61 chore: merge dev to main (#924) 2023-06-07 20:18:21 +03:00
fe
f6e99f7e88 fix: return fetched patch version if non default patch repo is used (#922) 2023-06-07 20:16:25 +03:00
Pun
c24a3828be ci(analyze): don't run when pushed to repository (#920) 2023-06-07 20:15:43 +03:00
Pun
2e38a4567a feat: clarify architecture in about section
This commit changes `Arch` to `Supported Arch(s)`
2023-06-07 20:13:42 +03:00
67c5d67a61 feat: update icons for the new logo
fixed #918
2023-06-07 20:10:14 +03:00
9592dde534 feat: add fastlane for F-Droid (#889)
Co-authored-by: Ushie <ushiekane@gmail.com>
2023-06-07 19:59:17 +03:00
d030b0af70 docs: init (#911)
Co-authored-by: afn <_@afn.lol>
2023-06-07 12:01:36 +02:00
4ccb9ac94d fix: remove redundant "v" in the downloader screen (#895) 2023-05-26 13:54:52 +03:00
8af62b917c build: bump version to 1.3.0 (#892) 2023-05-24 23:33:04 +03:00
311f114132 chore: update v1.3.0 2023-05-24 21:46:00 +02:00
d015bd03f7 chore: merge dev to main (#891) 2023-05-24 22:17:16 +03:00
a61b9de0fa chore(deps): bump revanced-patcher to 9.0.0 2023-05-24 02:02:59 +02:00
ef1b283917 chore(deps): bump revanced-patcher to 8.0.0 (#880) 2023-05-24 01:07:22 +05:30
c677f00105 build: bump version to v1.2.0 2023-05-20 02:30:18 +03:00
8d2f778dfe chore: merge dev to main (#881) 2023-05-20 02:28:58 +03:00
c549d102f6 build: migrate to dart 3 (#871) 2023-05-20 04:07:53 +05:30
39a9ee4e9d chore: remove coreLibraryDesugaring (#873) 2023-05-20 04:05:46 +05:30
a27dc6ad1c feat: migrate to dart3 2023-05-19 14:23:48 +05:45
8ccb75fc8d chore: remove coreLibraryDesugaring 2023-05-17 15:38:03 +09:00
8fc86dbe02 feat: allow selecting installed if app is full apk 2023-05-13 04:54:35 +03:00
359f052608 fix: export keystore not working in some conditions (#862) 2023-05-12 19:36:47 +03:00
4150e2265c fix: use correct version in update download dialog (#859) 2023-05-10 13:23:02 +03:00
b803ce7435 fix: system navigation overlapping UI (#853) 2023-05-10 13:18:51 +03:00
289c6cd7a9 chore: merge dev to main (#857) 2023-05-08 21:46:33 +05:30
31fc7b74c2 build: bump version to v1.1.0 2023-05-08 21:38:19 +05:30
3e565f25be fix(appselector): closing dialog closes app selector 2023-05-08 21:27:07 +05:30
e509be4e21 chore(deps): bump patcher to 7.1.1 2023-05-08 21:19:45 +05:30
170fc537ac fix: fix armv7 dialog shown for x86, x86_64 2023-05-07 04:14:57 +05:30
3fe5882145 feat: remove cronet 2023-05-06 05:39:46 +05:30
a290791410 chore: merge dev to main (#844) 2023-05-06 03:26:14 +05:30
Pun
2ebd38ff68 feat: add checksums verification to Gradle (#813) 2023-05-03 21:38:47 +03:00
cd987a5b19 fix: broken filename when saving files with the same name (#837) 2023-05-03 21:34:30 +03:00
7f1dab7ee1 ci: temporarily restore old release workflow 2023-05-02 17:50:07 +03:00
bed3945aa5 feat: clarify warning and consequences for ARMv7 users (#836) 2023-05-02 16:41:11 +07:00
15a32a18b7 fix: fix broken manager update implmentation 2023-04-30 17:38:08 +07:00
d2e8e7dd5d chore: comply with review changes 2023-04-30 01:03:36 +07:00
ce12ec89c4 ci(release): automatically bump version codes 2023-04-29 20:53:54 +07:00
b286444ad9 fix(i18n): update translation for refreshSucess 2023-04-29 20:43:02 +07:00
941263102d refactor: change name from "recommendedVersion" to "suggestedVersion" 2023-04-29 20:43:02 +07:00
e2ed296dc7 chore(deps): constrain get_it to 7.2.0 2023-04-29 19:46:07 +07:00
cfc866bef2 feat: change continue anyways to cancel 2023-04-29 15:37:30 +03:00
affba669ce feat: add continue anyway button to select from storage dialog (#810) 2023-04-29 15:36:25 +03:00
7230152ab8 chore: fix issues with gitignore [skip ci] 2023-04-29 17:42:19 +07:00
21fee7171f chore: update pubspec version
skip-checks: true
2023-04-29 15:40:25 +07:00
ad17995f28 feat: improve suggested app version text (#822) 2023-04-28 17:41:28 +03:00
ac830cbe7f fix: resized monochrome icon to match the original (#789)
cherry-pick from 6281ae82876c69ff4194a782e4b08b398a1285d6
2023-04-27 18:12:48 +07:00
65da6af3f9 fix: update pubspec version 2023-04-21 14:56:31 +03:00
3d90bf7588 ci: bypass push permission on protected branches with owner PAT 2023-04-21 14:55:29 +03:00
62ef1c88fe feat: resetting source to default dismiss the sources pop-up (#797)
* feat: resetting source to default dismiss the sources pop-up

* chore: format using `dart format`
2023-04-21 00:29:37 +05:30
d6918920b6 chore: add missing translations 2023-04-20 23:53:24 +05:30
cdfb09fbfa feat: warning for armv7 devices 2023-04-20 23:20:30 +05:30
bb681e31c9 feat: disable selecting installed apps for nonroot 2023-04-20 22:25:29 +05:30
c7483936ec docs: remove alpha disclaimer 2023-04-20 05:07:46 +05:30
0a1f2da33d feat: appreciation message for new contributors 2023-04-20 05:04:37 +05:30
f5aafdb7d6 feat: progress bar for manager updates 2023-04-20 04:45:46 +05:30
c9adf1c492 style: sort imports 2023-04-19 01:32:43 +05:30
4c9cb560e3 feat: auto select default patches 2023-04-19 01:21:08 +05:30
f0b028279c fix: open contributor links externally (#791) 2023-04-18 19:46:16 +05:30
197770b68b chore: update dependencies (#772)
* chore: updated some dependencies

* refactor: reimplemented cache interceptor

* Revert "Updated dependencies & migrated breaking changes"

This reverts commit e6743b0d6b2552fdbf1c99d23e158e682362dd5d.

* chore: migrated flutter_local_notifications

* revert: reimplemented cache interceptor
2023-04-18 19:45:29 +05:30
37b583f560 feat: trim extra space when setting custom source (#771) 2023-04-18 17:15:04 +07:00
dca2d4fe12 feat: add option to import/export keystore (#776)
* feat: add option to import/export keystore

* change the order of import/export keystore buttons

* feat: add option to change the keystore password
2023-04-18 15:08:10 +05:30
3b677f8ae3 feat: improve ux (#752)
* feat: restart app toast when changing sources, api url

* fix: potentially fix manager stuck on black screen

* feat: remove select all patches chip

* feat: show all apps and recommended versions

* chore(i18n): remove unused strings

remove unused strings left out in 7e05bca

* feat: select install type before patching

* feat: update patches button (#782)

* feat: update patches button

* feat: show toast when force refresh

* chore: don't translate "ReVanced Manager" and "ReVanced Patches"

* Revert "feat: select install type before patching"

This reverts commit 74e0c09b543fe70b70cd917e6e21ceb0f46f3533.

* feat: rename recommended patches to default patches

* feat: add missing localization

* feat: display restart app toast for resetting source

---------

Co-authored-by: EvadeMaster <93124920+EvadeMaster@users.noreply.github.com>
2023-04-18 13:27:26 +05:30
0b952578d1 ci(release): update semantic-release 2023-04-02 02:37:49 +07:00
054afbbedd feat: confirmation dialog for deleting keystore (#764)
* feat: confirmation dialog for deleting keystore

* refactor(i18n): apply suggestion from code-reviewer

Co-authored-by: Ushie <github@ushie.dev>

* refactor: apply suggestion from code-reviewer

Co-authored-by: Mipirakas <borismichiels@gmail.com>

---------

Co-authored-by: Ushie <github@ushie.dev>
Co-authored-by: Mipirakas <borismichiels@gmail.com>
2023-04-01 21:02:28 +07:00
866a6e4a44 chore(CHANGELOG): reset changelog 2023-03-30 23:29:26 +07:00
8ea7dd478b ci(release): update node dependencies 2023-03-30 23:20:31 +07:00
7839252934 ci(analyze): only run when necessary (#766)
* ci(analyser): only run on lib/`.dart` changes

* ci(analyser): runs on workflow changes

* ci(analyze): run on all dart file changes

---------

Co-authored-by: Palm <palmpasuthorn@gmail.com>
2023-03-29 20:51:08 +03:00
fa4063220f ci: dart analyser (#761)
* ci: dart analyser

* ci(analyser): clarify the dart analysing step

* refactor: ignore generated files

* ci(analyser): apply suggestion from code-reviewer

Co-Authored-By: Palm <palmpasuthorn@gmail.com>

* ci(analyser): apply suggestion from code-reviewer

Co-Authored-By: Palm <palmpasuthorn@gmail.com>

* ci(analyser): apply suggestion from code-reviewer

Co-authored-by: Palm <palmpasuthorn@gmail.com>

---------

Co-authored-by: Palm <palmpasuthorn@gmail.com>
2023-03-28 15:47:34 +07:00
d214a02abd ci(release): fix argument parsing of npm exec 2023-03-26 23:02:57 +07:00
d1c12edd1b ci(release): use appropriate npm commands for ci environment 2023-03-26 23:02:57 +07:00
ded1a44c37 ci(release): fix step not moving artifact to accessible path 2023-03-26 23:02:57 +07:00
790a6cd1e3 ci(release): remove unnecessary variables in flutter build step 2023-03-26 18:57:27 +03:00
a79f883a0f ci: use caching to speed up workflows (#760)
Use caching to speed up workflows: 9-14 minutes (ish) to 6-8 minutes (ish)

Commits:
* ci(release): use GitHub cache

* ci(release): restore signing
2023-03-26 20:02:56 +07:00
d9c5a540a3 ci(release): fix wrong artifact name and ci not uploading build 2023-03-24 01:01:44 +07:00
276f33b9ec ci: use semantic-release (#746) 2023-03-23 17:34:52 +01:00
ded59d2da0 feat(ci): update crowdin workflow to use new main branch 2023-03-20 22:39:29 +03:00
62f7a820d8 feat: remove notice about stale development [skip ci] 2023-03-20 18:03:58 +03:00
7063ffa013 build: bump version to v0.0.57 2023-03-14 21:00:48 +03:00
bf4dc3c095 chore: bump stacked
stacked: ^3.0.0 -> ^3.2.0
stacked_generator: ^0.8.0 -> ^1.0.0
stacked_services: ^0.9.3 -> ^1.0.0
2023-03-14 21:00:28 +03:00
c10e5848bf Merge pull request #707 from revanced/dev
chore: merge branch `dev` to `flutter`
2023-03-14 22:07:35 +07:00
92a3b0d6e0 feat(style): use native switch & chip (#732)
* chore: remove useless themedata

* feat(style): new switch

* feat(style): use native chip components

* chore: remove unused import

* feat(accessibility): set tooltip

* chore: remove unneeded themedata

* chore: fix theme

* feat(i18n): add 3 new strings

* feat(style): correct material 3 theme on nondynamic
2023-03-14 21:53:42 +07:00
b475bd25c8 build: remove env setup step 2023-03-11 23:01:26 +05:30
d318224a6f fix: black screen after resetting custom sources 2023-03-06 18:08:48 +05:30
0074fee865 build: new ci (#731)
New Build CI

Commits:
* buid: re-do ci

* build: ignore tags

* build: get the latest flutter version automatically && formatting

---------

Co-authored-by: EvadeMaster <93124920+EvadeMaster@users.noreply.github.com>
2023-03-05 16:23:51 +07:00
5617535a63 refactor: remove sentry and crowdin (#730)
We no longer use sentry and crowdin.
2023-03-05 16:12:46 +07:00
68ccefc59f revert: "refactor: update deprecated and minor code refactors (#710)"
This reverts commit 6829d3cdeac94fb305b8885570840fe25769b6a6.

Signed-off-by: EvadeMaster <93124920+EvadeMaster@users.noreply.github.com>
2023-03-03 18:06:24 +07:00
6d60541626 chore(deps): meet patcher breaking changes 2023-03-03 03:11:44 +03:00
a635e5b8d0 chore: addFiles -> addIntegrations (#725)
fix #721
2023-03-02 14:51:35 +07:00
48a10440fe ci(build): remove environment on PR build 2023-03-02 11:06:15 +07:00
8e3ba88318 chore: bump gradle 7.5-rc.1 -> 7.6.1 (#717)
* chore: upgrade gradle from 7.5-rc.1 -> 7.6.1

* chore: remove unrelated changes
2023-02-27 19:26:10 +07:00
ab8fccc544 chore(deps): bump patcher version from 6.4.3 -> 7.0.0 2023-02-27 19:19:19 +07:00
8319dc9164 fix: improperly sized monochrome icon (#715) 2023-02-27 19:07:44 +07:00
6829d3cdea refactor: update deprecated and minor code refactors (#710)
Improve code readability & additional refactoring

Commits:
chore: exclude generated from analyzer

refactor: add SharedPreferences to locator

refactor: access shared pref from locator, and code refactor

refactor: remove unwanted `await`

refactor: remove `const` from `CacheConfig`
2023-02-27 19:06:05 +07:00
3ae4d69110 chore: migrate deprecation code && code cleanup (#708)
Fixes all issues in `flutter analyze`.
<Reviewed>

Commits:
* chore: migrate deprecated text style

* chore: migrate `toggleableActiveColor` to individual theme

* chore: don't use 'BuildContext's across async gaps
2023-02-20 16:53:53 +07:00
dc665f227e fix: use high resolution adaptive icons (#675)
Use high-resolution icons instead of the low-resolution ones on ReVanced Manager.

Commits:
* High resolution adaptive icons, built using revanced-logo-no-background.svg

Same icons currently used for ReVanced YouTube.

* tweak background color to match revanced-logo-no-background.svg

* recreated foreground using 'revanced-logo-shape.svg'

* updated full resolution icons, using same ratio as original SVG

* updated icons with gradient border
2023-02-17 19:28:01 +07:00
a83496568f chore: code cleanup (#681)
Improve the readability of the code.

Commits:
* chore: correct typos `fragement` to `fragment`

* chore: put a single newline at end of file.
2023-02-17 18:53:23 +07:00
12d25570af fix: Long patch description truncated (#702)
fix: long patch description truncated (#702)

Allow flexible height
2023-02-14 18:42:24 +07:00
378c947654 chore: bump version to v0.0.56 2023-02-12 13:04:34 +07:00
bd39a3140e feat: fix patch bundle version no longer displayed (#686) 2023-02-12 00:02:30 +07:00
7d3ca3dec1 fix: display patches version on first load (#687) 2023-02-12 00:00:01 +07:00
1cb556c8f8 chore: bump version to 0.0.55 2023-02-11 23:59:53 +07:00
8c8f96de1c build: bump patcher version 2023-02-11 23:59:47 +07:00
318cd87a9a feat(style): use the correct m3 theming (partially) (#680) 2023-02-07 15:46:29 +03:00
5d63d5c2d3 feat: potentially fix apps disappearing when update is available (#674) 2023-01-31 15:42:00 +03:00
7d347fccc6 build: bump version to v0.0.54 2023-01-30 15:57:06 +03:00
a54ca799b9 feat: update rules of analysis_options.yaml. and solved all problems (#665)
* update rules of analysis_options.yaml. and solved all problems

* refactor: fix remaining problems

---------

Co-authored-by: Ushie <ushiekane@gmail.com>
2023-01-30 15:35:06 +03:00
f5bc1a996f feat: remove select all icon from searchbar (#669) 2023-01-30 15:13:25 +03:00
8591bc4d01 chore: update cr_file_saver (#668)
Co-authored-by: Ushie <github@ushie.dev>
2023-01-30 15:11:31 +03:00
40888c07f3 feat: fix overflow text & separate version from patch name (#666)
* chore: Add note

* feat: Fix overflow text & seperate version from patch title

* feat: Fix overflow text & separate version from patch name
2023-01-30 15:07:25 +03:00
1c965c3788 refactor: cleanup remember patches feature (#630) 2023-01-30 15:03:55 +03:00
4df690c2a2 feat: monochrome icon + predictive back gesture (#591)
* Add monochrome icon

* Enable predictive back gesture

* feat: monochrome icon + predictive back gesture
2023-01-30 01:23:56 +03:00
d6abb61e2b ci(build): update workflow actions (#662)
- Bump upload-artifact to v3

- Update crowdin/github-action according to new versioning format [https://github.com/crowdin/github-action/releases/tag/v1.6.0]
2023-01-29 23:56:13 +03:00
3434c862e9 feat: improve note [skip ci] 2023-01-28 07:49:57 +01:00
ea8af926fa chore: update broken documentation link (#659)
* chorus: fix invalid documentation link

* chorus: Update broken documentation link
2023-01-22 16:18:41 +03:00
c3df48174c feat: warn user for selecting all patches (#649) 2023-01-21 16:37:28 +01:00
f1e60f96c4 chore: bump version to 0.0.53 2023-01-18 22:07:00 +01:00
cdd852678b build: bump patcher version 2023-01-18 22:07:00 +01:00
bf518b5467 bump: kotlin gradle plugin 2023-01-18 22:07:00 +01:00
ffd53fab26 feat: clarify acknowledgement label (#608) 2023-01-14 20:23:49 +03:00
5aad7dad35 chore: fix incorrect wording 2023-01-12 21:03:11 +01:00
b1c1a9f4e1 feat: stale development notice [skip ci] 2023-01-07 14:24:43 +01:00
d847a8e0b2 build: bump version to v0.0.52 2022-12-19 01:39:48 +01:00
9668730b5d build: bump patcher version (#610) 2022-12-19 01:35:58 +01:00
dc049cf26a New Crowdin translations by Github Action (#601)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2022-12-16 22:41:26 +03:00
82c2b2f128 build: bump version to v0.0.51 2022-12-15 21:24:06 +03:00
5f81d65911 feat: sort by amount of patches, display patches count, setting to enable universal patches (#593)
* feat: sort by amount of patches

* feat: display patches count in application card

* feat: setting to enable universal patches
2022-12-15 23:35:45 +05:30
287 changed files with 36132 additions and 12064 deletions

3
.env
View File

@ -1,3 +0,0 @@
sentryDSN=
apiKey=
appId=

View File

@ -1,120 +0,0 @@
name: 🐞 Bug report
description: Report a very clearly broken issue.
title: 'bug: <title>'
labels: [bug]
body:
- type: markdown
attributes:
value: |
# ReVanced Manager bug report
Important to note that your issue may have already been reported before. Please check for existing issues [here](https://github.com/revanced/revanced-manager/labels/bug).
- type: dropdown
attributes:
label: Type
options:
- Error while running the manager
- Error at runtime
- Cosmetic
- Other
validations:
required: true
- type: textarea
attributes:
label: Bug description
description: How did you find the bug? Any additional details that might help?
validations:
required: true
- type: textarea
attributes:
label: Steps to reproduce
description: Add the steps to reproduce this bug including your environment.
placeholder: Step 1. Download some files. Step 2. ...
validations:
required: true
- type: textarea
attributes:
label: Android version
description: Android version used.
validations:
required: true
- type: textarea
attributes:
label: Manager version
description: Manager version used.
validations:
required: true
- type: textarea
attributes:
label: Target package name
description: App you tried to patch.
validations:
required: true
- type: textarea
attributes:
label: Target package version.
description: Version of the app you tried to patch.
validations:
required: true
- type: dropdown
attributes:
label: Installation type
options:
- Non-root
- Root
validations:
required: true
- type: textarea
attributes:
label: Patches selected.
description: Patches you selected for the app.
validations:
required: true
- type: textarea
attributes:
label: Device logs (exported using Manager settings).
description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
render: shell
validations:
required: true
- type: textarea
attributes:
label: Installer logs (exported using Installer menu option) [unneeded if issue is not during patching].
description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
render: shell
validations:
required: false
- type: textarea
attributes:
label: Screenshots or videos
description: Add screenshots or videos that show the bug here.
placeholder: Drag and drop the screenshots/videos into this box.
validations:
required: false
- type: textarea
attributes:
label: Solution
description: If applicable, add a possible solution.
validations:
required: false
- type: textarea
attributes:
label: Additional context
description: Add additional context here.
validations:
required: false
- type: checkboxes
id: acknowledgements
attributes:
label: Acknowledgements
description: Your issue will be closed if you haven't done these steps.
options:
- label: I have searched the existing issues and this is a new and no duplicate or related to another open issue.
required: true
- label: I have written a short but informative title.
required: true
- label: I filled out all of the requested information in this issue properly.
required: true
- label: The issue is related solely to the ReVanced Manager
required: true

126
.github/ISSUE_TEMPLATE/bug_report.yml vendored Normal file
View File

@ -0,0 +1,126 @@
name: 🐞 Bug report
description: Report a bug or an issue.
title: "bug: "
labels: ["Bug report"]
body:
- type: markdown
attributes:
value: |
<p align="center">
<picture>
<source
width="256px"
media="(prefers-color-scheme: dark)"
srcset="https://raw.githubusercontent.com/revanced/revanced-manager/main/assets/revanced-headline/revanced-headline-vertical-dark.svg"
>
<img
width="256px"
src="https://raw.githubusercontent.com/revanced/revanced-manager/main/assets/revanced-headline/revanced-headline-vertical-light.svg"
>
</picture>
<br>
<a href="https://revanced.app/">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/revanced/revanced-manager/main/assets/revanced-logo/revanced-logo.svg" />
<img height="24px" src="https://raw.githubusercontent.com/revanced/revanced-manager/main/assets/revanced-logo/revanced-logo.svg" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://github.com/ReVanced">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://i.ibb.co/dMMmCrW/Git-Hub-Mark.png" />
<img height="24px" src="https://i.ibb.co/9wV3HGF/Git-Hub-Mark-Light.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="http://revanced.app/discord">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/13122796/178032563-d4e084b7-244e-4358-af50-26bde6dd4996.png" />
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032563-d4e084b7-244e-4358-af50-26bde6dd4996.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://reddit.com/r/revancedapp">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/13122796/178032351-9d9d5619-8ef7-470a-9eec-2744ece54553.png" />
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032351-9d9d5619-8ef7-470a-9eec-2744ece54553.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://t.me/app_revanced">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/13122796/178032213-faf25ab8-0bc3-4a94-a730-b524c96df124.png" />
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032213-faf25ab8-0bc3-4a94-a730-b524c96df124.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://x.com/revancedapp">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/93124920/270180600-7c1b38bf-889b-4d68-bd5e-b9d86f91421a.png">
<img height="24px" src="https://user-images.githubusercontent.com/93124920/270108715-d80743fa-b330-4809-b1e6-79fbdc60d09c.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://www.youtube.com/@ReVanced">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/13122796/178032714-c51c7492-0666-44ac-99c2-f003a695ab50.png" />
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032714-c51c7492-0666-44ac-99c2-f003a695ab50.png" />
</picture>
</a>
<br>
<br>
Continuing the legacy of Vanced
</p>
# ReVanced Manager bug report
Before creating a new bug report, please keep the following in mind:
- **Do not submit a duplicate bug report**: Search for existing bug reports [here](https://github.com/ReVanced/revanced-manager/issues?q=label%3A%22Bug+report%22).
- **Review the contribution guidelines**: Make sure your bug report adheres to it. You can find the guidelines [here](https://github.com/ReVanced/revanced-manager/blob/main/CONTRIBUTING.md).
- **Do not use the issue page for support**: If you need help or have questions, check out other platforms on [revanced.app](https://revanced.app).
- type: textarea
attributes:
label: Bug description
description: |
- Describe your bug in detail
- Add steps to reproduce the bug if possible (Step 1. ... Step 2. ...)
- Add images and videos if possible
- List used patches if applicable
validations:
required: true
- type: textarea
attributes:
label: Version of ReVanced Manager and version & name of app you are patching
validations:
required: true
- type: dropdown
attributes:
label: Installation method
options:
- Regular
- Mount
validations:
required: false
- type: textarea
attributes:
label: ReVanced Manager logs
description: Export logs from the ReVanced Manager settings.
render: shell
validations:
required: true
- type: textarea
attributes:
label: Patch logs
description: Export logs from the "Patcher" screen.
render: shell
validations:
required: false
- type: checkboxes
id: acknowledgements
attributes:
label: Acknowledgements
description: Your bug report will be closed if you don't follow the checklist below.
options:
- label: I have checked all open and closed bug reports and this is not a duplicate.
required: true
- label: I have chosen an appropriate title.
required: true
- label: All requested information has been provided properly.
required: true
- label: The bug is only related to ReVanced Manager.
required: true

View File

@ -1 +1,5 @@
blank_issues_enabled: false
blank_issues_enabled: false
contact_links:
- name: 🗨 Discussions
url: https://github.com/revanced/revanced-suggestions/discussions
about: Have something unspecific to ReVanced Manager in mind? Search for or start a new discussion!

View File

@ -1,52 +0,0 @@
name: ⭐ Feature request
description: Create a detailed feature request.
title: 'feat: <title>'
labels: [feature-request]
body:
- type: dropdown
attributes:
label: Type
options:
- Functionality
- Cosmetic
- Other
validations:
required: true
- type: textarea
attributes:
label: Issue
description: What is the current problem. Why does it require a feature request?
validations:
required: true
- type: textarea
attributes:
label: Feature
description: Describe your feature in detail. How does it solve the issue?
validations:
required: true
- type: textarea
attributes:
label: Motivation
description: Why should your feature should be considered?
validations:
required: true
- type: textarea
attributes:
label: Additional context
description: Add additional context here.
validations:
required: false
- type: checkboxes
id: acknowledgements
attributes:
label: Acknowledgements
description: Your issue will be closed if you haven't done these steps.
options:
- label: I have searched the existing issues and this is a new and no duplicate or related to another open issue.
required: true
- label: I have written a short but informative title.
required: true
- label: I filled out all of the requested information in this issue properly.
required: true
- label: The issue is related solely to the ReVanced Manager
required: true

View File

@ -0,0 +1,105 @@
name: ⭐ Feature request
description: Create a detailed request for a new feature.
title: "feat: "
labels: ["Feature request"]
body:
- type: markdown
attributes:
value: |
<p align="center">
<picture>
<source
width="256px"
media="(prefers-color-scheme: dark)"
srcset="https://raw.githubusercontent.com/revanced/revanced-manager/main/assets/revanced-headline/revanced-headline-vertical-dark.svg"
>
<img
width="256px"
src="https://raw.githubusercontent.com/revanced/revanced-manager/main/assets/revanced-headline/revanced-headline-vertical-light.svg"
>
</picture>
<br>
<a href="https://revanced.app/">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/revanced/revanced-manager/main/assets/revanced-logo/revanced-logo.svg" />
<img height="24px" src="https://raw.githubusercontent.com/revanced/revanced-manager/main/assets/revanced-logo/revanced-logo.svg" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://github.com/ReVanced">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://i.ibb.co/dMMmCrW/Git-Hub-Mark.png" />
<img height="24px" src="https://i.ibb.co/9wV3HGF/Git-Hub-Mark-Light.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="http://revanced.app/discord">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/13122796/178032563-d4e084b7-244e-4358-af50-26bde6dd4996.png" />
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032563-d4e084b7-244e-4358-af50-26bde6dd4996.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://reddit.com/r/revancedapp">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/13122796/178032351-9d9d5619-8ef7-470a-9eec-2744ece54553.png" />
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032351-9d9d5619-8ef7-470a-9eec-2744ece54553.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://t.me/app_revanced">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/13122796/178032213-faf25ab8-0bc3-4a94-a730-b524c96df124.png" />
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032213-faf25ab8-0bc3-4a94-a730-b524c96df124.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://x.com/revancedapp">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/93124920/270180600-7c1b38bf-889b-4d68-bd5e-b9d86f91421a.png">
<img height="24px" src="https://user-images.githubusercontent.com/93124920/270108715-d80743fa-b330-4809-b1e6-79fbdc60d09c.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://www.youtube.com/@ReVanced">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/13122796/178032714-c51c7492-0666-44ac-99c2-f003a695ab50.png" />
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032714-c51c7492-0666-44ac-99c2-f003a695ab50.png" />
</picture>
</a>
<br>
<br>
Continuing the legacy of Vanced
</p>
# ReVanced Manager feature request
Before creating a new feature request, please keep the following in mind:
- **Do not submit a duplicate feature request**: Search for existing feature requests [here](https://github.com/ReVanced/revanced-manager/issues?q=label%3A%22Feature+request%22).
- **Review the contribution guidelines**: Make sure your feature request adheres to it. You can find the guidelines [here](https://github.com/ReVanced/revanced-manager/blob/main/CONTRIBUTING.md).
- **Do not use the issue page for support**: If you need help or have questions, check out other platforms on [revanced.app](https://revanced.app).
- type: textarea
attributes:
label: Feature description
description: |
- Describe your feature in detail
- Add images, videos, links, examples, references, etc. if possible
- type: textarea
attributes:
label: Motivation
description: |
A strong motivation is necessary for a feature request to be considered.
- Why should this feature be implemented?
- What is the explicit use case?
- What are the benefits?
- What makes this feature important?
validations:
required: true
- type: checkboxes
id: acknowledgements
attributes:
label: Acknowledgements
description: Your feature request will be closed if you don't follow the checklist below.
options:
- label: I have checked all open and closed feature requests and this is not a duplicate.
required: true
- label: I have chosen an appropriate title.
required: true
- label: The feature request is only related to ReVanced Manager.
required: true

2
.github/config.yaml vendored Normal file
View File

@ -0,0 +1,2 @@
firstPRMergeComment: >
Thank you for contributing to ReVanced. Join us on [Discord](https://revanced.app/discord) to receive a role for your contribution.

78
.github/dependabot.yml vendored Normal file
View File

@ -0,0 +1,78 @@
version: 2
updates:
- package-ecosystem: github-actions
labels: []
directory: /
target-branch: dev
schedule:
interval: monthly
groups:
gh-actions:
applies-to: version-updates
patterns:
- "*"
update-types:
- "minor"
- "patch"
- package-ecosystem: npm
labels: []
directory: /
target-branch: dev
schedule:
interval: monthly
groups:
npm:
applies-to: version-updates
patterns:
- "*"
update-types:
- "minor"
- "patch"
# ReVanced Manager Flutter
- package-ecosystem: pub
labels: []
directory: /
target-branch: dev
schedule:
interval: monthly
groups:
pubspec:
applies-to: version-updates
patterns:
- "*"
update-types:
- "minor"
- "patch"
- package-ecosystem: gradle
labels: []
directory: /android
target-branch: dev
schedule:
interval: monthly
groups:
gradle:
applies-to: version-updates
patterns:
- "*"
update-types:
- "minor"
- "patch"
# ReVanced Manager Compose
- package-ecosystem: gradle
labels: [ "ReVanced Manager Compose" ]
directory: /
target-branch: compose-dev
schedule:
interval: monthly
groups:
gradle-compose:
applies-to: version-updates
patterns:
- "*"
update-types:
- "minor"
- "patch"

View File

@ -0,0 +1,70 @@
name: Build pull request
on:
workflow_dispatch:
inputs:
pr-number:
description: PR number
required: true
app-flavor:
description: App flavor
default: release
type: choice
options:
- release
- debug
- profile
jobs:
build:
name: Build
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- name: Checkout PR
uses: actions/checkout@v4
with:
ref: refs/pull/${{ inputs.pr-number }}/merge
fetch-depth: 0
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
cache: true
- name: Cache Gradle
uses: burrunan/gradle-cache-action@v1
with:
build-root-directory: ${{ github.workspace }}/android
- name: Get dependencies
run: flutter pub get
- name: Generate translations
run: dart run slang
- name: Generate code files
run: dart run build_runner build --delete-conflicting-outputs
- name: Build
id: flutter-build
run: flutter build apk --${{ inputs.app-flavor }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload artifacts
if: steps.flutter-build.outcome == 'success'
uses: actions/upload-artifact@v4
with:
name: revanced-manager-(${{ env.COMMIT_HASH }}
path: |
build/app/outputs/flutter-apk/app-*.apk

View File

@ -1,55 +0,0 @@
name: "Android CI Actions"
on:
push:
branches:
- "**"
tags-ignore:
- "v*" # Ignore tags that start with "v" (e.g. v1.0.0) because they are handled by release-build.yml
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set env
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
- name: Set up JDK 12
uses: actions/setup-java@v3
with:
java-version: '12'
distribution: 'zulu'
- uses: subosito/flutter-action@v2
with:
channel: 'stable'
- name: Set environment variables
run: echo $SECRETS | base64 -d > lib/utils/environment.dart
env:
SECRETS: ${{ secrets.SECRETS }}
- name: Set up Flutter
run: flutter pub get
- name: Generate files with Builder
run: flutter packages pub run build_runner build --delete-conflicting-outputs
- name: Build with Flutter
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }}
SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }}
SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_KEYSTORE_PASSWORD }}
run: flutter build apk
- name: Sign APK
id: sign_apk
uses: ilharp/sign-android-release@v1
with:
releaseDir: build/app/outputs/apk/release
signingKey: ${{ secrets.SIGNING_KEYSTORE }}
keyStorePassword: ${{ secrets.SIGNING_KEYSTORE_PASSWORD }}
keyAlias: ${{ secrets.SIGNING_KEY_ALIAS }}
keyPassword: ${{ secrets.SIGNING_KEY_PASSWORD }}
- name: Add version to APK
run: mv ${{ steps.sign_apk.outputs.signedFile }} revanced-manager-${{ env.RELEASE_VERSION }}.apk
- name: Upload APK
uses: actions/upload-artifact@v2
with:
name: revanced-manager-${{ env.RELEASE_VERSION }}
path: revanced-manager-${{ env.RELEASE_VERSION }}.apk

View File

@ -1,46 +0,0 @@
name: Sync Crowdin translations
on:
push:
branches:
- "flutter"
paths:
- "assets/i18n/en_US.json"
- ".github/workflows/crowdin.yml"
schedule:
- cron: "0 0 * * *" # daily
workflow_dispatch:
jobs:
sync-crowdin:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Crowdin
uses: crowdin/github-action@1.5.0
with:
config: crowdin.yml
upload_sources: true
upload_translations: false
download_translations: true
push_translations: true
create_pull_request: false
localization_branch_name: i18n_flutter
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
# commented due to Manager not being ready for the translated files to be in the main branch
# - name: GitHub is so dumb i just cant
# run: |
# sudo chmod -R ugo+rwX .
# - name: Merge
# run: |
# git checkout flutter
# git add *
# git merge i18n_flutter
# git push

29
.github/workflows/open_pull_request.yml vendored Normal file
View File

@ -0,0 +1,29 @@
name: Open a PR to main
on:
push:
branches:
- dev
workflow_dispatch:
env:
MESSAGE: Merge branch `${{ github.head_ref || github.ref_name }}` to `main`
jobs:
pull-request:
name: Open pull request
permissions:
pull-requests: write
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Open pull request
uses: repo-sync/pull-request@v2
with:
destination_branch: 'main'
pr_title: 'chore: ${{ env.MESSAGE }}'
pr_body: |
This pull request will ${{ env.MESSAGE }}.
pr_draft: true

View File

@ -1,41 +0,0 @@
name: "Android CI PR Build"
on:
pull_request:
branches:
- "**"
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set env
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
- name: Set up JDK 12
uses: actions/setup-java@v3
with:
java-version: '12'
distribution: 'zulu'
- uses: subosito/flutter-action@v2
with:
channel: 'stable'
- name: Set environment variables
run: echo $SECRETS | base64 -d > lib/utils/environment.dart
env:
SECRETS: ${{ secrets.SECRETS }}
- name: Set up Flutter
run: flutter pub get
- name: Generate files with Builder
run: flutter packages pub run build_runner build --delete-conflicting-outputs
- name: Build with Flutter
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: flutter build apk
- name: Add version to APK
run: mv build/app/outputs/flutter-apk/app-release.apk revanced-manager-${{ env.RELEASE_VERSION }}.apk
- name: Upload APK
uses: actions/upload-artifact@v2
with:
name: revanced-manager-${{ env.RELEASE_VERSION }}
path: revanced-manager-${{ env.RELEASE_VERSION }}.apk

View File

@ -1,54 +0,0 @@
name: "Release Build"
on:
push:
tags:
- "v*"
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set env
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
- name: Set up JDK 12
uses: actions/setup-java@v3
with:
java-version: '12'
distribution: 'zulu'
- uses: subosito/flutter-action@v2
with:
channel: 'stable'
- name: Set environment variables
run: echo $SECRETS | base64 -d > lib/utils/environment.dart
env:
SECRETS: ${{ secrets.SECRETS }}
- name: Set up Flutter
run: flutter pub get
- name: Generate files with Builder
run: flutter packages pub run build_runner build --delete-conflicting-outputs
- name: Build with Flutter
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }}
SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }}
SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_KEYSTORE_PASSWORD }}
run: flutter build apk
- name: Sign APK
id: sign_apk
uses: ilharp/sign-android-release@v1
with:
releaseDir: build/app/outputs/apk/release
signingKey: ${{ secrets.SIGNING_KEYSTORE }}
keyStorePassword: ${{ secrets.SIGNING_KEYSTORE_PASSWORD }}
keyAlias: ${{ secrets.SIGNING_KEY_ALIAS }}
keyPassword: ${{ secrets.SIGNING_KEY_PASSWORD }}
- name: Add version to APK
run: mv ${{steps.sign_apk.outputs.signedFile}} revanced-manager-${{ env.RELEASE_VERSION }}.apk
- name: Publish release APK
uses: "marvinpinto/action-automatic-releases@latest"
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
prerelease: false
files: revanced-manager-${{ env.RELEASE_VERSION }}.apk

76
.github/workflows/release.yml vendored Normal file
View File

@ -0,0 +1,76 @@
name: Release
on:
workflow_dispatch:
push:
branches:
- main
- dev
jobs:
release:
name: Release
permissions:
contents: write
id-token: write
attestations: write
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "lts/*"
cache: 'npm'
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
cache: true
- name: Cache Gradle
uses: burrunan/gradle-cache-action@v1
with:
build-root-directory: ${{ github.workspace }}/android
- name: Install dependencies
run: npm ci
- name: Get dependencies
run: flutter pub get
- name: Generate translations
run: dart run slang
- name: Generate code files
run: dart run build_runner build --delete-conflicting-outputs
- name: Setup keystore
run: |
echo "${{ secrets.KEYSTORE }}" | base64 --decode > "android/app/keystore.jks"
- name: Semantic Release
uses: cycjimmy/semantic-release-action@v4
id: semantic
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
KEYSTORE_ENTRY_ALIAS: ${{ secrets.KEYSTORE_ENTRY_ALIAS }}
KEYSTORE_ENTRY_PASSWORD: ${{ secrets.KEYSTORE_ENTRY_PASSWORD }}
- name: Attest
if: steps.semantic.outputs.new_release_published == 'true'
uses: actions/attest-build-provenance@v2
with:
subject-path: build/app/outputs/apk/release/revanced-manager-*.apk

75
.github/workflows/sync_crowdin.yml vendored Normal file
View File

@ -0,0 +1,75 @@
name: Sync Crowdin
on:
workflow_dispatch:
schedule:
- cron: 00 12 * * 1
push:
branches: dev
paths:
- assets/i18n/*.json
- assets/i18n/*.dart
- .github/workflows/sync_crowdin.yml
jobs:
sync:
name: Sync
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
cache: true
- name: Sync translations from Crowdin
uses: crowdin/github-action@v2
with:
config: crowdin.yml
upload_sources: true
upload_translations: false
download_translations: true
localization_branch_name: feat/translations
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)"
pull_request_base_branch_name: "dev"
commit_message: "chore: Sync translations"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
- name: Validation of synced translations
run: |
dart pub get
dart run slang validate
- name: Normalization of Translation Strings
run: |
sudo chmod 766 assets/i18n/*.i18n.json
dart run slang analyze
dart run slang clean
dart run slang normalize
dart run slang
cd assets/i18n
dart nuke.dart >> $GITHUB_STEP_SUMMARY
cd ../..
flutter analyze lib/gen/strings.g.dart --no-fatal-infos --no-fatal-warnings
- name: Commit translations
run: |
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

View File

@ -0,0 +1,19 @@
name: Update documentation
on:
push:
paths:
- docs/**
jobs:
trigger:
runs-on: ubuntu-latest
name: Dispatch event to documentation repository
if: github.ref == 'refs/heads/main'
steps:
- uses: peter-evans/repository-dispatch@v3
with:
token: ${{ secrets.DOCUMENTATION_REPO_ACCESS_TOKEN }}
repository: revanced/revanced-documentation
event-type: update-documentation
client-payload: '{"repo": "${{ github.event.repository.name }}", "ref": "${{ github.ref }}"}'

127
.gitignore vendored
View File

@ -1,6 +1,5 @@
# Miscellaneous
*.class
*.lock
*.log
*.pyc
*.swp
@ -9,6 +8,7 @@
.buildlog/
.history
.svn/
migrate_working_dir/
# IntelliJ related
*.iml
@ -16,109 +16,20 @@
*.iws
.idea/
# Visual Studio Code related
.classpath
.project
.settings/
# Flutter repo-specific
/bin/cache/
/bin/mingit/
/dev/benchmarks/mega_gallery/
/dev/bots/.recipe_deps
/dev/bots/android_tools/
/dev/docs/doc/
/dev/docs/flutter.docs.zip
/dev/docs/lib/
/dev/docs/pubspec.yaml
/dev/integration_tests/**/xcuserdata
/dev/integration_tests/**/Pods
/packages/flutter/coverage/
version
# packages file containing multi-root paths
.packages.generated
# 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/
**/*.g.dart
**/*.locator.dart
**/*.router.dart
**/ios/Flutter/.last_build_id
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
**/generated_plugin_registrant.dart
.packages
.pub-cache/
.pub/
build/
flutter_*.png
linked_*.ds
unlinked.ds
unlinked_spec.ds
# Android related
**/android/**/gradle-wrapper.jar
**/android/.gradle
**/android/captures/
**/android/gradlew
**/android/gradlew.bat
**/android/local.properties
**/android/**/GeneratedPluginRegistrant.java
**/android/key.properties
*.jks
# iOS/XCode related
**/ios/**/*.mode1v3
**/ios/**/*.mode2v3
**/ios/**/*.moved-aside
**/ios/**/*.pbxuser
**/ios/**/*.perspectivev3
**/ios/**/*sync/
**/ios/**/.sconsign.dblite
**/ios/**/.tags*
**/ios/**/.vagrant/
**/ios/**/DerivedData/
**/ios/**/Icon?
**/ios/**/Pods/
**/ios/**/.symlinks/
**/ios/**/profile
**/ios/**/xcuserdata
**/ios/.generated/
**/ios/Flutter/.last_build_id
**/ios/Flutter/App.framework
**/ios/Flutter/Flutter.framework
**/ios/Flutter/Flutter.podspec
**/ios/Flutter/Generated.xcconfig
**/ios/Flutter/app.flx
**/ios/Flutter/app.zip
**/ios/Flutter/flutter_assets/
**/ios/Flutter/flutter_export_environment.sh
**/ios/ServiceDefinitions.json
**/ios/Runner/GeneratedPluginRegistrant.*
# macOS related
**/macos/Flutter/GeneratedPluginRegistrant.swift
**/macos/Flutter/Flutter-Debug.xcconfig
**/macos/Flutter/Flutter-Release.xcconfig
**/macos/Flutter/Flutter-Profile.xcconfig
# Windows related
**/windows/flutter/ephemeral/
**/windows/**/*.suo
**/windows/**/*.user
**/windows/**/*.userosscache
**/windows/**/*.sln.docstates
**/windows/x64/
**/windows/x86/
**/windows/**/*.[Cc]ache
**/windows/**/!*.[Cc]ache/
# Web related
lib/generated_plugin_registrant.dart
# Coverage
coverage/
/build/
# Symbolication related
app.*.symbols
@ -126,13 +37,19 @@ app.*.symbols
# Obfuscation related
app.*.map.json
# Exceptions to above rules.
!**/ios/**/default.mode1v3
!**/ios/**/default.mode2v3
!**/ios/**/default.pbxuser
!**/ios/**/default.perspectivev3
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
!/dev/ci/**/Gemfile.lock
# Android Studio will place build artifacts here
/android/app/debug
/android/app/profile
/android/app/release
# Generated files
android/app/.cxx
**/*.g.dart
**/*.locator.dart
**/*.router.dart
# Project specific
node_modules/
.vscode/
Firebase related
.firebase

View File

@ -1,11 +1,11 @@
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled.
# This file should be version controlled and should not be manually edited.
version:
revision: 85684f9300908116a78138ea4c6036c35c9a1236
channel: stable
revision: "2663184aa79047d0a33a14a3b607954f8fdd8730"
channel: "stable"
project_type: app
@ -13,26 +13,11 @@ project_type: app
migration:
platforms:
- platform: root
create_revision: 85684f9300908116a78138ea4c6036c35c9a1236
base_revision: 85684f9300908116a78138ea4c6036c35c9a1236
create_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730
base_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730
- platform: android
create_revision: 85684f9300908116a78138ea4c6036c35c9a1236
base_revision: 85684f9300908116a78138ea4c6036c35c9a1236
- platform: ios
create_revision: 85684f9300908116a78138ea4c6036c35c9a1236
base_revision: 85684f9300908116a78138ea4c6036c35c9a1236
- platform: linux
create_revision: 85684f9300908116a78138ea4c6036c35c9a1236
base_revision: 85684f9300908116a78138ea4c6036c35c9a1236
- platform: macos
create_revision: 85684f9300908116a78138ea4c6036c35c9a1236
base_revision: 85684f9300908116a78138ea4c6036c35c9a1236
- platform: web
create_revision: 85684f9300908116a78138ea4c6036c35c9a1236
base_revision: 85684f9300908116a78138ea4c6036c35c9a1236
- platform: windows
create_revision: 85684f9300908116a78138ea4c6036c35c9a1236
base_revision: 85684f9300908116a78138ea4c6036c35c9a1236
create_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730
base_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730
# User provided section

62
.releaserc Normal file
View File

@ -0,0 +1,62 @@
{
"branches": [
"main",
{
"name": "dev",
"prerelease": true
}
],
"plugins": [
[
"@semantic-release/commit-analyzer", {
"releaseRules": [
{ "type": "build", "scope": "Needs bump", "release": "patch" }
]
}
],
"@semantic-release/changelog",
"@semantic-release/release-notes-generator",
[
"semantic-release-pub",
{
"publishPub": false,
"updateBuildNumber": true
}
],
[
"@semantic-release/exec",
{
"prepareCmd": "flutter build apk"
}
],
[
"@semantic-release/git",
{
"assets": [
"pubspec.yaml"
]
}
],
[
"@semantic-release/github",
{
"assets": [
{
"path": "build/app/outputs/apk/release/revanced-manager*.apk"
},
],
"commits": [
"message": "chore: Release v${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
],
"successComment": false
}
],
[
"@saithodev/semantic-release-backmerge",
{
"backmergeBranches": [{"from": "main", "to": "dev"}],
"clearWorkspace": true
}
]
]
}

View File

@ -1,6 +0,0 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="main.dart" type="FlutterRunConfigurationType" factoryName="Flutter">
<option name="filePath" value="$PROJECT_DIR$/lib/main.dart" />
<method v="2" />
</configuration>
</component>

91
.vscode/tasks.json vendored
View File

@ -1,91 +0,0 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "Generate (Builder)",
"type": "shell",
"command": "flutter packages pub run build_runner build --delete-conflicting-outputs",
"problemMatcher": []
},
{
"label": "Build (Android)",
"type": "shell",
"command": "flutter build apk",
"problemMatcher": [],
"group": {
"kind": "build",
"isDefault": true
}
},
{
"label": "Install (Android)",
"type": "shell",
"command": "adb install build\\app\\outputs\\flutter-apk\\app-release.apk",
"problemMatcher": []
},
{
"label": "Clean (Flutter)",
"type": "shell",
"command": "flutter clean && flutter pub get",
"problemMatcher": []
},
{
"label": "Clean (Builder)",
"type": "shell",
"command": "flutter packages pub run build_runner clean",
"problemMatcher": []
},
{
"label": "Build all (Android)",
"dependsOrder": "sequence",
"dependsOn": [
"Generate (Builder)",
"Build (Android)"
],
"problemMatcher": []
},
{
"label": "Clean all",
"dependsOrder": "sequence",
"dependsOn": [
"Clean (Flutter)",
"Clean (Builder)"
],
"problemMatcher": []
},
{
"label": "Clean all & Build all (Android)",
"dependsOrder": "sequence",
"dependsOn": [
"Clean all",
"Build all (Android)"
],
"problemMatcher": []
},
{
"label": "Clean all & Install (Android)",
"dependsOrder": "sequence",
"dependsOn": [
"Clean all",
"Build all (Android)",
"Install (Android)",
],
"problemMatcher": []
},
{
"label": "Build & Install (Android)",
"dependsOrder": "sequence",
"dependsOn": [
"Build (Android)",
"Install (Android)"
],
"problemMatcher": []
},
{
"label": "Validate translations",
"type": "shell",
"command": "flutter pub run flutter_i18n diff en.json pt.json",
"problemMatcher": []
}
]
}

103
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,103 @@
<p align="center">
<picture>
<source
width="256px"
media="(prefers-color-scheme: dark)"
srcset="assets/revanced-headline/revanced-headline-vertical-dark.svg"
>
<img
width="256px"
src="assets/revanced-headline/revanced-headline-vertical-light.svg"
>
</picture>
<br>
<a href="https://revanced.app/">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="assets/revanced-logo/revanced-logo.svg" />
<img height="24px" src="assets/revanced-logo/revanced-logo.svg" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://github.com/ReVanced">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://i.ibb.co/dMMmCrW/Git-Hub-Mark.png" />
<img height="24px" src="https://i.ibb.co/9wV3HGF/Git-Hub-Mark-Light.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="http://revanced.app/discord">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/13122796/178032563-d4e084b7-244e-4358-af50-26bde6dd4996.png" />
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032563-d4e084b7-244e-4358-af50-26bde6dd4996.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://reddit.com/r/revancedapp">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/13122796/178032351-9d9d5619-8ef7-470a-9eec-2744ece54553.png" />
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032351-9d9d5619-8ef7-470a-9eec-2744ece54553.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://t.me/app_revanced">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/13122796/178032213-faf25ab8-0bc3-4a94-a730-b524c96df124.png" />
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032213-faf25ab8-0bc3-4a94-a730-b524c96df124.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://x.com/revancedapp">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/93124920/270180600-7c1b38bf-889b-4d68-bd5e-b9d86f91421a.png">
<img height="24px" src="https://user-images.githubusercontent.com/93124920/270108715-d80743fa-b330-4809-b1e6-79fbdc60d09c.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://www.youtube.com/@ReVanced">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/13122796/178032714-c51c7492-0666-44ac-99c2-f003a695ab50.png" />
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032714-c51c7492-0666-44ac-99c2-f003a695ab50.png" />
</picture>
</a>
<br>
<br>
Continuing the legacy of Vanced
</p>
# 👋 Contribution guidelines
This document describes how to contribute to ReVanced Manager.
## 📖 Resources to help you get started
* The [documentation](/docs/README.md) provides steps to build ReVanced Manager from source
* Our [backlog](https://github.com/orgs/ReVanced/projects/12) is where we keep track of what we're working on
* [Issues](https://github.com/ReVanced/revanced-manager/issues) are where we keep track of bugs and feature requests
## 🙏 Submitting a feature request
Features can be requested by opening an issue using the
[Feature request issue template](https://github.com/ReVanced/revanced-manager/issues/new?assignees=&labels=Feature+request&projects=&template=feature_request.yml&title=feat%3A+).
> **Note**
> Requests can be accepted or rejected at the discretion of maintainers of ReVanced Manager.
> Good motivation has to be provided for a request to be accepted.
## 🐞 Submitting a bug report
If you encounter a bug while using ReVanced Manager, open an issue using the
[Bug report issue template](https://github.com/ReVanced/revanced-manager/issues/new?assignees=&labels=Bug+report&projects=&template=bug_report.yml&title=bug%3A+).
## 📝 How to contribute
1. Before contributing, it is recommended to open an issue to discuss your change
with the maintainers of ReVanced Manager. This will help you determine whether your change is acceptable
and whether it is worth your time to implement it
2. Development happens on the `dev` branch. Fork the repository and create your branch from `dev`
3. Commit your changes
4. Submit a pull request to the `dev` branch of the repository and reference issues
that your pull request closes in the description of your pull request
5. Our team will review your pull request and provide feedback. Once your pull request is approved,
it will be merged into the `dev` branch and will be included in the next release of ReVanced Manager
## 🤚 I want to contribute but don't know how to code
Even if you don't know how to code, you can still contribute by
translating ReVanced Manager on [Crowdin](https://translate.revanced.app/).
❤️ Thank you for considering contributing to ReVanced Manager,
ReVanced

116
README.md
View File

@ -1,35 +1,105 @@
<p align="center">
<picture>
<source
width="256px"
media="(prefers-color-scheme: dark)"
srcset="assets/revanced-headline/revanced-headline-vertical-dark.svg"
>
<img
width="256px"
src="assets/revanced-headline/revanced-headline-vertical-light.svg"
>
</picture>
<br>
<a href="https://revanced.app/">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="assets/revanced-logo/revanced-logo.svg" />
<img height="24px" src="assets/revanced-logo/revanced-logo.svg" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://github.com/ReVanced">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://i.ibb.co/dMMmCrW/Git-Hub-Mark.png" />
<img height="24px" src="https://i.ibb.co/9wV3HGF/Git-Hub-Mark-Light.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="http://revanced.app/discord">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/13122796/178032563-d4e084b7-244e-4358-af50-26bde6dd4996.png" />
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032563-d4e084b7-244e-4358-af50-26bde6dd4996.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://reddit.com/r/revancedapp">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/13122796/178032351-9d9d5619-8ef7-470a-9eec-2744ece54553.png" />
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032351-9d9d5619-8ef7-470a-9eec-2744ece54553.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://t.me/app_revanced">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/13122796/178032213-faf25ab8-0bc3-4a94-a730-b524c96df124.png" />
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032213-faf25ab8-0bc3-4a94-a730-b524c96df124.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://x.com/revancedapp">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/93124920/270180600-7c1b38bf-889b-4d68-bd5e-b9d86f91421a.png">
<img height="24px" src="https://user-images.githubusercontent.com/93124920/270108715-d80743fa-b330-4809-b1e6-79fbdc60d09c.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://www.youtube.com/@ReVanced">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/13122796/178032714-c51c7492-0666-44ac-99c2-f003a695ab50.png" />
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032714-c51c7492-0666-44ac-99c2-f003a695ab50.png" />
</picture>
</a>
<br>
<br>
Continuing the legacy of Vanced
</p>
# 💊 ReVanced Manager
The official ReVanced Manager based on Flutter.
![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/ReVanced/revanced-manager/release.yml)
![GPLv3 License](https://img.shields.io/badge/License-GPL%20v3-yellow.svg)
Application to use ReVanced on Android
## ❓ About
ReVanced Manager is an application that uses [ReVanced Patcher](https://github.com/revanced/revanced-patcher) to patch Android apps.
## 💪 Features
Some of the features ReVanced Manager provides are:
- 💉 **Patch apps**: Apply any patch of your choice to Android apps
- 📱 **Portable**: ReVanced Patcher that fits in your pocket
- 🤗 **Simple UI**: Quickly understand the ins and outs of ReVanced Manager
- 🛠️ **Customization**: Configurable API, custom sources, language, signing keystore, theme and more
## 🔽 Download
To download the Alpha version of Manager, go [here](https://github.com/revanced/revanced-manager/releases/latest) and install the provided APK file.
## 📝 Prerequisites
1. Android 8 or higher
2. Does not work on some armv7 devices
3. [Vanced MicroG](https://github.com/TeamVanced/VancedMicroG/releases) required for YouTube and YouTube Music (Only for non-root)
You can download the most recent version of ReVanced Manager at [revanced.app/download](https://revanced.app/download) or from [GitHub releases](https://github.com/ReVanced/revanced-manager/releases/latest).
Learn how to use ReVanced Manager by following the [documentation](/docs).
## ⚠️ Disclaimer
*Please note that even though we're releasing the Manager, it is an ALPHA version. There's a big chance that the Manager might not work at all for you.*
## 📚 Everything else
## 🔴 Issues
For suggestions and bug reports, open an issue [here](https://github.com/revanced/revanced-manager/issues/new/choose).
### 📙 Contributing
## 💭 Discussion
If you wish to discuss the Manager, a thread has been made under the [#development](https://discord.com/channels/952946952348270622/1002922226443632761) channel in the Discord server, please note that this thread may be temporary and may be removed in the future.
Thank you for considering contributing to ReVanced Manager.
You can find the contribution guidelines [here](CONTRIBUTING.md).
### 🛠️ Building
## 🌐 Translation
[![Crowdin](https://badges.crowdin.net/revanced/localized.svg)](https://crowdin.com/project/revanced)
To build a ReVanced Manager, you can follow the [documentation](/docs).
If you wish to translate ReVanced Manager, we're accepting translations on [Crowdin](https://translate.revanced.app)
### 📄 Documentation
## 🛠️ Building Manager from source
1. Setup flutter environment for your [platform](https://docs.flutter.dev/get-started/install)
2. Clone the repository locally
3. Add your github token in gradle.properties like [this](https://github.com/revanced/revanced-documentation/blob/main/docs/revanced-development/2_building_from_source.md)
4. Open the project in terminal
5. Run `flutter pub get` in terminal
6. Then `flutter packages pub run build_runner build --delete-conflicting-outputs` (Must be done on each git pull)
7. To build release apk run `flutter build apk`
You can find the documentation for ReVanced Manager [here](/docs).
## ⚖️ License
ReVanced Manager is licensed under the GPLv3 license. Please see the [license file](LICENSE) for more information.
[tl;dr](https://www.tldrlegal.com/license/gnu-general-public-license-v3-gpl-3) you may copy, distribute and modify ReVanced Manager as long as you track changes/dates in source files.
Any modifications to ReVanced Manager must also be made available under the GPL, along with build & install instructions.

77
SECURITY.md Normal file
View File

@ -0,0 +1,77 @@
<p align="center">
<picture>
<source
width="256px"
media="(prefers-color-scheme: dark)"
srcset="assets/revanced-headline/revanced-headline-vertical-dark.svg"
>
<img
width="256px"
src="assets/revanced-headline/revanced-headline-vertical-light.svg"
>
</picture>
<br>
<a href="https://revanced.app/">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="assets/revanced-logo/revanced-logo.svg" />
<img height="24px" src="assets/revanced-logo/revanced-logo.svg" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://github.com/ReVanced">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://i.ibb.co/dMMmCrW/Git-Hub-Mark.png" />
<img height="24px" src="https://i.ibb.co/9wV3HGF/Git-Hub-Mark-Light.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="http://revanced.app/discord">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/13122796/178032563-d4e084b7-244e-4358-af50-26bde6dd4996.png" />
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032563-d4e084b7-244e-4358-af50-26bde6dd4996.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://reddit.com/r/revancedapp">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/13122796/178032351-9d9d5619-8ef7-470a-9eec-2744ece54553.png" />
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032351-9d9d5619-8ef7-470a-9eec-2744ece54553.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://t.me/app_revanced">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/13122796/178032213-faf25ab8-0bc3-4a94-a730-b524c96df124.png" />
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032213-faf25ab8-0bc3-4a94-a730-b524c96df124.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://x.com/revancedapp">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/93124920/270180600-7c1b38bf-889b-4d68-bd5e-b9d86f91421a.png">
<img height="24px" src="https://user-images.githubusercontent.com/93124920/270108715-d80743fa-b330-4809-b1e6-79fbdc60d09c.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://www.youtube.com/@ReVanced">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/13122796/178032714-c51c7492-0666-44ac-99c2-f003a695ab50.png" />
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032714-c51c7492-0666-44ac-99c2-f003a695ab50.png" />
</picture>
</a>
<br>
<br>
Continuing the legacy of Vanced
</p>
# 🔒 Security Policy
This document describes how to report security vulnerabilities for ReVanced Manager.
## 🚨 Reporting a Vulnerability
Please open an issue in our [advisory tracker](https://github.com/ReVanced/revanced-manager/security/advisories/new) or reach out privately to us on [Discord](https://discord.gg/revanced).
If a vulnerability is confirmed and accepted, you can join our [Discord](https://discord.gg/revanced) server to receive a special contributor role.
### ⏳ Supported Versions
| Version | Branch | Supported |
| --------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ------------------ |
| ![Latest stable release](https://img.shields.io/github/v/release/ReVanced/revanced-manager?style=for-the-badge "Latest stable release") | main | :white_check_mark: |
| ![Latest version](https://img.shields.io/badge/version-latest-brightgreen?style=for-the-badge "Latest version") | dev | :white_check_mark: |
| ![Latest version](https://img.shields.io/badge/version-latest-brightgreen?style=for-the-badge "Latest version") | compose-dev | :white_check_mark: |

View File

@ -11,23 +11,146 @@ include: package:flutter_lints/flutter.yaml
analyzer:
exclude:
- lib/utils/env_class.g.dart
- lib/app/app.locator.dart
- lib/app/app.router.dart
- lib/models/patch.g.dart
- lib/models/patched_application.g.dart
- lib/gen/
linter:
# The lint rules applied to this project can be customized in the
# section below to disable rules from the `package:flutter_lints/flutter.yaml`
# included above or to enable additional rules. A list of all available lints
# and their documentation is published at
# https://dart-lang.github.io/linter/lints/index.html.
#
# Instead of disabling a lint rule for the entire project in the
# section below, it can also be suppressed for a single line of code
# or a specific dart file by using the `// ignore: name_of_lint` and
# `// ignore_for_file: name_of_lint` syntax on the line or in the file
# producing the lint.
rules:
# avoid_print: false # Uncomment to disable the `avoid_print` rule
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
# Additional information about this file can be found at
# https://dart.dev/guides/language/analysis-options
- always_declare_return_types
- require_trailing_commas
- always_put_control_body_on_new_line
- always_use_package_imports # we do this commonly
- annotate_overrides
- avoid_bool_literals_in_conditional_expressions
- avoid_double_and_int_checks
- avoid_empty_else
- avoid_equals_and_hash_code_on_mutable_classes
- avoid_escaping_inner_quotes
- avoid_field_initializers_in_const_classes
- avoid_function_literals_in_foreach_calls
- avoid_implementing_value_types
- avoid_init_to_null
- avoid_js_rounded_ints
- avoid_null_checks_in_equality_operators
- avoid_print
- avoid_redundant_argument_values
- avoid_relative_lib_imports
- avoid_renaming_method_parameters
- avoid_return_types_on_setters
- avoid_returning_null_for_void
- avoid_setters_without_getters
- avoid_shadowing_type_parameters
- avoid_single_cascade_in_expression_statements
- avoid_type_to_string
- avoid_types_as_parameter_names
- avoid_unnecessary_containers
- avoid_void_async
- avoid_web_libraries_in_flutter # we use web libraries in web-specific code, and our tests prevent us from using them elsewhere
- await_only_futures
- camel_case_extensions
- camel_case_types
- cancel_subscriptions
- cast_nullable_to_non_nullable
- close_sinks # not reliable enough
- control_flow_in_finally
- curly_braces_in_flow_control_structures
- depend_on_referenced_packages
- deprecated_consistency
- directives_ordering
- empty_catches
- empty_constructor_bodies
- empty_statements
- eol_at_end_of_file
- exhaustive_cases
- file_names
- flutter_style_todos
- hash_and_equals
- implementation_imports
- collection_methods_unrelated_type
- leading_newlines_in_multiline_strings
- library_prefixes
- library_private_types_in_public_api
- missing_whitespace_between_adjacent_strings
- no_adjacent_strings_in_list
- no_duplicate_case_values
- no_logic_in_create_state
- non_constant_identifier_names
- noop_primitive_operations
- null_check_on_nullable_type_parameter
- null_closures
- overridden_fields
- package_names
- prefer_adjacent_string_concatenation
- prefer_asserts_in_initializer_lists
- prefer_collection_literals
- prefer_conditional_assignment
- prefer_const_constructors
- prefer_const_constructors_in_immutables
- prefer_const_declarations
- prefer_const_literals_to_create_immutables
- prefer_contains
- prefer_final_fields
- prefer_final_in_for_each
- prefer_final_locals
- prefer_for_elements_to_map_fromIterable
- prefer_foreach
- prefer_function_declarations_over_variables
- prefer_generic_function_type_aliases
- prefer_if_elements_to_conditional_expressions
- prefer_if_null_operators
- prefer_initializing_formals
- prefer_inlined_adds
- prefer_interpolation_to_compose_strings
- prefer_is_empty
- prefer_is_not_empty
- prefer_is_not_operator
- prefer_iterable_whereType
- prefer_null_aware_method_calls # "call()" is confusing to people new to the language since it's not documented anywhere
- prefer_null_aware_operators
- prefer_single_quotes
- prefer_spread_collections
- prefer_typing_uninitialized_variables
- provide_deprecation_message
- recursive_getters
- sized_box_for_whitespace
- slash_for_doc_comments
- sort_child_properties_last
- sort_constructors_first
- sort_pub_dependencies
- sort_unnamed_constructors_first
- test_types_in_equals
- throw_in_finally
- tighten_type_of_initializing_formals
- type_init_formals
- unnecessary_brace_in_string_interps
- unnecessary_const
- unnecessary_getters_setters
- unnecessary_new
- unnecessary_null_aware_assignments
- unnecessary_null_checks
- unnecessary_null_in_if_null_operators
- unnecessary_nullable_for_final_variable_declarations
- unnecessary_overrides
- unnecessary_parenthesis
- unnecessary_statements
- unnecessary_string_escapes
- unnecessary_string_interpolations
- unnecessary_this
- unrelated_type_equality_checks
- use_build_context_synchronously
- use_full_hex_values_for_flutter_colors
- use_function_type_syntax_for_parameters
- use_if_null_to_convert_nulls_to_bools
- use_is_even_rather_than_modulo
- use_key_in_widget_constructors
- use_late_for_private_fields_and_variables
- use_named_constants
- use_raw_strings
- use_rethrow_when_possible
- use_setters_to_change_properties
- use_test_throws_matchers
- valid_regexps
- void_checks

2
android/.gitignore vendored
View File

@ -7,7 +7,7 @@ gradle-wrapper.jar
GeneratedPluginRegistrant.java
# Remember to never publicly share your keystore.
# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
# See https://flutter.dev/to/reference-keystore
key.properties
**/*.keystore
**/*.jks

View File

@ -1,84 +0,0 @@
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android {
compileSdkVersion 33
ndkVersion flutter.ndkVersion
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = '11'
}
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
defaultConfig {
applicationId "app.revanced.manager.flutter"
minSdkVersion 26
targetSdkVersion 33
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}
buildTypes {
release {
shrinkResources false
minifyEnabled false
signingConfig signingConfigs.debug
}
}
packagingOptions {
exclude '/prebuilt/**'
}
}
flutter {
source '../..'
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
// ReVanced
implementation "app.revanced:revanced-patcher:6.3.1"
// Signing & aligning
implementation("org.bouncycastle:bcpkix-jdk15on:1.70")
implementation("com.android.tools.build:apksig:7.2.2")
// MicroG cronet
implementation("org.microg:cronet-common:$cronetVersion")
implementation("org.microg:cronet-native:$cronetVersion")
}

View File

@ -0,0 +1,104 @@
plugins {
id("com.android.application")
id("kotlin-android")
// The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
id("dev.flutter.flutter-gradle-plugin")
}
android {
namespace = "app.revanced.manager.flutter"
compileSdk = 35
compileOptions {
isCoreLibraryDesugaringEnabled = true
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_17.toString()
}
defaultConfig {
applicationId = "app.revanced.manager.flutter"
minSdk = 26
targetSdk = 35
versionCode = flutter.versionCode
versionName = flutter.versionName
resValue("string", "app_name", "ReVanced Manager")
}
applicationVariants.all {
outputs.all {
this as com.android.build.gradle.internal.api.ApkVariantOutputImpl
outputFileName = "revanced-manager-$versionName.apk"
}
}
buildTypes {
configureEach {
isShrinkResources = false
isMinifyEnabled = false
signingConfig = signingConfigs["debug"]
ndk.abiFilters += listOf("armeabi-v7a", "arm64-v8a", "x86_64")
}
release {
isShrinkResources = true
isMinifyEnabled = true
val keystoreFile = file("keystore.jks")
if (keystoreFile.exists()) {
signingConfig = signingConfigs.create("release") {
storeFile = keystoreFile
storePassword = System.getenv("KEYSTORE_PASSWORD")
keyAlias = System.getenv("KEYSTORE_ENTRY_ALIAS")
keyPassword = System.getenv("KEYSTORE_ENTRY_PASSWORD")
}
resValue("string", "app_name", "ReVanced Manager")
} else {
applicationIdSuffix = ".development"
resValue("string", "app_name", "ReVanced Manager (Development)")
signingConfig = signingConfigs["debug"]
}
}
debug {
applicationIdSuffix = ".debug"
resValue("string", "app_name", "ReVanced Manager (Debug)")
}
named("profile") {
initWith(getByName("debug"))
applicationIdSuffix = ".profile"
resValue("string", "app_name", "ReVanced Manager (Profile)")
}
}
packaging {
jniLibs {
useLegacyPackaging = true
excludes.add("/prebuilt/**")
}
resources {
excludes.add("/prebuilt/**")
}
}
}
flutter {
source = "../.."
}
dependencies {
coreLibraryDesugaring(libs.desugar.jdk.libs) // https://pub.dev/packages/flutter_local_notifications#gradle-setup
implementation(libs.revanced.patcher)
implementation(libs.revanced.library)
}

17
android/app/proguard-rules.pro vendored Normal file
View File

@ -0,0 +1,17 @@
-dontobfuscate
-keep class app.revanced.** { *; }
-keep class com.android.tools.smali.** { *; }
-keep class kotlin.** { *; }
-keep class com.google.auto.value.** { *; }
-keep class com.android.apksig.internal.** { *; }
-keepnames class com.google.common.collect.**
-keepnames class org.xmlpull.** { *; }
-dontwarn com.google.auto.value.**
-dontwarn com.google.j2objc.annotations.*
-dontwarn java.awt.**
-dontwarn javax.**
# Required for Share Plus, ref: ReVanced/revanced-manager#2474
-keep interface android.content.res.XmlResourceParser { *; }

View File

@ -1,4 +1,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="app.revanced.manager.flutter">
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- The INTERNET permission is required for development. Specifically,
the Flutter tool needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>

View File

@ -1,23 +1,33 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="app.revanced.manager.flutter">
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<manifest xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"
tools:ignore="QueryAllPackagesPermission" />
<application
android:label="ReVanced Manager"
android:label="@string/app_name"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher"
android:largeHeap="true"
android:extractNativeLibs="true">
android:requestLegacyExternalStorage="true"
android:enableOnBackInvokedCallback="true">
<activity
android:name=".MainActivity"
android:exported="true"
@ -27,14 +37,21 @@
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme" />
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service
android:name="de.julianassmann.flutter_background.IsolateHolderService"
android:exported="false"
android:foregroundServiceType="shortService" />
<activity
android:name=".ExportSettingsActivity"
android:exported="true">
</activity>
<meta-data
android:name="flutterEmbedding"
android:value="2" />
@ -47,5 +64,22 @@
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
<receiver
android:name=".utils.packageInstaller.InstallerReceiver"
android:enabled="true"
android:exported="false">
<intent-filter>
<action android:name="APP_INSTALL_ACTION" />
</intent-filter>
</receiver>
<receiver
android:name=".utils.packageInstaller.UninstallerReceiver"
android:enabled="true"
android:exported="false">
<intent-filter>
<action android:name="APP_UNINSTALL_ACTION" />
</intent-filter>
</receiver>
</application>
</manifest>

View File

@ -0,0 +1,81 @@
package app.revanced.manager.flutter
import android.app.Activity
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Bundle
import android.util.Base64
import org.json.JSONObject
import java.io.ByteArrayInputStream
import java.io.File
import java.security.cert.CertificateFactory
import java.security.cert.X509Certificate
import java.security.MessageDigest
class ExportSettingsActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (getFingerprint(callingPackage!!) == getFingerprint(packageName)) {
// Create JSON Object
val json = JSONObject()
// Default Data
json.put("keystorePassword", "s3cur3p@ssw0rd")
// Load Shared Preferences
val sharedPreferences = getSharedPreferences("FlutterSharedPreferences", Context.MODE_PRIVATE)
val allEntries: Map<String, *> = sharedPreferences.getAll()
for ((key, value) in allEntries.entries) {
json.put(key.replace("flutter.", ""), value)
}
// Load keystore
val keystoreFile = File(getExternalFilesDir(null), "/revanced-manager.keystore")
if (keystoreFile.exists()) {
val keystoreBytes = keystoreFile.readBytes()
val keystoreBase64 = Base64.encodeToString(keystoreBytes, Base64.DEFAULT)
json.put("keystore", keystoreBase64)
}
// Load saved patches
val storedPatchesFile = File(filesDir.parentFile.absolutePath, "/app_flutter/selected-patches.json")
if (storedPatchesFile.exists()) {
val patchesBytes = storedPatchesFile.readBytes()
val patches = String(patchesBytes, Charsets.UTF_8)
json.put("patches", JSONObject(patches))
}
// Send data back
val resultIntent = Intent()
resultIntent.putExtra("data", json.toString())
setResult(Activity.RESULT_OK, resultIntent)
finish()
} else {
val resultIntent = Intent()
setResult(Activity.RESULT_CANCELED)
finish()
}
}
fun getFingerprint(packageName: String): String {
// Get the signature of the app that matches the package name
val packageInfo = packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES)
val signature = packageInfo.signatures!![0]
// Get the raw certificate data
val rawCert = signature.toByteArray()
// Generate an X509Certificate from the data
val certFactory = CertificateFactory.getInstance("X509")
val x509Cert = certFactory.generateCertificate(ByteArrayInputStream(rawCert)) as X509Certificate
// Get the SHA256 fingerprint
val fingerprint = MessageDigest.getInstance("SHA256").digest(x509Cert.encoded).joinToString("") {
"%02x".format(it)
}
return fingerprint
}
}

View File

@ -1,317 +1,427 @@
package app.revanced.manager.flutter
import android.app.PendingIntent
import android.app.SearchManager
import android.content.Intent
import android.content.pm.PackageInstaller
import android.os.Build
import android.os.Handler
import android.os.Looper
import androidx.annotation.NonNull
import app.revanced.library.ApkUtils
import app.revanced.library.ApkUtils.applyTo
import app.revanced.manager.flutter.utils.Aapt
import app.revanced.manager.flutter.utils.aligning.ZipAligner
import app.revanced.manager.flutter.utils.signing.Signer
import app.revanced.manager.flutter.utils.zip.ZipFile
import app.revanced.manager.flutter.utils.zip.structures.ZipEntry
import app.revanced.manager.flutter.utils.packageInstaller.InstallerReceiver
import app.revanced.manager.flutter.utils.packageInstaller.UninstallerReceiver
import app.revanced.patcher.Patcher
import app.revanced.patcher.PatcherOptions
import app.revanced.patcher.extensions.PatchExtensions.compatiblePackages
import app.revanced.patcher.extensions.PatchExtensions.patchName
import app.revanced.patcher.logging.Logger
import app.revanced.patcher.util.patch.PatchBundle
import dalvik.system.DexClassLoader
import app.revanced.patcher.PatcherConfig
import app.revanced.patcher.patch.Patch
import app.revanced.patcher.patch.PatchResult
import app.revanced.patcher.patch.loadPatchesFromDex
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel
import kotlinx.coroutines.flow.FlowCollector
import kotlinx.coroutines.runBlocking
import org.json.JSONArray
import org.json.JSONObject
import java.io.File
import java.io.PrintWriter
import java.io.StringWriter
import java.util.logging.LogRecord
import java.util.logging.Logger
private const val PATCHER_CHANNEL = "app.revanced.manager.flutter/patcher"
private const val INSTALLER_CHANNEL = "app.revanced.manager.flutter/installer"
class MainActivity : FlutterActivity() {
private val handler = Handler(Looper.getMainLooper())
private lateinit var installerChannel: MethodChannel
private var cancel: Boolean = false
private var stopResult: MethodChannel.Result? = null
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
private lateinit var patches: Set<Patch<*>>
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
val mainChannel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, PATCHER_CHANNEL)
installerChannel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, INSTALLER_CHANNEL)
val patcherChannel = "app.revanced.manager.flutter/patcher"
val installerChannel = "app.revanced.manager.flutter/installer"
val openBrowserChannel = "app.revanced.manager.flutter/browser"
MethodChannel(
flutterEngine.dartExecutor.binaryMessenger,
openBrowserChannel
).setMethodCallHandler { call, result ->
if (call.method == "openBrowser") {
val searchQuery = call.argument<String>("query")
openBrowser(searchQuery)
result.success(null)
} else {
result.notImplemented()
}
}
val mainChannel =
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, patcherChannel)
this.installerChannel =
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, installerChannel)
mainChannel.setMethodCallHandler { call, result ->
when (call.method) {
"runPatcher" -> {
val patchBundleFilePath = call.argument<String>("patchBundleFilePath")
val originalFilePath = call.argument<String>("originalFilePath")
val inputFilePath = call.argument<String>("inputFilePath")
val patchedFilePath = call.argument<String>("patchedFilePath")
val inFilePath = call.argument<String>("inFilePath")
val outFilePath = call.argument<String>("outFilePath")
val integrationsPath = call.argument<String>("integrationsPath")
val selectedPatches = call.argument<List<String>>("selectedPatches")
val cacheDirPath = call.argument<String>("cacheDirPath")
val mergeIntegrations = call.argument<Boolean>("mergeIntegrations")
val options = call.argument<Map<String, Map<String, Any>>>("options")
val tmpDirPath = call.argument<String>("tmpDirPath")
val keyStoreFilePath = call.argument<String>("keyStoreFilePath")
if (patchBundleFilePath != null &&
originalFilePath != null &&
inputFilePath != null &&
patchedFilePath != null &&
val keystorePassword = call.argument<String>("keystorePassword")
if (
inFilePath != null &&
outFilePath != null &&
integrationsPath != null &&
selectedPatches != null &&
cacheDirPath != null &&
mergeIntegrations != null &&
keyStoreFilePath != null
options != null &&
tmpDirPath != null &&
keyStoreFilePath != null &&
keystorePassword != null
) {
cancel = false
runPatcher(
result,
patchBundleFilePath,
originalFilePath,
inputFilePath,
patchedFilePath,
inFilePath,
outFilePath,
integrationsPath,
selectedPatches,
cacheDirPath,
mergeIntegrations,
keyStoreFilePath
options,
tmpDirPath,
keyStoreFilePath,
keystorePassword
)
} else {
result.notImplemented()
}
} else result.error(
"INVALID_ARGUMENTS",
"Invalid arguments",
"One or more arguments are missing"
)
}
"stopPatcher" -> {
cancel = true
stopResult = result
}
"getPatches" -> {
val patchBundleFilePath = call.argument<String>("patchBundleFilePath")!!
try {
val patchBundleFile = File(patchBundleFilePath)
patchBundleFile.setWritable(false)
patches = loadPatchesFromDex(
setOf(patchBundleFile),
optimizedDexDirectory = codeCacheDir
)
} catch (t: Throwable) {
return@setMethodCallHandler result.error(
"PATCH_BUNDLE_ERROR",
"Failed to load patch bundle",
t.stackTraceToString()
)
}
JSONArray().apply {
patches.forEach {
JSONObject().apply {
put("name", it.name)
put("description", it.description)
put("excluded", !it.use)
put("compatiblePackages", JSONArray().apply {
it.compatiblePackages?.forEach { (name, versions) ->
val compatiblePackageJson = JSONObject().apply {
put("name", name)
put(
"versions",
JSONArray().apply {
versions?.forEach { version ->
put(version)
}
})
}
put(compatiblePackageJson)
}
})
put("options", JSONArray().apply {
it.options.values.forEach { option ->
JSONObject().apply {
put("key", option.key)
put("title", option.title)
put("description", option.description)
put("required", option.required)
fun JSONObject.putValue(
value: Any?,
key: String = "value"
) = if (value is Array<*>) put(
key,
JSONArray().apply {
value.forEach { put(it) }
})
else put(key, value)
putValue(option.default)
option.values?.let { values ->
put(
"values",
JSONObject().apply {
values.forEach { (key, value) ->
putValue(value, key)
}
})
} ?: put("values", null)
put("type", option.type)
}.let(::put)
}
})
}.let(::put)
}
}.toString().let(result::success)
}
"installApk" -> {
val apkPath = call.argument<String>("apkPath")!!
PackageInstallerManager.result = result
installApk(apkPath)
}
"uninstallApp" -> {
val packageName = call.argument<String>("packageName")!!
uninstallApp(packageName)
PackageInstallerManager.result = result
}
else -> result.notImplemented()
}
}
}
private fun openBrowser(query: String?) {
val intent = Intent(Intent.ACTION_WEB_SEARCH).apply {
putExtra(SearchManager.QUERY, query)
}
if (intent.resolveActivity(packageManager) != null) {
startActivity(intent)
}
}
private fun runPatcher(
result: MethodChannel.Result,
patchBundleFilePath: String,
originalFilePath: String,
inputFilePath: String,
patchedFilePath: String,
inFilePath: String,
outFilePath: String,
integrationsPath: String,
selectedPatches: List<String>,
cacheDirPath: String,
mergeIntegrations: Boolean,
keyStoreFilePath: String
options: Map<String, Map<String, Any>>,
tmpDirPath: String,
keyStoreFilePath: String,
keystorePassword: String
) {
val originalFile = File(originalFilePath)
val inputFile = File(inputFilePath)
val patchedFile = File(patchedFilePath)
val inFile = File(inFilePath)
// Necessary because the file is copied from a nonwriteable location.
inFile.setWritable(true)
inFile.setReadable(true)
val outFile = File(outFilePath)
val integrations = File(integrationsPath)
val keyStoreFile = File(keyStoreFilePath)
val tmpDir = File(tmpDirPath)
Thread {
try {
fun updateProgress(progress: Double, header: String, log: String) {
handler.post {
installerChannel.invokeMethod(
"update",
mapOf(
"progress" to 0.1,
"header" to "",
"log" to "Copying original apk"
)
)
}
originalFile.copyTo(inputFile, true)
handler.post {
installerChannel.invokeMethod(
"update",
mapOf(
"progress" to 0.2,
"header" to "Unpacking apk...",
"log" to "Unpacking input apk"
)
)
}
val patcher =
Patcher(
PatcherOptions(
inputFile,
cacheDirPath,
Aapt.binary(applicationContext).absolutePath,
cacheDirPath,
logger = ManagerLogger()
)
)
handler.post {
installerChannel.invokeMethod(
"update",
mapOf("progress" to 0.3, "header" to "", "log" to "")
)
}
if (mergeIntegrations) {
handler.post {
installerChannel.invokeMethod(
"update",
mapOf(
"progress" to 0.4,
"header" to "Merging integrations...",
"log" to "Merging integrations"
)
)
}
patcher.addFiles(listOf(integrations)) {}
}
handler.post {
installerChannel.invokeMethod(
"update",
mapOf(
"progress" to 0.5,
"header" to "Applying patches...",
"log" to ""
)
)
}
val patches = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
PatchBundle.Dex(
patchBundleFilePath,
DexClassLoader(
patchBundleFilePath,
cacheDirPath,
null,
javaClass.classLoader
)
).loadPatches().filter { patch ->
(patch.compatiblePackages?.any { it.name == patcher.context.packageMetadata.packageName } == true || patch.compatiblePackages.isNullOrEmpty()) &&
selectedPatches.any { it == patch.patchName }
}
} else {
TODO("VERSION.SDK_INT < CUPCAKE")
}
patcher.addPatches(patches)
patcher.executePatches().forEach { (patch, res) ->
if (res.isSuccess) {
val msg = "Applied $patch"
handler.post {
installerChannel.invokeMethod(
"update",
mapOf(
"progress" to 0.5,
"header" to "",
"log" to msg
)
)
}
return@forEach
}
val msg = "Failed to apply $patch: " + "${res.exceptionOrNull()!!.message ?: res.exceptionOrNull()!!.cause!!::class.simpleName}"
handler.post {
installerChannel.invokeMethod(
"update",
mapOf("progress" to 0.5, "header" to "", "log" to msg)
)
}
}
handler.post {
installerChannel.invokeMethod(
"update",
mapOf(
"progress" to 0.7,
"header" to "Repacking apk...",
"log" to "Repacking patched apk"
)
)
}
val res = patcher.save()
ZipFile(patchedFile).use { file ->
res.dexFiles.forEach {
file.addEntryCompressData(
ZipEntry.createWithName(it.name),
it.stream.readBytes()
)
}
res.resourceFile?.let {
file.copyEntriesFromFileAligned(
ZipFile(it),
ZipAligner::getEntryAlignment
)
}
file.copyEntriesFromFileAligned(
ZipFile(inputFile),
ZipAligner::getEntryAlignment
)
}
handler.post {
installerChannel.invokeMethod(
"update",
mapOf(
"progress" to 0.9,
"header" to "Signing apk...",
"log" to ""
)
)
}
// Signer("ReVanced", "s3cur3p@ssw0rd").signApk(patchedFile, outFile, keyStoreFile)
try {
Signer("ReVanced", "s3cur3p@ssw0rd").signApk(patchedFile, outFile, keyStoreFile)
} catch (e: Exception) {
//log to console
print("Error signing apk: ${e.message}")
e.printStackTrace()
}
handler.post {
installerChannel.invokeMethod(
"update",
mapOf(
"progress" to 1.0,
"header" to "Finished!",
"log" to "Finished!"
)
)
}
} catch (ex: Throwable) {
val stack = ex.stackTraceToString()
handler.post {
installerChannel.invokeMethod(
"update",
mapOf(
"progress" to -100.0,
"header" to "Aborting...",
"log" to "An error occurred! Aborting\nError:\n$stack"
"progress" to progress,
"header" to header,
"log" to log
)
)
}
}
fun postStop() = handler.post { stopResult!!.success(null) }
fun cancel(block: () -> Unit = {}): Boolean {
if (cancel) {
block()
postStop()
}
return cancel
}
// Setup logger
Logger.getLogger("").apply {
handlers.forEach { handler ->
handler.close()
removeHandler(handler)
}
object : java.util.logging.Handler() {
override fun publish(record: LogRecord) {
if (cancel) return
if (
record.loggerName?.startsWith("app.revanced") == true ||
// Logger in class brut.util.OS.
record.loggerName == ""
) updateProgress(-1.0, "", record.message)
}
override fun flush() = Unit
override fun close() = flush()
}.let(::addHandler)
}
try {
updateProgress(0.0, "Reading APK...", "Reading APK")
val patcher = Patcher(
PatcherConfig(
inFile,
tmpDir,
Aapt.binary(applicationContext).absolutePath,
tmpDir.path,
)
)
if (cancel(patcher::close)) return@Thread
updateProgress(0.02, "Loading patches...", "Loading patches")
val patches = patches.filter { patch ->
val isCompatible = patch.compatiblePackages?.any { (name, _) ->
name == patcher.context.packageMetadata.packageName
} ?: false
val compatibleOrUniversal =
isCompatible || patch.compatiblePackages.isNullOrEmpty()
compatibleOrUniversal && selectedPatches.any { it == patch.name }
}.onEach { patch ->
options[patch.name]?.forEach { (key, value) ->
patch.options[key] = value
}
}.toSet()
if (cancel(patcher::close)) return@Thread
updateProgress(0.05, "Executing...", "")
val patcherResult = patcher.use {
it += patches
runBlocking {
// Update the progress bar every time a patch is executed from 0.15 to 0.7
val totalPatchesCount = patches.size
val progressStep = 0.55 / totalPatchesCount
var progress = 0.05
patcher().collect(FlowCollector { patchResult: PatchResult ->
if (cancel(patcher::close)) return@FlowCollector
val msg = patchResult.exception?.let {
val writer = StringWriter()
it.printStackTrace(PrintWriter(writer))
"${patchResult.patch.name} failed: $writer"
} ?: run {
"${patchResult.patch.name} succeeded"
}
updateProgress(progress, "", msg)
progress += progressStep
})
}
if (cancel(patcher::close)) return@Thread
updateProgress(0.75, "Building...", "")
patcher.get()
}
if (cancel(patcher::close)) return@Thread
patcherResult.applyTo(inFile)
if (cancel(patcher::close)) return@Thread
ApkUtils.signApk(
inFile,
outFile,
"ReVanced",
ApkUtils.KeyStoreDetails(
keyStoreFile,
keystorePassword,
"alias",
keystorePassword
)
)
updateProgress(.85, "Patched", "Patched APK")
} catch (ex: Throwable) {
if (!cancel) {
val stack = ex.stackTraceToString()
updateProgress(
-100.0,
"Failed",
"An error occurred:\n$stack"
)
}
} finally {
inFile.delete()
tmpDir.deleteRecursively()
}
handler.post { result.success(null) }
}.start()
}
inner class ManagerLogger : Logger {
override fun error(msg: String) {
handler.post {
installerChannel
.invokeMethod(
"update",
mapOf("progress" to -1.0, "header" to "", "log" to msg)
)
private fun installApk(apkPath: String) {
val packageInstaller: PackageInstaller = applicationContext.packageManager.packageInstaller
val sessionParams =
PackageInstaller.SessionParams(PackageInstaller.SessionParams.MODE_FULL_INSTALL)
val sessionId: Int = packageInstaller.createSession(sessionParams)
val session: PackageInstaller.Session = packageInstaller.openSession(sessionId)
session.use { activeSession ->
val sessionOutputStream = activeSession.openWrite(applicationContext.packageName, 0, -1)
sessionOutputStream.use { outputStream ->
val apkFile = File(apkPath)
apkFile.inputStream().use { inputStream ->
inputStream.copyTo(outputStream)
}
}
}
override fun warn(msg: String) {
handler.post {
installerChannel.invokeMethod(
"update",
mapOf("progress" to -1.0, "header" to "", "log" to msg)
)
}
val receiverIntent = Intent(applicationContext, InstallerReceiver::class.java).apply {
action = "APP_INSTALL_ACTION"
}
val receiverPendingIntent = PendingIntent.getBroadcast(
context,
sessionId,
receiverIntent,
PackageInstallerManager.flags
)
session.commit(receiverPendingIntent.intentSender)
session.close()
}
override fun info(msg: String) {
handler.post {
installerChannel.invokeMethod(
"update",
mapOf("progress" to -1.0, "header" to "", "log" to msg)
)
}
private fun uninstallApp(packageName: String) {
val packageInstaller: PackageInstaller = applicationContext.packageManager.packageInstaller
val receiverIntent = Intent(applicationContext, UninstallerReceiver::class.java).apply {
action = "APP_UNINSTALL_ACTION"
}
val receiverPendingIntent =
PendingIntent.getBroadcast(context, 0, receiverIntent, PackageInstallerManager.flags)
packageInstaller.uninstall(packageName, receiverPendingIntent.intentSender)
}
override fun trace(_msg: String) { /* unused */
object PackageInstallerManager {
var result: MethodChannel.Result? = null
val flags = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
} else {
PendingIntent.FLAG_UPDATE_CURRENT
}
}
}

View File

@ -1,11 +0,0 @@
package app.revanced.manager.flutter.utils.aligning
import app.revanced.manager.flutter.utils.zip.structures.ZipEntry
internal object ZipAligner {
private const val DEFAULT_ALIGNMENT = 4
private const val LIBRARY_ALIGNMENT = 4096
fun getEntryAlignment(entry: ZipEntry): Int? =
if (entry.compression.toUInt() != 0u) null else if (entry.fileName.endsWith(".so")) LIBRARY_ALIGNMENT else DEFAULT_ALIGNMENT
}

View File

@ -0,0 +1,32 @@
package app.revanced.manager.flutter.utils.packageInstaller
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.pm.PackageInstaller
import app.revanced.manager.flutter.MainActivity
class InstallerReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
when (val status = intent.getIntExtra(PackageInstaller.EXTRA_STATUS, -1)) {
PackageInstaller.STATUS_PENDING_USER_ACTION -> {
val confirmationIntent = intent.getParcelableExtra<Intent>(Intent.EXTRA_INTENT)
if (confirmationIntent != null) {
context.startActivity(confirmationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK))
}
}
else -> {
val packageName = intent.getStringExtra(PackageInstaller.EXTRA_PACKAGE_NAME)
val message = intent.getStringExtra(PackageInstaller.EXTRA_STATUS_MESSAGE)
val otherPackageName = intent.getStringExtra(PackageInstaller.EXTRA_OTHER_PACKAGE_NAME)
MainActivity.PackageInstallerManager.result!!.success(mapOf(
"status" to status,
"packageName" to packageName,
"message" to message,
"otherPackageName" to otherPackageName
))
}
}
}
}

View File

@ -0,0 +1,24 @@
package app.revanced.manager.flutter.utils.packageInstaller
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.pm.PackageInstaller
import app.revanced.manager.flutter.MainActivity
class UninstallerReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
when (val status = intent.getIntExtra(PackageInstaller.EXTRA_STATUS, -1)) {
PackageInstaller.STATUS_PENDING_USER_ACTION -> {
val confirmationIntent = intent.getParcelableExtra<Intent>(Intent.EXTRA_INTENT)
if (confirmationIntent != null) {
context.startActivity(confirmationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK))
}
}
else -> {
MainActivity.PackageInstallerManager.result!!.success(status)
}
}
}
}

View File

@ -1,74 +0,0 @@
package app.revanced.manager.flutter.utils.signing
import com.android.apksig.ApkSigner
import org.bouncycastle.asn1.x500.X500Name
import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo
import org.bouncycastle.cert.X509v3CertificateBuilder
import org.bouncycastle.cert.jcajce.JcaX509CertificateConverter
import org.bouncycastle.jce.provider.BouncyCastleProvider
import org.bouncycastle.operator.ContentSigner
import org.bouncycastle.operator.jcajce.JcaContentSignerBuilder
import java.io.File
import java.io.FileInputStream
import java.io.FileOutputStream
import java.math.BigInteger
import java.security.*
import java.security.cert.X509Certificate
import java.util.*
internal class Signer(
private val cn: String, password: String
) {
private val passwordCharArray = password.toCharArray()
private fun newKeystore(out: File) {
val (publicKey, privateKey) = createKey()
val privateKS = KeyStore.getInstance("BKS", "BC")
privateKS.load(null, passwordCharArray)
privateKS.setKeyEntry("alias", privateKey, passwordCharArray, arrayOf(publicKey))
privateKS.store(FileOutputStream(out), passwordCharArray)
}
private fun createKey(): Pair<X509Certificate, PrivateKey> {
val gen = KeyPairGenerator.getInstance("RSA")
gen.initialize(2048)
val pair = gen.generateKeyPair()
var serialNumber: BigInteger
do serialNumber =
BigInteger.valueOf(SecureRandom().nextLong()) while (serialNumber < BigInteger.ZERO)
val x500Name = X500Name("CN=$cn")
val builder = X509v3CertificateBuilder(
x500Name,
serialNumber,
Date(System.currentTimeMillis() - 1000L * 60L * 60L * 24L * 30L),
Date(System.currentTimeMillis() + 1000L * 60L * 60L * 24L * 366L * 30L),
Locale.ENGLISH,
x500Name,
SubjectPublicKeyInfo.getInstance(pair.public.encoded)
)
val signer: ContentSigner = JcaContentSignerBuilder("SHA256withRSA").build(pair.private)
return JcaX509CertificateConverter().getCertificate(builder.build(signer)) to pair.private
}
fun signApk(input: File, output: File, ks: File) {
Security.addProvider(BouncyCastleProvider())
if (!ks.exists()) newKeystore(ks)
val keyStore = KeyStore.getInstance("BKS", "BC")
FileInputStream(ks).use { fis -> keyStore.load(fis, null) }
val alias = keyStore.aliases().nextElement()
val config = ApkSigner.SignerConfig.Builder(
cn,
keyStore.getKey(alias, passwordCharArray) as PrivateKey,
listOf(keyStore.getCertificate(alias) as X509Certificate)
).build()
val signer = ApkSigner.Builder(listOf(config))
signer.setCreatedBy(cn)
signer.setInputApk(input)
signer.setOutputApk(output)
signer.build().sign()
}
}

View File

@ -1,35 +0,0 @@
@file:Suppress("unused")
package app.revanced.manager.flutter.utils.zip
import java.io.DataInput
import java.io.DataOutput
import java.nio.ByteBuffer
fun UInt.toLittleEndian() =
(((this.toInt() and 0xff000000.toInt()) shr 24) or ((this.toInt() and 0x00ff0000) shr 8) or ((this.toInt() and 0x0000ff00) shl 8) or (this.toInt() shl 24)).toUInt()
fun UShort.toLittleEndian() = (this.toUInt() shl 16).toLittleEndian().toUShort()
fun UInt.toBigEndian() = (((this.toInt() and 0xff) shl 24) or ((this.toInt() and 0xff00) shl 8)
or ((this.toInt() and 0x00ff0000) ushr 8) or (this.toInt() ushr 24)).toUInt()
fun UShort.toBigEndian() = (this.toUInt() shl 16).toBigEndian().toUShort()
fun ByteBuffer.getUShort() = this.short.toUShort()
fun ByteBuffer.getUInt() = this.int.toUInt()
fun ByteBuffer.putUShort(ushort: UShort): ByteBuffer = this.putShort(ushort.toShort())
fun ByteBuffer.putUInt(uint: UInt): ByteBuffer = this.putInt(uint.toInt())
fun DataInput.readUShort() = this.readShort().toUShort()
fun DataInput.readUInt() = this.readInt().toUInt()
fun DataOutput.writeUShort(ushort: UShort) = this.writeShort(ushort.toInt())
fun DataOutput.writeUInt(uint: UInt) = this.writeInt(uint.toInt())
fun DataInput.readUShortLE() = this.readUShort().toBigEndian()
fun DataInput.readUIntLE() = this.readUInt().toBigEndian()
fun DataOutput.writeUShortLE(ushort: UShort) = this.writeUShort(ushort.toLittleEndian())
fun DataOutput.writeUIntLE(uint: UInt) = this.writeUInt(uint.toLittleEndian())

View File

@ -1,176 +0,0 @@
package app.revanced.manager.flutter.utils.zip
import app.revanced.manager.flutter.utils.zip.structures.ZipEndRecord
import app.revanced.manager.flutter.utils.zip.structures.ZipEntry
import java.io.Closeable
import java.io.File
import java.io.RandomAccessFile
import java.nio.ByteBuffer
import java.nio.channels.FileChannel
import java.util.zip.CRC32
import java.util.zip.Deflater
class ZipFile(file: File) : Closeable {
var entries: MutableList<ZipEntry> = mutableListOf()
private val filePointer: RandomAccessFile = RandomAccessFile(file, "rw")
private var CDNeedsRewrite = false
private val compressionLevel = 5
init {
//if file isn't empty try to load entries
if (file.length() > 0) {
val endRecord = findEndRecord()
if (endRecord.diskNumber > 0u || endRecord.totalEntries != endRecord.diskEntries)
throw IllegalArgumentException("Multi-file archives are not supported")
entries = readEntries(endRecord).toMutableList()
}
//seek back to start for writing
filePointer.seek(0)
}
private fun findEndRecord(): ZipEndRecord {
//look from end to start since end record is at the end
for (i in filePointer.length() - 1 downTo 0) {
filePointer.seek(i)
//possible beginning of signature
if (filePointer.readByte() == 0x50.toByte()) {
//seek back to get the full int
filePointer.seek(i)
val possibleSignature = filePointer.readUIntLE()
if (possibleSignature == ZipEndRecord.ECD_SIGNATURE) {
filePointer.seek(i)
return ZipEndRecord.fromECD(filePointer)
}
}
}
throw Exception("Couldn't find end record")
}
private fun readEntries(endRecord: ZipEndRecord): List<ZipEntry> {
filePointer.seek(endRecord.centralDirectoryStartOffset.toLong())
val numberOfEntries = endRecord.diskEntries.toInt()
return buildList(numberOfEntries) {
for (i in 1..numberOfEntries) {
add(
ZipEntry.fromCDE(filePointer).also
{
//for some reason the local extra field can be different from the central one
it.readLocalExtra(
filePointer.channel.map(
FileChannel.MapMode.READ_ONLY,
it.localHeaderOffset.toLong() + 28,
2
)
)
})
}
}
}
private fun writeCD() {
val CDStart = filePointer.channel.position().toUInt()
entries.forEach {
filePointer.channel.write(it.toCDE())
}
val entriesCount = entries.size.toUShort()
val endRecord = ZipEndRecord(
0u,
0u,
entriesCount,
entriesCount,
filePointer.channel.position().toUInt() - CDStart,
CDStart,
""
)
filePointer.channel.write(endRecord.toECD())
}
private fun addEntry(entry: ZipEntry, data: ByteBuffer) {
CDNeedsRewrite = true
entry.localHeaderOffset = filePointer.channel.position().toUInt()
filePointer.channel.write(entry.toLFH())
filePointer.channel.write(data)
entries.add(entry)
}
fun addEntryCompressData(entry: ZipEntry, data: ByteArray) {
val compressor = Deflater(compressionLevel, true)
compressor.setInput(data)
compressor.finish()
val uncompressedSize = data.size
val compressedData =
ByteArray(uncompressedSize) //i'm guessing compression won't make the data bigger
val compressedDataLength = compressor.deflate(compressedData)
val compressedBuffer =
ByteBuffer.wrap(compressedData.take(compressedDataLength).toByteArray())
compressor.end()
val crc = CRC32()
crc.update(data)
entry.compression = 8u //deflate compression
entry.uncompressedSize = uncompressedSize.toUInt()
entry.compressedSize = compressedDataLength.toUInt()
entry.crc32 = crc.value.toUInt()
addEntry(entry, compressedBuffer)
}
private fun addEntryCopyData(entry: ZipEntry, data: ByteBuffer, alignment: Int? = null) {
alignment?.let {
//calculate where data would end up
val dataOffset = filePointer.filePointer + entry.LFHSize
val mod = dataOffset % alignment
//wrong alignment
if (mod != 0L) {
//add padding at end of extra field
entry.localExtraField =
entry.localExtraField.copyOf((entry.localExtraField.size + (alignment - mod)).toInt())
}
}
addEntry(entry, data)
}
fun getDataForEntry(entry: ZipEntry): ByteBuffer {
return filePointer.channel.map(
FileChannel.MapMode.READ_ONLY,
entry.dataOffset.toLong(),
entry.compressedSize.toLong()
)
}
fun copyEntriesFromFileAligned(file: ZipFile, entryAlignment: (entry: ZipEntry) -> Int?) {
for (entry in file.entries) {
if (entries.any { it.fileName == entry.fileName }) continue //don't add duplicates
val data = file.getDataForEntry(entry)
addEntryCopyData(entry, data, entryAlignment(entry))
}
}
override fun close() {
if (CDNeedsRewrite) writeCD()
filePointer.close()
}
}

View File

@ -1,78 +0,0 @@
package app.revanced.manager.flutter.utils.zip.structures
import app.revanced.manager.flutter.utils.zip.putUInt
import app.revanced.manager.flutter.utils.zip.putUShort
import app.revanced.manager.flutter.utils.zip.readUIntLE
import app.revanced.manager.flutter.utils.zip.readUShortLE
import java.io.DataInput
import java.nio.ByteBuffer
import java.nio.ByteOrder
data class ZipEndRecord(
val diskNumber: UShort,
val startingDiskNumber: UShort,
val diskEntries: UShort,
val totalEntries: UShort,
val centralDirectorySize: UInt,
val centralDirectoryStartOffset: UInt,
val fileComment: String,
) {
companion object {
const val ECD_HEADER_SIZE = 22
const val ECD_SIGNATURE = 0x06054b50u
fun fromECD(input: DataInput): ZipEndRecord {
val signature = input.readUIntLE()
if (signature != ECD_SIGNATURE)
throw IllegalArgumentException("Input doesn't start with end record signature")
val diskNumber = input.readUShortLE()
val startingDiskNumber = input.readUShortLE()
val diskEntries = input.readUShortLE()
val totalEntries = input.readUShortLE()
val centralDirectorySize = input.readUIntLE()
val centralDirectoryStartOffset = input.readUIntLE()
val fileCommentLength = input.readUShortLE()
var fileComment = ""
if (fileCommentLength > 0u) {
val fileCommentBytes = ByteArray(fileCommentLength.toInt())
input.readFully(fileCommentBytes)
fileComment = fileCommentBytes.toString(Charsets.UTF_8)
}
return ZipEndRecord(
diskNumber,
startingDiskNumber,
diskEntries,
totalEntries,
centralDirectorySize,
centralDirectoryStartOffset,
fileComment
)
}
}
fun toECD(): ByteBuffer {
val commentBytes = fileComment.toByteArray(Charsets.UTF_8)
val buffer = ByteBuffer.allocate(ECD_HEADER_SIZE + commentBytes.size)
.also { it.order(ByteOrder.LITTLE_ENDIAN) }
buffer.putUInt(ECD_SIGNATURE)
buffer.putUShort(diskNumber)
buffer.putUShort(startingDiskNumber)
buffer.putUShort(diskEntries)
buffer.putUShort(totalEntries)
buffer.putUInt(centralDirectorySize)
buffer.putUInt(centralDirectoryStartOffset)
buffer.putUShort(commentBytes.size.toUShort())
buffer.put(commentBytes)
buffer.flip()
return buffer
}
}

View File

@ -1,190 +0,0 @@
package app.revanced.manager.flutter.utils.zip.structures
import app.revanced.manager.flutter.utils.zip.*
import java.io.DataInput
import java.nio.ByteBuffer
import java.nio.ByteOrder
data class ZipEntry(
val version: UShort,
val versionNeeded: UShort,
val flags: UShort,
var compression: UShort,
val modificationTime: UShort,
val modificationDate: UShort,
var crc32: UInt,
var compressedSize: UInt,
var uncompressedSize: UInt,
val diskNumber: UShort,
val internalAttributes: UShort,
val externalAttributes: UInt,
var localHeaderOffset: UInt,
val fileName: String,
val extraField: ByteArray,
val fileComment: String,
var localExtraField: ByteArray = ByteArray(0), //separate for alignment
) {
val LFHSize: Int
get() = LFH_HEADER_SIZE + fileName.toByteArray(Charsets.UTF_8).size + localExtraField.size
val dataOffset: UInt
get() = localHeaderOffset + LFHSize.toUInt()
companion object {
const val CDE_HEADER_SIZE = 46
const val CDE_SIGNATURE = 0x02014b50u
const val LFH_HEADER_SIZE = 30
const val LFH_SIGNATURE = 0x04034b50u
fun createWithName(fileName: String): ZipEntry {
return ZipEntry(
0x1403u, //made by unix, version 20
0u,
0u,
0u,
0x0821u, //seems to be static time google uses, no idea
0x0221u, //same as above
0u,
0u,
0u,
0u,
0u,
0u,
0u,
fileName,
ByteArray(0),
""
)
}
fun fromCDE(input: DataInput): ZipEntry {
val signature = input.readUIntLE()
if (signature != CDE_SIGNATURE)
throw IllegalArgumentException("Input doesn't start with central directory entry signature")
val version = input.readUShortLE()
val versionNeeded = input.readUShortLE()
var flags = input.readUShortLE()
val compression = input.readUShortLE()
val modificationTime = input.readUShortLE()
val modificationDate = input.readUShortLE()
val crc32 = input.readUIntLE()
val compressedSize = input.readUIntLE()
val uncompressedSize = input.readUIntLE()
val fileNameLength = input.readUShortLE()
var fileName = ""
val extraFieldLength = input.readUShortLE()
val extraField = ByteArray(extraFieldLength.toInt())
val fileCommentLength = input.readUShortLE()
var fileComment = ""
val diskNumber = input.readUShortLE()
val internalAttributes = input.readUShortLE()
val externalAttributes = input.readUIntLE()
val localHeaderOffset = input.readUIntLE()
val variableFieldsLength =
fileNameLength.toInt() + extraFieldLength.toInt() + fileCommentLength.toInt()
if (variableFieldsLength > 0) {
val fileNameBytes = ByteArray(fileNameLength.toInt())
input.readFully(fileNameBytes)
fileName = fileNameBytes.toString(Charsets.UTF_8)
input.readFully(extraField)
val fileCommentBytes = ByteArray(fileCommentLength.toInt())
input.readFully(fileCommentBytes)
fileComment = fileCommentBytes.toString(Charsets.UTF_8)
}
flags = (flags and 0b1000u.inv()
.toUShort()) //disable data descriptor flag as they are not used
return ZipEntry(
version,
versionNeeded,
flags,
compression,
modificationTime,
modificationDate,
crc32,
compressedSize,
uncompressedSize,
diskNumber,
internalAttributes,
externalAttributes,
localHeaderOffset,
fileName,
extraField,
fileComment,
)
}
}
fun readLocalExtra(buffer: ByteBuffer) {
buffer.order(ByteOrder.LITTLE_ENDIAN)
localExtraField = ByteArray(buffer.getUShort().toInt())
}
fun toLFH(): ByteBuffer {
val nameBytes = fileName.toByteArray(Charsets.UTF_8)
val buffer = ByteBuffer.allocate(LFH_HEADER_SIZE + nameBytes.size + localExtraField.size)
.also { it.order(ByteOrder.LITTLE_ENDIAN) }
buffer.putUInt(LFH_SIGNATURE)
buffer.putUShort(versionNeeded)
buffer.putUShort(flags)
buffer.putUShort(compression)
buffer.putUShort(modificationTime)
buffer.putUShort(modificationDate)
buffer.putUInt(crc32)
buffer.putUInt(compressedSize)
buffer.putUInt(uncompressedSize)
buffer.putUShort(nameBytes.size.toUShort())
buffer.putUShort(localExtraField.size.toUShort())
buffer.put(nameBytes)
buffer.put(localExtraField)
buffer.flip()
return buffer
}
fun toCDE(): ByteBuffer {
val nameBytes = fileName.toByteArray(Charsets.UTF_8)
val commentBytes = fileComment.toByteArray(Charsets.UTF_8)
val buffer =
ByteBuffer.allocate(CDE_HEADER_SIZE + nameBytes.size + extraField.size + commentBytes.size)
.also { it.order(ByteOrder.LITTLE_ENDIAN) }
buffer.putUInt(CDE_SIGNATURE)
buffer.putUShort(version)
buffer.putUShort(versionNeeded)
buffer.putUShort(flags)
buffer.putUShort(compression)
buffer.putUShort(modificationTime)
buffer.putUShort(modificationDate)
buffer.putUInt(crc32)
buffer.putUInt(compressedSize)
buffer.putUInt(uncompressedSize)
buffer.putUShort(nameBytes.size.toUShort())
buffer.putUShort(extraField.size.toUShort())
buffer.putUShort(commentBytes.size.toUShort())
buffer.putUShort(diskNumber)
buffer.putUShort(internalAttributes)
buffer.putUInt(externalAttributes)
buffer.putUInt(localHeaderOffset)
buffer.put(nameBytes)
buffer.put(extraField)
buffer.put(commentBytes)
buffer.flip()
return buffer
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 814 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

View File

@ -0,0 +1,30 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp"
android:height="108dp"
android:viewportWidth="256"
android:viewportHeight="256">
<group android:scaleX="0.23"
android:scaleY="0.23"
android:translateX="98.56"
android:translateY="98.56">
<path
android:pathData="M253.85,4.9C254.32,3.82 254.22,2.57 253.58,1.58C252.93,0.6 251.83,0 250.64,0C243.29,0 230.47,0 225.95,0C224.96,0 224.06,0.59 223.66,1.5C216.03,18.88 144.1,182.7 130.29,214.16C129.89,215.07 128.99,215.66 128,215.66C127.01,215.66 126.11,215.07 125.71,214.16C111.9,182.7 39.97,18.88 32.34,1.5C31.94,0.59 31.04,0 30.05,0C25.53,0 12.71,0 5.36,0C4.17,0 3.07,0.6 2.42,1.58C1.78,2.57 1.68,3.82 2.15,4.9C16.78,38.3 101.47,231.61 111.24,253.9C111.8,255.18 113.06,256 114.45,256C120.29,256 135.71,256 141.55,256C142.94,256 144.2,255.18 144.76,253.9C154.52,231.61 239.22,38.3 253.85,4.9Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M130.59,131.75C130.06,132.68 129.07,133.25 128,133.25C126.93,133.25 125.94,132.68 125.4,131.75C113.45,111.06 63.88,25.19 51.93,4.5C51.4,3.57 51.4,2.43 51.93,1.5C52.47,0.57 53.46,-0 54.53,-0L201.47,-0C202.54,-0 203.53,0.57 204.06,1.5C204.6,2.43 204.6,3.57 204.06,4.5C192.12,25.19 142.54,111.06 130.59,131.75Z">
<aapt:attr name="android:fillColor">
<gradient
android:startX="128"
android:startY="-0"
android:endX="128"
android:endY="254.6"
android:type="linear">
<item android:offset="0" android:color="#FFF04E98"/>
<item android:offset="0.5" android:color="#FF5F65D4"/>
<item android:offset="1" android:color="#FF4E98F0"/>
</gradient>
</aapt:attr>
</path>
</group>
</vector>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
</adaptive-icon>
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
<monochrome android:drawable="@drawable/ic_launcher_foreground"/>
</adaptive-icon>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:keep="@drawable/ic_notification" />

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_background">#1B1B1B</color>
</resources>
</resources>

View File

@ -1,4 +1,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="app.revanced.manager.flutter">
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- The INTERNET permission is required for development. Specifically,
the Flutter tool needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>

View File

@ -1,37 +0,0 @@
buildscript {
ext.cronetVersion = '102.5005.125'
ext.kotlin_version = '1.7.20'
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.1.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
google()
mavenCentral()
maven {
url = uri("https://maven.pkg.github.com/revanced/revanced-patcher")
credentials {
username = (project.findProperty("gpr.user") ?: System.getenv("GITHUB_ACTOR")) as String
password = (project.findProperty("gpr.key") ?: System.getenv("GITHUB_TOKEN")) as String
}
}
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
project.evaluationDependsOn(':app')
}
task clean(type: Delete) {
delete rootProject.buildDir
}

40
android/build.gradle.kts Normal file
View File

@ -0,0 +1,40 @@
import com.android.build.api.dsl.CommonExtension
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
allprojects {
repositories {
google()
mavenCentral()
maven {
name = "GitHubPackages"
url = uri("https://maven.pkg.github.com/revanced/registry")
credentials {
username = providers.gradleProperty("gpr.user").orNull ?: System.getenv("GITHUB_ACTOR")
password = providers.gradleProperty("gpr.key").orNull ?: System.getenv("GITHUB_TOKEN")
}
}
}
}
layout.buildDirectory = File("../build")
project(":screenshot_callback") {
tasks.withType<KotlinCompile>().configureEach {
kotlinOptions {
jvmTarget = "17"
}
}
}
subprojects {
afterEvaluate {
extensions.findByName("android")?.let {
it as CommonExtension<*, *, *, *, *, *>
if (it.compileSdk != null && it.compileSdk!! < 31)
it.compileSdk = 34
}
}
layout.buildDirectory = rootProject.layout.buildDirectory.file(name).get().asFile
evaluationDependsOn(":app")
}

View File

@ -1,3 +1,7 @@
org.gradle.jvmargs=-Xmx1536M
org.gradle.jvmargs=-Xmx4G -XX:MaxMetaspaceSize=2G -XX:+HeapDumpOnOutOfMemoryError
android.useAndroidX=true
android.enableJetifier=true
org.gradle.parallel=true
org.gradle.daemon=true
org.gradle.caching=true
android.nonTransitiveRClass=false
android.nonFinalResIds=false

View File

@ -0,0 +1,9 @@
[versions]
revanced-patcher = "21.0.0"
revanced-library = "3.1.0"
desugar_jdk_libs = "2.1.4"
[libraries]
revanced-patcher = { module = "app.revanced:revanced-patcher", version.ref = "revanced-patcher" }
revanced-library = { module = "app.revanced:revanced-library", version.ref = "revanced-library" }
desugar_jdk_libs = { module = "com.android.tools:desugar_jdk_libs", version.ref = "desugar_jdk_libs" }

View File

@ -1,6 +1,8 @@
#Mon May 09 12:07:41 MSK 2022
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-rc-1-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
distributionSha256Sum=8d97a97984f6cbd2b85fe4c60a743440a347544bf18818048e611f5288d46c94
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

View File

@ -1,11 +0,0 @@
include ':app'
def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
def properties = new Properties()
assert localPropertiesFile.exists()
localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
def flutterSdkPath = properties.getProperty("flutter.sdk")
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"

View File

@ -0,0 +1,24 @@
pluginManagement {
val properties = java.util.Properties().apply {
load(file("local.properties").inputStream())
}
val flutterSdkPath = properties.getProperty("flutter.sdk")
assert(flutterSdkPath != null) { "flutter.sdk not set in local.properties" }
includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}
plugins {
id("dev.flutter.flutter-plugin-loader") version "1.0.0"
id("com.android.application") version "8.9.0" apply false
id("org.jetbrains.kotlin.android") version "2.1.10" apply false
}
include(":app")

298
assets/i18n/ar_SA.i18n.json Executable file
View File

@ -0,0 +1,298 @@
{
"okButton": "موافق",
"cancelButton": "إلغاء",
"dismissButton": "تجاهل",
"quitButton": "إنهاء",
"updateButton": "تحديث",
"suggested": "المقترح: ${version}",
"yesButton": "نعم",
"noButton": "لا",
"warning": "تحذير",
"notice": "تنويه",
"noShowAgain": "لا تعرض هذا مرة أخرى",
"add": "إضافة",
"remove": "إزالة",
"showChangelogButton": "عرض سجل التغييرات",
"showUpdateButton": "عرض التحديث",
"navigationView": {
"dashboardTab": "لوحة التحكم",
"patcherTab": "المعدّل",
"settingsTab": "الإعدادات"
},
"homeView": {
"refreshSuccess": "تم التحديث بنجاح",
"widgetTitle": "لوحة التحكم",
"updatesSubtitle": "تحديثات",
"lastPatchedAppSubtitle": "آخر تطبيق تم تعديله",
"patchedSubtitle": "التطبيقات المثبتة",
"changeLaterSubtitle": "يمكنك تغيير هذا في الإعدادات في وقت لاحق.",
"noSavedAppFound": "لم يتم العثور على تطبيق",
"noInstallations": "لا توجد تطبيقات معدلة مثبتة",
"installUpdate": "هل تريد الاستمرار في تثبيت التحديث؟",
"updateSheetTitle": "تحديث ReVanced Manager",
"updateDialogTitle": "تحديث جديد متوفر",
"updatePatchesSheetTitle": "تحديث تعديلات ReVanced",
"updateChangelogTitle": "سجل التغييرات",
"updateDialogText": "يتوفر تحديث جديد لـ ${file}.\n\nالإصدار المثبت حاليًا هو ${version}.",
"downloadConsentDialogTitle": "تنزيل الملفات اللازمة؟",
"downloadConsentDialogText": "يحتاج مدير ReVanced إلى تنزيل الملفات اللازمة ليعمل بشكل صحيح.",
"downloadConsentDialogText2": "سيؤدي هذا إلى توصيلك بـ ${url}.",
"downloadingMessage": "جارٍ تنزيل التحديث...",
"downloadedMessage": "تم تنزيل التحديث",
"installingMessage": "جارٍ تثبيت التحديث...",
"errorDownloadMessage": "تعذر تنزيل التحديث",
"errorInstallMessage": "تعذّر تثبيت التحديث",
"noConnection": "لا يوجد اتصال بالإنترنت"
},
"applicationItem": {
"infoButton": "معلومات"
},
"latestCommitCard": {
"loadingLabel": "جارٍ التحميل...",
"timeagoLabel": "منذ ${time}"
},
"patcherView": {
"widgetTitle": "المُعَّدِّل",
"patchButton": "تعديل",
"incompatibleArchWarningDialogText": "لم يتم دعم التعديلات الخاصة بهذه البنية حتى الآن وقد تفشل. هل تريد المتابعة على أي حال؟",
"removedPatchesWarningDialogText": "تمت إزالة التعديلات منذ آخر مرة قمت فيها بتعديل هذا التطبيق:\n\n${patches}\n\n${newPatches}هل تريد المتابعة على أي حال؟",
"addedPatchesDialogText": "تمت إضافة التعديلات منذ آخر مرة قمت فيها بتعديل هذا التطبيق:\n\n${addedPatches}\n\n",
"requiredOptionDialogText": "يجب ضبط بعض خيارات التعديل."
},
"appSelectorCard": {
"widgetTitle": "حدد تطبيق",
"widgetTitleSelected": "التطبيق المحدد",
"widgetSubtitle": "لم يتم تحديد أي تطبيق",
"noAppsLabel": "لم يتم العثور على تطبيقات",
"anyVersion": "أي إصدار"
},
"patchSelectorCard": {
"widgetTitle": "حدد التعديلات",
"widgetTitleSelected": "التعديلات التي تم تحديدها",
"widgetSubtitle": "حدد تطبيق أولاً",
"widgetEmptySubtitle": "لم يتم تحديد أي تعديلات"
},
"socialMediaCard": {
"widgetTitle": "وسائل التواصل",
"widgetSubtitle": "تابعونا!"
},
"appSelectorView": {
"viewTitle": "حدد تطبيق",
"searchBarHint": "البحث عن تطبيق",
"storageButton": "التخزين",
"selectFromStorageButton": "تحديد من التخزين",
"errorMessage": "لا يمكن استخدام التطبيق المحدد",
"downloadToast": "خاصية التنزيل غير متوفرة بعد",
"requireSuggestedAppVersionDialogText": "الإصدار من التطبيق الذي حددته لا يتطابق مع الإصدار المقترح الذي يمكن أن يؤدي إلى مشاكل غير متوقعة. الرجاء استخدام الإصدار المقترح.\n\nالإصدار المحدد: ${selected}\nالإصدار المقترح: ${suggested}\n\nللاستمرار على أي حال، قم بتعطيل \"طلب إصدار التطبيق المقترح\" في الإعدادات.",
"featureNotAvailable": "الميزة غير مُدمَجة بعد",
"featureNotAvailableText": "هذا التطبيق عبارة عن ملف Spilt APK ولا يمكن تعديله وتثبيته بشكل موثوق إلا عن طريق التثبيت باستخدام أذونات Root. ومع ذلك، يمكنك تعديل وتثبيت ملف APK كاملًا عن طريق تحديده من وحدة التخزين."
},
"patchesSelectorView": {
"viewTitle": "حدد التعديلات",
"searchBarHint": "البحث عن التعديلات",
"universalPatches": "التعديلات العامة",
"newPatches": "تعديلات جديدة",
"patches": "تعديلات",
"doneButton": "تم",
"defaultChip": "إفتراضي",
"defaultTooltip": "تحديد كل التعديلات الافتراضية",
"noneChip": "لا شيء",
"noneTooltip": "إلغاء تحديد كل التعديلات",
"loadPatchesSelection": "تحميل التعديل المحدد",
"noSavedPatches": "لا يوجد تحديد تعديل محفوظ للتطبيق المحدد.\nاضغط على تم لحفظ التحديد الحالي.",
"noPatchesFound": "لم يتم العثور على تعديلات للتطبيق المحدد",
"setRequiredOption": "تتطلب بعض التعديلات تعيين خيارات:\n\n${patches}\n\nالرجاء تعيينها قبل المتابعة."
},
"patchOptionsView": {
"customValue": "تخصيص القيمة",
"setToNull": "تعيين إلى ملغي",
"nullValue": "قيمة هذا الخيار فارغة حاليًا",
"viewTitle": "خيارات التعديل",
"saveOptions": "حفظ",
"unselectPatch": "إلغاء تحديد التعديل",
"tooltip": "المزيد من خيارات الإدخال",
"selectFilePath": "تحديد مسار الملف",
"selectFolder": "تحديد مجلد",
"requiredOption": "إعداد هذا الخيار مطلوب",
"unsupportedOption": "هذا الخيار غير مدعوم",
"requiredOptionNull": "يجب تعيين الخيارات التالية:\n\n${options}"
},
"patchItem": {
"unsupportedDialogText": "قد يؤدي تحديد هذا التعديل إلى حدوث أخطاء في عملية التعديل.\n\nإصدار التطبيق: ${packageVersion}\nالإصدارات المدعومة حاليًا:\n${supportedVersions}",
"unsupportedPatchVersion": "التعديل غير مدعوم لإصدار التطبيق هذا.",
"unsupportedRequiredOption": "يحتوي هذا التعديل على خيار مطلوب لا يدعمه هذا التطبيق",
"patchesChangeWarningDialogText": "يوصى باستخدام تحديد التعديل وخياراته الافتراضية. قد يؤدي تغييرها إلى حدوث مشكلات غير متوقعة.\n\nستحتاج إلى تشغيل \"السماح بتغيير تحديد التعديل\" في الإعدادات قبل تغيير أي تحديد تعديل.",
"patchesChangeWarningDialogButton": "استخدام التحديد الافتراضي"
},
"installerView": {
"installType": "تحديد نوع التثبيت",
"installTypeDescription": "تحديد نوع التثبيت للمتابعة.",
"installButton": "تثبيت",
"installRootType": "Mount",
"installNonRootType": "عادي",
"warning": "قم بتعطيل التحديثات التلقائية للتطبيق المعدل لتجنب المشكلات غير المتوقعة.",
"pressBackAgain": "اضغط رجوع مرة اخرى للإلغاء",
"openButton": "فتح",
"notificationTitle": "ReVanced Manager يقوم بعملية التعديل",
"notificationText": "انقر للعودة إلى المثبت",
"exportApkButtonTooltip": "تصدير APK المعدل",
"exportLogButtonTooltip": "تصدير السجل",
"screenshotDetected": "تم اكتشاف لقطة شاشة. إذا كنت تحاول مشاركة السجل، فيرجى مشاركة نسخة نصية بدلاً من ذلك.\n\nهل تريد نسخ السجل إلى الحافظة؟",
"copiedToClipboard": "تم نسخ السجل إلى الحافظة",
"noExit": "المثبت لا يزال قيد التشغيل، لا يمكن الخروج..."
},
"settingsView": {
"widgetTitle": "الإعدادات",
"appearanceSectionTitle": "المظهر",
"teamSectionTitle": "الفريق",
"debugSectionTitle": "تصحيح الأخطاء",
"advancedSectionTitle": "إعدادات متقدمة",
"exportSectionTitle": "استيراد و تصدير",
"dataSectionTitle": "مصدر البيانات",
"themeModeLabel": "مظهر التطبيق",
"systemThemeLabel": "النظام",
"lightThemeLabel": "فاتح (ابيض)",
"darkThemeLabel": "الوضع الداكن",
"dynamicThemeLabel": "تصميم Material You",
"dynamicThemeHint": "استمتع بتجربة أقرب إلى جهازك",
"languageLabel": "اللغة",
"languageUpdated": "تم تحديث اللغة",
"sourcesLabel": "مصادر بديلة",
"sourcesLabelHint": "تكوين المصادر البديلة لتعديلات ReVanced",
"useAlternativeSources": "استخدام مصادر بديلة",
"useAlternativeSourcesHint": "استخدام مصادر بديلة لتعديلات ReVanced بدلاً من واجهة برمجة التطبيقات",
"sourcesResetDialogTitle": "إعادة التعيين",
"sourcesResetDialogText": "هل أنت متأكد من أنك تريد إعادة تعيين المصادر الخاصة بك إلى قيمها الافتراضية؟",
"apiURLResetDialogText": "هل أنت متأكد من أنك تريد إعادة تعيين رابط API الخاص بك إلى قيمته الافتراضية؟",
"sourcesUpdateNote": "ملاحظة: سيؤدي هذا إلى تنزيل تعديلات ReVanced تلقائيًا من المصادر البديلة.\n\nسيؤدي هذا إلى توصيلك بالمصدر البديل.",
"apiURLLabel": "رابط API",
"apiURLHint": "تكوين عنوان URL لواجهة برمجة التطبيقات الخاصة بـ ReVanced Manager",
"selectApiURL": "رابط API",
"orgPatchesLabel": "تنظيم التعديلات",
"sourcesPatchesLabel": "مصدر التعديلات",
"contributorsLabel": "المساهمون",
"contributorsHint": "قائمة المساهمين في ReVanced",
"logsLabel": "مشاركة السجلات",
"logsHint": "مشاركة سجلات ReVanced Manager",
"enablePatchesSelectionLabel": "السماح بتغيير تحديد التعديل",
"enablePatchesSelectionHint": "لا تمنع تحديد أو إلغاء تحديد التعديلات",
"enablePatchesSelectionWarningText": "قد يؤدي تغيير تحديد التعديلات إلى حدوث مشكلات غير متوقعة.\n\nهل تريد التمكين على أي حال؟",
"disablePatchesSelectionWarningText": "أنت على وشك تعطيل تغيير تحديد التعديلات.\nستتم استعادة التحديد الافتراضي للتعديلات.\n\nهل تريد التعطيل على أي حال؟",
"autoUpdatePatchesLabel": "تحديث التعديلات تلقائيًا",
"autoUpdatePatchesHint": "تحديث التعديلات تلقائيًا إلى الإصدار الأحدث",
"showUpdateDialogLabel": "عرض مربع حوار التحديث",
"showUpdateDialogHint": "عرض مربع حوار عندما يتوفر تحديث جديد",
"universalPatchesLabel": "عرض التعديلات العامة",
"universalPatchesHint": "عرض جميع التطبيقات والتعديلات العامة (قد تؤدي إلى إبطاء قائمة التطبيقات)",
"lastPatchedAppLabel": "حفظ التطبيق المعدل",
"lastPatchedAppHint": "حفظ آخر تعديل لتثبيته أو تصديره لاحقًا",
"versionCompatibilityCheckLabel": "التحقق من توافق الإصدار",
"versionCompatibilityCheckHint": "منع تحديد التعديلات غير المتوافقة مع إصدار التطبيق المحدد",
"requireSuggestedAppVersionLabel": "يتطلب إصدار التطبيق المقترح",
"requireSuggestedAppVersionHint": "منع تحديد تطبيق بإصدار غير المقترح",
"requireSuggestedAppVersionDialogText": "قد يؤدي تحديد تطبيق ليس هو الإصدار المقترح إلى حدوث مشكلات غير متوقعة.\n\nهل تريد المتابعة على أية حال؟",
"aboutLabel": "لمحة",
"snackbarMessage": "نُسِخ إلى الحافظة",
"restartAppForChanges": "أعد تشغيل التطبيق لتطبيق التغييرات",
"deleteTempDirLabel": "حذف الملفات المؤقتة",
"deleteTempDirHint": "حذف الملفات المؤقتة غير المستخدمة",
"deletedTempDir": "تم حذف الملفات المؤقتة",
"exportSettingsLabel": "تصدير الإعدادات",
"exportSettingsHint": "تصدير الإعدادات إلى ملف JSON",
"exportedSettings": "تم تصدير الإعدادات",
"importSettingsLabel": "استيراد الإعدادات",
"importSettingsHint": "استيراد الإعدادات من ملف JSON",
"importedSettings": "تم استيراد الإعدادات",
"exportPatchesLabel": "تصدير التعديل المحدد",
"exportPatchesHint": "تصدير التعديل المحدد إلى مِلَفّ JSON",
"exportedPatches": "تم تصدير التعديل المحدد",
"noExportFileFound": "لا يوجد تعديل محدد للتصدير",
"importPatchesLabel": "استيراد التعديل المحدد",
"importPatchesHint": "استيراد التعديل المحدد من مِلَفّ JSON",
"importedPatches": "تم استيراد التعديل المحدد",
"resetStoredPatchesLabel": "إعادة تعيين التعديل المحدد",
"resetStoredPatchesHint": "إعادة تعيين التعديل المحدد المخزن",
"resetStoredPatchesDialogTitle": "إعادة تعيين التعديل المحدد؟",
"resetStoredPatchesDialogText": "ستتم استعادة التحديد الافتراضي للتعديلات.",
"resetStoredPatches": "تم إعادة تعيين التعديل المحدد",
"resetStoredOptionsLabel": "إعادة تعيين خيارات التعديل",
"resetStoredOptionsHint": "إعادة تعيين جميع خيارات التعديل",
"resetStoredOptionsDialogTitle": "إعادة تعيين خيارات التعديل؟",
"resetStoredOptionsDialogText": "سيؤدي إعادة تعيين خيارات التعديل إلى إزالة جميع الخيارات المحفوظة.",
"resetStoredOptions": "تم إعادة تعيين الخيارات",
"deleteLogsLabel": "مسح السجلات",
"deleteLogsHint": "حذف سجلات ReVanced Manager التي تم جمعها",
"deletedLogs": "تم حذف السجلات",
"regenerateKeystoreLabel": "إعادة إنشاء مخزن المفاتيح",
"regenerateKeystoreHint": "إعادة إنشاء مخزن المفاتيح المستخدم لتوقيع التطبيقات",
"regenerateKeystoreDialogTitle": "إعادة إنشاء مخزن المفاتيح؟",
"regenerateKeystoreDialogText": "لن تتمكن التطبيقات المعدلة الموقعة باستخدام مخزن المفاتيح القديم من التحديث بعد الآن.",
"regeneratedKeystore": "تم تجديد مخزن المفاتيح",
"exportKeystoreLabel": "تصدير مخزن المفاتيح",
"exportKeystoreHint": "تصدير مخزن المفاتيح المستخدم لتوقيع التطبيقات",
"exportedKeystore": "تم تصدير مخزن المفاتيح",
"noKeystoreExportFileFound": "لا يوجد مخزن مفاتيح للتصدير",
"importKeystoreLabel": "استيراد مخزن المفاتيح",
"importKeystoreHint": "استيراد مخزن المفاتيح المستخدم لتوقيع التطبيقات",
"importedKeystore": "تم استيراد مخزن المفاتيح",
"selectKeystorePassword": "كلمة مرور مخزن المفاتيح",
"selectKeystorePasswordHint": "حدد كلمة مرور تخزين المفاتيح المستخدمة للتوقيع على التطبيقات",
"jsonSelectorErrorMessage": "تعذر استخدام مِلَفّ JSON المحدد",
"keystoreSelectorErrorMessage": "غير قادر على استخدام ملف تخزين المفاتيح المحدد"
},
"appInfoView": {
"widgetTitle": "معلومات التطبيق",
"openButton": "فتح",
"installButton": "تثبيت",
"uninstallButton": "إلغاء التثبيت",
"unmountButton": "Unmount",
"exportButton": "تصدير",
"deleteButton": "حذف",
"rootDialogTitle": "خطأ",
"lastPatchedAppDescription": "هذه نسخة احتياطية من التطبيق الذي تم تعديله آخر مرة.",
"unmountDialogText": "هل أنت متأكد من أنك تريد Unmount لهذا التطبيق؟",
"uninstallDialogText": "هل أنت متأكد من أنك تريد إلغاء تثبيت هذا التطبيق؟",
"rootDialogText": "تم تثبيت التطبيق بأذونات المستخدم المتميز، لكن ReVanced Manager ليس لديه أذونات حاليًا.\nالرجاء منح أذونات المستخدم المتميز أولاً.",
"removeAppDialogTitle": "حذف التطبيق؟",
"removeAppDialogText": "هل أنت متأكد من أنك تريد حذف هذه النسخة الاحتياطية؟",
"packageNameLabel": "اسم الحُزْمَة",
"installTypeLabel": "نوع التثبيت",
"mountTypeLabel": "Mount",
"regularTypeLabel": "عادي",
"patchedDateLabel": "تاريخ التعديل",
"appliedPatchesLabel": "التعديلات المطبقة",
"sizeLabel": "حجم الملف",
"patchedDateHint": "${date} في ${time}",
"appliedPatchesHint": "${quantity} تعديلات مطبقة",
"updateNotImplemented": "لم يتم تنفيذ هذه الميزة بعد"
},
"contributorsView": {
"widgetTitle": "المساهمون"
},
"installErrorDialog": {
"mount_version_mismatch": "الإصدار غير متطابق",
"mount_no_root": "لا توجد صلاحيات Root",
"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": "فشل التثبيت بسبب عدم منح الوصول إلى Root.\n\nامنح حق الوصول Root إلى ReVanced 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_version_downgrade_description": "فشل التثبيت نظرًا لكون التطبيق المعدل إصدارًا أقل من التطبيق المثبت.\n\nهل تريد إلغاء تثبيت التطبيق والمحاولة مرة أخرى؟",
"status_unknown_description": "فشل التثبيت لسبب غير معروف. الرجاء المحاولة مرة أخرى."
}
}

View File

@ -1,196 +0,0 @@
{
"okButton": "موافق",
"cancelButton": "إلغاء",
"enabledLabel": "مفعّل",
"disabledLabel": "معطّل",
"yesButton": "نعم",
"noButton": "لا",
"warning": "تحذير",
"navigationView": {
"dashboardTab": "لوحة التحكم",
"patcherTab": "لوحة التعديل",
"settingsTab": "الإعدادات"
},
"homeView": {
"widgetTitle": "لوحة التحكم",
"updatesSubtitle": "تحديثات",
"patchedSubtitle": "التطبيقات المعدلة",
"updatesAvailable": "تحديثات متوفرة",
"noUpdates": "لا توجد تحديثات متاحة",
"WIP": "العمل قيد التنفيذ...",
"noInstallations": "لا توجد تطبيقات معدلة مثبتة",
"installed": "مثبت",
"updateDialogTitle": "تحديث المدير",
"updateDialogText": "هل أنت متأكد من رغبتك في تنزيل وتحديث ReVanced Manager ؟",
"notificationTitle": "تم تنزيل التحديث",
"notificationText": "أنقر لتثبيت التحديث",
"downloadingMessage": "جاري تحميل التحديث...",
"installingMessage": "جاري تثبيت التحديث...",
"errorDownloadMessage": "تعذر تحميل التحديث",
"errorInstallMessage": "تعذّر تثبيت التحديث",
"noConnection": "لا يوجد اتصال بالإنترنت",
"updatesDisabled": "تحديث تطبيق تم تعديله معطل حاليًا. أعد تعديل التطبيق مرة أخرى."
},
"applicationItem": {
"patchButton": "تعديل",
"infoButton": "معلومات",
"changelogLabel": "سجل التغييرات"
},
"latestCommitCard": {
"loadingLabel": "جاري التحميل...",
"timeagoLabel": "منذ {time}",
"patcherLabel": "المعدّل: ",
"managerLabel": "المدير: ",
"updateButton": "تحديث المدير"
},
"patcherView": {
"widgetTitle": "المُعَّدِّل",
"patchButton": "تعديل",
"patchDialogText": "لقد اخترت تعديل مورد وتم اكتشاف APK منقسم مثبت، لذا من الممكن أن تحدث أخطاء في التعديل.\nهل أنت متأكد أنك تريد المتابعة؟"
},
"appSelectorCard": {
"widgetTitle": "إختر تطبيقًا",
"widgetTitleSelected": "التطبيق المحدد",
"widgetSubtitle": "لم يتم اختيار أي تطبيق",
"noAppsLabel": "لم يتم العثور على تطبيقات",
"currentVersion": "الحالي",
"recommendedVersion": "موصى به",
"anyVersion": "أي"
},
"patchSelectorCard": {
"widgetTitle": "اختر التعديلات",
"widgetTitleSelected": "التعديلات التي تم اختيارها",
"widgetSubtitle": "اختر تطبيق أولاً",
"widgetEmptySubtitle": "لم يتم تحديد أي تعديلات"
},
"socialMediaCard": {
"widgetTitle": "وسائل التواصل",
"widgetSubtitle": "تابعونا!"
},
"appSelectorView": {
"viewTitle": "إختر تطبيقًا",
"searchBarHint": "البحث عن التطبيقات",
"storageButton": "التخزين",
"errorMessage": "لا يمكن استخدام التطبيق المحدد"
},
"patchesSelectorView": {
"viewTitle": "اختر التعديلات",
"searchBarHint": "البحث عن التعديلات",
"doneButton": "تم",
"recommended": "موصى به",
"all": "الكل",
"none": "بدون",
"loadPatchesSelection": "تحميل التعديلات المحددة",
"noSavedPatches": "لا توجد تعديلات محفوظة للتطبيق المحدد\nاضغط على تم لحفظ التحديد الحالي",
"noPatchesFound": "لم يتم العثور على تعديلات للتطبيق المحدد",
"selectAllPatchesWarningContent": "أنت على وشك تحديد جميع التعديلات، بما في ذلك التعديلات غير الموصى بها والتي يمكن أن تسبب سلوكاً غير مرغوب فيه."
},
"patchItem": {
"unsupportedDialogText": "قد يؤدي تحديد هذا التعديل إلى حدوث أخطاء في عملية التعديل.\n\nإصدار التطبيق: {packageVersion}\nالإصدارات المدعومة حالياً:\n{supportedVersions}",
"unsupportedPatchVersion": "التعديل غير مدعوم لهذا الإصدار من التطبيق. مكن التعديل التجريبي في الإعدادات للمتابعة."
},
"installerView": {
"widgetTitle": "المثبت",
"installButton": "تثبيت",
"installRootButton": "تثبيت كـ Root",
"openButton": "فتح",
"shareButton": "شارك ملف",
"notificationTitle": "ReVanced Manager يقوم بعملية التعديل",
"notificationText": "انقر للعودة إلى المثبت",
"shareApkMenuOption": "مشاركة APK",
"exportApkMenuOption": "تصدير APK",
"shareLogMenuOption": "مشاركة السجل",
"installErrorDialogTitle": "خطأ",
"installErrorDialogText1": "التثبيت بطريقة Root غير ممكن مع التعديلات التي تم اختيارها.\nأعد تعديل التطبيق الخاص بك أو اختر التثبيت كـ Non-Root.",
"installErrorDialogText2": "التثبيت بطريقة Non-Root غير ممكن مع التعديلات التي تم اختيارها.\nأعد تعديل التطبيق الخاص بك، أو اختر التثبيت كـ Root إذا كان قد تم عمل Root لجهازك.",
"installErrorDialogText3": "لا يمكن التثبيت بطريقة Root لأن ملف APK تم اختياره من وحدة التخزين.\nحدد تطبيقًا مثبتًا أو اختر التثبيت كـ Non-Root.",
"noExit": "المثبت لا يزال قيد التشغيل، لا يمكن الخروج..."
},
"settingsView": {
"widgetTitle": "الإعدادات",
"appearanceSectionTitle": "المظهر",
"teamSectionTitle": "الفريق",
"infoSectionTitle": "معلومات",
"advancedSectionTitle": "إعدادات متقدمة",
"logsSectionTitle": "السجلات",
"darkThemeLabel": "الوضع الداكن",
"darkThemeHint": "أهلا وسهلا بك إلى الجانب الداكن",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "استمتع بتجربة أقرب إلى جهازك",
"languageLabel": "اللغة",
"englishOption": "الإنجليزية",
"sourcesLabel": "المصادر",
"sourcesLabelHint": "تكوين مصادرك المخصصة",
"orgPatchesLabel": "تنظيم التعديلات",
"sourcesPatchesLabel": "مصدر التعديلات",
"orgIntegrationsLabel": "تنظيم الدمج",
"sourcesIntegrationsLabel": "مصدر الـدمج",
"sourcesResetDialogTitle": "إعادة التعيين",
"sourcesResetDialogText": "هل تريد بالتأكيد إعادة تعيين المصادر المخصصة إلى قيمها الافتراضية؟",
"apiURLResetDialogText": "هل أنت متأكد من أنك تريد إعادة رابط API إلى القيم الافتراضية؟",
"contributorsLabel": "المساهمون",
"contributorsHint": "قائمة المساهمين في ReVanced",
"logsLabel": "السجلات",
"logsHint": "مشاركة سجلات المدير",
"apiURLLabel": "رابط API",
"apiURLHint": "تكوين رابط API الخاص بك",
"selectApiURL": "رابط API",
"experimentalPatchesLabel": "دعم التعديلات التجريبية",
"experimentalPatchesHint": "تمكين استخدام التعديلات غير المدعومة في أي إصدار للتطبيق",
"enabledExperimentalPatches": "تم تمكين دعم التعديلات التجريبية",
"exportSectionTitle": "استيراد و تصدير",
"aboutLabel": "عن التطبيق",
"snackbarMessage": "نُسِخ إلى الحافظة",
"sentryLabel": "تسجيل الحراسة",
"sentryHint": "إرسال سجلات مجهولة لمساعدتنا في تحسين ReVanced Manager",
"restartAppForChanges": "إعادة تشغيل التطبيق لتطبيق التغييرات",
"deleteKeystoreLabel": "حذف ملف تخزين المفاتيح",
"deleteKeystoreHint": "حذف ملف تخزين المفاتيح المستخدم للتوقيع على التطبيق",
"deletedKeystore": "تم حذف مِلَفّ تخزين المفاتيح",
"deleteTempDirLabel": "حذف الملفات المؤقتة",
"deleteTempDirHint": "حذف الملفات المؤقتة غير المستخدمة",
"deletedTempDir": "تم حذف الملفات المؤقتة",
"exportPatchesLabel": "تصدير التعديلات المحددة",
"exportPatchesHint": "تصدير التعديلات المحددة إلى مِلَفّ JSON",
"exportedPatches": "تم تصدير التعديلات المحددة",
"noExportFileFound": "لا يوجد تعديلات محددة للتصدير",
"importPatchesLabel": "استيراد التعديلات المحددة",
"importPatchesHint": "استيراد التعديلات المحددة من مِلَفّ JSON",
"importedPatches": "تم استيراد التعديلات المحددة",
"resetStoredPatchesLabel": "إعادة تعيين التعديلات",
"resetStoredPatchesHint": "إعادة تعيين التعديلات المحددة المخزنة",
"resetStoredPatches": "تم إعادة تعيين التعديلات المحددة",
"jsonSelectorErrorMessage": "تعذر استخدام مِلَفّ JSON المحدد",
"deleteLogsLabel": "حذف السجلات",
"deleteLogsHint": "حذف سجلات المدير التي تم جمعها",
"deletedLogs": "تم حذف السجلات"
},
"appInfoView": {
"widgetTitle": "معلومات التطبيق",
"openButton": "فتح",
"uninstallButton": "إلغاء التثبيت",
"patchButton": "تعديل",
"unpatchButton": "إلغاء التعديل",
"unpatchDialogText": "هل أنت متأكد من إلغاء تعديل هذا التطبيق؟",
"rootDialogTitle": "خطأ",
"rootDialogText": "تم تثبيت التطبيق بأذونات المستخدم المتميز، لكن ReVanced Manager ليس لديه أذونات حاليًا.\nالرجاء منح أذونات المستخدم المتميز أولاً.",
"packageNameLabel": "اسم الحُزْمَة",
"originalPackageNameLabel": "اسم الحُزْمَة الأصلية",
"installTypeLabel": "نوع التثبيت",
"rootTypeLabel": "Root",
"nonRootTypeLabel": "بدون Root",
"patchedDateLabel": "تاريخ التعديل",
"patchedDateHint": "{date} في {time}",
"appliedPatchesLabel": "التعديلات المطبقة",
"appliedPatchesHint": "{quantity} تعديلات مطبقة",
"updateNotImplemented": "لم يتم تنفيذ هذه الميزة بعد"
},
"contributorsView": {
"widgetTitle": "المساهمون",
"patcherContributors": "المساهمون المُعَدِّلون",
"patchesContributors": "المساهمون في التعديلات",
"integrationsContributors": "المساهمون في الدمج",
"cliContributors": "المساهمون في CLI",
"managerContributors": "المساهمون في Manager"
}
}

88
assets/i18n/as_IN.i18n.json Executable file
View File

@ -0,0 +1,88 @@
{
"okButton": "বাৰু",
"cancelButton": "বাতিল কৰক",
"dismissButton": "খাৰিজ কৰক",
"quitButton": "বন্ধ কৰক",
"updateButton": "আপডে’ট কৰক",
"suggested": "পৰামৰ্শমূলক: ${version}",
"yesButton": "হয়",
"noButton": "নহয়",
"warning": "সকীয়নি",
"notice": "জাননী",
"noShowAgain": "এইটো আকৌ নেদেখুৱাব",
"add": "যোগ কৰক",
"remove": "আঁতৰাওক",
"showChangelogButton": "সলনি-পঞ্জী দেখুৱাওক",
"showUpdateButton": "আপডে’ট দেখুৱাওক",
"navigationView": {
"dashboardTab": "ডেশ্বব’ৰ্ড",
"patcherTab": "পেট্‌চাৰ",
"settingsTab": "ছেটিংছ"
},
"homeView": {
"refreshSuccess": "সফলতাৰে সতেজ কৰা হ’ল",
"widgetTitle": "ডেশ্বব’ৰ্ড",
"updatesSubtitle": "আপডে’টবোৰ",
"lastPatchedAppSubtitle": "অন্তিমবাৰ পেট্‌চ কৰা এপ",
"patchedSubtitle": "ইনষ্টল কৰা এপবোৰ",
"changeLaterSubtitle": "আপুনি এইটো পাছত ছেটিংছত সলনি কৰিব পাৰিব।",
"noSavedAppFound": "কোনো এপ পোৱা নগ’ল",
"noInstallations": "পেট্‌চ কৰা কোনো এপ ইনষ্টল কৰা নাই",
"installUpdate": "আপডে’ট ইনষ্টল কৰা অব্যাহত ৰাখিবনে?",
"updateSheetTitle": "ReVanced Manager আপডে’ট কৰক",
"updateDialogTitle": "নতুন আপডে’ট উপলব্ধ",
"updatePatchesSheetTitle": "ReVanced পেট্‌চবোৰ আপডে’ট কৰক",
"updateChangelogTitle": "সলনি-পঞ্জী",
"updateDialogText": "${file}-ৰ এটা নতুন আপডে’ট উপলব্ধ।\n\nবৰ্তমানে ইনষ্টল কৰা সংস্কৰণটো হৈছে ${version}।",
"downloadConsentDialogTitle": "প্ৰয়োজনীয় ফাইলবোৰ ডাউনল’ড কৰিবনে?"
},
"patchOptionsView": {
"saveOptions": "ছে’ভ কৰক",
"unselectPatch": "পেট্‌চ বাছনি-মুক্ত কৰক",
"tooltip": "অধিক ইনপুটৰ বিকল্প",
"selectFilePath": "ফাইলৰ পথ বাছনি কৰক",
"selectFolder": "ফ’ল্ডাৰ বাছনি কৰক"
},
"settingsView": {
"themeModeLabel": "এপৰ থীম",
"systemThemeLabel": "ছিষ্টেমৰ",
"lightThemeLabel": "পাতল",
"darkThemeLabel": "গাঢ়",
"dynamicThemeLabel": "মেটেৰিয়েল ইউ",
"languageLabel": "ভাষা",
"languageUpdated": "ভাষা আপডে’ট কৰা হ’ল"
},
"appInfoView": {
"removeAppDialogTitle": "এপ মচিবনে?",
"removeAppDialogText": "আপুনি এই বেকআপ মচি পেলাব বিচৰাটো নিশ্চিতনে?",
"packageNameLabel": "পেকেজৰ নাম",
"installTypeLabel": "ইনষ্টলেশ্যনৰ প্ৰকাৰ",
"mountTypeLabel": "মাউণ্ট",
"regularTypeLabel": "সাধাৰণ",
"patchedDateLabel": "পেট্‌চ কৰা তাৰিখ",
"appliedPatchesLabel": "প্ৰয়োগ কৰা পেট্‌চবোৰ",
"sizeLabel": "ফাইলৰ আকাৰ",
"patchedDateHint": "${date}ৰ ${time} বজাত",
"appliedPatchesHint": "${quantity}টা প্ৰয়োগ কৰা পেট্‌চ",
"updateNotImplemented": "এই সুবিধা এতিয়ালৈকে প্ৰণয়ন কৰা হোৱা নাই"
},
"contributorsView": {
"widgetTitle": "অৱদানকাৰীসকল"
},
"installErrorDialog": {
"mount_version_mismatch": "সংস্কৰণৰ অমিল",
"mount_no_root": "ৰুট এক্সেছ নাই",
"mount_missing_installation": "ইনষ্টলেশ্যন পোৱা নগ’ল",
"status_failure_blocked": "ইনষ্টলেশ্যন অৱৰুদ্ধ",
"install_failed_verification_failure": "ভেৰিফিকেশ্যন বিফল",
"install_failed_version_downgrade": "ডাউনগ্ৰে’ড কৰিব নোৱাৰি",
"status_failure_conflict": "ইনষ্টলেশ্যনৰ সংঘাত",
"status_failure_storage": "ইনষ্টলেশ্যন ষ্ট’ৰেজৰ সমস্যা",
"status_failure_incompatible": "ইনষ্টলেশ্যন নিমিলে",
"status_failure_timeout": "ইনষ্টলেশ্যনৰ সময় উকলিল",
"status_unknown": "ইনষ্টলেশ্যন বিফল",
"status_failure_conflict_description": "এপটোৰ এটা মজুত থকা ইনষ্টলেশ্যনৰ ফলত ইনষ্টলেশ্যনত বাধা আহিছিল।\n\n ইনষ্টল কৰা এপটো আনইনষ্টল কৰি পুনৰ চেষ্টা কৰিবনে?",
"status_failure_blocked_description": "ইনষ্টলেশ্যনটো ${packageName}-ৰ দ্বাৰা অৱৰোধ কৰা হৈছে।\n\nআপোনাৰ সুৰক্ষা-সম্বন্ধীয় ছেটিংছ মিলাই লৈ পুনৰ চেষ্টা কৰক।",
"install_failed_verification_failure_description": "ভেৰিফিকেশ্যন-সম্বন্ধীয় সমস্যা এটাৰ কাৰণে ইনষ্টলেশ্যন বিফল হ’ল।\n\nআপোনাৰ সুৰক্ষা-সম্বন্ধীয় ছেটিংছ মিলাই লৈ পুনৰ চেষ্টা কৰক।"
}
}

298
assets/i18n/az_AZ.i18n.json Executable file
View File

@ -0,0 +1,298 @@
{
"okButton": "Oldu",
"cancelButton": "Ləğv et",
"dismissButton": "İmtina et",
"quitButton": ıxış",
"updateButton": "Yenilə",
"suggested": "Təklif edilən: ${version}",
"yesButton": "Bəli",
"noButton": "Xeyr",
"warning": "Xәbәrdarlıq",
"notice": "Bildiriş",
"noShowAgain": "Bunu təkrar göstərmə",
"add": "Əlavə et",
"remove": "Təmizlə",
"showChangelogButton": "Dəyişiklik jurnalını göstər",
"showUpdateButton": "Yeniləməni göstər",
"navigationView": {
"dashboardTab": "İdarəetmə lövhəsi",
"patcherTab": "Yamaqlayıcı",
"settingsTab": "Tənzimləmələr"
},
"homeView": {
"refreshSuccess": "Uğurla yeniləndi",
"widgetTitle": "İdarəetmə lövhəsi",
"updatesSubtitle": "Yeniləmələr",
"lastPatchedAppSubtitle": "Son yamaqlanan tətbiq",
"patchedSubtitle": "Quraşdırılan tətbiqlər",
"changeLaterSubtitle": "Bunu sonra tənzimləmələrdə dəyişə bilərsiniz.",
"noSavedAppFound": "Tətbiq tapılmadı",
"noInstallations": "Yamaqlanan tətbiq quraşdırılmayıb",
"installUpdate": "Yeniləməni quraşdırmağa davam edilsin?",
"updateSheetTitle": "ReVanced Manager-ni Yenilə",
"updateDialogTitle": "Təzə yeniləmə mövcuddur",
"updatePatchesSheetTitle": "ReVanced Patches-i Yenilə",
"updateChangelogTitle": "Dəyişiklik jurnalı",
"updateDialogText": "${file} üçün təzə yenilənmə var.\n\nCari quraşdırılan versiya: ${version}.",
"downloadConsentDialogTitle": "Zəruri fayllar yüklənilsin?",
"downloadConsentDialogText": "\"ReVanced Manager\" düzgün işləməsi üçün zəruri faylları yükləməlidir.",
"downloadConsentDialogText2": "Bu, sizlə ${url} arası əlaqə yaradacaq.",
"downloadingMessage": "Yenilənmə yüklənilir...",
"downloadedMessage": "Yenilənmə yüklənildi",
"installingMessage": "Yenilənmə quraşdırılır...",
"errorDownloadMessage": "Yeniləmə yüklənilə bilmir",
"errorInstallMessage": "Yenilənmə qurulmur",
"noConnection": "İnternet bağlantısı yoxdur"
},
"applicationItem": {
"infoButton": "Məlumat"
},
"latestCommitCard": {
"loadingLabel": "Yüklənilir...",
"timeagoLabel": "${time} əvvəl"
},
"patcherView": {
"widgetTitle": "Yamaqlayıcı",
"patchButton": "Yamaqla",
"incompatibleArchWarningDialogText": "Bu quruluşda yamaqlama hələ dəstəklənmir və uğursuz ola bilər. Yenə də davam edilsin?",
"removedPatchesWarningDialogText": "Bu tətbiqi yamaqladığınız son müddətdən bəri silinən yamaqlar:\n\n${patches}\n\n${newPatches}Yenə də davam edilsin?",
"addedPatchesDialogText": "Bu tətbiqi yamaqladığınız son müddətdən bəri əlavə edilən yamaqlar:\n\n${addedPatches}",
"requiredOptionDialogText": "Bəzi yamaq seçimləri tənzimlənməlidir."
},
"appSelectorCard": {
"widgetTitle": "Tətbiq seçin",
"widgetTitleSelected": "Seçilən tətbiq",
"widgetSubtitle": "Tətbiq seçilməyib",
"noAppsLabel": "Tətbiq tapılmadı",
"anyVersion": "İstənilən versiya"
},
"patchSelectorCard": {
"widgetTitle": "Yamaqları seçin",
"widgetTitleSelected": "Seçilən yamaqlar",
"widgetSubtitle": "Əvvəlcə bir tətbiq seçin",
"widgetEmptySubtitle": "Yamaq seçilməyib"
},
"socialMediaCard": {
"widgetTitle": "Sosial şəbəkə",
"widgetSubtitle": "Əlaqədəyik!"
},
"appSelectorView": {
"viewTitle": "Tətbiq seçin",
"searchBarHint": "Tətbiq axtar",
"storageButton": "Yaddaş",
"selectFromStorageButton": "Yaddaşdan seçin",
"errorMessage": "Seçilmiş tətbiq istifadəyə yararsızdır",
"downloadToast": "Yükləmə funksiyası hələ əlçatan deyil",
"requireSuggestedAppVersionDialogText": "Seçdiyiniz tətbiq versiyası təklif edilən versiyaya uyuşmur, gözlənilməz problemlərə yol aça bilər. Lütfən, təklif edilən versiyanı istifadə edin.\n\nSeçilən versiya: v${selected}\nTəklif edilən versiya: v${suggested}\n\nYenə də davam etmək üçün, seçimlərdə \"Təklif edilən versiyanı tələb et\"i qapada bilərsiniz.",
"featureNotAvailable": "Xüsusiyyət quraşdırılmadı",
"featureNotAvailableText": "Bu tətbiq bölünmüş APK-dır və yalnız root icazələri ilə montajlanıb yamaqlana və quraşdırıla bilər. Ancaq, yaddaşdan tam APK-nı seçərək yamaqlaya və quraşdıra bilərsiniz."
},
"patchesSelectorView": {
"viewTitle": "Yamaqları seçin",
"searchBarHint": "Yamaqları axtarın",
"universalPatches": "Ümumi yamaqlar",
"newPatches": "Yeni yamaqlar",
"patches": "Yamaqlar",
"doneButton": "Bitdi",
"defaultChip": "İlkin",
"defaultTooltip": "Bütün ilkin yamaqları seç",
"noneChip": "Heç nə",
"noneTooltip": "Bütün yamaqlar seçimini sil",
"loadPatchesSelection": "Yamaq seçimini yüklə",
"noSavedPatches": "Seçilən tətbiq üçün saxlanılan yamaq seçimi yoxdur.\nCari seçimi saxlamaq üçün \"Bitdi\"ə toxunun.",
"noPatchesFound": "Seçilmiş tətbiq üçün yamaqlar tapılmadı",
"setRequiredOption": "Bəzi yamaqlar seçimlərin tənzimlənməsin tələb edir:\n\n${patches}\n\nLütfən davam etməzdən əvvəl onları tənzimləyin."
},
"patchOptionsView": {
"customValue": "Xüsusi dəyər",
"setToNull": "Boş olaraq təsdiqlə",
"nullValue": "Bu seçim dəyəri hazırda boşdur",
"viewTitle": "Yamaq seçimləri",
"saveOptions": "Saxla",
"unselectPatch": "Yamağı seçmə",
"tooltip": "Daha çox giriş seçimləri",
"selectFilePath": "Fayl yolunu seç",
"selectFolder": "Qovluq seç",
"requiredOption": "Bu seçimi tənzimləmək tələb olunur",
"unsupportedOption": "Bu seçim dəstəklənmir",
"requiredOptionNull": "Aşağıdakı seçimlər tənzimlənməlidir:\n\n${options}"
},
"patchItem": {
"unsupportedDialogText": "Bu yamağı seçmək, yamaqlanma xətalarına səbəb ola bilər.\n\nTətbiq versiyası: ${packageVersion} \nDəstəklənən versiyalar:\n${supportedVersions}",
"unsupportedPatchVersion": "Yamaq, bu tətbiq versiyası üçün dəstəklənmir.",
"unsupportedRequiredOption": "Bu yamaq, bu tətbiq vasitəsilə dəstəklənməyən, tələb edilən seçim saxlayır",
"patchesChangeWarningDialogText": "İlkin yamaq seçimi və seçimlərin istifadəsi tövsiyə olunur. Onları dəyişdirmə gözlənilməz problemlərlə nəticələnə bilər.\n\nİstənilən yamaq seçimini dəyişdirməzdən əvvəl seçimlərdə \"Yamaq seçimini dəyişdirməyə icazə ver\"i aktiv etməlisiniz.",
"patchesChangeWarningDialogButton": "İlkin seçimi istifadə et"
},
"installerView": {
"installType": "Quraşdırma növünü seçin",
"installTypeDescription": "Davam etmək üçün quraşdırma növünü seç.",
"installButton": "Quraşdır",
"installRootType": "Montajla",
"installNonRootType": "Müntəzəm",
"warning": "Gözlənilməz problemlərin qarşısını almaq üçün yamaqlanmış tətbiq üçün avto-yeniləmələri qapat.",
"pressBackAgain": "Ləğv etmək üçün təkrar geri bas",
"openButton": "Aç",
"notificationTitle": "ReVanced Manager yamaqlayır",
"notificationText": "Quraşdırıcıya dönmək üçün toxun",
"exportApkButtonTooltip": "Yamaqlı APK-nı ixrac et",
"exportLogButtonTooltip": "Jurnalı ixrac et",
"screenshotDetected": "Ekran görüntüsü aşkarlandı. Jurnalı paylaşmağa çalışırsınızsa, əvəzində mətn nüsxəsini paylaşın. \n\nJurnal buferə köçürülsün?",
"copiedToClipboard": "Jurnal buferə köçürüldü",
"noExit": "Quraşdırıcı hələ də işləyir, çıxmaq olmaz..."
},
"settingsView": {
"widgetTitle": "Tənzimləmələr",
"appearanceSectionTitle": "Görünüş",
"teamSectionTitle": "Komanda",
"debugSectionTitle": "Sazlama",
"advancedSectionTitle": "Qabaqcıl",
"exportSectionTitle": "İdxal & ixrac et",
"dataSectionTitle": "Məlumat mənbələri",
"themeModeLabel": "Tətbiq tonu",
"systemThemeLabel": "Sistem",
"lightThemeLabel": "İşıqlı",
"darkThemeLabel": "Qaranlıq",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Cihazınıza yaxın təcrübədən zövq alın",
"languageLabel": "Dil",
"languageUpdated": "Dil yeniləndi",
"sourcesLabel": "Seçmə mənbələr",
"sourcesLabelHint": "ReVanced Patches üçün seçmə mənbələri quraşdır",
"useAlternativeSources": "Seçmə mənbələri istifadə et",
"useAlternativeSourcesHint": "API əvəzinə ReVanced Patches üçün seçmə mənbələr istifadə et",
"sourcesResetDialogTitle": "Sıfırla",
"sourcesResetDialogText": "Mənbələrinizi ilkin dəyərlərinə sıfırlamaq istədiyinizə əminsiniz?",
"apiURLResetDialogText": "API URL-nizi ilkin dəyərinə sıfırlamaq istədiyinizə əminsiz?",
"sourcesUpdateNote": "Qeyd: Bu, ReVanced Yamaqlarını birbaşa seçmə mənbələrdən yükləyəcək.\n\nBu sizi alternativ mənbəyə bağlayacaq.",
"apiURLLabel": "API URL",
"apiURLHint": "ReVanced Manager-in API URL-sini Qurun",
"selectApiURL": "API URL",
"orgPatchesLabel": "Yamaq qurucu",
"sourcesPatchesLabel": "Yamaqların mənbəyi",
"contributorsLabel": "Töhfə verənlər",
"contributorsHint": "ReVanced-ə töhfə verənlərin siyahısı",
"logsLabel": "Jurnalları paylaş",
"logsHint": "ReVanced Manager jurnallarını paylaş",
"enablePatchesSelectionLabel": "Yamaq seçimini dəyişdirməyə icazə ver",
"enablePatchesSelectionHint": "Yamaqların seçilməsi və ya seçimin ləğv edilməsinə mane olunmasın",
"enablePatchesSelectionWarningText": "Yamaq seçimini dəyişdirmək gözlənilməz problemlərə səbəb ola bilər.\n\nYenə də aktivləşdirilsin?",
"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ə",
"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",
"universalPatchesHint": "Bütün tətbiqləri və ümumi yamaqları göstər (tətbiq siyahıyaalma yavaşlaya bilər)",
"lastPatchedAppLabel": "Yamaqlanmış tətbiqi saxla",
"lastPatchedAppHint": "Daha sonra quraşdırmaq və ya ixrac etmək üçün son yamağı saxla",
"versionCompatibilityCheckLabel": "Versiya uyğunluq yoxlanışı",
"versionCompatibilityCheckHint": "Seçilən tətbiq versiyası ilə uyuşmayan yamaqları seçməyə mane ol",
"requireSuggestedAppVersionLabel": "Təklif edilən tətbiq versiyasın tələb et",
"requireSuggestedAppVersionHint": "Təklif edilməyən versiya ilə tətbiq seçilməsini əngəllə",
"requireSuggestedAppVersionDialogText": "Təklif edilən versiya deyilsə, tətbiq seçilməsi gözlənilməz problemlərə səbəb olur.\n\nYenə də davam etmək istəyirsiniz?",
"aboutLabel": "Haqqında",
"snackbarMessage": "Buferə köçürüldü",
"restartAppForChanges": "Dəyişiklikləri işlətmək üçün tətbiqi yenidən başlat",
"deleteTempDirLabel": "Müvəqqəti faylları sil",
"deleteTempDirHint": "Yararsız, müvəqqəti faylları sil",
"deletedTempDir": "Müvəqqəti fayllar silindi",
"exportSettingsLabel": "Tənzimləmələri köçür",
"exportSettingsHint": "Tənzimləmələri JSON faylına köçür",
"exportedSettings": "Tənzimləmələr ixrac edildi",
"importSettingsLabel": "Tənzimləmələri idxal et",
"importSettingsHint": "Tənzimləmələri JSON faylından idxal et",
"importedSettings": "Tənzimləmələr idxal edildi",
"exportPatchesLabel": "Yamaq seçimini ixrac et",
"exportPatchesHint": "Yamaq seçimini JSON faylına köçür",
"exportedPatches": "Yamaq seçimi ixrac edildi",
"noExportFileFound": "İxrac ediləcək yamaq seçimi yoxdur",
"importPatchesLabel": "Yamaq seçimini idxal et",
"importPatchesHint": "Yamaq seçimini JSON faylından əldə et",
"importedPatches": "Yamaq seçimi idxal edildi",
"resetStoredPatchesLabel": "Yamaq seçimini sıfırla",
"resetStoredPatchesHint": "Saxlanılmış yamaq seçimini sıfırla",
"resetStoredPatchesDialogTitle": "Yamaq seçimi sıfırlansın?",
"resetStoredPatchesDialogText": "İlkin yamaq seçimi bərpa olunacaq.",
"resetStoredPatches": "Yamaq seçimi sıfırlandı",
"resetStoredOptionsLabel": "Yamaq seçimlərini sıfırla",
"resetStoredOptionsHint": "Bütün yamaq seçimlərini sıfırla",
"resetStoredOptionsDialogTitle": "Yamaq seçimləri sıfırlansın?",
"resetStoredOptionsDialogText": "Yamaq seçimlərin sıfırlama, bütün saxlanılmış seçimləri siləcək.",
"resetStoredOptions": "Seçimlər sıfırlandı",
"deleteLogsLabel": "Jurnalları təmizlə",
"deleteLogsHint": "Toplanmış ReVanced Manager jurnallarını sil",
"deletedLogs": "Jurnallar silindi",
"regenerateKeystoreLabel": "Keystore-u yenidən yarat",
"regenerateKeystoreHint": "Tətbiqləri imzalamaq üçün istifadə edilən keystoru-u yenidən yarat",
"regenerateKeystoreDialogTitle": "Keystore yenidən yaradılsın?",
"regenerateKeystoreDialogText": "Köhnə keystore ilə imzalı yamaqlanan tətbiqlər artıq yenilənə bilməyəcək.",
"regeneratedKeystore": "Keystore yenidən yaradıldı",
"exportKeystoreLabel": "Keystore-u ixrac et",
"exportKeystoreHint": "Tətbiqləri imzalamaq üçün istifadə olunan keystore-u ixrac et",
"exportedKeystore": "Keystore ixrac edildi",
"noKeystoreExportFileFound": "İxrac edilməli keystore yoxdur",
"importKeystoreLabel": "Keystore-u idxal et",
"importKeystoreHint": "Tətbiqləri imzalamaq üçün istifadə olunan keystore-u idxal et",
"importedKeystore": "Keystore idxal edildi",
"selectKeystorePassword": "Keystore parolu",
"selectKeystorePasswordHint": "Tətbiqləri imzalamaq üçün istifadə olunan keystore parolu seç",
"jsonSelectorErrorMessage": "Seçilmiş JSON faylı istifadə edilə bilmir",
"keystoreSelectorErrorMessage": "Seçilmiş keystore faylı istifadə edilə bilmir"
},
"appInfoView": {
"widgetTitle": "Tətbiq məlumatı",
"openButton": "Aç",
"installButton": "Quraşdır",
"uninstallButton": "Sil",
"unmountButton": "Ayırın",
"exportButton": "İxrac et",
"deleteButton": "Sil",
"rootDialogTitle": "Xəta",
"lastPatchedAppDescription": "Bu, son yamaqlanmış tətbiqin nüsxəsidir.",
"unmountDialogText": "Bu tətbiqi ayırmaq istədiyinizə əminsiniz?",
"uninstallDialogText": "Bu tətbiqi silmək istədiyinizə əminsiniz?",
"rootDialogText": "Tətbiq, superuser icazələri ilə quraşdırıldı, ancaq hazırda ReVanced Manager-in heç bir icazəsi yoxdur.\nLütfən əvvəlcə superuser icazələrini qəbul edin.",
"removeAppDialogTitle": "Tətbiq silinsin?",
"removeAppDialogText": "Bu nüsxəni silmək istədiyinizə əminsiniz?",
"packageNameLabel": "Paket adı",
"installTypeLabel": "Quraşdırma növü",
"mountTypeLabel": "Montajla",
"regularTypeLabel": "Müntəzəm",
"patchedDateLabel": "Yamaqlanma vaxtı",
"appliedPatchesLabel": "Tətbiq edilmiş yamaqlar",
"sizeLabel": "Fayl həcmi",
"patchedDateHint": "${time} ${date}",
"appliedPatchesHint": "${quantity} tətbiq edilmiş yamaq",
"updateNotImplemented": "Bu funksiya hələ hazır deyil"
},
"contributorsView": {
"widgetTitle": "Töhfəçilər"
},
"installErrorDialog": {
"mount_version_mismatch": "Versiya uyğunsuzluğu",
"mount_no_root": "Root girişi yoxdur",
"mount_missing_installation": "Quraşdırma tapılmadı",
"status_failure_blocked": "Quraşdırma əngəlləndi",
"install_failed_verification_failure": "Təsdiqləmə uğursuz oldu",
"status_failure_invalid": "Quraşdırma etibarsızdır",
"install_failed_version_downgrade": "Versiya endirmə alınmır",
"status_failure_conflict": "Quraşdırma ziddiyyəti",
"status_failure_storage": "Quraşdırma yaddaş sahəsi problemi",
"status_failure_incompatible": "Quraşdırma uyğun deyil",
"status_failure_timeout": "Quraşdırma vaxtı bitdi",
"status_unknown": "Quraşdırma uğursuz oldu",
"mount_version_mismatch_description": "Quraşdırılmış tətbiq, yamaqlanmış tətbiqdən fərqli versiyada olduğu üçün quraşdırma uğursuz oldu.\n\nMontajlı tətbiq versiyasını quraşdırıb təkrar sınayın.",
"mount_no_root_description": "Root girişinə icazə verilmədiyi üçün quraşdırma uğursuz oldu.\n\n\"ReVanced Manager\"ə root girişi icazəsini verin və yenidən sınayın.",
"mount_missing_installation_description": "Montajlanmalı yamaqlanmayan tətbiq bu cihazda quraşdırılmadığı üçün quraşdırma uğursuz oldu.\n\nMontajlamadan əvvəl yamaqlanmamış tətbiqi quraşdırın və təkrar sınayın.",
"status_failure_timeout_description": "Quraşdırmanın bitməsi çox uzun çəkdi.\n\nYenidən cəhd etmək istəyirsiniz?",
"status_failure_storage_description": "Yetərsiz yaddaş sahəsinə görə quraşdırma uğursuz oldu.\n\nBir az yer boşaldıb yenidən sınayın.",
"status_failure_invalid_description": "Yamaqlanmış tətbiq etibarsız olduğu üçün quraşdırma uğursuz oldu.\n\nTətbiqi silib yenidən sınayırsınız?",
"status_failure_incompatible_description": "Tətbiq bu cihazla uyğun deyil.\n\nBu cihaz tərəfindən dəstəklənən APK istifadə et və təkrar cəhd et.",
"status_failure_conflict_description": "Quraşdırma tətbiqin mövcud quraşdırması sonrası əngəllənib. \n\nQuraşdırılan tətbiqi silib, təkrar cəhd edilsin?",
"status_failure_blocked_description": "${packageName} quraşdırmanı əngəllədi.\n\nTəhlükəsizlik seçimlərinizi tənzimləyib yenidən sınayın.",
"install_failed_verification_failure_description": "Təsdiqləmə probleminə görə quraşdırma uğursuz oldu.\n\nTəhlükəsizlik seçimlərinizi tənzimləyib təkrar sınayın.",
"install_failed_version_downgrade_description": "Yamaqlanan tətbiq quraşdırılan tətbiqdən daha aşağı versiyada olduğu üçün quraşdırma uğursuz oldu.\n\nTətbiqi silib təkrar cəhd edilsin?",
"status_unknown_description": "Naməlum səbəbə görə quraşdırma uğursuz oldu. Lütfən yenidən sınayın."
}
}

View File

@ -1,196 +0,0 @@
{
"okButton": "Oldu",
"cancelButton": "İmtina",
"enabledLabel": "Fəaldır",
"disabledLabel": "Sıradan çıxarıldı",
"yesButton": "Bəli",
"noButton": "Xeyr",
"warning": "Xәbәrdarlıq",
"navigationView": {
"dashboardTab": "İdarəetmə lövhəsi",
"patcherTab": "Yamaqlayıcı",
"settingsTab": "Tənzimləmələr"
},
"homeView": {
"widgetTitle": "İdarəetmə lövhəsi",
"updatesSubtitle": "Güncəlləmələr",
"patchedSubtitle": "Yamaqlanmış tətbiqlər",
"updatesAvailable": "Güncəlləmə mövcuddur",
"noUpdates": "Güncəlləmə mövcud deyil",
"WIP": "Proses davam edir...",
"noInstallations": "Yamaqlanmış tətbiq yoxdur",
"installed": "Quraşdırıldı",
"updateDialogTitle": "Güncəlləmə meneceri",
"updateDialogText": "ReVanced Meneceri endirmək və güncəlləmə istədiyinizə əminsiniz?",
"notificationTitle": "Güncəlləmə endirildi",
"notificationText": "Güncəlləməni quraşdırmaq üçün toxunun",
"downloadingMessage": "Güncəlləmə endirilir...",
"installingMessage": "Güncəlləmə quraşdırılır...",
"errorDownloadMessage": "Güncəlləmə endirilə bilmir",
"errorInstallMessage": "Güncəlləmə quraşdırıla bilmir",
"noConnection": "İnternet bağlantısı yoxdur",
"updatesDisabled": "Yamaqlanmış bir tətbiqin güncəllənməsi hazırda sıradan çıxarılıb. Tətbiqi yenidən yamaqlayın."
},
"applicationItem": {
"patchButton": "Yamaqla",
"infoButton": "Məlumat",
"changelogLabel": "Dəyişiklik jurnalı"
},
"latestCommitCard": {
"loadingLabel": "Yüklənir...",
"timeagoLabel": "{time} əvvəl",
"patcherLabel": "Yamaqlayıcı: ",
"managerLabel": "Menecer: ",
"updateButton": "Güncəlləmə meneceri"
},
"patcherView": {
"widgetTitle": "Yamaqlayıcı",
"patchButton": "Yamaqla",
"patchDialogText": "Bir resurs yamağı seçmisiniz və bölünmüş bir APK quraşdırması aşkarlandı, ona görə də yamaq prosesi zamanı xəta baş verə bilər.\nDavam etmək istədiyinizə əminsiniz?"
},
"appSelectorCard": {
"widgetTitle": "Bir tətbiq seçin",
"widgetTitleSelected": "Seçilmiş tətbiq",
"widgetSubtitle": "Heç bir tətbiq seçilməyib",
"noAppsLabel": "Heç bir tətbiq tapılmadı",
"currentVersion": "Hazırkı",
"recommendedVersion": "Tövsiyyə edilən",
"anyVersion": "istənilən"
},
"patchSelectorCard": {
"widgetTitle": "Yamaqları seçin",
"widgetTitleSelected": "Seçilmiş yamaqlar",
"widgetSubtitle": "Əvvəlcə bir tətbiq seçin",
"widgetEmptySubtitle": "Heç bir yamaq seçilməyib"
},
"socialMediaCard": {
"widgetTitle": "Sosial",
"widgetSubtitle": "Xətdəyik!"
},
"appSelectorView": {
"viewTitle": "Bir tətbiq seçin",
"searchBarHint": "Tətbiq axtarın",
"storageButton": "Anbar",
"errorMessage": "Seçilmiş tətbiq istifadə edilə bilmir"
},
"patchesSelectorView": {
"viewTitle": "Yamaqları seçin",
"searchBarHint": "Yamaqları axtarın",
"doneButton": "Hazırdır",
"recommended": "Tövsiyyə edilən",
"all": "Hamısı",
"none": "Heç biri",
"loadPatchesSelection": "Yamaq seçimini yüklə",
"noSavedPatches": "Seçilmiş tətbiq üçün saxlanılmış yamaq yoxdur\nHazırkı seçimi saxlamaq üçün \"Hazırdır\"a toxunun",
"noPatchesFound": "Seçilmiş tətbiq üçün yamaq tapılmadı",
"selectAllPatchesWarningContent": "Tövsiyə edilməyən yamaqları ehtiva edən və istənilməyən davranışlara səbəb ola biləcək bütün yamaqları seçmək üzrəsiniz."
},
"patchItem": {
"unsupportedDialogText": "Bu yamağı seçmək, yamaqlama xətalarına səbəb ola bilər.\n\nTətbiq versiyası: {packageVersion} \nDəstəklənən versiyalar:\n{supportedVersions}",
"unsupportedPatchVersion": "Yamaq, bu tətbiq versiyası üçün dəstəklənmir. Davam etmək üçün tənzimləmələrdə təcrübi keçidi fəallaşdırın."
},
"installerView": {
"widgetTitle": "Quraşdırıcı",
"installButton": "Quraşdır",
"installRootButton": "Root olaraq quraşdır",
"openButton": "Aç",
"shareButton": "Faylı paylaş",
"notificationTitle": "ReVanced Menecer yamaqlayır",
"notificationText": "Quraşdırıcıya geri qayıtmaq üçün toxunun",
"shareApkMenuOption": "APK-nı paylaş",
"exportApkMenuOption": "APK-nı xaricə köçür",
"shareLogMenuOption": "Jurnalı paylaş",
"installErrorDialogTitle": "Xəta",
"installErrorDialogText1": "Hazırkı yamaq seçimi ilə Root quraşdırması mümkün deyil.\nTətbiqi yenidən yamaqlayın və ya Root-suz quraşdırmanı seçin.",
"installErrorDialogText2": "Hazırkı yamaq seçimi ilə Root-suz quraşdırma mümkün deyil.\nTətbiqi yenidən yamaqlayın və ya cihazınız Root-ludursa, Root quraşdırmasını seçin.",
"installErrorDialogText3": "Orijinal APK, anbardan seçildiyi üçün Root quraşdırması mümkün deyil.\nQuraşdırılmış bir tətbiq seçin və ya Root-suz quraşdırmanı seçin.",
"noExit": "Quraşdırıcı hələ də işləyir, çıxış edilə bilməz..."
},
"settingsView": {
"widgetTitle": "Tənzimləmələr",
"appearanceSectionTitle": "Görünüş",
"teamSectionTitle": "Komanda",
"infoSectionTitle": "Məlumat",
"advancedSectionTitle": "Qabaqcıl",
"logsSectionTitle": "Jurnallar",
"darkThemeLabel": "Qaranlıq rejim",
"darkThemeHint": "Qaranlıq tərəfə xoş gəldiniz",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Cihazınıza yaxın bir təcrübədən həzz alın",
"languageLabel": "Dil",
"englishOption": "İngiliscə",
"sourcesLabel": "Mənbələr",
"sourcesLabelHint": "Özəl mənbələrinizi konfiqurasiya edin",
"orgPatchesLabel": "Yamaq təşkilatı",
"sourcesPatchesLabel": "Yamaq mənbəyi",
"orgIntegrationsLabel": "İnteqrasiya təşkilatı",
"sourcesIntegrationsLabel": "İnteqrasiya mənbəyi",
"sourcesResetDialogTitle": "Sıfırla",
"sourcesResetDialogText": "Özəl mənbələri ilkin dəyərlərinə sıfırlamaq istədiyinizə əminsiniz?",
"apiURLResetDialogText": "API URL-ni ilkin dəyərinə sıfırlamaq istədiyinizə əminsiz?",
"contributorsLabel": "Töhfə verənlər",
"contributorsHint": "ReVanced-ə töhfə verənlərin siyahısı",
"logsLabel": "Jurnallar",
"logsHint": "Menecerin jurnallarını paylaş",
"apiURLLabel": "API URL",
"apiURLHint": "Özəl API URL-lərinizi konfiqurasiya edin",
"selectApiURL": "API URL",
"experimentalPatchesLabel": "Təcrübi yamaq dəstəyi",
"experimentalPatchesHint": "İstənilən bir tətbiq versiyasında dəstəklənməyən yamaqların istifadəsini fəallaşdır",
"enabledExperimentalPatches": "Təcrübi yamaq dəstəyi fəaldır",
"exportSectionTitle": "Daxilə və xaricə köçür",
"aboutLabel": "Haqqında",
"snackbarMessage": "Lövhəyə kopyalandı",
"sentryLabel": "Keşikçi jurnalı",
"sentryHint": "ReVanced Manager-i inkişaf etdirməyimizə kömək etməsi üçün anonim jurnallar göndərin",
"restartAppForChanges": "Dəyişiklikləri tətbiq etmək üçün tətbiqi yenidən başlat",
"deleteKeystoreLabel": "Keystore-u sil",
"deleteKeystoreHint": "Tətbiqi imzalamaq üçün istifadə edilən keystoru-u sil",
"deletedKeystore": "Keystore silindi",
"deleteTempDirLabel": "Müvəqqəti faylları sil",
"deleteTempDirHint": "İstifadə edilməyən müvəqqəti faylları sil",
"deletedTempDir": "Müvəqqəti fayllar silindi",
"exportPatchesLabel": "Yamaq seçimini xaricə köçür",
"exportPatchesHint": "Yamaq seçimini JSON faylına köçür",
"exportedPatches": "Yamaq seçimi xaricə köçürüldü",
"noExportFileFound": "Xaricə köçürüləcək yamaq seçimi yoxdur",
"importPatchesLabel": "Yamaq seçimini daxilə köçür",
"importPatchesHint": "Yamaq seçimini JSON faylından köçür",
"importedPatches": "Yamaq seçimi daxilə köçürüldü",
"resetStoredPatchesLabel": "Yamaqları sıfırla",
"resetStoredPatchesHint": "Saxlanılmış yamaq seçimini sıfırla",
"resetStoredPatches": "Yamaq seçimi sıfırlandı",
"jsonSelectorErrorMessage": "Seçilmiş JSON faylı istifadə edilə bilmir",
"deleteLogsLabel": "Jurnalları sil",
"deleteLogsHint": "Yığılmış menecer jurnallarını sil",
"deletedLogs": "Jurnallar silindi"
},
"appInfoView": {
"widgetTitle": "Tətbiq məlumatı",
"openButton": "Aç",
"uninstallButton": "Sil",
"patchButton": "Yamaqla",
"unpatchButton": "Yamağı götür",
"unpatchDialogText": "Yamağı götürmək istədiyinizə əminsiniz?",
"rootDialogTitle": "Xəta",
"rootDialogText": "Tətbiq, superuser icazələri ilə quraşdırıldı, ancaq hazırda ReVanced Manager-in heç bir icazəsi yoxdur.\nZəhmət olmasa əvvəlcə superuser icazələrini verin.",
"packageNameLabel": "Paket adı",
"originalPackageNameLabel": "Orijinal paket adı",
"installTypeLabel": "Quraşdırma növü",
"rootTypeLabel": "Root",
"nonRootTypeLabel": "Root-suz",
"patchedDateLabel": "Yamaqlama tarixi",
"patchedDateHint": "{time} {date}",
"appliedPatchesLabel": "Tətbiq edilmiş yamaqlar",
"appliedPatchesHint": "{quantity} tətbiq edilmiş yamaq",
"updateNotImplemented": "Bu özəllik hələ tətbiq olunmayıb"
},
"contributorsView": {
"widgetTitle": "Töhfə verənlər",
"patcherContributors": "Yamaqlama üzrə töhfə verənlər",
"patchesContributors": "Yamaqlara töhfə verənlər",
"integrationsContributors": "İnteqrasiyalara töhfə verənlər",
"cliContributors": "CLI-yə töhfə verənlər",
"managerContributors": "Manager-ə töhfə verənlər"
}
}

298
assets/i18n/be_BY.i18n.json Executable file
View File

@ -0,0 +1,298 @@
{
"okButton": "ОК",
"cancelButton": "Скасаваць",
"dismissButton": "Адхіліць",
"quitButton": "Выйсці",
"updateButton": "Абнавіць",
"suggested": "Прапанавана: ${version}",
"yesButton": "Так",
"noButton": "Не",
"warning": "Увага",
"notice": "Заўвага",
"noShowAgain": "Больш не паказваць",
"add": "Дадаць",
"remove": "Выдаліць",
"showChangelogButton": "Паказаць журнал змяненняў",
"showUpdateButton": "Паказаць абнаўленне",
"navigationView": {
"dashboardTab": "Галоўная",
"patcherTab": "Праграма выпраўлення",
"settingsTab": "Налады"
},
"homeView": {
"refreshSuccess": "Паспяхова абноўлена",
"widgetTitle": "Галоўная",
"updatesSubtitle": "Абнаўленні",
"lastPatchedAppSubtitle": "Апошняя абноўленая праграма",
"patchedSubtitle": "Устаноўленыя праграмы",
"changeLaterSubtitle": "Вы можаце змяніць гэта ў наладах пазней.",
"noSavedAppFound": "Праграма не знойдзена",
"noInstallations": "Няма ўсталяваных праграм з выпраўленнямі",
"installUpdate": "Працягнуць усталяванне абнаўлення?",
"updateSheetTitle": "Абнавіць ReVanced Manager",
"updateDialogTitle": "Даступна новае абнаўленне",
"updatePatchesSheetTitle": "Абнавіць выпраўленні ReVanced",
"updateChangelogTitle": "Спіс змяненняў",
"updateDialogText": "Даступна новае абнаўленне для ${file}\n\nЦяпер усталявана версія ${version}.",
"downloadConsentDialogTitle": "Спампаваць неабходныя файлы?",
"downloadConsentDialogText": "ReVanced Manager неабходна спампаваць неабходныя файлы для правільнай працы.",
"downloadConsentDialogText2": "Гэта падключыць вас да ${url}.",
"downloadingMessage": "Спампоўваецца абнаўленне...",
"downloadedMessage": "Абнаўленне спампавана",
"installingMessage": "Усталяванне абнаўлення...",
"errorDownloadMessage": "Немагчыма спампаваць абнаўленне",
"errorInstallMessage": "Немагчыма ўсталяваць абнаўленне",
"noConnection": "Няма злучэння з інтэрнэтам"
},
"applicationItem": {
"infoButton": "Звесткі"
},
"latestCommitCard": {
"loadingLabel": "Загрузка...",
"timeagoLabel": "${time} таму"
},
"patcherView": {
"widgetTitle": "Праграма выпраўлення",
"patchButton": "Выправіць",
"incompatibleArchWarningDialogText": "Выпраўленні на гэтай архітэктуры пакуль не падтрымліваюцца і могуць не працаваць. Працягнуць?",
"removedPatchesWarningDialogText": "Выдалены патчы з моманту апошняга абнаўлення гэтага праграмы:\n\n${patches}\n\n${newPatches}Працягнуць усё роўна?",
"addedPatchesDialogText": "Дададзеныя патчы з моманту апошняга абнаўлення гэтага праграмы:\n\n${addedPatches}\n\n",
"requiredOptionDialogText": "Неабходна задаць некаторыя параметры выпраўленняў."
},
"appSelectorCard": {
"widgetTitle": "Выбраць праграму",
"widgetTitleSelected": "Выбраная праграма",
"widgetSubtitle": "Праграма не выбрана",
"noAppsLabel": "Праграмы не знойдзены",
"anyVersion": "Любая версія"
},
"patchSelectorCard": {
"widgetTitle": "Выберыце выпраўленні",
"widgetTitleSelected": "Выбраныя выпраўленні",
"widgetSubtitle": "Спачатку выберыце праграму",
"widgetEmptySubtitle": "Выпраўленні не выбраны"
},
"socialMediaCard": {
"widgetTitle": "Сацсеткі",
"widgetSubtitle": "Мы ў інтэрнэце!"
},
"appSelectorView": {
"viewTitle": "Выбраць праграму",
"searchBarHint": "Пошук праграмы",
"storageButton": "Сховішча",
"selectFromStorageButton": "Выбраць са сховішча",
"errorMessage": "Немагчыма выкарыстоўваць выбраную праграму",
"downloadToast": "Функцыя спампоўвання пакуль недаступна",
"requireSuggestedAppVersionDialogText": "Версія праграмы, якую вы выбралі не супадае з прапанаванай версіяй і гэта можа прывесці да нечаканых праблем. Скарыстайцеся прапанаванай версіяй.\n\nВыбраная версія: ${selected}\nПрапанаваная версія: ${suggested}\n\nАдключыце \"Патрабаваць прапанаваную версію праграмы\" ў наладах, каб праігнараваць гэта паведамленне.",
"featureNotAvailable": "Функцыя не рэалізавана",
"featureNotAvailableText": "Гэта праграма з'яўляецца раздзеленым файлам APK і яе можна надзейна выправіць і ўсталяваць толькі падключэннем з правамі суперкарыстальніка. Аднак вы можаце выправіць і ўсталяваць поўны файл APK выбраўшы яго са сховішча."
},
"patchesSelectorView": {
"viewTitle": "Выберыце выпраўленні",
"searchBarHint": "Пошук выпраўленняў",
"universalPatches": "Універсальныя выпраўленні",
"newPatches": "Новыя выпраўленні",
"patches": "Выпраўленні",
"doneButton": "Гатова",
"defaultChip": "Прадвызначана",
"defaultTooltip": "Выбраць усе прадвызначаныя выпраўленні",
"noneChip": "Няма",
"noneTooltip": "Зняць выбар з усіх выпраўленняў",
"loadPatchesSelection": "Загрузіць выбраныя выпраўленні",
"noSavedPatches": "Адсутнічае захаваны выбар выпраўленняў для выбранай праграмы.\nНацісніце \"Гатова\", каб захаваць бягучы выбар.",
"noPatchesFound": "Для выбранай праграмы выпраўленні не знойдзены",
"setRequiredOption": "Некаторыя выпраўленні патрабуюць зададзеных параметраў:\n\n${patches}\n\nЗадайце іх перад працягам."
},
"patchOptionsView": {
"customValue": "Уласнае значэнне",
"setToNull": "Усталюйце значэнне нуль",
"nullValue": "Зараз значэнне гэтага параметра роўна нулю",
"viewTitle": "Параметры выпраўлення",
"saveOptions": "Захаваць",
"unselectPatch": "Скасаваць выбар патча",
"tooltip": "Больш уваходных параметраў",
"selectFilePath": "Выбраць шлях да файла",
"selectFolder": "Выбраць папку",
"requiredOption": "Неабходна наладзіць гэты параметр",
"unsupportedOption": "Гэты параметр не падтрымліваецца",
"requiredOptionNull": "Наступныя параметры павінны быць зададзены:\n\n${options}"
},
"patchItem": {
"unsupportedDialogText": "Выбар гэтага выпраўлення можа прывесці да памылак падчас яго ўжывання.\n\nВерсія праграмы: ${packageVersion}\nВерсіі, якія падтрымліваюцца:\n${supportedVersions}",
"unsupportedPatchVersion": "Выпраўленне не падтрымліваецца гэтай версіяй праграмы.",
"unsupportedRequiredOption": "Гэта выпраўленне змяшчае неабходныя параметры, якія не падтрымліваюцца гэтай праграмай",
"patchesChangeWarningDialogText": "Рэкамендуецца выкарыстоўваць прадвызначаны выбар выпраўлення і параметры. Іх змяненне можа прывесці да нечаканых праблем.\n\nПерад змяненнем выбару выпраўлення, вам неабходна ўключыць параметр \"Дазволіць змяненне выбару выпраўлення\" ў наладах.",
"patchesChangeWarningDialogButton": "Выкарыстоўваць прадвызначаны выбар"
},
"installerView": {
"installType": "Выберыце тып устаноўкі",
"installTypeDescription": "Выберыце тып устаноўкі для працягу.",
"installButton": "Усталяваць",
"installRootType": "Падключыць",
"installNonRootType": "Звычайны",
"warning": "Адключыць аўтаматычныя абнаўленні для выпраўленых праграм, каб пазбегнуць нечаканых праблем.",
"pressBackAgain": "Націсніце назад яшчэ раз, каб скасаваць",
"openButton": "Адкрыць",
"notificationTitle": "ReVanced Manager працуе над выпраўленнем",
"notificationText": "Націсніце для вяртання ва ўсталёўшчык праграм",
"exportApkButtonTooltip": "Экспартаваць выпраўленыя APK",
"exportLogButtonTooltip": "Экспартаваць журнал",
"screenshotDetected": "Выяўлены здымак экрана. Калі вы хочаце абагуліць журнал, то замест гэтага адпраўце тэкставую копію\n\nСкапіраваць журнал у буфер абмену?",
"copiedToClipboard": "Журнал скапіяваны ў буфер абмену",
"noExit": "Усталёўшчык усё яшчэ працуе, нельга выйсці..."
},
"settingsView": {
"widgetTitle": "Налады",
"appearanceSectionTitle": "Знешні выгляд",
"teamSectionTitle": "Каманда",
"debugSectionTitle": "Адладка",
"advancedSectionTitle": "Дадаткова",
"exportSectionTitle": "Імпарт і экспарт",
"dataSectionTitle": "Крыніцы даных",
"themeModeLabel": "Тэма праграмы",
"systemThemeLabel": "Сістэма",
"lightThemeLabel": "Светлая",
"darkThemeLabel": "Цёмная",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Атрымлівайце асалоду ад тэмы сваёй прылады",
"languageLabel": "Мова",
"languageUpdated": "Мова абноўлена",
"sourcesLabel": "Альтэрнатыўныя крыніцы",
"sourcesLabelHint": "Наладзьце альтэрнатыўныя крыніцы для ReVanced Patches",
"useAlternativeSources": "Выкарыстоўваць альтэрнатыўныя крыніцы",
"useAlternativeSourcesHint": "Выкарыстоўвайце альтэрнатыўныя крыніцы для ReVanced Patches замест API",
"sourcesResetDialogTitle": "Скінуць",
"sourcesResetDialogText": "Вы сапраўды хочаце скінуць свае крыніцы да іх прадвызначаных значэнняў?",
"apiURLResetDialogText": "Вы сапраўды хочаце скінуць свае API URL да іх прадвызначаных значэнняў?",
"sourcesUpdateNote": "Заўвага: гэта аўтаматычна загрузіць ReVanced Patches з альтэрнатыўных крыніц.\n\nГэта падключыць вас да альтэрнатыўнай крыніцы.",
"apiURLLabel": "API URL",
"apiURLHint": "Сканфігурыруйце URL API для ReVanced Manager",
"selectApiURL": "URL-адрас API",
"orgPatchesLabel": "Арганізацыя выпраўленняў",
"sourcesPatchesLabel": "Крыніца выпраўленняў",
"contributorsLabel": "Удзельнікі",
"contributorsHint": "Спіс усіх удзельнікаў праекта ReVanced",
"logsLabel": "Абагуліць журнал",
"logsHint": "Абагуліць журнал ReVanced Manager",
"enablePatchesSelectionLabel": "Дазволіць змяненне выбару выпраўлення",
"enablePatchesSelectionHint": "Не прадухіляць выбар або скасаванне выбару выпраўленняў",
"enablePatchesSelectionWarningText": "Змяненне выбару выпраўленняў можа стаць прычынай нечаканых праблем.\n\nУключыць усё роўна?",
"disablePatchesSelectionWarningText": "Вы збіраецеся адключыць змяненне выбару выпраўленняў.\nБудзе адноўлены прадвызначаны выбар выпраўленняў.\n\nАдключыць усё роўна?",
"autoUpdatePatchesLabel": "Аўтаматычнае абнаўленне выпраўленняў",
"autoUpdatePatchesHint": "Аўтаматычна абнаўляць выпраўленні да апошняй версіі",
"showUpdateDialogLabel": "Паказваць акно абнаўлення",
"showUpdateDialogHint": "Паказваць акно, калі даступна новае абнаўленне",
"universalPatchesLabel": "Паказваць універсальныя выпраўленні",
"universalPatchesHint": "Адлюстраваць усе праграмы і ўніверсальныя выпраўленні (можа запаволіць спіс праграм)",
"lastPatchedAppLabel": "Захаваць прапатчаную праграму",
"lastPatchedAppHint": "Захавайце апошні патч, каб усталяваць або экспартаваць пазней",
"versionCompatibilityCheckLabel": "Праверка сумяшчальнасці версіі",
"versionCompatibilityCheckHint": "Прадухіляць выбар выпраўленняў, якія несумяшчальныя з выбранай версіяй праграмы",
"requireSuggestedAppVersionLabel": "Запыт прапанаванай версіі праграмы",
"requireSuggestedAppVersionHint": "Прадухіляць выбар праграмы з не прапанаванай версіяй",
"requireSuggestedAppVersionDialogText": "Выбар праграмы не прапанаванай версіі можа стаць прычынай нечаканых праблем.\n\nВы ўсё роўна хочаце працягнуць?",
"aboutLabel": "Пра праграму",
"snackbarMessage": "Скапіявана ў буфер абмену",
"restartAppForChanges": "Перазапусціце праграму, каб ужыць змены",
"deleteTempDirLabel": "Выдаліць часовыя файлы",
"deleteTempDirHint": "Выдаліць нявыкарыстаныя часовыя файлы",
"deletedTempDir": "Часовыя файлы выдалены",
"exportSettingsLabel": "Экспартаваць налады",
"exportSettingsHint": "Экспартаваць налады ў JSON-файл",
"exportedSettings": "Налады экспартаваныя",
"importSettingsLabel": "Імпартаваць налады",
"importSettingsHint": "Імпартаваць налады з JSON-файла",
"importedSettings": "Налады імпартаваныя",
"exportPatchesLabel": "Экспартаваць выбар выпраўленняў",
"exportPatchesHint": "Экспартаваць выбар выпраўленняў у файл JSON",
"exportedPatches": "Выбар выпраўленняў экспартаваны",
"noExportFileFound": "Адсутнічае выбар выпраўленняў для экспартавання",
"importPatchesLabel": "Імпартаваць выбар выпраўленняў",
"importPatchesHint": "Імпартаваць выбар выпраўленняў у файл JSON",
"importedPatches": "Выбар выпраўленняў імпартаваны",
"resetStoredPatchesLabel": "Скінуць выбар выпраўлення",
"resetStoredPatchesHint": "Скінуць захаванне выбару выпраўлення",
"resetStoredPatchesDialogTitle": "Скінуць выбар выпраўленняў?",
"resetStoredPatchesDialogText": "Прадвызначаны выбар выпраўленняў будзе адноўлены.",
"resetStoredPatches": "Выбар выпраўленняў будзе скінуты",
"resetStoredOptionsLabel": "Скінуць параметры выпраўлення",
"resetStoredOptionsHint": "Скінуць усе параметры выпраўлення",
"resetStoredOptionsDialogTitle": "Скінуць параметры выпраўлення?",
"resetStoredOptionsDialogText": "Скіданне параметраў выпраўлення выдаліць усе захаваныя параметры.",
"resetStoredOptions": "Параметры былі скінуты",
"deleteLogsLabel": "Ачысціць журнал",
"deleteLogsHint": "Выдаліць сабраны журнал ReVanced Manager",
"deletedLogs": "Журнал выдалены",
"regenerateKeystoreLabel": "Перагенерыраваць сховішча ключоў",
"regenerateKeystoreHint": "Паўторна генерыраваць сховішча ключоў, якое выкарыстоўваецца для падпісання праграм",
"regenerateKeystoreDialogTitle": "Паўторна генерыраваць сховішча ключоў?",
"regenerateKeystoreDialogText": "Выпраўленыя праграмы, якія падпісаны старым сховішчам ключоў, больш немагчыма будзе абнавіць.",
"regeneratedKeystore": "Сховішча ключоў генерыравана паўторна",
"exportKeystoreLabel": "Экспартаваць сховішча ключоў",
"exportKeystoreHint": "Экспартаваць сховішча ключоў, якое выкарыстоўваецца для падпісання праграм",
"exportedKeystore": "Сховішча ключоў экспартавана",
"noKeystoreExportFileFound": "Адсутнічае сховішча ключоў для экспартавання",
"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": "Назва пакета",
"installTypeLabel": "Тып усталявання",
"mountTypeLabel": "Падключыць",
"regularTypeLabel": "Звычайны",
"patchedDateLabel": "Дата выпраўлення",
"appliedPatchesLabel": "Ужытыя выпраўленні",
"sizeLabel": "Памер файла",
"patchedDateHint": "${date} у ${time}",
"appliedPatchesHint": "Ужыта выпраўленняў: ${quantity}",
"updateNotImplemented": "Пакуль яшчэ гэта функцыя не рэалізавана"
},
"contributorsView": {
"widgetTitle": "Удзельнікі"
},
"installErrorDialog": {
"mount_version_mismatch": "Неадпаведнасць версій",
"mount_no_root": "Няма праў суперкарыстальніка",
"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": "Збой усталявання, бо версія ўсталяванай праграмы адрозніваецца ад версіі выпраўленай праграмы.",
"mount_no_root_description": "Збой усталявання, бо не атрыманы правы суперкарыстальніка.\n\nДайце правы суперкарыстальніка ReVanced 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_version_downgrade_description": "Збой усталявання, бо выпраўленая праграма мае больш новую версію, чым усталяваная праграма.\n\nВыдаліць праграму і паспрабаваць яшчэ раз?",
"status_unknown_description": "Збой усталявання, бо адбылася невядомая памылка. Паўтарыце спробу яшчэ раз."
}
}

298
assets/i18n/bg_BG.i18n.json Executable file
View File

@ -0,0 +1,298 @@
{
"okButton": "Ок",
"cancelButton": "Отказ",
"dismissButton": "Отхвърли",
"quitButton": "Изход",
"updateButton": "Актуализация",
"suggested": "Предложена версия: ${version}",
"yesButton": "Да",
"noButton": "Не",
"warning": "Внимание",
"notice": "Известие",
"noShowAgain": "Не показвай повече",
"add": "Добави",
"remove": "Премахни",
"showChangelogButton": "Покажи промените",
"showUpdateButton": "Покажи обновяванията",
"navigationView": {
"dashboardTab": "Табло за управление",
"patcherTab": "Пачър",
"settingsTab": "Настройки"
},
"homeView": {
"refreshSuccess": "Успешно обновяване",
"widgetTitle": "Табло за управление",
"updatesSubtitle": "Актуализации",
"lastPatchedAppSubtitle": "Последно модифицирано приложение",
"patchedSubtitle": "Инсталирани приложения",
"changeLaterSubtitle": "Можете да промените това в настройките на по-късен етап.",
"noSavedAppFound": "Не са открити приложения",
"noInstallations": "Няма инсталирани модифицирани приложения",
"installUpdate": "Продължете към инсталирането на актуализациите?",
"updateSheetTitle": "Актуализирай ReVanced Manager",
"updateDialogTitle": "Налична е нова актуализация",
"updatePatchesSheetTitle": "Актуализирай ReVanced модификациите",
"updateChangelogTitle": "Списък с промени",
"updateDialogText": "Налична е актуализация за ${file}.\n\nНастоящата инсталирана версия е ${version}.",
"downloadConsentDialogTitle": "Да се изтеглят ли необходимите файлове?",
"downloadConsentDialogText": "ReVanced Manager трябва да изтегли необходими файлове, за да работи правилно.",
"downloadConsentDialogText2": "Това ще ви свърже към ${url}.",
"downloadingMessage": "Изтегляне на актуализация...",
"downloadedMessage": "Актуализацията е изтеглена",
"installingMessage": "Инсталиране на актуализация...",
"errorDownloadMessage": "Свалянето на актуализацията не беше успешно",
"errorInstallMessage": "Инсталирането на актуализацията не беше успешно",
"noConnection": "Няма връзка с интернет"
},
"applicationItem": {
"infoButton": "Информация"
},
"latestCommitCard": {
"loadingLabel": "Зареждане...",
"timeagoLabel": "Преди ${time}"
},
"patcherView": {
"widgetTitle": "Модификатор",
"patchButton": "Модифицирайте",
"incompatibleArchWarningDialogText": "Процесът на модифициране в момента не се поддържа на устройства с тази архитектура и може да се провали. Ще продължите ли?",
"removedPatchesWarningDialogText": "Премахнати пачове след последната корекция на приложението:\n\n${patches}\n\n${newPatches}Да продължа ли все пак?",
"addedPatchesDialogText": "След последната промяна на това приложение бяха добавени следните модификации:\n\n${addedPatches}",
"requiredOptionDialogText": "Опциите на някои модификации трябва да бъдат зададени."
},
"appSelectorCard": {
"widgetTitle": "Изберете приложение",
"widgetTitleSelected": "Избрани приложения",
"widgetSubtitle": "Няма избрано приложение",
"noAppsLabel": "Няма намерени приложения",
"anyVersion": "Всички версии"
},
"patchSelectorCard": {
"widgetTitle": "Изберете модификации",
"widgetTitleSelected": "Избрани модификации",
"widgetSubtitle": "Първо изберете приложение",
"widgetEmptySubtitle": "Няма избрани модификации"
},
"socialMediaCard": {
"widgetTitle": "Социални мрежи",
"widgetSubtitle": "Открийте ни онлайн!"
},
"appSelectorView": {
"viewTitle": "Изберете приложение",
"searchBarHint": "Търсене на приложение",
"storageButton": "Хранилище",
"selectFromStorageButton": "Избери от хранилище",
"errorMessage": "Избраното приложение не може да се използва",
"downloadToast": "Функцията за изтегляне все още не е налична",
"requireSuggestedAppVersionDialogText": "Избраната от вас версия на приложението не съответства на препоръчаната версия, което може да доведе до непредвидени проблеми. Моля, използвайте препоръчаната версия.\n\nИзбрана версия: ${selected}\nПрепоръчана версия: ${suggested}\n\nАко желаете да продължите въпреки това, деактивирайте \"Изискване на препоръчана версия на приложението\" в настройките.",
"featureNotAvailable": "Функцията не е внедрена",
"featureNotAvailableText": "Това приложение е разделено APK и не може да бъде актуализирано и инсталирано надеждно, освен ако не бъде монтирано с административни права. Въпреки това, можете да актуализирате и инсталирате цяло APK, като го изберете от хранилището."
},
"patchesSelectorView": {
"viewTitle": "Изберете модификации",
"searchBarHint": "Търсене на модификации",
"universalPatches": "Универсални модификации",
"newPatches": "Нови модификации",
"patches": "Модификации",
"doneButton": "Готово",
"defaultChip": "По подразбиране",
"defaultTooltip": "Изберете всички модификации по подразбиране",
"noneChip": "Нито една",
"noneTooltip": "Отмяна на всички модификации",
"loadPatchesSelection": "Заредете избраните модификации",
"noSavedPatches": "Няма запазени избрани модификации за настоящото приложение.\nНатиснете Готово за да запазите текущия избор.",
"noPatchesFound": "Няма налични модификации за избраното приложение",
"setRequiredOption": "Някои модификации изискват опциите им да бъдат зададени:\n\n${patches}\n\nМоля задайте тези опции преди да продължите."
},
"patchOptionsView": {
"customValue": "Стойност по избор",
"setToNull": "Задайте нулева стойност",
"nullValue": "Стойността на този параметър в момента е нула",
"viewTitle": "Опции за модификациите",
"saveOptions": "Запази",
"unselectPatch": "Отмяна на всички модификации",
"tooltip": "Повече опции за въвеждане",
"selectFilePath": "Изберете път към файла",
"selectFolder": "Изберете папка",
"requiredOption": "Настройката на тази опция е задължителна",
"unsupportedOption": "Тази опция не се поддържа",
"requiredOptionNull": "Следните опции трябва да бъдат зададени:\n\n${options}"
},
"patchItem": {
"unsupportedDialogText": "Изборът на тази модификация може да доведе до грешки.\n\nВерсия: ${packageVersion}\nПоддържани версии: ${supportedVersions}",
"unsupportedPatchVersion": "Модифицирането на избраната версия на приложението не се поддържа.",
"unsupportedRequiredOption": "Настоящата модификация съдържа задължителна опция, която не се поддържа от избраното приложение",
"patchesChangeWarningDialogText": "Препоръчително е да използвате избраните модификации и опции по подразбиране. Всяка промяна може да доведе до неочаквани проблеми.\n\nАко все пак желаете да да промените избраните модификации, първо трябва да изключите \"Позволи промяна в избраните модификации\" от настройките.",
"patchesChangeWarningDialogButton": "Използвайте избора по подразбиране"
},
"installerView": {
"installType": "Изберете вида на инсталацията",
"installTypeDescription": "Изберете с кой вид инсталация да продължите.",
"installButton": "Инсталиране",
"installRootType": "Монтирай",
"installNonRootType": "Нормален",
"warning": "Деактивирайте автоматичните актуализации на модифираното приложение, за да избегнете неочаквани проблеми.",
"pressBackAgain": "Натиснете \"назад\" отново, за да откажете",
"openButton": "Отвори",
"notificationTitle": "ReVanced Мениджър модифицира",
"notificationText": "Натиснете за да се върнете при инсталатора",
"exportApkButtonTooltip": "Експортиране на модифицираното APK",
"exportLogButtonTooltip": "Експорт на дневника",
"screenshotDetected": "Беше направена снимка на екрана. Ако се опитвате да споделите дневника, моля направете го в текстов формат.\n\nДа се копира ли дневника в клипборда?",
"copiedToClipboard": "Дневникът беше копиран в клипборда",
"noExit": "Инсталаторът все още работи, не може да излезе..."
},
"settingsView": {
"widgetTitle": "Настройки",
"appearanceSectionTitle": "Облик",
"teamSectionTitle": "Екип",
"debugSectionTitle": "Отстраняване на грешки",
"advancedSectionTitle": "Разширени",
"exportSectionTitle": "Импортиране и експортиране",
"dataSectionTitle": "Източници на данни",
"themeModeLabel": "Тема на приложението",
"systemThemeLabel": "Система",
"lightThemeLabel": "Светъл",
"darkThemeLabel": "Тъмен режим",
"dynamicThemeLabel": "Материална Тема",
"dynamicThemeHint": "Насладете се на преживяване по-близо до устройството си",
"languageLabel": "Език",
"languageUpdated": "Езикът е обновен",
"sourcesLabel": "Алтернативни източници",
"sourcesLabelHint": "Конфигурирайте алтернативните източници за ReVanced Patches",
"useAlternativeSources": "Използвайте алтернативни източници",
"useAlternativeSourcesHint": "Използвайте алтернативни източници за ReVanced Patches вместо API",
"sourcesResetDialogTitle": "Нулиране",
"sourcesResetDialogText": "Искате ли да възстановите източниците до стойностите им по подразбиране?",
"apiURLResetDialogText": "Сигурни ли сте, че искате да възстановите адреса на ППИ (API) до стойността му по подразбиране?",
"sourcesUpdateNote": "Забележка: Това автоматично ще изтегли ReVanced Patches от алтернативните източници.\n\nТова ще ви свърже с алтернативния източник.",
"apiURLLabel": "API линк",
"apiURLHint": "Конфигуриране на URL адреса на ППИ (API) на ReVanced Manager",
"selectApiURL": "API линк",
"orgPatchesLabel": "Организация на модификациите",
"sourcesPatchesLabel": "Източник на модификациите",
"contributorsLabel": "Хора, които допринесоха",
"contributorsHint": "Списък с хората, допринесли за ReVanced",
"logsLabel": "Сподели дневника",
"logsHint": "Споделете дневника на ReVanced Manager",
"enablePatchesSelectionLabel": "Позволи промяна в избраните модификации",
"enablePatchesSelectionHint": "Не предотвратявай избирането или премахването на модификации",
"enablePatchesSelectionWarningText": "Промяната на избора на модификациите може да доведе до неочаквани проблеми.\n\nРазрешавате ли въпреки това?",
"disablePatchesSelectionWarningText": "Предстои да забраните промени в избора на модификации.\nИзбраните модификации по подразбиране ще бъдат възстановени.\n\nЗабранявате ли въпреки това?",
"autoUpdatePatchesLabel": "Автоматична актуализация на модификациите",
"autoUpdatePatchesHint": "Автоматично актуализира модификациите до последната им версия",
"showUpdateDialogLabel": "Показване на диалоговия прозорец за актуализиране",
"showUpdateDialogHint": "Показва диалогов прозорец, когато е налична нова актуализация",
"universalPatchesLabel": "Покажи универсални модификации",
"universalPatchesHint": "Показване на всички приложения и универсални пачове (може да забави списъка с приложения)",
"lastPatchedAppLabel": "Запазете модифицираното приложение",
"lastPatchedAppHint": "Запазете последната модификация, за да инсталирате или експортирате по-късно",
"versionCompatibilityCheckLabel": "Проверка на съвместимост на версиите",
"versionCompatibilityCheckHint": "Предотвратява избирането на модификации, които не са съвместими с избраната версия на приложението",
"requireSuggestedAppVersionLabel": "Изискване на препоръчана версия на приложението",
"requireSuggestedAppVersionHint": "Предотвратяване на избора на приложение с версия, която не е препоръчана",
"requireSuggestedAppVersionDialogText": "Избирането на приложение, чиято версия не е препоръчана, може да доведе до неочаквани проблеми.\n\nИскате ли да продължите все пак?",
"aboutLabel": "Относно",
"snackbarMessage": "Копирано",
"restartAppForChanges": "Рестартирайте приложението, за да се приложат промените",
"deleteTempDirLabel": "Изтриване на временни файлове",
"deleteTempDirHint": "Изтриване на неизползвани временни файлове",
"deletedTempDir": "Временните файлове са изтрити",
"exportSettingsLabel": "Експорт на настройките",
"exportSettingsHint": "Експорт на настройки в JSON файл",
"exportedSettings": "Настройките са съхранени",
"importSettingsLabel": "Внасяне на настройки",
"importSettingsHint": "Внасяне на настройки в JSON файл",
"importedSettings": "Настройките са импортирани",
"exportPatchesLabel": "Експортиране на избраните актуализации",
"exportPatchesHint": "Експортиране на избраните модификации в JSON файл",
"exportedPatches": "Избраните модификации са експортирани",
"noExportFileFound": "Няма избрани модификации за експортиране",
"importPatchesLabel": "Импортиране на избраните модификации",
"importPatchesHint": "Импортиране на избраните модификации от JSON файл",
"importedPatches": "Избраните модификации са импортирани",
"resetStoredPatchesLabel": "Възстановяване на избраните модификации по подразбиране",
"resetStoredPatchesHint": "Нулиране на избраните запазени модификации",
"resetStoredPatchesDialogTitle": "Да се нулират ли избраните модификации?",
"resetStoredPatchesDialogText": "Избраните модификации ще бъдат нулирани.",
"resetStoredPatches": "Избраните модификации бяха нулирани",
"resetStoredOptionsLabel": "Нулиране на избраните модификации",
"resetStoredOptionsHint": "Нулиране на всички избрани опции за модификациите",
"resetStoredOptionsDialogTitle": "Да се нулират ли избраните опции за модификациите?",
"resetStoredOptionsDialogText": "Нулиране на опциите за модификациите ще премахне всички запазени опции.",
"resetStoredOptions": "Опциите бяха нулирани",
"deleteLogsLabel": "Изчистване на дневника",
"deleteLogsHint": "Изтриване на всички дневници, събрани от ReVanced Manager",
"deletedLogs": "Дневникът е изтрит",
"regenerateKeystoreLabel": "Регенериране на keystore-а",
"regenerateKeystoreHint": "Регенериране на keystore-а, който се използва за подписване на приложението",
"regenerateKeystoreDialogTitle": "Да се регенерира ли keystore-а?",
"regenerateKeystoreDialogText": "Модифицираните приложения, подписани със стария keystore, вече няма да могат да бъдат актуализирани.",
"regeneratedKeystore": "Keystore-ът беше регенериран",
"exportKeystoreLabel": "Експортирай Keystore-а",
"exportKeystoreHint": "Експортиране на keystore-а, който се използва за подписване на приложенията",
"exportedKeystore": "Keystore беше експортиран",
"noKeystoreExportFileFound": "Няма Keystore за експортиране",
"importKeystoreLabel": "Импортирай Keystore",
"importKeystoreHint": "Импортиране на keystore, който да бъде използван за подписване на приложенията",
"importedKeystore": "Keystorе е импортиран",
"selectKeystorePassword": "Парола за keystore-а",
"selectKeystorePasswordHint": "Изберете парола за keystore-а, който се използва за подписване на приложенията",
"jsonSelectorErrorMessage": "Избраният JSON файл не може да се изплозва",
"keystoreSelectorErrorMessage": "Избранията keystore файл не може да бъде използва"
},
"appInfoView": {
"widgetTitle": "Информация за приложението",
"openButton": "Отвори",
"installButton": "Инсталиране",
"uninstallButton": "Деинсталирай",
"unmountButton": "Демонтиране",
"exportButton": "Експортиране",
"deleteButton": "Изтрий",
"rootDialogTitle": "Грешка",
"lastPatchedAppDescription": "Това е резервно копие на последното модифицирано приложение.",
"unmountDialogText": "Сигурни ли сте, че искате да демонтирате това приложение?",
"uninstallDialogText": "Сигурни ли сте, че искате да деиснталирате това приложение?",
"rootDialogText": "Приложението е инсталирано с superuser разрешения, но в момента ReVanced Manager няма разрешения. Моля, първо дайте superuser разрешения.",
"removeAppDialogTitle": "Изтриване на приложението?",
"removeAppDialogText": "Сигурни ли сте, че искате да изтриете това резервно копие?",
"packageNameLabel": "Име на пакета",
"installTypeLabel": "Тип инсталация",
"mountTypeLabel": "Монтиране",
"regularTypeLabel": "Нормален",
"patchedDateLabel": "Дата на модификацията",
"appliedPatchesLabel": "Приложени модификации",
"sizeLabel": "Размер на файла",
"patchedDateHint": "на ${date} в ${time}",
"appliedPatchesHint": "${quantity} приложени модификации",
"updateNotImplemented": "Тази функция все още не е внедрена"
},
"contributorsView": {
"widgetTitle": "Хора, които допринесоха"
},
"installErrorDialog": {
"mount_version_mismatch": "Несъответствие на версиите",
"mount_no_root": "Няма Root достъп",
"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": "Инсталацията се провали поради липса на Root достъп.\n\nМоля позволете Root достъп на ReVanced 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_version_downgrade_description": "Инсталацията се провали поради това, че модифицираното приложение е с по-ниска версия от инсталираното приложение.\n\nДеинсталирайте приложението и опитайте отново?",
"status_unknown_description": "Инсталацията не е успешна поради неизвестна причина. Моля, опитайте отново."
}
}

298
assets/i18n/bn_BD.i18n.json Executable file
View File

@ -0,0 +1,298 @@
{
"okButton": "ঠিক আছে",
"cancelButton": "বাতিল করুন",
"dismissButton": "বাতিল করুন",
"quitButton": "কাটুন",
"updateButton": "হালনাগাদ করুন",
"suggested": "প্রস্তাবিত: ${version}",
"yesButton": "হ্যাঁ",
"noButton": "না",
"warning": "সতর্কতা",
"notice": "বিজ্ঞপ্তি",
"noShowAgain": "পুনরায় দেখাবেন না",
"add": "যুক্ত করুন",
"remove": "অপসারণ করুন",
"showChangelogButton": "পরিবর্তনসূচী দেখান",
"showUpdateButton": "আপডেট দেখান",
"navigationView": {
"dashboardTab": "ড্যাশবোর্ড",
"patcherTab": "প্যাচার",
"settingsTab": "সেটিংস"
},
"homeView": {
"refreshSuccess": "সফলভাবে রিফ্রেশ করা হয়েছে",
"widgetTitle": "ড্যাশবোর্ড",
"updatesSubtitle": "আপডেটসমূহ",
"lastPatchedAppSubtitle": "সর্বশেষ প্যাচকৃত অ্যাপ",
"patchedSubtitle": "ইনস্টল করা অ্যাপ",
"changeLaterSubtitle": "পরবর্তীতে আপনি এটি সেটিং থেকে পরিবর্তন করতে পারবেন।",
"noSavedAppFound": "কোনো অ্যাপ পাওয়া যায় নি",
"noInstallations": "কোন প্যাচড অ্যাপ্লিকেশন ইনস্টল করা হয়নি",
"installUpdate": "আপডেট ইনস্টল করতে এগিয়ে যেতে চান?",
"updateSheetTitle": "ReVanced Manager আপডেট করুন",
"updateDialogTitle": "নতুন আপডেট পাওয়া যাচ্ছে",
"updatePatchesSheetTitle": "ReVanced প্যাচসমূহ আপডেট করুন",
"updateChangelogTitle": "পরিবর্তনসমূহ",
"updateDialogText": "${file} এর জন্য নতুন আপডেট পাওয়া যাচ্ছে।\n\nবর্তমানে ইনস্টল করা সংস্করণ ${version}।",
"downloadConsentDialogTitle": "প্রয়োজনীয় ফাইল ডাউনলোড করবেন?",
"downloadConsentDialogText": "ReVanced Manager সঠিকভাবে কাজ করার জন্য কিছু প্রয়োজনীয় ফাইল ডাউনলোড করতে হবে।",
"downloadConsentDialogText2": "এটি আপনাকে যুক্ত করবে ${url}.",
"downloadingMessage": "আপডেট ডাউনলোড হচ্ছে...",
"downloadedMessage": "আপডেট ডাউনলোড করা হয়েছে",
"installingMessage": "আপডেট ইনস্টল করা হচ্ছে...",
"errorDownloadMessage": "আপডেট ডাউনলোড করতে সফল হয় নি",
"errorInstallMessage": "আপডেট ইনস্টল করতে সফল হয় নি",
"noConnection": "কোন ইন্টারনেট সংযোগ নেই"
},
"applicationItem": {
"infoButton": "তথ্য"
},
"latestCommitCard": {
"loadingLabel": "লোড হচ্ছে...",
"timeagoLabel": "${time} আগে"
},
"patcherView": {
"widgetTitle": "প্যাচার",
"patchButton": "প্যাচ",
"incompatibleArchWarningDialogText": "এই আর্কিটেকচারে প্যাচিং এখনো সমর্থিত নয় এবং সফল নাও হতে পারে। যেকোন ভাবে এগিয়ে যেতে চান?",
"removedPatchesWarningDialogText": "শেষবার আপনি যখন এই অ্যাপটি প্যাচ করেছিলেন তখন থেকে অপসারিত প্যাচগুলি:\n\n${patches}\n\n${newPatches}তবুও চালিয়ে যাবেন?",
"addedPatchesDialogText": "শেষবার আপনি যখন এই অ্যাপটি প্যাচ করেছিলেন তখন থেকে যোগ করা প্যাচগুলি:\n\n${addedPatches}\n\n",
"requiredOptionDialogText": "কিছু প্যাচ অপশন সেট করতে হবে।"
},
"appSelectorCard": {
"widgetTitle": "একটি অ্যাপ নির্বাচন করুন",
"widgetTitleSelected": "নির্বাচিত অ্যাপ",
"widgetSubtitle": "কোন অ্যাপ নির্বাচন করা হয়নি",
"noAppsLabel": "কোন অ্যাপ্লিকেশন পাওয়া যায়নি",
"anyVersion": "যেকোন সংস্করণ"
},
"patchSelectorCard": {
"widgetTitle": "প্যাচসমূহ নির্বাচন করুন",
"widgetTitleSelected": "নির্বাচিত প্যাচসমূহ",
"widgetSubtitle": "প্রথমে একটি অ্যাপ্লিকেশন নির্বাচন করুন",
"widgetEmptySubtitle": "কোন প্যাচ নির্বাচন করা হয়নি"
},
"socialMediaCard": {
"widgetTitle": "সামাজিক যোগাযোগ মাধ্যম",
"widgetSubtitle": "আমরা অনলাইনে!"
},
"appSelectorView": {
"viewTitle": "একটি অ্যাপ নির্বাচন করুন",
"searchBarHint": "অ্যাপ খুঁজুন",
"storageButton": "স্টোরেজ",
"selectFromStorageButton": "স্টোরেজ থেকে নির্বাচন করুন",
"errorMessage": "নির্বাচিত অ্যাপ্লিকেশনটি ব্যবহার করা সম্ভব নয়",
"downloadToast": "ডাউনলোড ফাংশন এখনো উপলব্ধ হয়নি",
"requireSuggestedAppVersionDialogText": "আপনার নির্বাচিত অ্যাপ সংস্করণটি প্রস্তাবিত অ্যাপ সংস্করণের সাথে মিলছে না এতে অনাকাঙ্খিত ত্রুটি ঘটতে পারে। অনুগ্রহপূর্বক প্রস্তাবিত অ্যাপ সংস্করণ ব্যবহার করুন।\n\nনির্বাচিত সংস্করণ: ${selected}\nপ্রস্তাবিত সংসকরণ: ${suggested}\n\nযেকোন ভাবে এগিয়ে যেতে চাইলে, সেটিং থেকে \"প্রস্তাবিত অ্যঅপ সংস্করণ প্রয়োজন\" সেটিংটি নিষ্ক্রিয় করুন।",
"featureNotAvailable": "ফিচার সম্পাদন করা হয়নি",
"featureNotAvailableText": "এই অ্যাপটি একটি খন্ডিত APK এবং শুধুমাত্র রুট পারমিশন এর উপর ভিত্তি করে এটি প্যাচ ও ইনস্টল করা যেতে পারে। যাইহোক, আপনি স্টোরেজ থেকে সম্পূর্ণ APK নির্বাচন করে অ্যাপ প্যাচ ও ইনস্টল করতে পারেন।"
},
"patchesSelectorView": {
"viewTitle": "প্যাচ নির্বাচন করুন",
"searchBarHint": "প্যাচ খুঁজুন",
"universalPatches": "বৈশ্বিক প্যাচসমূহ",
"newPatches": "নতুন প্যাচসমূহ",
"patches": "প্যাচসমূহ",
"doneButton": "সম্পন্ন হয়েছে",
"defaultChip": "পূর্ব-নির্ধারিত",
"defaultTooltip": "সকল পূর্ব-নির্ধারিত প্যাচ নির্বাচন করুন",
"noneChip": "কোনটি নয়",
"noneTooltip": "সকল প্যাচ অনির্বাচন করুন",
"loadPatchesSelection": "নির্বাচিত প্যাচ লোড করুন",
"noSavedPatches": "নির্বাচিত অ্যাপের জন্য কোন সংরক্ষিত প্যাচ নেই।\nবর্তমানে নির্বাচিত প্যাচ সংরক্ষণ করতে সম্পন্ন হয়েছে চাপুন।",
"noPatchesFound": "নির্বাচিত অ্যাপের জন্য কোনো প্যাচ পাওয়া যায়নি",
"setRequiredOption": "কিচু প্যাচের জন্য অপশন সেট করতে হবে:\n\n${patches}\n\nএগিয়ে যাওয়ার পূর্বে অনুগ্রহপূর্বক সেগুলো সেট করুন।"
},
"patchOptionsView": {
"customValue": "কাস্টম ভ্যালু",
"setToNull": "null সেট করুন",
"nullValue": "এই অপশন ভ্যালু বর্তমানে null",
"viewTitle": "প্যাচ অপশন",
"saveOptions": "সংরক্ষণ করুন",
"unselectPatch": "প্যাচ অনির্বাচন করুন",
"tooltip": "আরও ইনপুট অপশন",
"selectFilePath": "ফাইলের স্থান নির্বাচন করুন",
"selectFolder": "ফোল্ডার নির্বাচন করুন",
"requiredOption": "এই অপশনটি সেট করা আবশ্যক",
"unsupportedOption": "এই অপশনসটি অসমর্থিত",
"requiredOptionNull": "এই অপশনগুলো সেট করতে হবে:\n\n${options}"
},
"patchItem": {
"unsupportedDialogText": "এই প্যাচটি নির্বাচন করলে প্যাচিং ত্রুটিপূর্ণ হতে পারে।\n\nঅ্যাপ সংস্করণ: ${packageVersion}\nসমর্থিত সংস্করণ:\n${supportedVersions}",
"unsupportedPatchVersion": "এই অ্যাপ সংস্করণের জন্য প্যাচ সমর্থিত নয়।",
"unsupportedRequiredOption": "এই প্যাচটিতে একটি প্রয়োজনীয় অপশন রয়েছে যা এই অ্যাপটি সমর্থন করে না",
"patchesChangeWarningDialogText": "পূর্ব নির্ধারিত নির্বাচিত প্যাচ এবং অপশন ব্যবহার করার প্রস্তাব রাখে। এগুলো পরিবর্তন করার মাধ্যমে অনাকাঙ্খিত ইস্যু হতে পারে।\n\nপ্যাচ নির্বাচন পরিবর্তন করার পূর্বে আপনাকে অবশ্যই সেটিং থেকে \"প্যাচ নির্বাচন পরিবর্তন করার অনুমতি\" সচল করতে হবে।",
"patchesChangeWarningDialogButton": "পূর্বনির্ধারিত নির্বাচন ব্যবহার করুন"
},
"installerView": {
"installType": "ইনস্টল করার ধরণ নির্বাচন করুন",
"installTypeDescription": "যে প্রক্রিয়ায় ইনস্টল করা এগিয়ে নিতে চান তা নির্বাচন করুন।",
"installButton": "ইনস্টল করুন",
"installRootType": "মাউন্ট",
"installNonRootType": "সাধারণ",
"warning": "অনাকাঙ্ক্ষিত ইস্যু এড়াতে প্যাচকৃত অ্যাপের স্বয়ংক্রিয় আপডেট নিষ্ক্রিয় করুন।",
"pressBackAgain": "বাতিল করতে ব্যাক প্রেস করুন",
"openButton": "অ্যাপ খুলুন",
"notificationTitle": "ReVanced Manager প্যাচ করছে",
"notificationText": "ইনস্টলারে ফিরে যেতে আলতো চাপুন",
"exportApkButtonTooltip": "প্যাচ হওয়া APK রপ্তানি করুন",
"exportLogButtonTooltip": "লগ রপ্তানি করুন",
"screenshotDetected": "একটি স্ক্রিনশট শনাক্ত করা হয়েছে। আপনি যদি লগ শেয়ার করার চেষ্টা করে থাকেন, অনুগ্রপূর্বক এর পরিবর্তে টেক্সট শেয়ার করুন।\n\nক্লিপবোর্ডে লগ কপি করতে চান?",
"copiedToClipboard": "ক্লিপবোর্ডে লগ কপি করা হয়েছে",
"noExit": "ইনস্টলার এখনো চলমান, বের হওয়া সম্ভব নয়..."
},
"settingsView": {
"widgetTitle": "সেটিংস",
"appearanceSectionTitle": "রূপ",
"teamSectionTitle": "দল",
"debugSectionTitle": "ডিবাগিং",
"advancedSectionTitle": "উন্নত",
"exportSectionTitle": "আমদানি ও রপ্তানি",
"dataSectionTitle": "তথ্যের উৎস",
"themeModeLabel": "অ্যাপের থীম",
"systemThemeLabel": "সিস্টেম",
"lightThemeLabel": "উজ্জ্বল",
"darkThemeLabel": "অন্ধকার মোড",
"dynamicThemeLabel": "ম্যাটেরিয়াল ইউ",
"dynamicThemeHint": "আপনার ডিভাইসের লুকের কাছাকাছি অভিজ্ঞতা নিন",
"languageLabel": "ভাষা",
"languageUpdated": "ভাষা হালনাগাদ করা হয়েছে",
"sourcesLabel": "বিকল্প উৎস",
"sourcesLabelHint": "ReVanced প্যাচগুলির বিকল্প উৎস কনফিগার করুন",
"useAlternativeSources": "বিকল্প উৎস ব্যবহার করুন",
"useAlternativeSourcesHint": "API-র পরিবর্তে ReVanced প্যাচগুলির জন্য বিকল্প উৎস ব্যবহার করুন",
"sourcesResetDialogTitle": "পুনরায় সেট করুন",
"sourcesResetDialogText": "আপনি কি নিশ্চিতভাবে আপনার উৎসগুলোকে পূর্বনির্ধারিত উৎসে ফিরিয়ে নিতে চান?",
"apiURLResetDialogText": "আপনি কি নিশ্চিতভাবে আপনার API URL কে তার মূল ভ্যালুতে পুনরায় সেট করতে চান?",
"sourcesUpdateNote": "দ্রষ্টব্য: এটি স্বয়ংক্রিয়ভাবে বিকল্প উৎস থেকে ReVanced প্যাচগুলি ডাউনলোড করবে।\n\nএটি আপনাকে বিকল্প উৎসের সাথে সংযোগ করবে।",
"apiURLLabel": "API URL",
"apiURLHint": "ReVanced Manager এর API URL কনফিগার করুন",
"selectApiURL": "API URL",
"orgPatchesLabel": "প্যাচ এর উদ্ভাবক",
"sourcesPatchesLabel": "প্যাচ এর উৎস",
"contributorsLabel": "অবদানকারীগণ",
"contributorsHint": "ReVanced-এ অবদানকারীদের তালিকা",
"logsLabel": "লগ শেয়ার করুন",
"logsHint": "ReVanced Manager লগ শেয়ার করুন",
"enablePatchesSelectionLabel": "প্যাচ নির্বাচন পরিবর্তন করার অনুমতি",
"enablePatchesSelectionHint": "প্যাচ নির্বাচন করা বা নির্বাচন বাতিল করা আটকাবে না",
"enablePatchesSelectionWarningText": "নির্বাচিত প্যাচগুলো পরিবর্তন করলে অনাকাঙ্খিত ত্রুটি ঘটতে পারে।\n\nযেকোন ভাবে এগিয়ে যেতে চান?",
"disablePatchesSelectionWarningText": "আপনি নির্বাচিত প্যাচ পরিবর্তনকে নিষ্ক্রিয় করতে যাচ্ছেন।\nপূর্বনির্ধারিত নির্বাচিত প্যাচসমূহ ফিরিয়ে আনা হবে।\n\nযেকোন ভাবে নিষ্ক্রিয় করতে চান?",
"autoUpdatePatchesLabel": "প্যাচসমূহ স্বয়ংক্রিয়ভাবে আপডেট করুন",
"autoUpdatePatchesHint": "প্যাচসমূহ স্বয়ংক্রিয়ভাবে সর্বশেষ সংস্করণে আপডেট হবে",
"showUpdateDialogLabel": "হালনাগাদ ডায়ালগ দেখান",
"showUpdateDialogHint": "যখন হালনাগাদ উপলব্ধ থাকবে তখন একটি ডায়ালগ দেখান",
"universalPatchesLabel": "বৈশ্বিক প্যাচসমূহ দেখান",
"universalPatchesHint": "সকল অ্যাপ এবং বৈশ্বিক প্যাচসমূহ দেখায় (অ্যাপ লিস্ট দেখানো একটু ধীর হতে পারে)",
"lastPatchedAppLabel": "প্যাচকৃত অ্যাপ সংরক্ষণ করুন",
"lastPatchedAppHint": "শেষ প্যাচটি ইনস্টল করার জন্য সংরক্ষণ করুন অথবা পরে এক্সপোর্ট করুন",
"versionCompatibilityCheckLabel": "সংস্করণ সামঞ্জস্যতা পরীক্ষা করা",
"versionCompatibilityCheckHint": "নির্বাচিত অ্যাপ সংস্করণের সাথে সামঞ্জস্যপূর্ণ নয় এমন প্যাচ নির্বাচন করা আটকায়",
"requireSuggestedAppVersionLabel": "প্রস্তাবিত অ্যাপ সংস্করণ প্রয়োজন",
"requireSuggestedAppVersionHint": "প্রস্তাবিত নয় এমন অ্যাপ সংস্করণ নির্বাচন করা আটকায়",
"requireSuggestedAppVersionDialogText": "অপ্রস্তাবিত সংস্করণের অ্যাপ নির্বাচন করার ফলে অজানা ইস্যু হতে পারে।\n\nআপনি কি যেকোন ভাবে এগিয়ে যেতে চান?",
"aboutLabel": "সম্পর্কিত",
"snackbarMessage": "ক্লিপবোর্ডে কপি করা হয়েছে",
"restartAppForChanges": "পরিবর্তনগুলি প্রয়োগ করতে অ্যাপটি পুনরায় চালু করুন",
"deleteTempDirLabel": "অস্থায়ী ফাইল মুছুন",
"deleteTempDirHint": "অব্যবহৃত অস্থায়ী ফাইল মুছুন",
"deletedTempDir": "অস্থায়ী ফাইল মুছে ফেলা হয়েছে",
"exportSettingsLabel": "সেটিংস এক্সপোর্ট করুন",
"exportSettingsHint": "একটি JSON ফাইলে সেটিংস এক্সপোর্ট করুন",
"exportedSettings": "সেটিংস এক্সপোর্ট করা হয়েছে",
"importSettingsLabel": "সেটিংস ইম্পোর্ট করুন",
"importSettingsHint": "একটি JSON ফাইল থেকে সেটিংস ইম্পোর্ট করুন",
"importedSettings": "সেটিংস ইম্পোর্ট করা হয়েছে",
"exportPatchesLabel": "নির্বাচিত প্যাচ রপ্তানি করুন",
"exportPatchesHint": "নির্বাচিত প্যাচ একটি JSON ফাইলে রপ্তানি করুন",
"exportedPatches": "নির্বাচিত প্যাচ রপ্তানি করা হয়েছে",
"noExportFileFound": "রপ্তানি করার জন্য কোন প্যাচ নির্বাচন করা হয়নি",
"importPatchesLabel": "নির্বাচিত প্যাচ আমদানি করুন",
"importPatchesHint": "একটি JOSN ফাইল থেকে প্যাচ আমদানি করুন",
"importedPatches": "নির্বাচিত প্যাচ আমদানি করা হয়েছে",
"resetStoredPatchesLabel": "নির্বাচিত প্যাচ আবার সেট করুন",
"resetStoredPatchesHint": "সংরক্ষিত নির্বাচিত প্যাচ আবার সেট করুন",
"resetStoredPatchesDialogTitle": "নির্বাচিত প্যাচ আবার সেট করবেন?",
"resetStoredPatchesDialogText": "পূর্বনির্ধারিত নির্বাচিত প্যাচ ফিরিয়ে আনা হবে।",
"resetStoredPatches": "নির্বাচিত প্যাচ আবার সেট করা হয়েছে",
"resetStoredOptionsLabel": "প্যাচ অপশন আবার সেট করুন",
"resetStoredOptionsHint": "সকল প্যাচ অপশন আবার সেট করুন",
"resetStoredOptionsDialogTitle": "প্যাচ অপশন আবার সেট করবেন?",
"resetStoredOptionsDialogText": "প্যাচ অপশন আবার সেট করলে সকল সংরক্ষিত প্যাচ অপশন অপসারণ করা হবে।",
"resetStoredOptions": "অপশন আবার সেট করা হয়েছে",
"deleteLogsLabel": "লগ পরিস্কার করুন",
"deleteLogsHint": "ReVanced Manager এর সংগৃহীত লগ মুছুন",
"deletedLogs": "লগ মুছে ফেলা হয়েছে",
"regenerateKeystoreLabel": "কীস্টোর পুনরায় তৈরি করুন",
"regenerateKeystoreHint": "অ্যাপ সাইন করতে ব্যবহৃত কীস্টোর পুনরায় তৈরি করুন",
"regenerateKeystoreDialogTitle": "কীস্টোর পুনরায় তৈরি করবেন?",
"regenerateKeystoreDialogText": "পুরোনো কীস্টোর দিয়ে সাইন করা প্যাচড অ্যাপগুলো আপডেট করতে পারবেন না।",
"regeneratedKeystore": "কীস্টোর আবার তৈরি করা হয়েছে",
"exportKeystoreLabel": "কীস্টোর রপ্তানি করুন",
"exportKeystoreHint": "অ্যাপ সাইন করতে ব্যবহৃত কীস্টোর রপ্তানি করুন",
"exportedKeystore": "কীস্টোর এক্সপোর্ট করা হয়েছে",
"noKeystoreExportFileFound": "এক্সপোর্ট করার জন্য কোন কীস্টোর নেই",
"importKeystoreLabel": "কীস্টোর ইমপোর্ট করুন",
"importKeystoreHint": "অ্যাপ সাইন করতে ব্যবহৃত কীস্টোর আমদানি করুন",
"importedKeystore": "কীস্টোর আমদানি করা হয়েছে",
"selectKeystorePassword": "কীস্টোরটির পাসওয়ার্ড",
"selectKeystorePasswordHint": "অ্যাপ সাইন করতে ব্যবহৃত কীস্টোরের পাসওয়ার্ড নির্বাচন করুন",
"jsonSelectorErrorMessage": "নির্বাচিত JSON ফাইল ব্যবহার করা সম্ভব নয়",
"keystoreSelectorErrorMessage": "নির্বাচিত কীস্টোর ফাইল ব্যবহার করা সম্ভব নয়"
},
"appInfoView": {
"widgetTitle": "অ্যাপের তথ্য",
"openButton": "খুলুন",
"installButton": "ইনস্টল করুন",
"uninstallButton": "আনইন্সটল করুন",
"unmountButton": "আনমাউন্ট",
"exportButton": "এক্সপোর্ট",
"deleteButton": "মুছে ফেলুন",
"rootDialogTitle": "ত্রুটি দেখা দিয়েছে",
"lastPatchedAppDescription": "এটি হলো সেই অ্যাপের ব্যাকআপ যা শেষবার প্যাচ করা হয়েছিল।",
"unmountDialogText": "আপনি কি অ্যাপটি আনমাউন্ট করার ব্যপারে নিশ্চিত?",
"uninstallDialogText": "আপনি কি অ্যাপটি আনইনস্টল করার ব্যপারে নিশ্চিত?",
"rootDialogText": "অ্যাপটি Superuser অনুমতি নিয়ে ইনস্টল করা হয়েছে, কিন্তু বর্তমানে ReVanced Manager এর Superuser অনুমতি নেই। অনুগ্রহপূর্বক প্রথমে Superuser অনুমতি দিন।",
"removeAppDialogTitle": "অ্যাপটি মুছে ফেলবেন?",
"removeAppDialogText": "আপনি কি নিশ্চিত যে আপনি এই ব্যাকআপটি মুছে ফেলতে চান?",
"packageNameLabel": "প্যাকেজের নাম",
"installTypeLabel": "ইনস্টলের ধরন",
"mountTypeLabel": "মাউন্ট",
"regularTypeLabel": "সাধারণ",
"patchedDateLabel": "প্যাচ করার তারিখ",
"appliedPatchesLabel": "ব্যবহৃত প্যাচ",
"sizeLabel": "ফাইলের আকার",
"patchedDateHint": "${date} তারিখে ${time} টায়",
"appliedPatchesHint": "${quantity} টি প্যাচ ব্যবহৃত",
"updateNotImplemented": "এই ফিচারটি এখনো কার্যকর করা হয়নি"
},
"contributorsView": {
"widgetTitle": "অবদানকারীগণ"
},
"installErrorDialog": {
"mount_version_mismatch": "সংস্করণ মেলেনি",
"mount_no_root": "রুট অ্যাক্সেস নেই",
"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_version_downgrade_description": "প্যাচ করা অ্যাপ ইনস্টল করা অ্যাপের চেয়ে কম সংস্করণ হওয়ায় ইনস্টলেশন ব্যর্থ হয়েছে.\n\nঅ্যাপটি আনইনস্টল করে আবার চেষ্টা করবেন?",
"status_unknown_description": "একটি অজানা কারণে ইনস্টলেশন ব্যর্থ হয়েছে. অনুগ্রহপূর্বক আবার চেষ্টা করুন."
}
}

View File

@ -1,196 +0,0 @@
{
"okButton": "ঠিক আছে",
"cancelButton": "বাতিল",
"enabledLabel": "সক্রিয়",
"disabledLabel": "নিষ্ক্রিয়",
"yesButton": "হ্যাঁ",
"noButton": "না",
"warning": "সতর্কতা",
"navigationView": {
"dashboardTab": "ড্যাশবোর্ড",
"patcherTab": "প্যাচার",
"settingsTab": "সেটিংস"
},
"homeView": {
"widgetTitle": "ড্যাশবোর্ড",
"updatesSubtitle": "আপডেটসমূহ",
"patchedSubtitle": "প্যাচড অ্যাপ্লিকেশনগুলো",
"updatesAvailable": "আপডেট পাওয়া যাচ্ছে",
"noUpdates": "কোন আপডেট পাওয়া যায়নি",
"WIP": "কাজ চলছে...",
"noInstallations": "কোন প্যাচড অ্যাপ্লিকেশন ইনস্টল করা হয়নি",
"installed": "ইনস্টল করা",
"updateDialogTitle": "Manager আপডেট করুন",
"updateDialogText": "আপনি কি নিশ্চিত আপনি ReVanced Manager ডাউনলোড এবং আপডেট করতে চান?",
"notificationTitle": "আপডেট ডাউনলোড হয়েছে",
"notificationText": "আপডেট ইনস্টল করতে ট্যাপ করুন",
"downloadingMessage": "আপডেট ডাউনলোড হচ্ছে...",
"installingMessage": "আপডেট ইনস্টল করা হচ্ছে...",
"errorDownloadMessage": "আপডেট ডাউনলোড করতে সফল হয় নি",
"errorInstallMessage": "আপডেট ইনস্টল করতে সফল হয় নি",
"noConnection": "কোনো ইন্টারনেট সংযোগ নেই",
"updatesDisabled": "প্যাচ করা অ্যাপকে আপডেট করা বর্তমানে সম্ভব নয়। অ্যাপটি পুনরায় প্যাচ করুন।"
},
"applicationItem": {
"patchButton": "প্যাচ",
"infoButton": "তথ্য",
"changelogLabel": "পরিবর্তনসমূহ"
},
"latestCommitCard": {
"loadingLabel": "লোড হচ্ছে...",
"timeagoLabel": "{time} আগে",
"patcherLabel": "Patcher: ",
"managerLabel": "Manager: ",
"updateButton": "Manager আপডেট করুন"
},
"patcherView": {
"widgetTitle": "প্যাচার",
"patchButton": "প্যাচ",
"patchDialogText": "আপনি রিসোর্স প্যাচ নির্বাচন করেছেন এবং একটি split APK সনাক্ত হয়েছে, তাই প্যাচিং ত্রুটিপূর্ণ হতে পারে।\nআপনি কি নিশ্চিতভাবে সামনে এগিয়ে যেতে চান??"
},
"appSelectorCard": {
"widgetTitle": "একটি অ্যাপ্লিকেশন নির্বাচন করুন",
"widgetTitleSelected": "নির্বাচিত অ্যাপ্লিকেশন",
"widgetSubtitle": "কোনো অ্যাপ্লিকেশন নির্বাচন করা হয়নি",
"noAppsLabel": "কোন অ্যাপ্লিকেশন পাওয়া যায়নি",
"currentVersion": "বর্তমান",
"recommendedVersion": "প্রস্তাবিত",
"anyVersion": "যেকোনো সংস্করণ"
},
"patchSelectorCard": {
"widgetTitle": "প্যাচ নির্বাচন করুন",
"widgetTitleSelected": "নির্বাচিত প্যাচসমূহ",
"widgetSubtitle": "প্রথমে একটি অ্যাপ্লিকেশন নির্বাচন করুন",
"widgetEmptySubtitle": "কোন প্যাচ নির্বাচন করা হয়নি"
},
"socialMediaCard": {
"widgetTitle": "সামাজিক যোগাযোগ মাধ্যম",
"widgetSubtitle": "আমরা অনলাইনে!"
},
"appSelectorView": {
"viewTitle": "একটি অ্যাপ্লিকেশন নির্বাচন করুন",
"searchBarHint": "অ্যাপ্লিকেশনগুলি খুঁজুন",
"storageButton": "স্টোরেজ",
"errorMessage": "নির্বাচিত অ্যাপ্লিকেশনটি ব্যবহার করা সম্ভব নয়"
},
"patchesSelectorView": {
"viewTitle": "প্যাচ নির্বাচন করুন",
"searchBarHint": "প্যাচ খুঁজুন",
"doneButton": "সম্পন্ন হয়েছে",
"recommended": "প্রস্তাবিত",
"all": "সবগুলো",
"none": "একটিও না",
"loadPatchesSelection": "নির্বাচিত প্যাচ লোড করুন",
"noSavedPatches": "নির্বাচিত অ্যাপের জন্য কোন সংরক্ষিত প্যাচ নেই\nবর্তমানে নির্বাচিত প্যাচ সংরক্ষণ করতে সম্পন্ন হয়েছে চাপুন",
"noPatchesFound": "নির্বাচিত অ্যাপের জন্য কোনো প্যাচ পাওয়া যায়নি",
"selectAllPatchesWarningContent": "আপনি সকল প্যাচ নির্বাচন করতে যাচ্ছেন, যার মধ্যে কিছু অপ্রস্তাবিত প্যাচও রয়েছে যা অনাকাঙ্ক্ষিত আচরণ করতে পারে।"
},
"patchItem": {
"unsupportedDialogText": "এই প্যাচটি নির্বাচন করলে প্যাচিং ত্রুটিপূর্ণ হতে পারে।\n\nঅ্যাপ সংস্করণ: {packageVersion}\nসমর্থিত সংস্করণ:\n{supportedVersions}",
"unsupportedPatchVersion": "এই অ্যাপ সংস্করণের জন্য প্যাচ সমর্থিত নয়। এগিয়ে যেতে সেটিংসে পরীক্ষামূলক টগল সক্ষম করুন৷"
},
"installerView": {
"widgetTitle": "ইনস্টলার",
"installButton": "ইনস্টল করুন",
"installRootButton": "রুট হিসেবে ইন্সটল করুন",
"openButton": "অ্যাপ খুলুন",
"shareButton": "ফাইল শেয়ার করুন",
"notificationTitle": "ReVanced Manager প্যাচ করছে",
"notificationText": "ইনস্টলারে ফিরে যেতে ট্যাপ করুন",
"shareApkMenuOption": "APK শেয়ার করুন",
"exportApkMenuOption": "APK রপ্তানি করুন",
"shareLogMenuOption": "লগ শেয়ার করুন",
"installErrorDialogTitle": "ত্রুটি দেখা দিয়েছে",
"installErrorDialogText1": "বর্তমানে নির্বাচিত প্যাচগুলো দিয়ে রুট ইনস্টল সম্ভব নয়।\nঅ্যাপটি পুনরায় প্যাচ করুন অথবা নন-রুট ইনস্টল নির্বাচন করুন।",
"installErrorDialogText2": "বর্তমানে নির্বাচিত প্যাচগুলো দিয়ে নন-রুট ইনস্টল সম্ভব নয়।\nঅ্যাপটি পুনরায় প্যাচ করুন অথবা আপনার ডিভাইস রুট করা থাকলে রুট ইনস্টল নির্বাচন করুন।",
"installErrorDialogText3": "রুট ইনস্টল সম্ভব নয় কারণ মূল APK ফোনের স্টোরেজ থেকে নির্বাচন করা হয়েছে।\nএকটি ইনস্টলড অ্যাপ নির্বাচন করুন অথবা নন-রুট ইন্সটল নির্বাচন করুন।",
"noExit": "ইনস্টলার এখনো চলমান, বের হওয়া সম্ভব নয়..."
},
"settingsView": {
"widgetTitle": "সেটিংস",
"appearanceSectionTitle": "রূপ",
"teamSectionTitle": "দল",
"infoSectionTitle": "তথ্য",
"advancedSectionTitle": "উন্নত",
"logsSectionTitle": "লগ",
"darkThemeLabel": "অন্ধকার মোড",
"darkThemeHint": "অন্ধকার রাজ্যে স্বাগতম",
"dynamicThemeLabel": "ম্যাটেরিয়াল ইউ",
"dynamicThemeHint": "আপনার ডিভাইসের লুকের কাছাকাছি অভিজ্ঞতা নিন",
"languageLabel": "ভাষা",
"englishOption": "English",
"sourcesLabel": "উৎস",
"sourcesLabelHint": "আপনার নিজস্ব উৎস সেট করুন",
"orgPatchesLabel": "প্যাচ এর উদ্ভাবক",
"sourcesPatchesLabel": "প্যাচ এর উৎস",
"orgIntegrationsLabel": "ইন্ট্রিগেশনের উদ্ভাবক",
"sourcesIntegrationsLabel": "ইন্ট্রিগেশনের উৎস",
"sourcesResetDialogTitle": "পুনরায় সেট করুন",
"sourcesResetDialogText": "আপনি কি আপনার নিজস্ব উৎসগুলোকে তাদের মূল উৎসে পুনরায় সেট করতে চান?",
"apiURLResetDialogText": "আপনি কি API URL কে তার মূল ভ্যালুতে পুনরায় সেট করতে চান?",
"contributorsLabel": "অবদানকারীগণ",
"contributorsHint": "ReVanced-এ অবদানকারীদের তালিকা",
"logsLabel": "লগ",
"logsHint": "Manager লগ শেয়ার করুন",
"apiURLLabel": "API URL",
"apiURLHint": "আপনার নিজস্ব API URL সেট করুন",
"selectApiURL": "API URL",
"experimentalPatchesLabel": "পরীক্ষামূলক প্যাচ সমর্থন",
"experimentalPatchesHint": "যেকোন অ্যাপ সংস্করণে অসমর্থিত প্যাচ ব্যবহার করতে সক্ষম করুন",
"enabledExperimentalPatches": "পরীক্ষামূলক প্যাচ সমর্থন সক্রিয় হয়েছে",
"exportSectionTitle": "আমদানি ও রপ্তানি",
"aboutLabel": "সম্পর্কিত",
"snackbarMessage": "ক্লিপবোর্ডে কপি করা হয়েছে",
"sentryLabel": "সেন্ট্রি লগিং",
"sentryHint": "ReVanced Manager উন্নত করতে আমাদের সাহায্য করতে বেনামী লগ পাঠান",
"restartAppForChanges": "পরিবর্তনগুলি প্রয়োগ করতে অ্যাপটি পুনরায় চালু করুন",
"deleteKeystoreLabel": "কীস্টোর মুছুন",
"deleteKeystoreHint": "প্যাচড অ্যাপ সাইন করতে ব্যবহৃত কীস্টোরটি মুছুন",
"deletedKeystore": "কীস্টোর মুছে ফেলা হয়েছে",
"deleteTempDirLabel": "অস্থায়ী ফাইল মুছুন",
"deleteTempDirHint": "অব্যবহৃত অস্থায়ী ফাইল মুছুন",
"deletedTempDir": "অস্থায়ী ফাইল মুছে ফেলা হয়েছে",
"exportPatchesLabel": "নির্বাচিত প্যাচ রপ্তানি করুন",
"exportPatchesHint": "নির্বাচিত প্যাচ একটি JSON ফাইলে রপ্তানি করুন",
"exportedPatches": "নির্বাচিত প্যাচ রপ্তানি করা হয়েছে",
"noExportFileFound": "রপ্তানি করার জন্য কোন প্যাচ নির্বাচন করা হয়নি",
"importPatchesLabel": "নির্বাচিত প্যাচ আমদানি করুন",
"importPatchesHint": "একটি JOSN ফাইল থেকে প্যাচ আমদানি করুন",
"importedPatches": "নির্বাচিত প্যাচ আমদানি করা হয়েছে",
"resetStoredPatchesLabel": "প্যাচ পুনরায় সেট করুন",
"resetStoredPatchesHint": "সংরক্ষিত নির্বাচিত প্যাচ পুনঃসেট করুন",
"resetStoredPatches": "নির্বাচিত প্যাচ পুনঃসেট করা হয়েছে",
"jsonSelectorErrorMessage": "নির্বাচিত JSON ফাইল ব্যবহার করা সম্ভব নয়",
"deleteLogsLabel": "লগ মুছুন",
"deleteLogsHint": "Manager এর সংগৃহীত লগ মুছুন",
"deletedLogs": "লগ মুছে ফেলা হয়েছে"
},
"appInfoView": {
"widgetTitle": "অ্যাপের তথ্য",
"openButton": "খুলুন",
"uninstallButton": "আনইন্সটল করুন",
"patchButton": "প্যাচ",
"unpatchButton": "আনপ্যাচ",
"unpatchDialogText": "আপনি কি অ্যাপটি আনপ্যাচ করার ব্যপারে নিশ্চিত?",
"rootDialogTitle": "ত্রুটি দেখা দিয়েছে",
"rootDialogText": "অ্যাপটি Superuser অনুমতি নিয়ে ইনস্টল করা হয়েছে, কিন্তু বর্তমানে ReVanced Manager এর Superuser অনুমতি নেই। অনুগ্রহপূর্বক প্রথমে Superuser অনুমতি দিন।",
"packageNameLabel": "প্যাকেজের নাম",
"originalPackageNameLabel": "প্যাকেজের মূল নাম",
"installTypeLabel": "ইনস্টলের ধরন",
"rootTypeLabel": "রুট",
"nonRootTypeLabel": "নন-রুট",
"patchedDateLabel": "প্যাচ করার তারিখ",
"patchedDateHint": "{date} তারিখে {time} টায়",
"appliedPatchesLabel": "ব্যবহৃত প্যাচ",
"appliedPatchesHint": "{quantity} টি প্যাচ ব্যবহৃত",
"updateNotImplemented": "এই ফিচারটি এখনো কার্যকর করা হয়নি"
},
"contributorsView": {
"widgetTitle": "অবদানকারীগণ",
"patcherContributors": "প্যাচার অবদানকারী",
"patchesContributors": "প্যাচসমূহে অবদানকারী",
"integrationsContributors": "ইন্টিগ্রেশন্স অবদানকারী",
"cliContributors": "CLI অবদানকারী",
"managerContributors": "Manager অবদানকারী"
}
}

298
assets/i18n/ca_ES.i18n.json Executable file
View File

@ -0,0 +1,298 @@
{
"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."
}
}

298
assets/i18n/cs_CZ.i18n.json Executable file
View File

@ -0,0 +1,298 @@
{
"okButton": "OK",
"cancelButton": "Zrušit",
"dismissButton": "Zrušit",
"quitButton": "Odejít",
"updateButton": "Aktualizovat",
"suggested": "Doporučeno: ${version}",
"yesButton": "Ano",
"noButton": "Ne",
"warning": "Varování",
"notice": "Upozornění",
"noShowAgain": "Již nezobrazovat",
"add": "Přidat",
"remove": "Odebrat",
"showChangelogButton": "Zobrazit seznam změn",
"showUpdateButton": "Zobrazit aktualizaci",
"navigationView": {
"dashboardTab": "Řídící panel",
"patcherTab": "Patcher",
"settingsTab": "Nastavení"
},
"homeView": {
"refreshSuccess": "Úspěšně obnoveno",
"widgetTitle": "Řídící panel",
"updatesSubtitle": "Aktualizace",
"lastPatchedAppSubtitle": "Poslední upravená aplikace",
"patchedSubtitle": "Nainstalované aplikace",
"changeLaterSubtitle": "Tuto možnost můžete změnit později v nastavení.",
"noSavedAppFound": "Nebyla nalezena žádná aplikace",
"noInstallations": "Nejsou nainstalovány žádné záplatované aplikace",
"installUpdate": "Pokračovat v instalaci aktualizace?",
"updateSheetTitle": "Aktualizovat ReVanced Manager",
"updateDialogTitle": "Nová aktualizace k dispozici",
"updatePatchesSheetTitle": "Aktualizovat záplaty ReVanced",
"updateChangelogTitle": "Seznam změn",
"updateDialogText": "Nová aktualizace je k dispozici pro ${file}.\n\nAktuálně nainstalovaná verze je ${version}.",
"downloadConsentDialogTitle": "Stáhnout potřebné soubory?",
"downloadConsentDialogText": "ReVanced Manager potřebuje stáhnout potřebné soubory, aby fungoval správně.",
"downloadConsentDialogText2": "Tímto se připojíte k ${url}.",
"downloadingMessage": "Stahování aktualizace...",
"downloadedMessage": "Aktualizace byla stažena",
"installingMessage": "Instalace aktualizace...",
"errorDownloadMessage": "Nelze stáhnout aktualizaci",
"errorInstallMessage": "Aktualizace se nepodařilo nainstalovat",
"noConnection": "Žádné připojení k internetu"
},
"applicationItem": {
"infoButton": "Info"
},
"latestCommitCard": {
"loadingLabel": "Načítání...",
"timeagoLabel": "před ${time}"
},
"patcherView": {
"widgetTitle": "Záplatovač",
"patchButton": "Záplatovat",
"incompatibleArchWarningDialogText": "Úprava této architektury není zatím podporována a může selhat. Přesto pokračovat?",
"removedPatchesWarningDialogText": "Odstranili jste záplaty od poslední úpravy této aplikace:\n\n${patches}\n\n${newPatches}Pokračovat?",
"addedPatchesDialogText": "Přidány záplaty od poslední úpravy této aplikace:\n\n${addedPatches}\n\n",
"requiredOptionDialogText": "Je třeba nastavit některé možnosti záplat."
},
"appSelectorCard": {
"widgetTitle": "Vybrat aplikaci",
"widgetTitleSelected": "Vybraná aplikace",
"widgetSubtitle": "Není vybrána žádná aplikace",
"noAppsLabel": "Nebyly nalezeny žádné aplikace",
"anyVersion": "Jakákoli verze"
},
"patchSelectorCard": {
"widgetTitle": "Vybrat záplaty",
"widgetTitleSelected": "Vybrané patche",
"widgetSubtitle": "Nejprve vyberte aplikaci",
"widgetEmptySubtitle": "Nejsou vybrány žádné záplaty"
},
"socialMediaCard": {
"widgetTitle": "Sociální sítě",
"widgetSubtitle": "Jsme online!"
},
"appSelectorView": {
"viewTitle": "Vyberte aplikaci",
"searchBarHint": "Vyhledat aplikaci",
"storageButton": "Uložiště",
"selectFromStorageButton": "Vybrat z úložiště",
"errorMessage": "Vybranou aplikaci nelze použít",
"downloadToast": "Funkce stahování zatím není dostupná",
"requireSuggestedAppVersionDialogText": "Vybraná verze aplikace se neshoduje s navrhovanou verzí, což může vést k neočekávaným problémům. Prosím použijte navrhovanou verzi.\n\nVybraná verze: ${selected}\nNavrhovaná verze: ${suggested}\n\nChcete-li přesto pokračovat, zakažte v nastavení \"Vyžadovat navrhovanou verzi aplikace\".",
"featureNotAvailable": "Funkce není implementována",
"featureNotAvailableText": "Tato aplikace je rozdělená APK a může být spolehlivě nainstalována pouze připojením oprávnění root. Nicméně, můžete opravit a nainstalovat plnou APK výběrem z úložiště."
},
"patchesSelectorView": {
"viewTitle": "Vybrat patche",
"searchBarHint": "Vyhledat záplaty",
"universalPatches": "Univerzální záplaty",
"newPatches": "Nové záplaty",
"patches": "Záplaty",
"doneButton": "Hotovo",
"defaultChip": "Výchozí",
"defaultTooltip": "Vybrat všechny výchozí záplaty",
"noneChip": "Žádné",
"noneTooltip": "Zrušit výběr všech záplat",
"loadPatchesSelection": "Načíst výběr záplat",
"noSavedPatches": "Žádný uložený výběr patch pro vybranou aplikaci.\nStisknutím Dokončeno uložíte aktuální výběr.",
"noPatchesFound": "Pro vybranou aplikaci nebyly nalezeny žádné záplaty",
"setRequiredOption": "Některé záplaty vyžadují nastavení:\n\n${patches}\n\nPřed pokračováním je prosím nastavte."
},
"patchOptionsView": {
"customValue": "Vlastní hodnota",
"setToNull": "Nastavit na null",
"nullValue": "Tato hodnota volby je v současné době null",
"viewTitle": "Nastavení záplat",
"saveOptions": "Uložit",
"unselectPatch": "Zrušit výběr patch",
"tooltip": "Další možnosti vstupu",
"selectFilePath": "Zvolte cestu k souboru",
"selectFolder": "Vybrat složku",
"requiredOption": "Nastavení této možnosti je vyžadováno",
"unsupportedOption": "Tato možnost není podporována",
"requiredOptionNull": "Tyto možnosti musí být nastaveny:\n\n${options}"
},
"patchItem": {
"unsupportedDialogText": "Výběrem této záplaty může dojít k chybám.\n\nVerze aplikace: ${packageVersion}\nAktuálně podporované verze:\n${supportedVersions}",
"unsupportedPatchVersion": "Záplata není podporována touto verzí aplikace.",
"unsupportedRequiredOption": "Tato oprava obsahuje požadovanou volbu, která není touto aplikací podporována",
"patchesChangeWarningDialogText": "Doporučuje se použít výchozí záplatový výběr a možnosti. Změna může vést k neočekávaným problémům.\n\nPřed změnou jakéhokoli výběru patch budete muset zapnout \"Povolit změnu výběru patch\" v nastavení.",
"patchesChangeWarningDialogButton": "Použít výchozí výběr"
},
"installerView": {
"installType": "Zvolte instalační typ",
"installTypeDescription": "Vyberte typ instalace pro pokračování.",
"installButton": "Instalovat",
"installRootType": "Připojit",
"installNonRootType": "Běžný",
"warning": "Zakažte automatické aktualizace upravené aplikace, abyste se vyhnuli neočekávaným problémům.",
"pressBackAgain": "Stiskněte znovu pro zrušení",
"openButton": "Otevřít",
"notificationTitle": "ReVanced Manager patchuje",
"notificationText": "Klepnutím se vrátíte do instalátoru",
"exportApkButtonTooltip": "Exportovat upravený APK",
"exportLogButtonTooltip": "Exportovat protokol",
"screenshotDetected": "Byl zjištěn snímek obrazovky. Pokud se pokoušíte sdílet záznam, sdílejte prosím textovou kopii.\n\nKopírovat záznam do schránky?",
"copiedToClipboard": "Záznamy byly zkopírovány do schránky",
"noExit": "Instalační program je stále spuštěn, nelze ukončit..."
},
"settingsView": {
"widgetTitle": "Nastavení",
"appearanceSectionTitle": "Vzhled",
"teamSectionTitle": "Tým",
"debugSectionTitle": "Ladění",
"advancedSectionTitle": "Pokročilé",
"exportSectionTitle": "Import a export",
"dataSectionTitle": "Zdroje údajů",
"themeModeLabel": "Vzhled aplikace",
"systemThemeLabel": "Systém",
"lightThemeLabel": "Světlý",
"darkThemeLabel": "Tmavý motiv",
"dynamicThemeLabel": "Váš materiál",
"dynamicThemeHint": "Vychutnejte si zážitek blíže k vašemu zařízení",
"languageLabel": "Jazyk",
"languageUpdated": "Jazyk aktualizován",
"sourcesLabel": "Alternativní zdroje",
"sourcesLabelHint": "Konfigurace alternativních zdrojů pro vylepšené úpravy",
"useAlternativeSources": "Použít alternativní zdroje",
"useAlternativeSourcesHint": "Použít alternativní zdroje pro vylepšené úpravy namísto API",
"sourcesResetDialogTitle": "Obnovit",
"sourcesResetDialogText": "Jste si jisti, že chcete obnovit zdroje na jejich výchozí hodnoty?",
"apiURLResetDialogText": "Jste si jisti, že chcete resetovat URL API na výchozí hodnotu?",
"sourcesUpdateNote": "Poznámka: Toto automaticky stáhne reVanced Patches z alternativních zdrojů.\n\nToto vás připojí k alternativnímu zdroji.",
"apiURLLabel": "API URL",
"apiURLHint": "Konfigurace URL API ReVanced Manager",
"selectApiURL": "API URL",
"orgPatchesLabel": "Organizace patchů",
"sourcesPatchesLabel": "Zdroj záplat",
"contributorsLabel": "Přispěvatelé",
"contributorsHint": "Seznam přispěvatelů ReVanced",
"logsLabel": "Sdílet záznamy",
"logsHint": "Sdílet záznamy Revanced Manageru",
"enablePatchesSelectionLabel": "Povolit změnu výběru patch",
"enablePatchesSelectionHint": "Nezabraňte výběru nebo odebírání záplatek",
"enablePatchesSelectionWarningText": "Změna výběru záplatů může způsobit neočekávané problémy.\n\nPřesto povolit?",
"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",
"showUpdateDialogLabel": "Zobrazit dialogové okno aktualizace",
"showUpdateDialogHint": "Zobrazit dialogové okno, když je dostupná nová aktualizace",
"universalPatchesLabel": "Zobrazit univerzální záplaty",
"universalPatchesHint": "Zobrazit všechny aplikace a univerzální záplaty (může zpomalit seznam aplikací)",
"lastPatchedAppLabel": "Uložit upravenou aplikaci",
"lastPatchedAppHint": "Uložit poslední opravu pro instalaci nebo export později",
"versionCompatibilityCheckLabel": "Kontrola kompatibility verzí",
"versionCompatibilityCheckHint": "Zabránit výběru záplat, které nejsou kompatibilní s vybranou verzí aplikace",
"requireSuggestedAppVersionLabel": "Vyžadovat navrhovanou verzi aplikace",
"requireSuggestedAppVersionHint": "Zabránit výběru aplikace s verzí, která není navržena",
"requireSuggestedAppVersionDialogText": "Vybrání aplikace s verzí, která není doporčena může způsobit nečekané problémy.\n\nChcete přesto pokračovat?",
"aboutLabel": "O aplikaci",
"snackbarMessage": "Zkopírováno do schránky",
"restartAppForChanges": "Pro aplikování změn restartuj aplikaci",
"deleteTempDirLabel": "Odstranit dočasné soubory",
"deleteTempDirHint": "Odstranit nepoužívané dočasné soubory",
"deletedTempDir": "Dočasné soubory byly smazány",
"exportSettingsLabel": "Exportovat nastavení",
"exportSettingsHint": "Exportovat nastavení do souboru JSON",
"exportedSettings": "Nastavení exportováno",
"importSettingsLabel": "Importovat nastavení",
"importSettingsHint": "Importovat nastavení ze souboru JSON",
"importedSettings": "Nastavení importováno",
"exportPatchesLabel": "Exportovat záplatu",
"exportPatchesHint": "Exportovat výběr patch do souboru JSON",
"exportedPatches": "Výběr patch exportován",
"noExportFileFound": "Není vybrána žádná oprava k exportu",
"importPatchesLabel": "Importovat výběr patch",
"importPatchesHint": "Importovat výběr patch ze souboru JSON",
"importedPatches": "Výběr patch importován",
"resetStoredPatchesLabel": "Resetovat výběr opravy",
"resetStoredPatchesHint": "Resetovat uloženou opravu",
"resetStoredPatchesDialogTitle": "Obnovit výběr patche?",
"resetStoredPatchesDialogText": "Výchozí výběr záplatů bude obnoven.",
"resetStoredPatches": "Výběr patch byl obnoven",
"resetStoredOptionsLabel": "Resetovat možnosti opravy",
"resetStoredOptionsHint": "Obnovit všechny možnosti opravy",
"resetStoredOptionsDialogTitle": "Obnovit možnosti oprav?",
"resetStoredOptionsDialogText": "Obnovení možností opravy odstraní všechny uložené možnosti.",
"resetStoredOptions": "Možnosti byly resetovány",
"deleteLogsLabel": "Vymazat záznamy",
"deleteLogsHint": "Odstranit shromážděné záznamy ReVanced Manageru",
"deletedLogs": "Záznamy byly smazány",
"regenerateKeystoreLabel": "Obnovit úložiště klíčů",
"regenerateKeystoreHint": "Znovu vygenerovat úložiště klíčů používané k podpisu aplikací",
"regenerateKeystoreDialogTitle": "Obnovit úložiště klíčů?",
"regenerateKeystoreDialogText": "Upravené aplikace podepsané staré úložiště klíčů již nebudou moci být aktualizovány.",
"regeneratedKeystore": "Obnovena úložiště klíčů",
"exportKeystoreLabel": "Exportovat úložiště klíčů",
"exportKeystoreHint": "Exportovat úložiště klíčů používané k podpisu aplikací",
"exportedKeystore": "Úložiště klíčů exportováno",
"noKeystoreExportFileFound": "Žádný úložiště klíčů k exportu",
"importKeystoreLabel": "Importovat úložiště klíčů",
"importKeystoreHint": "Importovat úložiště klíčů používané k podpisu aplikací",
"importedKeystore": "Úložiště klíčů importováno",
"selectKeystorePassword": "Heslo úložiště klíčů",
"selectKeystorePasswordHint": "Vyberte heslo úložiště klíčů použité k podpisu aplikací",
"jsonSelectorErrorMessage": "Vybraný JSON soubor nelze použít",
"keystoreSelectorErrorMessage": "Nelze použít vybraný soubor úložiště klíčů"
},
"appInfoView": {
"widgetTitle": "Informace o aplikaci",
"openButton": "Otevřít",
"installButton": "Instalovat",
"uninstallButton": "Odinstalovat",
"unmountButton": "Odpojit",
"exportButton": "Exportovat",
"deleteButton": "Vymazat",
"rootDialogTitle": "Chyba",
"lastPatchedAppDescription": "Toto je záloha aplikace, která byla naposledy upravena.",
"unmountDialogText": "Opravdu chcete odpojit tuto aplikaci?",
"uninstallDialogText": "Opravdu chcete odinstalovat tuto aplikaci?",
"rootDialogText": "Aplikace byla nainstalována s oprávněním superuser, ale aktuálně ReVanced Manager nemá žádná oprávnění.\nProsím nejprve udělte oprávnění superuser.",
"removeAppDialogTitle": "Smazat aplikaci?",
"removeAppDialogText": "Jste si jisti, že chcete odstranit tuto zálohu?",
"packageNameLabel": "Název balíčku",
"installTypeLabel": "Typ instalace",
"mountTypeLabel": "Připojit",
"regularTypeLabel": "Běžný",
"patchedDateLabel": "Datum patchování",
"appliedPatchesLabel": "Použité záplaty",
"sizeLabel": "Velikost souboru",
"patchedDateHint": "${date} v ${time}",
"appliedPatchesHint": "${quantity} použité záplaty",
"updateNotImplemented": "Tato funkce ještě není implementována"
},
"contributorsView": {
"widgetTitle": "Přispěvatelé"
},
"installErrorDialog": {
"mount_version_mismatch": "Verse neshodná",
"mount_no_root": "Žádný root přístup",
"mount_missing_installation": "Instalace nebyla nalezena",
"status_failure_blocked": "Instalace blokovaná",
"install_failed_verification_failure": "Ověření selhalo",
"status_failure_invalid": "Instalace neplatná",
"install_failed_version_downgrade": "Nelze ponížit",
"status_failure_conflict": "Konflikt instalace",
"status_failure_storage": "Instalace má problém s uložistěm",
"status_failure_incompatible": "Instalace není kompatibilní",
"status_failure_timeout": "Instalaci vypršel čas",
"status_unknown": "Instalace selhala",
"mount_version_mismatch_description": "Instalace se nezdařila kvůli tomu, že nainstalovaná aplikace je jinou verzí než upravená aplikace.\n\nNainstalujte verzi aplikace, kterou připojujete a zkuste to znovu.",
"mount_no_root_description": "Instalace selhala, protože oprávněni root nebyly udělené.\n\nDejte Revanced Manageru oprávnění root a zkuste znovu.",
"mount_missing_installation_description": "Instalace se nezdařila z důvodu neopravené aplikace pro připojení na toto zařízení.\n\nNainstalujte si neupravenou aplikaci před připojením a zkuste to znovu.",
"status_failure_timeout_description": "Dokončení instalace trvalo příliš dlouho.\n\nChcete to zkusit znovu?",
"status_failure_storage_description": "Instalace selhala kvůli nedostatku místa v uložisti.\n\nUvolňete místo a zkuste znovu.",
"status_failure_invalid_description": "Instalace se nezdařila, protože patchnutá aplikace je neplatná.\n\nOdinstalovat tuto aplikaci a zkusit znovu?",
"status_failure_incompatible_description": "Aplikace není kompatibilní s tímto zařízením.\n\nPoužijte APK, který je podporován tímto zařízením a zkuste to znovu.",
"status_failure_conflict_description": "Instalace byla zabráněna existující instalací aplikace.\n\nOdinstalovat nainstalovanou aplikaci a zkuste to znovu?",
"status_failure_blocked_description": "Instalace byla zablokována ${packageName}.\n\nUpravte nastavení zabezpečení a zkute to znovu.",
"install_failed_verification_failure_description": "Instalace se nezdařila kvůli problému s ověřováním.\n\nUpravte nastavení zabezpečení a zkuste to znovu.",
"install_failed_version_downgrade_description": "Instalace se nezdařila kvůli tomu, že již nainstalovaná verze je novější.\n\nOdinstalovat tuto aplikaci a zkusit znovu?",
"status_unknown_description": "Instalace se nezdařila z neznámých důvodů. Prosím zkuste to znovu."
}
}

View File

@ -1,196 +0,0 @@
{
"okButton": "OK",
"cancelButton": "Zrušit",
"enabledLabel": "Zapnuto",
"disabledLabel": "Vypnuto",
"yesButton": "Ano",
"noButton": "Ne",
"warning": "Varování",
"navigationView": {
"dashboardTab": "Řídící panel",
"patcherTab": "Záplatovač",
"settingsTab": "Nastavení"
},
"homeView": {
"widgetTitle": "Řídící panel",
"updatesSubtitle": "Aktualizace",
"patchedSubtitle": "Záplatované aplikace",
"updatesAvailable": "Jsou dostupné aktualizace",
"noUpdates": "Nejsou dostupné žádné aktualizace",
"WIP": "Zpracovává se...",
"noInstallations": "Nejsou nainstalovány žádné záplatované aplikace",
"installed": "Nainstalováno",
"updateDialogTitle": "Správce aktualizací",
"updateDialogText": "Opravdu chcete stáhnout a aktualizovat ReVanced Manager?",
"notificationTitle": "Aktualizace byla stažena",
"notificationText": "Klepnutím nainstalujte aktualizaci",
"downloadingMessage": "Stahování aktualizace...",
"installingMessage": "Instalace aktualizace...",
"errorDownloadMessage": "Nelze stáhnout aktualizaci",
"errorInstallMessage": "Aktualizace se nepodařilo nainstalovat",
"noConnection": "Žádné připojení k internetu",
"updatesDisabled": "Aktualizace záplatované aplikace je momentálně zakázána. Znovu záplatujte aplikaci."
},
"applicationItem": {
"patchButton": "Záplata",
"infoButton": "Info",
"changelogLabel": "Seznam změn"
},
"latestCommitCard": {
"loadingLabel": "Načítání...",
"timeagoLabel": "před {time}",
"patcherLabel": "Záplatovač: ",
"managerLabel": "Manager: ",
"updateButton": "Aktualizovat Manager"
},
"patcherView": {
"widgetTitle": "Záplatovač",
"patchButton": "Záplatovat",
"patchDialogText": "Vybrali jste záplatu a byla zjištěna \"split-APK\" instalace, takže se mohou vyskytnout chyby.\nJste si jisti, že chcete pokračovat?"
},
"appSelectorCard": {
"widgetTitle": "Vyberte aplikaci",
"widgetTitleSelected": "Vybraná aplikace",
"widgetSubtitle": "Nebyla vybrána žádná aplikace",
"noAppsLabel": "Nebyly nalezeny žádné aplikace",
"currentVersion": "Aktuální",
"recommendedVersion": "Doporučeno",
"anyVersion": "jakákoliv"
},
"patchSelectorCard": {
"widgetTitle": "Vybrat záplaty",
"widgetTitleSelected": "Vybrané záplaty",
"widgetSubtitle": "Nejprve vyberte aplikaci",
"widgetEmptySubtitle": "Nejsou vybrány žádné záplaty"
},
"socialMediaCard": {
"widgetTitle": "Sociální sítě",
"widgetSubtitle": "Jsme online!"
},
"appSelectorView": {
"viewTitle": "Vyberte aplikaci",
"searchBarHint": "Hledat aplikace",
"storageButton": "Uložiště",
"errorMessage": "Vybranou aplikaci nelze použít"
},
"patchesSelectorView": {
"viewTitle": "Vybrat záplaty",
"searchBarHint": "Vyhledat záplaty",
"doneButton": "Hotovo",
"recommended": "Doporučeno",
"all": "Vše",
"none": "Žádné",
"loadPatchesSelection": "Načíst výběr záplat",
"noSavedPatches": "Žádné uložené záplaty pro vybranou aplikaci\nStiskněte Hotovo pro uložení aktuálního výběru",
"noPatchesFound": "Pro vybranou aplikaci nebyly nalezeny žádné záplaty",
"selectAllPatchesWarningContent": "Chystáte se vybrat všechny záplaty, které obsahují nedoporučené záplaty a mohou způsobit nežádoucí chování."
},
"patchItem": {
"unsupportedDialogText": "Výběrem této záplaty může dojít k chybám.\n\nVerze aplikace: {packageVersion}\nAktuálně podporované verze:\n{supportedVersions}",
"unsupportedPatchVersion": "Pro tuto verzi aplikace není podporována záplata. Chcete-li pokračovat, povolte přepínač experimentálních nastavení."
},
"installerView": {
"widgetTitle": "Instalátor",
"installButton": "Instalovat",
"installRootButton": "Instalovat jako root",
"openButton": "Otevřít",
"shareButton": "Sdílet soubor",
"notificationTitle": "ReVanced Manager záplatuje",
"notificationText": "Klepnutím se vrátíte do instalátoru",
"shareApkMenuOption": "Sdílet APK",
"exportApkMenuOption": "Exportovat APK",
"shareLogMenuOption": "Sdílet záznam",
"installErrorDialogTitle": "Chyba",
"installErrorDialogText1": "Root instalace není možná při výběru aktuálních záplat.\nZnovu záplatujte aplikaci nebo zvolte non-root instalaci.",
"installErrorDialogText2": "Non-root instalace není možná s vybranými záplaty.\nZnova záplatujte vaší aplikaci, nebo zvolte root instalaci, jestli máte zařízení s rootem.",
"installErrorDialogText3": "Root instalace není možná, protože původní APK byla vybrána z uložiště.\nVyberte nainstalovanou aplikaci nebo zvolte non-root instalaci.",
"noExit": "Instalační program je stále spuštěn, nelze ukončit..."
},
"settingsView": {
"widgetTitle": "Nastavení",
"appearanceSectionTitle": "Vzhled",
"teamSectionTitle": "Tým",
"infoSectionTitle": "Info",
"advancedSectionTitle": "Pokročilé",
"logsSectionTitle": "Logy",
"darkThemeLabel": "Tmavý motiv",
"darkThemeHint": "Vítejte na temné straně",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Vychutnejte si zážitek blíže k vašemu zařízení",
"languageLabel": "Jazyk",
"englishOption": "Angličtina",
"sourcesLabel": "Zdroje",
"sourcesLabelHint": "Konfigurace vlastních zdrojů",
"orgPatchesLabel": "Organizace záplat",
"sourcesPatchesLabel": "Zdroj záplat",
"orgIntegrationsLabel": "Autor integrace",
"sourcesIntegrationsLabel": "Zdroj integrace",
"sourcesResetDialogTitle": "Obnovit",
"sourcesResetDialogText": "Jste si jisti, že chcete obnovit vlastní zdroje na jejich výchozí hodnoty?",
"apiURLResetDialogText": "Jste si jisti, že chcete resetovat API URL na výchozí hodnotu?",
"contributorsLabel": "Přispěvatelé",
"contributorsHint": "Seznam přispěvatelů ReVanced",
"logsLabel": "Logy",
"logsHint": "Sdílet logy správce",
"apiURLLabel": "API URL",
"apiURLHint": "Konfigurace vlastního API URL",
"selectApiURL": "API URL",
"experimentalPatchesLabel": "Podpora experimentálních záplat",
"experimentalPatchesHint": "Povolit použití nepodporovaných záplat v jakékoli verzi aplikace",
"enabledExperimentalPatches": "Podpora experimentálních záplat",
"exportSectionTitle": "Import a export",
"aboutLabel": "O aplikaci",
"snackbarMessage": "Zkopírováno do schránky",
"sentryLabel": "Log Sentry",
"sentryHint": "Odeslat anonymní protokoly, které nám pomohou zlepšit ReVanced Manager",
"restartAppForChanges": "Pro aplikování změn restartuj aplikaci",
"deleteKeystoreLabel": "Vymazat úložiště klíčů",
"deleteKeystoreHint": "Smazat úložiště klíčů používané k podpisu aplikace",
"deletedKeystore": "Úložiště klíčů bylo smazáno",
"deleteTempDirLabel": "Odstranit dočasné soubory",
"deleteTempDirHint": "Odstranit nepoužité dočasné soubory",
"deletedTempDir": "Dočasné soubory byly smazány",
"exportPatchesLabel": "Exportovat vybrané záplaty",
"exportPatchesHint": "Exportovat výběr záplat do souboru JSON",
"exportedPatches": "Výběr záplat exportován",
"noExportFileFound": "Žádné záplaty k exportu",
"importPatchesLabel": "Načíst výběr záplat",
"importPatchesHint": "Importovat výběr záplat ze souboru JSON",
"importedPatches": "Výběr záplat importován",
"resetStoredPatchesLabel": "Resetovat záplaty",
"resetStoredPatchesHint": "Resetovat výběr uložených záplat",
"resetStoredPatches": "Výběr záplat byl resetován",
"jsonSelectorErrorMessage": "Vybraný JSON soubor nelze použít",
"deleteLogsLabel": "Smazat logy",
"deleteLogsHint": "Odstranit shromážděné logy správce",
"deletedLogs": "Logy smazány"
},
"appInfoView": {
"widgetTitle": "Informace o aplikaci",
"openButton": "Otevřít",
"uninstallButton": "Odinstalovat",
"patchButton": "Záplatovat",
"unpatchButton": "Odebrat záplaty",
"unpatchDialogText": "Jste si jisti, že chcete odzáplatovat tuto aplikaci?",
"rootDialogTitle": "Chyba",
"rootDialogText": "Aplikace byla nainstalována s oprávněním superuser, ale aktuálně ReVanced Manager nemá žádná oprávnění.\nProsím nejprve udělte oprávnění superuser.",
"packageNameLabel": "Název balíčku",
"originalPackageNameLabel": "Původní název souboru",
"installTypeLabel": "Typ instalace",
"rootTypeLabel": "Root",
"nonRootTypeLabel": "Non-root",
"patchedDateLabel": "Datum záplaty",
"patchedDateHint": "{date} v {time}",
"appliedPatchesLabel": "Použité záplaty",
"appliedPatchesHint": "{quantity} použitých záplat",
"updateNotImplemented": "Tato funkce ještě není implementována"
},
"contributorsView": {
"widgetTitle": "Přispěvatelé",
"patcherContributors": "Zobrazit přispěvatele",
"patchesContributors": "Zobrazit přispěvatele",
"integrationsContributors": "Přispěvatelé integrace",
"cliContributors": "Přispěvatelé CLI",
"managerContributors": "Přispěvatelé správce"
}
}

298
assets/i18n/da_DK.i18n.json Executable file
View File

@ -0,0 +1,298 @@
{
"okButton": "OK",
"cancelButton": "Afbryd",
"dismissButton": "Luk",
"quitButton": "Luk",
"updateButton": "Opdatér",
"suggested": "Foreslået: ${version}",
"yesButton": "Ja",
"noButton": "Nej",
"warning": "Advarsel",
"notice": "Bemærkning",
"noShowAgain": "Vis ikke igen",
"add": "Tilføj",
"remove": "Fjern",
"showChangelogButton": "Vis ændringslog",
"showUpdateButton": "Vis opdatering",
"navigationView": {
"dashboardTab": "Oversigt",
"patcherTab": "Patcher",
"settingsTab": "Indstillinger"
},
"homeView": {
"refreshSuccess": "Opdatering succesfuldt",
"widgetTitle": "Oversigt",
"updatesSubtitle": "Opdateringer",
"lastPatchedAppSubtitle": "Sidste lappet app",
"patchedSubtitle": "Installerede apps",
"changeLaterSubtitle": "Du kan ændre dette i indstillingerne senere.",
"noSavedAppFound": "Ingen app fundet",
"noInstallations": "Ingen patchede apps installeret",
"installUpdate": "Fortsæt med at installere opdateringen?",
"updateSheetTitle": "Opdater ReVanced Manager",
"updateDialogTitle": "Ny opdatering tilgængelig",
"updatePatchesSheetTitle": "Opdater ReVanced Patches",
"updateChangelogTitle": "Ændringslog",
"updateDialogText": "En ny opdatering er tilgængelig for ${file}.\n\nDen installerede version er ${version}.",
"downloadConsentDialogTitle": "Download nødvendige filer?",
"downloadConsentDialogText": "ReVanced Manager har brug for at downloade nødvendige filer for at fungere korrekt.",
"downloadConsentDialogText2": "Dette vil forbinde dig til ${url}.",
"downloadingMessage": "Henter opdatering...",
"downloadedMessage": "Opdatering downloadet",
"installingMessage": "Installerer opdatering...",
"errorDownloadMessage": "Opdatering kan ikke hentes",
"errorInstallMessage": "Opdatering kunne ikke installeres",
"noConnection": "Ingen internetforbindelse"
},
"applicationItem": {
"infoButton": "Information"
},
"latestCommitCard": {
"loadingLabel": "Indlæser...",
"timeagoLabel": "${time} siden"
},
"patcherView": {
"widgetTitle": "Patcher",
"patchButton": "Patch",
"incompatibleArchWarningDialogText": "Patching på denne arkitektur understøttes endnu ikke og kan mislykkes. Fortsæt alligevel?",
"removedPatchesWarningDialogText": "Fjernede rettelser siden sidste gang du lappede denne app:\n\n${patches}\n\n${newPatches}Fortsæt alligevel?",
"addedPatchesDialogText": "Tilføjet rettelser siden sidste gang du lappede denne app:\n\n${addedPatches}\n\n",
"requiredOptionDialogText": "Nogle patch muligheder skal indstilles."
},
"appSelectorCard": {
"widgetTitle": "Vælg en app",
"widgetTitleSelected": "Valgte app",
"widgetSubtitle": "Ingen app valgt",
"noAppsLabel": "Ingen applikationer fundet",
"anyVersion": "Enhver version"
},
"patchSelectorCard": {
"widgetTitle": "Vælg patches",
"widgetTitleSelected": "Valgte patches",
"widgetSubtitle": "Vælg først en applikation",
"widgetEmptySubtitle": "Ingen patches valgt"
},
"socialMediaCard": {
"widgetTitle": "Sociale medier",
"widgetSubtitle": "Vi er online!"
},
"appSelectorView": {
"viewTitle": "Vælg en app",
"searchBarHint": "Søg efter app",
"storageButton": "Lager",
"selectFromStorageButton": "Vælg fra lager",
"errorMessage": "Kunne ikke bruge valgte applikation",
"downloadToast": "Download-funktionen er ikke tilgængelig endnu",
"requireSuggestedAppVersionDialogText": "Versionen af den valgte app matcher ikke den foreslåede version, som kan føre til uventede problemer. Brug venligst den foreslåede version.\n\nValgt version: ${selected}\nForeslået version: ${suggested}\n\nFor at fortsætte alligevel, deaktiver \"Kræv foreslået app-version\" i indstillingerne.",
"featureNotAvailable": "Funktion ikke implementeret",
"featureNotAvailableText": "Denne app er en split APK og kan kun patches og installeres pålideligt ved montering med root-tilladelser. Du kan dog patche og installere en fuld APK ved at vælge det fra lager."
},
"patchesSelectorView": {
"viewTitle": "Vælg patches",
"searchBarHint": "Søg efter patches",
"universalPatches": "Universelle patches",
"newPatches": "Nye patches",
"patches": "Patches",
"doneButton": "Udført",
"defaultChip": "Standard",
"defaultTooltip": "Vælg alle standard patches",
"noneChip": "Ingen",
"noneTooltip": "Fravælg alle patches",
"loadPatchesSelection": "Indlæs patch valg",
"noSavedPatches": "Ingen gemte patches til den valgte app.\nTryk på Udført for at gemme det aktuelle valg.",
"noPatchesFound": "Ingen patches fundet til den valgte app",
"setRequiredOption": "Nogle patches kræver at indstillingerne er indstillet:\n\n${patches}\n\nAngiv dem før du fortsætter."
},
"patchOptionsView": {
"customValue": "Tilpasset værdi",
"setToNull": "Sæt til nul",
"nullValue": "Denne valgmulighed værdi er i øjeblikket nul",
"viewTitle": "Patch indstillinger",
"saveOptions": "Gem",
"unselectPatch": "Fravælg patch",
"tooltip": "Flere input-indstillinger",
"selectFilePath": "Vælg fil sti",
"selectFolder": "Vælg mappe",
"requiredOption": "Indstilling af denne indstilling er påkrævet",
"unsupportedOption": "Denne indstilling understøttes ikke",
"requiredOptionNull": "Følgende indstillinger skal indstilles:\n\n${options}"
},
"patchItem": {
"unsupportedDialogText": "Valg af denne patch kan medføre patching-fejl.\n\nApp version: ${packageVersion}\nUnderstøttede versioner:\n${supportedVersions}",
"unsupportedPatchVersion": "Patch er ikke understøttet i denne app-version.",
"unsupportedRequiredOption": "Denne patch indeholder en nødvendig mulighed, der ikke understøttes af denne app",
"patchesChangeWarningDialogText": "Det anbefales at bruge standard patchvalg og indstillinger. Ændring af dem kan resultere i uventede problemer.\n\nDu skal aktivere \"Tillad ændring af patchvalg\" i indstillinger, før du ændrer et patchvalg.",
"patchesChangeWarningDialogButton": "Brug standardvalg"
},
"installerView": {
"installType": "Vælg installationstype",
"installTypeDescription": "Vælg den installationstype der skal fortsættes med.",
"installButton": "Installér",
"installRootType": "Montér",
"installNonRootType": "Almindelig",
"warning": "Deaktiver automatiske opdateringer til den patchede app for at undgå uventede problemer.",
"pressBackAgain": "Tryk tilbage igen for at annullere",
"openButton": "Åbn",
"notificationTitle": "ReVanced Manager patcher",
"notificationText": "Tryk for at gå tilbage til installationsprogrammet",
"exportApkButtonTooltip": "Eksporter patched APK",
"exportLogButtonTooltip": "Eksportér log",
"screenshotDetected": "Et skærmbillede er blevet opdaget. Hvis du forsøger at dele loggen, så del venligst en tekstkopi i stedet.\n\nKopier log til udklipsholderen?",
"copiedToClipboard": "Kopierede log til udklipsholder",
"noExit": "Installationen kører stadig, kan ikke afslutte..."
},
"settingsView": {
"widgetTitle": "Indstillinger",
"appearanceSectionTitle": "Udseende",
"teamSectionTitle": "Holdet",
"debugSectionTitle": "Fejlfinding",
"advancedSectionTitle": "Avanceret",
"exportSectionTitle": "Import & eksport",
"dataSectionTitle": "Datakilder",
"themeModeLabel": "App tema",
"systemThemeLabel": "System",
"lightThemeLabel": "Lyst",
"darkThemeLabel": "Mørk tilstand",
"dynamicThemeLabel": "Materiale Dig",
"dynamicThemeHint": "Nyd en oplevelse tættere på din enhed",
"languageLabel": "Sprog",
"languageUpdated": "Sprog opdateret",
"sourcesLabel": "Alternative kilder",
"sourcesLabelHint": "Indstil alternative kilder for ReVanced Patches",
"useAlternativeSources": "Brug alternative kilder",
"useAlternativeSourcesHint": "Brug alternative kilder til ReVanced Patches i stedet for API",
"sourcesResetDialogTitle": "Nulstil",
"sourcesResetDialogText": "Er du sikker på, at du vil nulstille dine kilder til deres standardværdier?",
"apiURLResetDialogText": "Er du sikker på, at du vil nulstille API URL til dens standardværdi?",
"sourcesUpdateNote": "Bemærk: Dette vil automatisk hente ReVanced Patches fra de alternative kilder.\n\nDette vil forbinde dig til den alternative kilde.",
"apiURLLabel": "API URL",
"apiURLHint": "Konfigurer API-URL'en til ReVanced Manager",
"selectApiURL": "API URL",
"orgPatchesLabel": "Organisation for Patches",
"sourcesPatchesLabel": "Kilde til Patches",
"contributorsLabel": "Medvirkende",
"contributorsHint": "En liste over medvirkende til ReVanced",
"logsLabel": "Del logs",
"logsHint": "Del ReVanced Manager logs",
"enablePatchesSelectionLabel": "Tillad skift af patch valg",
"enablePatchesSelectionHint": "Forhindrer ikke valg eller fravalg af patches",
"enablePatchesSelectionWarningText": "Ændring af valg af patches kan forårsage uventede problemer.\n\nAktiver alligevel?",
"disablePatchesSelectionWarningText": "Du er ved at deaktivere ændring af valg af patches.\nStandard valg af patches vil blive gendannet.\n\nDeaktiver alligevel?",
"autoUpdatePatchesLabel": "Opdatér patches automatisk",
"autoUpdatePatchesHint": "Opdater automatisk patches til den seneste version",
"showUpdateDialogLabel": "Vis opdateringsdialog",
"showUpdateDialogHint": "Vis en dialog når en ny opdatering er tilgængelig",
"universalPatchesLabel": "Vis universelle patches",
"universalPatchesHint": "Vis alle apps og universelle patches (kan forsinke listen over apps)",
"lastPatchedAppLabel": "Gem lappet app",
"lastPatchedAppHint": "Gem den sidste patch til installation eller eksport senere",
"versionCompatibilityCheckLabel": "Versions kompatibilitetskontrol",
"versionCompatibilityCheckHint": "Forhindre valg af patches der ikke er kompatible med den valgte app-version",
"requireSuggestedAppVersionLabel": "Kræv foreslået app-version",
"requireSuggestedAppVersionHint": "Undgå at vælge en app med en version der ikke er den foreslåede",
"requireSuggestedAppVersionDialogText": "Hvis du vælger en app der ikke er den foreslåede version kan det forårsage uventede problemer. \n\nVil du fortsætte alligevel?",
"aboutLabel": "Om",
"snackbarMessage": "Kopieret til udklipsholder",
"restartAppForChanges": "Genstart appen for at anvende ændringer",
"deleteTempDirLabel": "Slet midlertidige filer",
"deleteTempDirHint": "Slet ubrugte midlertidige filer",
"deletedTempDir": "Midlertidige filer slettet",
"exportSettingsLabel": "Eksporter indstillinger",
"exportSettingsHint": "Eksporter indstillinger til en JSON-fil",
"exportedSettings": "Indstillinger eksporteret",
"importSettingsLabel": "Importer indstillinger",
"importSettingsHint": "Importer indstillinger fra en JSON-fil",
"importedSettings": "Indstillinger importeret",
"exportPatchesLabel": "Eksportér patch valg",
"exportPatchesHint": "Eksportér patch valg til en JSON- fil",
"exportedPatches": "Patch valg eksporteret",
"noExportFileFound": "Ingen patch valg at eksportere",
"importPatchesLabel": "Importér patch valg",
"importPatchesHint": "Importer patch valg fra en JSON fil",
"importedPatches": "Patch valg importeret",
"resetStoredPatchesLabel": "Nulstil patch valg",
"resetStoredPatchesHint": "Nulstil det gemte patch valg",
"resetStoredPatchesDialogTitle": "Nulstil patch valg?",
"resetStoredPatchesDialogText": "Standard valg af patches vil blive gendannet.",
"resetStoredPatches": "Patch valg er blevet nulstillet",
"resetStoredOptionsLabel": "Nulstil patch indstillinger",
"resetStoredOptionsHint": "Nulstil alle patch indstillinger",
"resetStoredOptionsDialogTitle": "Nulstil patch indstillinger?",
"resetStoredOptionsDialogText": "Nulstilling af patch indstillinger vil fjerne alle gemte indstillinger.",
"resetStoredOptions": "Indstillinger er blevet nulstillet",
"deleteLogsLabel": "Ryd loggen",
"deleteLogsHint": "Slet indsamlede logs for ReVanced Manager",
"deletedLogs": "Logfiler slettet",
"regenerateKeystoreLabel": "Regenerér keystore",
"regenerateKeystoreHint": "Regenerér keystore der bruges til at signere apps",
"regenerateKeystoreDialogTitle": "Regenerér keystore?",
"regenerateKeystoreDialogText": "Patchede apps signeret med den gamle keystore vil ikke længere kunne opdateres.",
"regeneratedKeystore": "Keystore regenereret",
"exportKeystoreLabel": "Eksportér keystore",
"exportKeystoreHint": "Eksportér keystore som bruges til at signere apps",
"exportedKeystore": "Keystore eksporteret",
"noKeystoreExportFileFound": "Ingen keystore at eksportere",
"importKeystoreLabel": "Importér keystore",
"importKeystoreHint": "Importér keystore der bruges til at signere apps",
"importedKeystore": "Keystore importeret",
"selectKeystorePassword": "Keystore Adgangskode",
"selectKeystorePasswordHint": "Vælg adgangskode til keystore som bruges til at signere apps",
"jsonSelectorErrorMessage": "Kan ikke bruge den valgte JSON-fil",
"keystoreSelectorErrorMessage": "Kan ikke bruge den valgte keystore fil"
},
"appInfoView": {
"widgetTitle": "Appinfo",
"openButton": "Åbn",
"installButton": "Installér",
"uninstallButton": "Afinstallér",
"unmountButton": "Afmonter",
"exportButton": "Eksporter",
"deleteButton": "Slet",
"rootDialogTitle": "Fejl",
"lastPatchedAppDescription": "Dette er en sikkerhedskopi af appen, der blev sidst lappet.",
"unmountDialogText": "Er du sikker på, at du vil afmontere denne app?",
"uninstallDialogText": "Er du sikker på, at du vil afinstallere denne app?",
"rootDialogText": "App blev installeret med superbruger tilladelser, men i øjeblikket har ReVanced Manager ingen tilladelser.\nGiv superbruger tilladelser først.",
"removeAppDialogTitle": "Slet app?",
"removeAppDialogText": "Er du sikker på du vil slette denne backup?",
"packageNameLabel": "Pakkenavn",
"installTypeLabel": "Installationstype",
"mountTypeLabel": "Montér",
"regularTypeLabel": "Almindelig",
"patchedDateLabel": "Dato for patching",
"appliedPatchesLabel": "Anvendte patches",
"sizeLabel": "Fil størrelse",
"patchedDateHint": "${date} kl. ${time}",
"appliedPatchesHint": "${quantity} anvendte patches",
"updateNotImplemented": "Denne funktion er ikke implementeret endnu"
},
"contributorsView": {
"widgetTitle": "Medvirkende"
},
"installErrorDialog": {
"mount_version_mismatch": "Versionsmatch inkonsistens",
"mount_no_root": "Ingen rod-adgang",
"mount_missing_installation": "Installation ikke fundet",
"status_failure_blocked": "Installation blokeret",
"install_failed_verification_failure": "Bekræftelse mislykkedes",
"status_failure_invalid": "Installation ugyldig",
"install_failed_version_downgrade": "Kan ikke nedgradere",
"status_failure_conflict": "Installation konflikt",
"status_failure_storage": "Problemer med installationslagring",
"status_failure_incompatible": "Installation inkompatibel",
"status_failure_timeout": "Tidsudløb for installation",
"status_unknown": "Installation mislykkedes",
"mount_version_mismatch_description": "Installationen mislykkedes, fordi den installerede app er en anden version end den lappede app.\n\nInstaller versionen af den app, du monterer og prøv igen.",
"mount_no_root_description": "Installationen mislykkedes, fordi root-adgang ikke blev givet.\n\nTildel root-adgang til ReVanced Manager og prøv igen.",
"mount_missing_installation_description": "Installationen mislykkedes, fordi den unpatched app ikke blev installeret på denne enhed for at montere over den.\n\nInstaller den unpatched app før du monterer og prøv igen.",
"status_failure_timeout_description": "Installationen tog for lang tid at afslutte.\n\nVil du prøve igen?",
"status_failure_storage_description": "Installationen mislykkedes på grund af utilstrækkelig opbevaring.\n\nFrigør lidt plads og prøv igen.",
"status_failure_invalid_description": "Installationen mislykkedes på grund af den programrettede app er ugyldig.\n\nAfinstaller app'en og prøv igen?",
"status_failure_incompatible_description": "Appen er inkompatibel med denne enhed.\n\nBrug en APK, der understøttes af denne enhed, og prøv igen.",
"status_failure_conflict_description": "Installationen blev forhindret af en eksisterende installation af appen.\n\nAfinstaller den installerede app og prøv igen?",
"status_failure_blocked_description": "Installationen blev blokeret af ${packageName}.\n\nJuster dine sikkerhedsindstillinger og prøv igen.",
"install_failed_verification_failure_description": "Installationen mislykkedes på grund af et bekræftelsesproblem.\n\nJuster dine sikkerhedsindstillinger og prøv igen.",
"install_failed_version_downgrade_description": "Installationen mislykkedes, fordi den lappede app er en lavere version end den installerede app.\n\nAfinstaller app'en og prøv igen?",
"status_unknown_description": "Installationen mislykkedes på grund af en ukendt årsag. Prøv venligst igen."
}
}

View File

@ -1,196 +0,0 @@
{
"okButton": "OK",
"cancelButton": "Afbryd",
"enabledLabel": "Aktiveret",
"disabledLabel": "Deaktiveret",
"yesButton": "Ja",
"noButton": "Nej",
"warning": "Advarsel",
"navigationView": {
"dashboardTab": "Oversigt",
"patcherTab": "Patcher",
"settingsTab": "Indstillinger"
},
"homeView": {
"widgetTitle": "Oversigt",
"updatesSubtitle": "Opdateringer",
"patchedSubtitle": "Patchede applikationer",
"updatesAvailable": "Opdateringer tilgængelige",
"noUpdates": "Ingen tilgængelige opdateringer",
"WIP": "Under udvikling...",
"noInstallations": "Ingen patchede apps installeret",
"installed": "Installeret",
"updateDialogTitle": "Opdater Manager",
"updateDialogText": "Er du sikker på, at du vil downloade og opdatere ReVanced Manager?",
"notificationTitle": "Opdatering downloadet",
"notificationText": "Tryk for at installere opdateringen",
"downloadingMessage": "Downloader opdatering...",
"installingMessage": "Installerer opdatering...",
"errorDownloadMessage": "Kunne ikke downloade opdateringen",
"errorInstallMessage": "Kunne ikke installere opdateringen",
"noConnection": "Ingen Internetforbindelse",
"updatesDisabled": "Opdatering af en patchet app er i øjeblikket deaktiveret. Repatch appen igen."
},
"applicationItem": {
"patchButton": "Patch",
"infoButton": "Info",
"changelogLabel": "Ændringslog"
},
"latestCommitCard": {
"loadingLabel": "Indlæser...",
"timeagoLabel": "{time} siden",
"patcherLabel": "Patcher: ",
"managerLabel": "Manager: ",
"updateButton": "Opdater Manager"
},
"patcherView": {
"widgetTitle": "Patcher",
"patchButton": "Patch",
"patchDialogText": "Du har valgt en ressource-patch, og en split APK-installation er blevet opdaget, så patch-fejl kan forekomme.\nEr du sikker på at du vil fortsætte?"
},
"appSelectorCard": {
"widgetTitle": "Vælg en applikation",
"widgetTitleSelected": "Valgt applikation",
"widgetSubtitle": "Ingen applikation valgt",
"noAppsLabel": "Ingen applikationer fundet",
"currentVersion": "Nuværende",
"recommendedVersion": "Anbefalet",
"anyVersion": "enhver"
},
"patchSelectorCard": {
"widgetTitle": "Vælg patches",
"widgetTitleSelected": "Valgte patches",
"widgetSubtitle": "Vælg først en applikation",
"widgetEmptySubtitle": "Ingen patches valgt"
},
"socialMediaCard": {
"widgetTitle": "Sociale medier",
"widgetSubtitle": "Vi er online!"
},
"appSelectorView": {
"viewTitle": "Vælg en applikation",
"searchBarHint": "Søg efter applikationer",
"storageButton": "Lager",
"errorMessage": "Kunne ikke bruge valgte applikation"
},
"patchesSelectorView": {
"viewTitle": "Vælg patches",
"searchBarHint": "Søg efter patches",
"doneButton": "Udført",
"recommended": "Anbefalet",
"all": "Alle",
"none": "Ingen",
"loadPatchesSelection": "Indlæs patches udvælgelse",
"noSavedPatches": "Ingen gemte patches til den valgte app\nTryk på Udført for at gemme det aktuelle valg",
"noPatchesFound": "Ingen patches fundet til den valgte app",
"selectAllPatchesWarningContent": "Du er ved at vælge alle patches, der inkluderer ikke-anbefalede patches, og kan forårsage uønsket adfærd."
},
"patchItem": {
"unsupportedDialogText": "Valg af denne patch kan medføre patching-fejl.\n\nApp version: {packageVersion}\nUnderstøttede versioner:\n{supportedVersions}",
"unsupportedPatchVersion": "Patch er ikke understøttet for denne app-version. Aktivér eksperimentel indstilling i indstillinger for at fortsætte."
},
"installerView": {
"widgetTitle": "Installationsprogram",
"installButton": "Installér",
"installRootButton": "Installér som Root",
"openButton": "Åbn",
"shareButton": "Del fil",
"notificationTitle": "ReVanced Manager patcher",
"notificationText": "Tryk for at gå tilbage til installationsprogrammet",
"shareApkMenuOption": "Del APK",
"exportApkMenuOption": "Eksportér APK",
"shareLogMenuOption": "Del log",
"installErrorDialogTitle": "Fejl",
"installErrorDialogText1": "Root-installation er ikke muligt med de nuværende valgte patches.\nRepatch din app eller vælg ikke-root installation.",
"installErrorDialogText2": "Ikke-root installation er ikke muligt med de nuværende valgte patches.\nRepatch din app eller vælg root-installation hvis du har din enhed rooted.",
"installErrorDialogText3": "Root-installation er ikke muligt, da den oprindelige APK blev valgt fra lager.\nVælg en installeret app eller vælg ikke-root installation.",
"noExit": "Installationen kører stadig, kan ikke afslutte..."
},
"settingsView": {
"widgetTitle": "Indstillinger",
"appearanceSectionTitle": "Udseende",
"teamSectionTitle": "Holdet",
"infoSectionTitle": "Info",
"advancedSectionTitle": "Avanceret",
"logsSectionTitle": "Logfiler",
"darkThemeLabel": "Mørk tilstand",
"darkThemeHint": "Velkommen til den mørke side",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Nyd en oplevelse tættere på din enhed",
"languageLabel": "Sprog",
"englishOption": "Engelsk",
"sourcesLabel": "Kilder",
"sourcesLabelHint": "Konfigurér dine brugerdefinerede kilder",
"orgPatchesLabel": "Organisation for Patches",
"sourcesPatchesLabel": "Kilde til Patches",
"orgIntegrationsLabel": "Organisation for Integrationer",
"sourcesIntegrationsLabel": "Kilde til Integrationer",
"sourcesResetDialogTitle": "Nulstil",
"sourcesResetDialogText": "Er du sikker på, at du vil nulstille brugerdefinerede kilder til deres standardværdier?",
"apiURLResetDialogText": "Er du sikker på, at du vil nulstille API URL til dens standardværdi?",
"contributorsLabel": "Medvirkende",
"contributorsHint": "En liste over medvirkende til ReVanced",
"logsLabel": "Logfiler",
"logsHint": "Del Manager's logfiler",
"apiURLLabel": "API URL",
"apiURLHint": "Konfigurer din brugerdefineret API URL",
"selectApiURL": "API URL",
"experimentalPatchesLabel": "Understøttelse af eksperimentelle patches",
"experimentalPatchesHint": "Aktiver brugen af ikke-understøttede patches i enhver app version",
"enabledExperimentalPatches": "Understøttelse af eksperimentelle patches aktiveret",
"exportSectionTitle": "Import & eksport",
"aboutLabel": "Om",
"snackbarMessage": "Kopieret til udklipsholder",
"sentryLabel": "Sentry logning",
"sentryHint": "Send anonyme logfiler for at hjælpe os med at forbedre ReVanced Manager",
"restartAppForChanges": "Genstart appen for at anvende ændringer",
"deleteKeystoreLabel": "Slet keystore",
"deleteKeystoreHint": "Slet keystore der bruges til at signere appen",
"deletedKeystore": "Keystore slettet",
"deleteTempDirLabel": "Slet midlertidige filer",
"deleteTempDirHint": "Slet de ubrugte midlertidige filer",
"deletedTempDir": "Midlertidige filer slettet",
"exportPatchesLabel": "Eksportér valgte patches",
"exportPatchesHint": "Eksportér valgte patches til en JSON-fil",
"exportedPatches": "Valgte patches eksporteret",
"noExportFileFound": "Ingen patches valgt til eksport",
"importPatchesLabel": "Importér valgte patches",
"importPatchesHint": "Importér valgte patches fra en JSON-fil",
"importedPatches": "Valgte patches importeret",
"resetStoredPatchesLabel": "Nulstil patches",
"resetStoredPatchesHint": "Nulstil den gemte patches udvælgelse",
"resetStoredPatches": "Patches udvægelse er blevet nulstillet",
"jsonSelectorErrorMessage": "Kan ikke bruge den valgte JSON-fil",
"deleteLogsLabel": "Slet logfiler",
"deleteLogsHint": "Slet indsamlede manager-logfiler",
"deletedLogs": "Logfiler slettet"
},
"appInfoView": {
"widgetTitle": "Appinfo",
"openButton": "Åbn",
"uninstallButton": "Afinstallér",
"patchButton": "Patch",
"unpatchButton": "Unpatch",
"unpatchDialogText": "Er du sikker på du vil unpatche denne app?",
"rootDialogTitle": "Fejl",
"rootDialogText": "App blev installeret med superbruger tilladelser, men i øjeblikket har ReVanced Manager ingen tilladelser.\nGiv superbruger tilladelser først.",
"packageNameLabel": "Pakkenavn",
"originalPackageNameLabel": "Oprindeligt pakkenavn",
"installTypeLabel": "Installationstype",
"rootTypeLabel": "Root",
"nonRootTypeLabel": "Ikke-root",
"patchedDateLabel": "Dato for patching",
"patchedDateHint": "{date} kl. {time}",
"appliedPatchesLabel": "Anvendte patches",
"appliedPatchesHint": "{quantity} anvendte patches",
"updateNotImplemented": "Denne funktion er ikke implementeret endnu"
},
"contributorsView": {
"widgetTitle": "Medvirkende",
"patcherContributors": "Patcher bidragere",
"patchesContributors": "Patches bidragere",
"integrationsContributors": "Integrationer bidragere",
"cliContributors": "CLI bidragere",
"managerContributors": "Manager bidragere"
}
}

298
assets/i18n/de_DE.i18n.json Executable file
View File

@ -0,0 +1,298 @@
{
"okButton": "OK",
"cancelButton": "Abbrechen",
"dismissButton": "Verwerfen",
"quitButton": "Verlassen",
"updateButton": "Aktualisieren",
"suggested": "Empfohlen: ${version}",
"yesButton": "Ja",
"noButton": "Nein",
"warning": "Warnung",
"notice": "Hinweis",
"noShowAgain": "Nicht erneut anzeigen",
"add": "Hinzufügen",
"remove": "Entfernen",
"showChangelogButton": "Änderungsprotokoll anzeigen",
"showUpdateButton": "Update anzeigen",
"navigationView": {
"dashboardTab": "Übersicht",
"patcherTab": "Patcher",
"settingsTab": "Einstellungen"
},
"homeView": {
"refreshSuccess": "Erfolgreich aktualisiert",
"widgetTitle": "Übersicht",
"updatesSubtitle": "Aktualisierungen",
"lastPatchedAppSubtitle": "Letzte gepatchte App",
"patchedSubtitle": "Installierte Apps",
"changeLaterSubtitle": "In den Einstellungen kannst du das später noch ändern.",
"noSavedAppFound": "Keine App gefunden",
"noInstallations": "Keine gepatchten Apps installiert",
"installUpdate": "Mit der Installation des Updates fortfahren?",
"updateSheetTitle": "ReVanced-Manager aktualisieren",
"updateDialogTitle": "Neues Update verfügbar",
"updatePatchesSheetTitle": "ReVanced-Patches aktualisieren",
"updateChangelogTitle": "Änderungsverlauf",
"updateDialogText": "Es ist ein neues Update für ${file} verfügbar.\n\nDie derzeit installierte Version ist ${version}.",
"downloadConsentDialogTitle": "Benötigte Dateien herunterladen?",
"downloadConsentDialogText": "Damit ReVanced-Manager ordnungsgemäß funktioniert, müssen notwendige Dateien heruntergeladen werden.",
"downloadConsentDialogText2": "Dadurch wirst du mit ${url} verbunden.",
"downloadingMessage": "Aktualisierung wird heruntergeladen...",
"downloadedMessage": "Update heruntergeladen",
"installingMessage": "Update wird installiert...",
"errorDownloadMessage": "Aktualisierung konnte nicht heruntergeladen werden",
"errorInstallMessage": "Aktualisierung konnte nicht installiert werden",
"noConnection": "Keine Internetverbindung"
},
"applicationItem": {
"infoButton": "Informationen"
},
"latestCommitCard": {
"loadingLabel": "Lädt...",
"timeagoLabel": "vor ${time}"
},
"patcherView": {
"widgetTitle": "Patcher",
"patchButton": "Patchen",
"incompatibleArchWarningDialogText": "Patches auf dieser Architektur werden noch nicht unterstützt und könnten fehlschlagen. Trotzdem fortfahren?",
"removedPatchesWarningDialogText": "Patches seit dem letzten Mal, dass Sie diese App gepatcht haben, entfernt:\n\n${patches}\n\n${newPatches}Trotzdem fortfahren?",
"addedPatchesDialogText": "Patches seit dem letzten Mal, dass Sie diese App gepatcht haben:\n\n${addedPatches}\n\n",
"requiredOptionDialogText": "Einige Patch-Optionen müssen gesetzt werden."
},
"appSelectorCard": {
"widgetTitle": "App auswählen",
"widgetTitleSelected": "Ausgewählte App",
"widgetSubtitle": "Keine App ausgewählt",
"noAppsLabel": "Keine Apps gefunden",
"anyVersion": "Beliebige Version"
},
"patchSelectorCard": {
"widgetTitle": "Patches auswählen",
"widgetTitleSelected": "Ausgewählte Patches",
"widgetSubtitle": "Wähle zuerst eine App",
"widgetEmptySubtitle": "Keine Patches ausgewählt"
},
"socialMediaCard": {
"widgetTitle": "Soziale Netzwerke",
"widgetSubtitle": "Wir sind online!"
},
"appSelectorView": {
"viewTitle": "App auswählen",
"searchBarHint": "App suchen",
"storageButton": "Speicher",
"selectFromStorageButton": "Aus Speicher auswählen",
"errorMessage": "Ausgewählte App kann nicht verwendet werden",
"downloadToast": "Die Download-Funktion ist noch nicht verfügbar",
"requireSuggestedAppVersionDialogText": "Die gewählte Version der App stimmt nicht mit der empfohlenen Version überein. Bitte wähle die App aus, die der empfohlenen Version entspricht.\n\nAusgewählte Version: v${selected}\nEmpfohlene Version: v${suggested}\n\nUm trotzdem fortzufahren, deaktiviere „Empfohlene App-Version erforderlich“ in den Einstellungen.",
"featureNotAvailable": "Funktion ist nicht implementiert",
"featureNotAvailableText": "Diese App ist eine Split-APK und kann nur mittels Root-Berechtigungen verlässlich gepatcht und installiert werden. Du kannst jedoch eine Komplett-APK patchen und installieren, indem du sie aus dem Speicher auswählst."
},
"patchesSelectorView": {
"viewTitle": "Patches auswählen",
"searchBarHint": "Patches suchen",
"universalPatches": "Universelle Patches",
"newPatches": "Neue Patches",
"patches": "Patches",
"doneButton": "Fertig",
"defaultChip": "Standard",
"defaultTooltip": "Alle Standard Patches auswählen",
"noneChip": "Keine",
"noneTooltip": "Alle Patches abwählen",
"loadPatchesSelection": "Patchauswahl laden",
"noSavedPatches": "Keine gespeicherten Patches für die ausgewählte App. Drücke „Fertig” zum Speichern der aktuellen Auswahl.",
"noPatchesFound": "Keine Patches für die ausgewählte App gefunden",
"setRequiredOption": "Einige Patches benötigen Optionen um gesetzt zu werden:\n\n${patches}\n\nBitte setzen Sie diese bevor Sie fortfahren."
},
"patchOptionsView": {
"customValue": "Benutzerdefinierter Wert",
"setToNull": "Auf Null setzen",
"nullValue": "Dieser Optionswert ist derzeit null",
"viewTitle": "Patch-Optionen",
"saveOptions": "Speichern",
"unselectPatch": "Patch entfernen",
"tooltip": "Weitere Eingabeoptionen",
"selectFilePath": "Dateipfad auswählen",
"selectFolder": "Ordner auswählen",
"requiredOption": "Einstellung dieser Option ist erforderlich",
"unsupportedOption": "Dieser Vorgang ist nicht unterstützt",
"requiredOptionNull": "Die folgenden Optionen müssen gesetzt sein:\n\n${options}"
},
"patchItem": {
"unsupportedDialogText": "Die Auswahl dieses Patches kann zu Fehlern beim Patchen führen.\n\nApp-Version: ${packageVersion}\nUnterstützte Versionen:\n${supportedVersions}",
"unsupportedPatchVersion": "Patch wird für diese App Version nicht unterstützt.",
"unsupportedRequiredOption": "Dieser Patch enthält eine erforderliche Option, die von dieser App nicht unterstützt wird",
"patchesChangeWarningDialogText": "Es wird empfohlen, die Standard-Patch-Auswahl und -Optionen zu verwenden. Änderungen können zu unerwarteten Problemen führen.\n\nDu musst „Ändern der Patch-Auswahl erlauben“ in den Einstellungen aktivieren, bevor du Patches auswählen kannst.",
"patchesChangeWarningDialogButton": "Als Standard-Auswahl nutzen"
},
"installerView": {
"installType": "Installationstyp wählen",
"installTypeDescription": "Wähle zum Fortfahren die gewünschte Installationsart aus.",
"installButton": "Installieren",
"installRootType": "Einhängen",
"installNonRootType": "Normal",
"warning": "Deaktiviere automatische Updates für die gepatchte App, um unerwartete Probleme zu vermeiden.",
"pressBackAgain": "Drücke \"Zurück\" noch einmal, um die App zu verlassen",
"openButton": "Öffnen",
"notificationTitle": "ReVanced Manager patcht",
"notificationText": "Tippen, um zum Installer zurückzukehren",
"exportApkButtonTooltip": "Gepatchte APK exportieren",
"exportLogButtonTooltip": "Protokoll exportieren",
"screenshotDetected": "Es wurde ein Screenshot erkannt. Wenn du versuchst, das Log zu teilen, teilst du stattdessen eine Textkopie.\n\nLog in die Zwischenablage kopieren?",
"copiedToClipboard": "Das Protokoll wurde in die Zwischenablage kopiert",
"noExit": "Der Installer wird noch ausgeführt, kann nicht beendet werden..."
},
"settingsView": {
"widgetTitle": "Einstellungen",
"appearanceSectionTitle": "Darstellung",
"teamSectionTitle": "Team",
"debugSectionTitle": "Debuggen",
"advancedSectionTitle": "Erweitert",
"exportSectionTitle": "Import & Export",
"dataSectionTitle": "Datenquellen",
"themeModeLabel": "Erscheinungsbild",
"systemThemeLabel": "System",
"lightThemeLabel": "Hell",
"darkThemeLabel": "Dunkel",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Genieße ein Erlebnis näher an deinem Gerät",
"languageLabel": "Sprache",
"languageUpdated": "Sprache aktualisiert",
"sourcesLabel": "Alternative Quellen",
"sourcesLabelHint": "Konfigurieren Sie die alternativen Quellen für überarbeitete Patches",
"useAlternativeSources": "Benutze alternative Quellen",
"useAlternativeSourcesHint": "Verwende alternative Quellen für überarbeitete Patches anstelle der API",
"sourcesResetDialogTitle": "Zurücksetzen",
"sourcesResetDialogText": "Bist du dir sicher, dass du die benutzerdefinierten Quellen auf ihre Standardwerte zurücksetzen möchtest?",
"apiURLResetDialogText": "Bist du dir sicher, dass du die API-URL auf ihren Standardwert zurücksetzen möchtest?",
"sourcesUpdateNote": "Hinweis: Dies wird automatisch ReVanced Patches von den alternativen Quellen herunterladen.\n\nDies verbindet dich mit der alternativen Quelle.",
"apiURLLabel": "API-URL",
"apiURLHint": "Konfiguriere die API URL von ReVanced Manager",
"selectApiURL": "API-URL",
"orgPatchesLabel": "Patches Organisation",
"sourcesPatchesLabel": "Patches Quelle",
"contributorsLabel": "Mitwirkende",
"contributorsHint": "Eine Liste der Mitwirkenden von ReVanced",
"logsLabel": "Logs teilen",
"logsHint": "ReVanced Manager Logs teilen",
"enablePatchesSelectionLabel": "Ändern der Patch-Auswahl erlauben",
"enablePatchesSelectionHint": "Patches aktivieren oder deaktivieren nicht verhindern",
"enablePatchesSelectionWarningText": "Ändern der Auswahl der Patches kann zu unerwarteten Problemen führen.\n\nTrotzdem aktivieren?",
"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",
"showUpdateDialogLabel": "Update-Dialog anzeigen",
"showUpdateDialogHint": "Dialog anzeigen, wenn ein neues Update verfügbar ist",
"universalPatchesLabel": "Universelle Patches zeigen",
"universalPatchesHint": "Alle Apps und Universal Patches anzeigen (kann die App Liste verlangsamen)",
"lastPatchedAppLabel": "Gepatchte App speichern",
"lastPatchedAppHint": "Speichere den letzten Patch zum Installieren oder Exportieren später",
"versionCompatibilityCheckLabel": "Versionskompatibilitätskontrolle",
"versionCompatibilityCheckHint": "Verhindert die Auswahl von Patches, die nicht mit der gewählten App-Version kompatibel sind",
"requireSuggestedAppVersionLabel": "Empfohlene App-Version erforderlich",
"requireSuggestedAppVersionHint": "Verhindere die Auswahl einer App mit einer nicht empfohlenen Version",
"requireSuggestedAppVersionDialogText": "Das Auswählen einer App, die nicht der empfohlenen Version entspricht, kann zu unerwarteten Problemen führen.\n\nMöchten Sie trotzdem fortfahren?",
"aboutLabel": "Über",
"snackbarMessage": "In die Zwischenablage kopiert",
"restartAppForChanges": "Starte die App neu, um die Änderungen zu übernehmen",
"deleteTempDirLabel": "Lösche temporäre Dateien",
"deleteTempDirHint": "Unbenutzte temporäre Dateien löschen",
"deletedTempDir": "Temporäre Dateien wurden gelöscht",
"exportSettingsLabel": "Export-Einstellungen",
"exportSettingsHint": "Einstellungen in eine JSON-Datei exportieren",
"exportedSettings": "Einstellungen exportiert",
"importSettingsLabel": "Import-Einstellungen",
"importSettingsHint": "Einstellungen aus einer JSON-Datei importieren",
"importedSettings": "Einstellungen importiert",
"exportPatchesLabel": "Patchauswahl exportieren",
"exportPatchesHint": "Patch-Auswahl in eine JSON-Datei exportieren",
"exportedPatches": "Patch-Auswahl exportiert",
"noExportFileFound": "Keine Patch-Auswahl zum Exportieren",
"importPatchesLabel": "Patch-Auswahl importieren",
"importPatchesHint": "Patch-Auswahl aus einer JSON-Datei importieren",
"importedPatches": "Patch Auswahl importiert",
"resetStoredPatchesLabel": "Patch-Auswahl zurücksetzen",
"resetStoredPatchesHint": "Gespeicherte Patch-Auswahl zurücksetzen",
"resetStoredPatchesDialogTitle": "Patch-Auswahl zurücksetzen?",
"resetStoredPatchesDialogText": "Die Standardauswahl der Patches wird wiederhergestellt.",
"resetStoredPatches": "Patch-Auswahl wurde zurückgesetzt",
"resetStoredOptionsLabel": "Patch-Optionen zurücksetzen",
"resetStoredOptionsHint": "Alle Patch-Optionen zurücksetzen",
"resetStoredOptionsDialogTitle": "Patch-Optionen zurücksetzen?",
"resetStoredOptionsDialogText": "Beim Zurücksetzen der Patch-Optionen werden alle gespeicherten Optionen entfernt.",
"resetStoredOptions": "Einstellungen wurden zurückgesetzt",
"deleteLogsLabel": "Protokolle löschen",
"deleteLogsHint": "Gesammelte ReVanced Manager Logs löschen",
"deletedLogs": "Protokolle gelöscht",
"regenerateKeystoreLabel": "Keystore neu generieren",
"regenerateKeystoreHint": "Den zur Signierung von Apps verwendeten Keystore neu generieren",
"regenerateKeystoreDialogTitle": "Keystore neu generieren?",
"regenerateKeystoreDialogText": "Gepatchte Apps, die mit dem alten Keystore signiert sind, können nicht mehr aktualisiert werden.",
"regeneratedKeystore": "Keystore regeneriert",
"exportKeystoreLabel": "Keystore exportieren",
"exportKeystoreHint": "Den Keystore exportieren, mit dem Apps signiert werden",
"exportedKeystore": "Keystore exportiert",
"noKeystoreExportFileFound": "Kein Keystore zum Exportieren",
"importKeystoreLabel": "Keystore importieren",
"importKeystoreHint": "Importiere einen Keystore zur Signierung von Apps",
"importedKeystore": "Keystore importiert",
"selectKeystorePassword": "Keystore-Passwort",
"selectKeystorePasswordHint": "Keystore-Passwort zur Signierung von Apps auswählen",
"jsonSelectorErrorMessage": "Ausgewählte JSON-Datei kann nicht verwendet werden",
"keystoreSelectorErrorMessage": "Ausgewählte Keystore-Datei kann nicht verwendet werden"
},
"appInfoView": {
"widgetTitle": "App Info",
"openButton": "Öffnen",
"installButton": "Installieren",
"uninstallButton": "Deinstallieren",
"unmountButton": "Unmounten",
"exportButton": "Exportieren",
"deleteButton": "Löschen",
"rootDialogTitle": "Fehler",
"lastPatchedAppDescription": "Dies ist ein Backup der App, die zuletzt gepatcht wurde.",
"unmountDialogText": "Bist du sicher, dass du die Patches dieser App entfernen möchtest?",
"uninstallDialogText": "Bist du sicher, dass du diese App deinstallieren möchtest?",
"rootDialogText": "Die App wurde mit Superuser-Berechtigungen installiert, aber derzeit hat ReVanced Manager keine Berechtigungen.\nBitte erteile zuerst Superuser-Berechtigungen.",
"removeAppDialogTitle": "App löschen?",
"removeAppDialogText": "Bist du sicher, dass du diese Sicherung löschen möchtest?",
"packageNameLabel": "Paketname",
"installTypeLabel": "Installationsart",
"mountTypeLabel": "Einhängen",
"regularTypeLabel": "Normal",
"patchedDateLabel": "Patch-Datum",
"appliedPatchesLabel": "Angewandte Patches",
"sizeLabel": "Größe der Datei",
"patchedDateHint": "${date} um ${time}",
"appliedPatchesHint": "${quantity} angewandte Patches",
"updateNotImplemented": "Diese Funktion ist noch nicht implementiert"
},
"contributorsView": {
"widgetTitle": "Mitwirkende"
},
"installErrorDialog": {
"mount_version_mismatch": "Versionskonflikt",
"mount_no_root": "Kein Root-Zugriff",
"mount_missing_installation": "Installation nicht gefunden",
"status_failure_blocked": "Installation blockiert",
"install_failed_verification_failure": "Überprüfung fehlgeschlagen",
"status_failure_invalid": "Installation fehlgeschlagen",
"install_failed_version_downgrade": "Downgrade nicht möglich",
"status_failure_conflict": "Installationskonflikt",
"status_failure_storage": "Installations-Speicher Problem",
"status_failure_incompatible": "Installation ist nicht kompatibel",
"status_failure_timeout": "Installations-Timeout",
"status_unknown": "Installation fehlgeschlagen",
"mount_version_mismatch_description": "Die Installation ist fehlgeschlagen, da die installierte App eine andere Version hat als die gepatchte App.\n\nInstallieren Sie die Version der App, die Sie mounten, und versuchen Sie es erneut.",
"mount_no_root_description": "ReVanced ManagerDie Installation ist fehlgeschlagen, da der Root-Zugriff nicht gewährt wurde.\n\nGewähre Root-Zugriff für ReVanced Manager und versuche es erneut.",
"mount_missing_installation_description": "The installation failed due to the unpatched app not being installed on this device in order to mount over it.\n\nInstall the unpatched app before mounting and try again.",
"status_failure_timeout_description": "Die Installation hat zu lange gedauert.\n\nMöchten Sie es erneut versuchen?",
"status_failure_storage_description": "Die Installation ist aufgrund unzureichenden Speichers fehlgeschlagen.\n\nSchaffe etwas Platz und versuche es erneut.",
"status_failure_invalid_description": "Die Installation ist fehlgeschlagen, da die gepatchte App ungültig ist.\n\nDie App deinstallieren und erneut versuchen?",
"status_failure_incompatible_description": "Die App ist mit diesem Gerät nicht kompatibel.\n\nVerwenden Sie eine APK, die von diesem Gerät unterstützt wird, und versuchen Sie es erneut.",
"status_failure_conflict_description": "Die Installation wurde durch eine bestehende Installation der App verhindert.\n\nDie installierte App deinstallieren und erneut versuchen?",
"status_failure_blocked_description": "Die Installation wurde von ${packageName} blockiert.\n\nPassen Sie Ihre Sicherheitseinstellungen an und versuchen Sie es erneut.",
"install_failed_verification_failure_description": "Die Installation ist aufgrund eines Verifizierungsproblems fehlgeschlagen.\n\nPassen Sie Ihre Sicherheitseinstellungen an und versuchen Sie es erneut.",
"install_failed_version_downgrade_description": "Die Installation ist fehlgeschlagen, da die gepatchte App eine niedrigere Version als die installierte App ist.\n\nDie App deinstallieren und erneut versuchen?",
"status_unknown_description": "Die Installation ist aus einem unbekannten Grund fehlgeschlagen. Bitte versuchen Sie es erneut."
}
}

View File

@ -1,196 +0,0 @@
{
"okButton": "OK",
"cancelButton": "Abbrechen",
"enabledLabel": "Aktiviert",
"disabledLabel": "Deaktiviert",
"yesButton": "Ja",
"noButton": "Nein",
"warning": "Warnung",
"navigationView": {
"dashboardTab": "Übersicht",
"patcherTab": "Patcher",
"settingsTab": "Einstellungen"
},
"homeView": {
"widgetTitle": "Übersicht",
"updatesSubtitle": "Aktualisierungen",
"patchedSubtitle": "Gepatchte Apps",
"updatesAvailable": "Aktualisierungen verfügbar",
"noUpdates": "Keine Aktualisierungen verfügbar",
"WIP": "In Bearbeitung...",
"noInstallations": "Keine gepatchten Apps installiert",
"installed": "Installiert",
"updateDialogTitle": "Manager aktualisieren",
"updateDialogText": "Bist du sicher, dass du den ReVanced Manager herunterladen und aktualisieren möchtest?",
"notificationTitle": "Update heruntergeladen",
"notificationText": "Tippen um Update zu installieren",
"downloadingMessage": "Aktualisierung wird heruntergeladen...",
"installingMessage": "Aktualisierung wird installiert...",
"errorDownloadMessage": "Aktualisierung konnte nicht heruntergeladen werden",
"errorInstallMessage": "Aktualisierung konnte nicht installiert werden",
"noConnection": "Keine Internetverbindung",
"updatesDisabled": "Das Aktualisieren einer gepatchten App ist derzeit deaktiviert. Patche die App erneut."
},
"applicationItem": {
"patchButton": "Patchen",
"infoButton": "Info",
"changelogLabel": "Änderungsverlauf"
},
"latestCommitCard": {
"loadingLabel": "Lädt...",
"timeagoLabel": "vor {time}",
"patcherLabel": "Patcher: ",
"managerLabel": "Manager: ",
"updateButton": "Manager aktualisieren"
},
"patcherView": {
"widgetTitle": "Patcher",
"patchButton": "Patchen",
"patchDialogText": "Du hast einen Patch ausgewählt und eine geteilte APK-Installation wurde entdeckt, daher können Fehler beim Patchen auftreten.\nMöchtest du wirklich die geteilte APK patchen?"
},
"appSelectorCard": {
"widgetTitle": "Wähle eine App aus",
"widgetTitleSelected": "Ausgewählte App",
"widgetSubtitle": "Keine App ausgewählt",
"noAppsLabel": "Keine Apps gefunden",
"currentVersion": "Aktuell",
"recommendedVersion": "Empfohlen",
"anyVersion": "beliebig"
},
"patchSelectorCard": {
"widgetTitle": "Patches auswählen",
"widgetTitleSelected": "Ausgewählte Patches",
"widgetSubtitle": "Wähle zuerst eine App",
"widgetEmptySubtitle": "Keine Patches ausgewählt"
},
"socialMediaCard": {
"widgetTitle": "Soziale Netzwerke",
"widgetSubtitle": "Wir sind online!"
},
"appSelectorView": {
"viewTitle": "Wähle eine App aus",
"searchBarHint": "Apps suchen",
"storageButton": "Speicher",
"errorMessage": "Ausgewählte App kann nicht verwendet werden"
},
"patchesSelectorView": {
"viewTitle": "Patches auswählen",
"searchBarHint": "Patches suchen",
"doneButton": "Fertig",
"recommended": "Empfohlen",
"all": "Alle",
"none": "Keine",
"loadPatchesSelection": "Patchauswahl laden",
"noSavedPatches": "Keine gespeicherten Patches für die ausgewählte App\nDrücken Sie Fertig, um die aktuelle Auswahl zu speichern",
"noPatchesFound": "Keine Patches für die ausgewählte App gefunden",
"selectAllPatchesWarningContent": "Du bist dabei alle Patches auszuwählen, dies beinhaltet nicht empfohlene Patches und kann zu unerwünschtem Verhalten führen."
},
"patchItem": {
"unsupportedDialogText": "Die Auswahl dieses Patches kann zu Fehlern beim Patchen führen.\n\nApp-Version: {packageVersion}\nUnterstützte Versionen:\n{supportedVersions}",
"unsupportedPatchVersion": "Patch wird für diese App-Version nicht unterstützt. Aktiviere das experimentelle Feature in den Einstellungen, um fortzufahren."
},
"installerView": {
"widgetTitle": "Installer",
"installButton": "Installieren",
"installRootButton": "Als Root installieren",
"openButton": "Öffnen",
"shareButton": "Datei teilen",
"notificationTitle": "ReVanced Manager patcht",
"notificationText": "Tippen, um zum Installer zurückzukehren",
"shareApkMenuOption": "APK teilen",
"exportApkMenuOption": "APK exportieren",
"shareLogMenuOption": "Protokoll teilen",
"installErrorDialogTitle": "Fehler",
"installErrorDialogText1": "Installation per Root ist mit den aktuell ausgewählten Patches nicht möglich.\nPatche die App erneut oder installiere sie ohne Root.",
"installErrorDialogText2": "Installation ohne Root-Rechte ist mit den aktuell ausgewählten Patches nicht möglich.\nPatche die App erneut oder installiere sie mit Root-Rechten, wenn dein Gerät gerooted ist.",
"installErrorDialogText3": "Root-Installation ist nicht möglich, da die ursprüngliche APK aus dem Speicher ausgewählt wurde.\nWähle eine installierte App oder wähle die Installation ohne Root.",
"noExit": "Der Installer wird noch ausgeführt, kann nicht beendet werden..."
},
"settingsView": {
"widgetTitle": "Einstellungen",
"appearanceSectionTitle": "Darstellung",
"teamSectionTitle": "Team",
"infoSectionTitle": "Informationen",
"advancedSectionTitle": "Erweitert",
"logsSectionTitle": "Logs",
"darkThemeLabel": "Dunkler Modus",
"darkThemeHint": "Willkommen auf der dunklen Seite",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Genieße ein Erlebnis näher an deinem Gerät",
"languageLabel": "Sprache",
"englishOption": "Englisch",
"sourcesLabel": "Quellen",
"sourcesLabelHint": "Konfiguriere deine eigenen Quellen",
"orgPatchesLabel": "Patches Organisation",
"sourcesPatchesLabel": "Quelle für Patche",
"orgIntegrationsLabel": "Integrationen Organisation",
"sourcesIntegrationsLabel": "Quelle für Integrationen",
"sourcesResetDialogTitle": "Zurücksetzen",
"sourcesResetDialogText": "Bist du dir sicher, dass du die benutzerdefinierten Quellen auf ihre Standardwerte zurücksetzen möchtest?",
"apiURLResetDialogText": "Bist du dir sicher, dass du die API-URL auf ihren Standardwert zurücksetzen möchtest?",
"contributorsLabel": "Mitwirkende",
"contributorsHint": "Eine Liste der Mitwirkenden von ReVanced",
"logsLabel": "Protokolle",
"logsHint": "Manager-Protokolle teilen",
"apiURLLabel": "API-URL",
"apiURLHint": "Konfiguriere deine eigene API-URL",
"selectApiURL": "API URL",
"experimentalPatchesLabel": "Experimentelle Patches aktiviert",
"experimentalPatchesHint": "Erlaubt die Benutzung von nicht unterstützten Patches mit jeder App Version",
"enabledExperimentalPatches": "Experimentelle Patches Unterstützung aktiviert",
"exportSectionTitle": "Import und Export",
"aboutLabel": "Über",
"snackbarMessage": "In die Zwischenablage kopiert",
"sentryLabel": "Sentry-Protokollierung",
"sentryHint": "Sende anonyme Protokolle, um den ReVanced Manager zu verbessern",
"restartAppForChanges": "Starte die App neu um die Änderungen zu übernehmen",
"deleteKeystoreLabel": "Den Schlüsselspeicher löschen",
"deleteKeystoreHint": "Löschen des Schlüsselspeichers, der zum Signieren der Anwendung verwendet wurde",
"deletedKeystore": "Schlüsselspeicher gelöscht",
"deleteTempDirLabel": "Lösche temporäre Dateien",
"deleteTempDirHint": "Unbenutzte temporäre Dateien löschen",
"deletedTempDir": "Temporäre Dateien gelöscht",
"exportPatchesLabel": "Patchauswahl exportieren",
"exportPatchesHint": "Patchauswahl als JSON-Datei exportieren",
"exportedPatches": "Patchauswahl exportiert",
"noExportFileFound": "Keine Patches zum Exportieren ausgewählt",
"importPatchesLabel": "Patchauswahl importieren",
"importPatchesHint": "Patchauswahl aus JSON-Datei importieren",
"importedPatches": "Patchauswahl importiert",
"resetStoredPatchesLabel": "Patches zurücksetzen",
"resetStoredPatchesHint": "Gespeicherte Auswahl der Patches zurücksetzen",
"resetStoredPatches": "Patchauswahl wurde zurückgesetzt",
"jsonSelectorErrorMessage": "Ausgewählte JSON-Datei kann nicht verwendet werden",
"deleteLogsLabel": "Logs löschen",
"deleteLogsHint": "Lösche gesammelte Logs von dem Manager",
"deletedLogs": "Logs gelöscht"
},
"appInfoView": {
"widgetTitle": "App Info",
"openButton": "Öffnen",
"uninstallButton": "Deinstallieren",
"patchButton": "Patchen",
"unpatchButton": "Patches entfernen",
"unpatchDialogText": "Bist du sicher, dass du die Patches dieser App entfernen möchtest?",
"rootDialogTitle": "Fehler",
"rootDialogText": "Die App wurde mit Superuser-Berechtigungen installiert, aber derzeit hat ReVanced Manager keine Berechtigungen.\nBitte erteile zuerst Superuser-Berechtigungen.",
"packageNameLabel": "Paketname",
"originalPackageNameLabel": "Ursprünglicher Paketname",
"installTypeLabel": "Installationsart",
"rootTypeLabel": "Root",
"nonRootTypeLabel": "Nicht gerooted",
"patchedDateLabel": "Patch-Datum",
"patchedDateHint": "{date} um {time}",
"appliedPatchesLabel": "Angewandte Patches",
"appliedPatchesHint": "{quantity} angewandte Patches",
"updateNotImplemented": "Diese Funktion ist noch nicht implementiert"
},
"contributorsView": {
"widgetTitle": "Mitwirkende",
"patcherContributors": "Patcher Mitwirkende",
"patchesContributors": "Patches Mitwirkende",
"integrationsContributors": "Integrations Mitwirkende",
"cliContributors": "CLI mitwirkende",
"managerContributors": "Manager mitwirkende"
}
}

298
assets/i18n/el_GR.i18n.json Executable file
View File

@ -0,0 +1,298 @@
{
"okButton": "Εντάξει",
"cancelButton": "Ακύρωση",
"dismissButton": "Απόρριψη",
"quitButton": "Έξοδος",
"updateButton": "Ενημέρωση",
"suggested": "Προτεινόμενη έκδοση: ${version}",
"yesButton": "Ναι",
"noButton": "Όχι",
"warning": "Προειδοποίηση",
"notice": "Σημείωση",
"noShowAgain": "Να μην ξαναεμφανιστεί",
"add": "Προσθήκη",
"remove": "Αφαίρεση",
"showChangelogButton": "Εμφάνιση αλλαγών",
"showUpdateButton": "Εμφάνιση ενημέρωσης",
"navigationView": {
"dashboardTab": "Πίνακας Ελέγχου",
"patcherTab": "Τροποποιητής",
"settingsTab": "Ρυθμίσεις"
},
"homeView": {
"refreshSuccess": "Ανανεώθηκε επιτυχώς",
"widgetTitle": "Πίνακας Ελέγχου",
"updatesSubtitle": "Ενημερώσεις",
"lastPatchedAppSubtitle": "Τελευταία τροποποιημένη εφαρμογή",
"patchedSubtitle": "Εγκατεστημένες εφαρμογές",
"changeLaterSubtitle": "Μπορείτε να το αλλάξετε αργότερα στις ρυθμίσεις.",
"noSavedAppFound": "Δε βρέθηκε εφαρμογή",
"noInstallations": "Δεν έχουν εγκατασταθεί τροποποιημένες εφαρμογές",
"installUpdate": "Συνέχεια για εγκατάσταση της ενημέρωσης;",
"updateSheetTitle": "Ενημέρωση του ReVanced Manager",
"updateDialogTitle": "Υπάρχει διαθέσιμη ενημέρωση",
"updatePatchesSheetTitle": "Ενημέρωση τροποποιήσεων ReVanced",
"updateChangelogTitle": "Τι νέο υπάρχει",
"updateDialogText": "Υπάρχει διαθέσιμη μια νέα ενημέρωση για το ${file}.\n\nΗ τρέχουσα εγκατεστημένη έκδοση είναι η ${version}.",
"downloadConsentDialogTitle": "Λήψη των απαραίτητων αρχείων;",
"downloadConsentDialogText": "Το ReVanced Manager πρέπει να κατεβάσει τα απαραίτητα αρχεία για να λειτουργήσει σωστά.",
"downloadConsentDialogText2": "Αυτό θα σας συνδέσει με το ${url}.",
"downloadingMessage": "Λήψη ενημέρωσης...",
"downloadedMessage": "Η λήψη της ενημέρωσης ολοκληρώθηκε",
"installingMessage": "Εγκατάσταση ενημέρωσης...",
"errorDownloadMessage": "Αδυναμία λήψης ενημέρωσης",
"errorInstallMessage": "Αδυναμία εγκατάστασης ενημέρωσης",
"noConnection": "Δεν υπάρχει σύνδεση στο διαδίκτυο"
},
"applicationItem": {
"infoButton": "Πληροφορίες"
},
"latestCommitCard": {
"loadingLabel": "Φόρτωση...",
"timeagoLabel": "${time} πριν"
},
"patcherView": {
"widgetTitle": "Τροποποιητής",
"patchButton": "Τροποποίηση",
"incompatibleArchWarningDialogText": "Η διαδικασία της τροποποίησης δεν υποστηρίζεται προς το παρόν σε συσκευές της συγκεκριμένης αρχιτεκτονικής και μπορεί να αποτύχει. Συνέχεια παρόλα αυτά;",
"removedPatchesWarningDialogText": "Από την τελευταία φορά που τροποποιήσατε αυτή την εφαρμογή, έχουν αφαιρεθεί οι εξής τροποποιήσεις:\n\n${patches}\n\n${newPatches}Συνέχεια παρ' όλα αυτά;",
"addedPatchesDialogText": "Από την τελευταία φορά που τροποποιήσατε αυτή την εφαρμογή, έχουν προστεθεί οι εξής τροποποιήσεις:\n\n${addedPatches}",
"requiredOptionDialogText": "Κάποιες επιλογές τροποποιήσεων πρέπει να οριστούν."
},
"appSelectorCard": {
"widgetTitle": "Επιλέξτε μία εφαρμογή",
"widgetTitleSelected": "Επιλεγμένη εφαρμογή",
"widgetSubtitle": "Δεν έχει επιλεγεί κάποια εφαρμογή",
"noAppsLabel": "Δε βρέθηκαν εφαρμογές",
"anyVersion": "Οποιαδήποτε"
},
"patchSelectorCard": {
"widgetTitle": "Επιλέξτε τροποποιήσεις",
"widgetTitleSelected": "Επιλεγμένες τροποποιήσεις",
"widgetSubtitle": "Επιλέξτε πρώτα μια εφαρμογή",
"widgetEmptySubtitle": "Δεν επιλέχθηκαν τροποποιήσεις"
},
"socialMediaCard": {
"widgetTitle": "Κοινωνικά Δίκτυα",
"widgetSubtitle": "Είμαστε ενεργοί!"
},
"appSelectorView": {
"viewTitle": "Επιλέξτε μία εφαρμογή",
"searchBarHint": "Αναζήτηση εφαρμογής",
"storageButton": "Αποθηκευτικός χώρος",
"selectFromStorageButton": "Επιλογή από αποθηκευτικό χώρο",
"errorMessage": "Αδυναμία χρήσης της επιλεγμένης εφαρμογής",
"downloadToast": "Η λειτουργία λήψης δεν είναι ακόμη διαθέσιμη",
"requireSuggestedAppVersionDialogText": "Η έκδοση της εφαρμογής που επιλέξατε δεν ταιριάζει με την προτεινόμενη έκδοση αυτό μπορεί να προκαλέσει ανεπιθύμητα θέματα. Παρακαλώ επιλέξτε την εφαρμογή που ταιριάζει με την προτεινόμενη έκδοση.\n\nΕπιλεγμένη έκδοση: ${selected}\nΠροτεινόμενη έκδοση: ${suggested}\n\nΓια να προχωρήσετε ούτως ή άλλως, απενεργοποιήστε την επιλογή «Να απαιτείται η προτεινόμενη έκδοση εφαρμογής» στις ρυθμίσεις.",
"featureNotAvailable": "Η δυνατότητα δεν έχει υλοποιηθεί",
"featureNotAvailableText": "Αυτή η εφαρμογή είναι εγκατεστημένη ως split APK και μπορεί να τροποποιηθεί και να εγκατασταθεί αξιόπιστα μόνο μέσω προσάρτησης με δικαιώματα root. Ωστόσο, μπορείτε να τροποποιήσετε και να εγκαταστήσετε ένα πλήρες APK κανονικά επιλέγοντάς το από τον χώρο αποθήκευσης."
},
"patchesSelectorView": {
"viewTitle": "Επιλέξτε τροποποιήσεις",
"searchBarHint": "Αναζήτηση τροποποιήσεων",
"universalPatches": "Γενικευμένες τροποποιήσεις",
"newPatches": "Νέες τροποποιήσεις",
"patches": "Τροποποιήσεις",
"doneButton": "Τέλος",
"defaultChip": "Προεπιλογές",
"defaultTooltip": "Επιλέξτε όλες τις προεπιλεγμένες τροποποιήσεις",
"noneChip": "Καμία",
"noneTooltip": "Αποεπιλέξτε όλες τις τροποποιήσεις",
"loadPatchesSelection": "Φόρτωση επιλεγμένων τροποποιήσεων",
"noSavedPatches": "Δεν υπάρχουν αποθηκευμένες τροποποιήσεις για την εφαρμογή που επιλέξατε.\nΠατήστε «Τέλος» για να αποθηκεύσετε τις τωρινές επιλογές σας.",
"noPatchesFound": "Δε βρέθηκαν τροποποιήσεις για την επιλεγμένη εφαρμογή",
"setRequiredOption": "Κάποιες τροποποιήσεις απαιτούν να ορίζονται κάποιες επιλογές:\n\n${patches}\n\nΠαρακαλώ ορίστε τις επιλογές πρώτου συνεχίσετε."
},
"patchOptionsView": {
"customValue": "Προσαρμοσμένη τιμή",
"setToNull": "Ορισμός κενής τιμής",
"nullValue": "Η τιμή της επιλογής είναι κενή",
"viewTitle": "Επιλογές τροποποιήσεων",
"saveOptions": "Αποθήκευση",
"unselectPatch": "Αποεπιλέξτε τροποποιήσεις",
"tooltip": "Περισσότερες επιλογές εισόδου",
"selectFilePath": "Επιλογή τοποθεσίας αρχείου",
"selectFolder": "Επιλογή φακέλου",
"requiredOption": "Απαιτείται ρύθμιση γι' αυτήν την επιλογή",
"unsupportedOption": "Αυτή η επιλογή δεν υποστηρίζεται",
"requiredOptionNull": "Πρέπει να οριστούν οι παρακάτω επιλογές:\n\n${options}"
},
"patchItem": {
"unsupportedDialogText": "Η επιλογή αυτής της τροποποίησης μπορεί να επιφέρει σφάλματα τροποποίησης.\n\nΈκδοση εφαρμογής: ${packageVersion}\nΥποστηριζόμενες εκδόσεις: ${supportedVersions}",
"unsupportedPatchVersion": "Η τροποποίηση δεν υποστηρίζεται σε αυτήν την έκδοση της εφαρμογής.",
"unsupportedRequiredOption": "Αυτή η τροποποίηση περιέχει μια αναγκαστική επιλογή η οποία δεν υποστηρίζεται από αυτήν την εφαρμογή",
"patchesChangeWarningDialogText": "Συνιστάται να χρησιμοποιείτε τις προεπιλεγμένες τροποποιήσεις και επιλογές τους. Η αλλαγή τους μπορεί να οδηγήσει σε μη αναμενόμενα θέματα.\n\nΘα πρέπει να ενεργοποιήσετε το «Να επιτρέπονται αλλαγές επιλογών τροποποιήσεων» στις ρυθμίσεις προτού αλλάξετε οτιδήποτε.",
"patchesChangeWarningDialogButton": "Χρήση προεπιλεγμένων επιλογών"
},
"installerView": {
"installType": "Επιλέξτε τύπο εγκατάστασης",
"installTypeDescription": "Συνεχίστε επιλέγοντας τον τύπο εγκατάστασης.",
"installButton": "Εγκατάσταση",
"installRootType": "Προσάρτηση",
"installNonRootType": "Κανονική",
"warning": "Απενεργοποίηση αυτόματων ενημερώσεων για την τροποποιημένη εφαρμογή για την αποφυγή απροσδόκητων προβλημάτων.",
"pressBackAgain": "Πατήστε πίσω ξανά για ακύρωση",
"openButton": "Άνοιγμα",
"notificationTitle": "Πραγματοποιείται τροποποίηση μέσω ReVanced Manager",
"notificationText": "Πατήστε για να επιστρέψετε στο πρόγραμμα εγκατάστασης",
"exportApkButtonTooltip": "Εξαγωγή τροποποιημένου αρχείου APK",
"exportLogButtonTooltip": "Εξαγωγή αρχείου καταγραφής",
"screenshotDetected": "Ανιχνεύθηκε στιγμιότυπο οθόνης. Αν προσπαθείτε να κοινοποιήσετε το αρχείο καταγραφής, παρακαλούμε να κοινοποιήσετε αντίγραφο κειμένου αντ' αυτού.\n\nΑντιγραφή αρχείου καταγραφής στο πρόχειρο;",
"copiedToClipboard": "Το αρχείο καταγραφής αντιγράφηκε στο πρόχειρο",
"noExit": "Το πρόγραμμα εγκατάστασης εκτελείται ακόμη, αδυναμία εξόδου..."
},
"settingsView": {
"widgetTitle": "Ρυθμίσεις",
"appearanceSectionTitle": "Εμφάνιση",
"teamSectionTitle": "Ομάδα",
"debugSectionTitle": "Εντοπισμός σφαλμάτων",
"advancedSectionTitle": "Για προχωρημένους",
"exportSectionTitle": "Εισαγωγή & εξαγωγή",
"dataSectionTitle": "Πηγές δεδομένων",
"themeModeLabel": "Θέμα εφαρμογής",
"systemThemeLabel": "Σύστημα",
"lightThemeLabel": "Ανοιχτόχρωμο",
"darkThemeLabel": "Σκουρόχρωμο",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Εμφάνιση που ταιριάζει με τη δική σας συσκευή",
"languageLabel": "Γλώσσα",
"languageUpdated": "Η γλώσσα ενημερώθηκε",
"sourcesLabel": "Εναλλακτικές πηγές",
"sourcesLabelHint": "Ρυθμίστε τις εναλλακτικές πηγές για τις τροποποιήσεις ReVanced",
"useAlternativeSources": "Χρήση εναλλακτικών πηγών",
"useAlternativeSourcesHint": "Χρήση εναλλακτικών πηγών για τις τροποποιήσεις ReVanced αντί του API",
"sourcesResetDialogTitle": "Επαναφορά",
"sourcesResetDialogText": "Είστε βέβαιοι ότι θέλετε να επαναφέρετε τις πηγές σας στις προεπιλεγμένες τιμές τους;",
"apiURLResetDialogText": "Είστε βέβαιοι ότι θέλετε να επαναφέρετε την API URL σας στην προεπιλεγμένη τιμή της;",
"sourcesUpdateNote": "Σημείωση: Θα γίνεται αυτόματη λήψη των τροποποιήσεων ReVanced από τις εναλλακτικές πηγές.\n\nΟπότε θα συνδέεστε με τις εναλλακτικές πηγές.",
"apiURLLabel": "API URL",
"apiURLHint": "Ρύθμιση διεύθυνσης URL του API του ReVanced Manager",
"selectApiURL": "API URL",
"orgPatchesLabel": "Οργάνωση τροποποιήσεων",
"sourcesPatchesLabel": "Πηγή τροποποιήσεων",
"contributorsLabel": "Συνεισφέροντες",
"contributorsHint": "Λίστα με όσους έχουν συμβάλει στο ReVanced",
"logsLabel": "Κοινοποίηση αρχείων καταγραφής",
"logsHint": "Κοινοποίηση αρχείων καταγραφής του ReVanced Manager",
"enablePatchesSelectionLabel": "Να επιτρέπονται αλλαγές επιλογών τροποποιήσεων",
"enablePatchesSelectionHint": "Να μην εμποδίζονται οι επιλογές τροποποιήσεων",
"enablePatchesSelectionWarningText": "Οι αλλαγές στις προεπιλεγμένες επιλογές τροποποιήσεων ίσως επιφέρουν μη αναμενόμενα προβλήματα.\n\nΕνεργοποίηση παρόλα αυτά;",
"disablePatchesSelectionWarningText": "Πρόκειται να απενεργοποιήσετε τη δυνατότητα αλλαγής των επιλογών τροποποιήσεων.\nΟι προεπιλεγμένες επιλογές τροποποιήσεων θα επαναφερθούν.\n\nΑπενεργοποίηση παρόλα αυτά;",
"autoUpdatePatchesLabel": "Αυτόματες ενημερώσεις τροποποιήσεων",
"autoUpdatePatchesHint": "Αυτόματη ενημέρωση τροποποιήσεων στην τελευταία έκδοση",
"showUpdateDialogLabel": "Εμφάνιση προτροπής για ενημερώσεις",
"showUpdateDialogHint": "Εμφάνιση ειδοποίησης όταν είναι διαθέσιμη κάποια νέα ενημέρωση",
"universalPatchesLabel": "Εμφάνιση γενικευμένων τροποποιήσεων",
"universalPatchesHint": "Εμφάνιση όλων των εφαρμογών και γενικευμένων τροποποιήσεων (ενδέχεται να επιβραδύνει τη φόρτωση λίστας εφαρμογών)",
"lastPatchedAppLabel": "Αποθήκευση τροποποιημένης εφαρμογής",
"lastPatchedAppHint": "Αποθηκεύστε την τελευταία τροποποίηση για εγκατάσταση ή εξαγωγή αργότερα",
"versionCompatibilityCheckLabel": "Έλεγχος συμβατότητας έκδοσης",
"versionCompatibilityCheckHint": "Αποκλεισμός επιλογών τροποποιήσεων που δεν είναι συμβατές με την επιλεγμένη έκδοση εφαρμογής",
"requireSuggestedAppVersionLabel": "Να απαιτείται η προτεινόμενη έκδοση εφαρμογής",
"requireSuggestedAppVersionHint": "Αποκλεισμός επιλογής εκδόσεων εφαρμογών που δεν προτείνονται",
"requireSuggestedAppVersionDialogText": "Η επιλογή μιας εφαρμογής που δεν είναι η προτεινόμενη έκδοση μπορεί να επιφέρει μη αναμενόμενα προβλήματα.\n\nΘέλετε να προχωρήσετε ούτως ή άλλως;",
"aboutLabel": "Σχετικά με",
"snackbarMessage": "Αντιγράφηκε στο πρόχειρο",
"restartAppForChanges": "Επανεκκινήστε την εφαρμογή για να εφαρμόσετε αλλαγές",
"deleteTempDirLabel": "Διαγραφή προσωρινών αρχείων",
"deleteTempDirHint": "Διαγραφή των αχρησιμοποίητων προσωρινών αρχείων",
"deletedTempDir": "Τα προσωρινά αρχεία διαγράφηκαν",
"exportSettingsLabel": "Εξαγωγή ρυθμίσεων",
"exportSettingsHint": "Εξαγωγή ρυθμίσεων σε αρχείο JSON",
"exportedSettings": "Οι ρυθμίσεις εξήχθησαν",
"importSettingsLabel": "Εισαγωγή ρυθμίσεων",
"importSettingsHint": "Εισαγωγή ρυθμίσεων από ένα αρχείο JSON",
"importedSettings": "Οι ρυθμίσεις εισήχθησαν",
"exportPatchesLabel": "Εξαγωγή των επιλεγμένων τροποποιήσεων",
"exportPatchesHint": "Εξαγωγή των επιλεγμένων τροποποιήσεων σε ένα αρχείο JSON",
"exportedPatches": "Η εξαγωγή των επιλεγμένων τροποποιήσεων ολοκληρώθηκε",
"noExportFileFound": "Δεν υπάρχει επιλογή τροποποιήσεων για εξαγωγή",
"importPatchesLabel": "Εισαγωγή των επιλεγμένων τροποποιήσεων",
"importPatchesHint": "Εισαγωγή των επιλεγμένων τροποποιήσεων από ένα αρχείο JSON",
"importedPatches": "Η εισαγωγή των επιλεγμένων τροποποιήσεων ολοκληρώθηκε",
"resetStoredPatchesLabel": "Επαναφορά επιλογών τροποποιήσεων",
"resetStoredPatchesHint": "Επαναφορά των αποθηκευμένων επιλογών τροποποιήσεων",
"resetStoredPatchesDialogTitle": "Επαναφορά επιλογών τροποποιήσεων;",
"resetStoredPatchesDialogText": "Θα επαναφερθούν οι προεπιλεγμένες επιλογές τροποποιήσεων.",
"resetStoredPatches": "Η επαναφορά των επιλεγμένων τροποποιήσεων ολοκληρώθηκε",
"resetStoredOptionsLabel": "Επαναφορά επιλογών τροποποιήσεων",
"resetStoredOptionsHint": "Επαναφορά όλων των επιλογών τροποποιήσεων",
"resetStoredOptionsDialogTitle": "Επαναφορά επιλογών τροποποιήσεων;",
"resetStoredOptionsDialogText": "Η επαναφορά των επιλογών τροποποιήσεων θα αφαιρέσει όλες τις αποθηκευμένες επιλογές.",
"resetStoredOptions": "Οι επιλογές επαναφέρθηκαν",
"deleteLogsLabel": "Εκκαθάριση αρχείων καταγραφής",
"deleteLogsHint": "Διαγραφή των αρχείων καταγραφής που έχει συλλέξει το ReVanced Manager",
"deletedLogs": "Τα αρχεία καταγραφής έχουν διαγραφεί",
"regenerateKeystoreLabel": "Επανέκδοση keystore",
"regenerateKeystoreHint": "Επαναφορά του keystore που χρησιμοποιείται για την υπογραφή των εφαρμογών",
"regenerateKeystoreDialogTitle": "Επανέκδοση του keystore;",
"regenerateKeystoreDialogText": "Οι τροποποιημένες εφαρμογές που είχαν υπογραφεί με το παλιό keystore δε θα μπορούν πλέον να ενημερώνονται.",
"regeneratedKeystore": "Το keystore ανανεώθηκε",
"exportKeystoreLabel": "Εξαγωγή keystore",
"exportKeystoreHint": "Εξάγετε το κλειδί που χρησιμοποιείται για την υπογραφή των εφαρμογών",
"exportedKeystore": "Το κλειδί εξήχθη",
"noKeystoreExportFileFound": "Δεν υπάρχει κλειδί για να εξαχθεί",
"importKeystoreLabel": "Εισαγωγή keystore",
"importKeystoreHint": "Εισάγετε ένα κλειδί που θα χρησιμοποιείται για την υπογραφή εφαρμογών",
"importedKeystore": "Το κλειδί εισήχθη",
"selectKeystorePassword": "Κωδικός Keystore",
"selectKeystorePasswordHint": "Επιλέξτε κωδικό πρόσβασης για το κλειδί που χρησιμοποιείται για την υπογραφή εφαρμογών",
"jsonSelectorErrorMessage": "Αδυναμία χρήσης του επιλεγμένου αρχείου JSON",
"keystoreSelectorErrorMessage": "Αδυναμία χρήσης του επιλεγμένου αρχείου keystore"
},
"appInfoView": {
"widgetTitle": "Πληροφορίες εφαρμογής",
"openButton": "Άνοιγμα",
"installButton": "Εγκατάσταση",
"uninstallButton": "Απεγκατάσταση",
"unmountButton": "Αποπροσάρτηση",
"exportButton": "Εξαγωγή",
"deleteButton": "Διαγραφή",
"rootDialogTitle": "Σφάλμα",
"lastPatchedAppDescription": "Αυτό είναι ένα αντίγραφο ασφαλείας της εφαρμογής που τροποποιήθηκε τελευταία.",
"unmountDialogText": "Είστε βέβαιοι ότι θέλετε να αποπροσαρτήσετε αυτήν την εφαρμογή;",
"uninstallDialogText": "Είστε βέβαιοι ότι θέλετε να απεγκαταστήσετε αυτή την εφαρμογή;",
"rootDialogText": "Η εφαρμογή εγκαταστάθηκε με πρόσβαση root, αλλά αυτή τη στιγμή το ReVanced Manager δεν έχει πρόσβαση root.\nΠαρακαλούμε παραχωρήστε πρόσβαση root.",
"removeAppDialogTitle": "Διαγραφή εφαρμογής;",
"removeAppDialogText": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το αντίγραφο ασφαλείας;",
"packageNameLabel": "Όνομα πακέτου",
"installTypeLabel": "Τύπος εγκατάστασης",
"mountTypeLabel": "Προσάρτηση",
"regularTypeLabel": "Κανονική",
"patchedDateLabel": "Ημερομηνία τροποποίησης",
"appliedPatchesLabel": "Τροποποιήσεις που έχουν εφαρμοστεί",
"sizeLabel": "Μέγεθος αρχείου",
"patchedDateHint": "${date} στις ${time}",
"appliedPatchesHint": "${quantity} εφαρμοσμένες τροποποιήσεις",
"updateNotImplemented": "Αυτή η δυνατότητα δεν είναι ακόμα διαθέσιμη"
},
"contributorsView": {
"widgetTitle": "Συνεισφέροντες"
},
"installErrorDialog": {
"mount_version_mismatch": "Ασυμφωνία έκδοσης",
"mount_no_root": "Δεν υπάρχει πρόσβαση root",
"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": "Η εγκατάσταση απέτυχε διότι δεν παραχωρήθηκε πρόσβαση root.\n\nΠαραχωρήστε πρόσβαση root στο ReVanced 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_version_downgrade_description": "Η εγκατάσταση απέτυχε διότι η τροποποιημένη εφαρμογή είναι χαμηλότερης έκδοσης από την εγκατεστημένη εφαρμογή.\n\nΑπεγκατάσταση εφαρμογής και προσπάθεια ξανά;",
"status_unknown_description": "Η εγκατάσταση απέτυχε για άγνωστο λόγο. Παρακαλούμε δοκιμάστε ξανά."
}
}

View File

@ -1,196 +0,0 @@
{
"okButton": "Εντάξει",
"cancelButton": "Ακύρωση",
"enabledLabel": "Ενεργό",
"disabledLabel": "Ανενεργό",
"yesButton": "Ναι",
"noButton": "Όχι",
"warning": "Προειδοποίηση",
"navigationView": {
"dashboardTab": "Πίνακας Ελέγχου",
"patcherTab": "Τροποποιητής",
"settingsTab": "Ρυθμίσεις"
},
"homeView": {
"widgetTitle": "Πίνακας Ελέγχου",
"updatesSubtitle": "Ενημερώσεις",
"patchedSubtitle": "Τροποποιημένες Εφαρμογές",
"updatesAvailable": "Διαθέσιμες ενημερώσεις",
"noUpdates": "Δεν υπάρχουν διαθέσιμες ενημερώσεις",
"WIP": "Υπό κατασκευή...",
"noInstallations": "Δεν έχουν εγκατασταθεί τροποποιημένες εφαρμογές",
"installed": "Εγκατεστημένες",
"updateDialogTitle": "Ενημέρωση του Manager",
"updateDialogText": "Είστε βέβαιοι ότι θέλετε να κατεβάσετε και να ενημερώσετε το ReVanced Manager;",
"notificationTitle": "Η λήψη της ενημέρωσης ολοκληρώθηκε",
"notificationText": "Πατήστε για την εγκατάσταση της ενημέρωσης",
"downloadingMessage": "Λήψη ενημέρωσης...",
"installingMessage": "Εγκατάσταση ενημέρωσης...",
"errorDownloadMessage": "Αδυναμία λήψης ενημέρωσης",
"errorInstallMessage": "Αδυναμία εγκατάστασης ενημέρωσης",
"noConnection": "Δεν υπάρχει σύνδεση στο διαδίκτυο",
"updatesDisabled": "Η ενημέρωση τροποποιημένης εφαρμογής είναι ανενεργή προς το παρόν. Τροποποιήστε την εφαρμογή εκ νέου."
},
"applicationItem": {
"patchButton": "Τροποποίηση",
"infoButton": "Πληροφορίες",
"changelogLabel": "Τι νέο υπάρχει"
},
"latestCommitCard": {
"loadingLabel": "Φόρτωση...",
"timeagoLabel": "{time} πριν",
"patcherLabel": "Τροποποιητής: ",
"managerLabel": "Manager: ",
"updateButton": "Ενημέρωση του Manager"
},
"patcherView": {
"widgetTitle": "Τροποποιητής",
"patchButton": "Τροποποίηση",
"patchDialogText": "Έχετε επιλέξει κάποια τροποποίηση ενώ έχει εντοπιστεί εγκατάσταση split APK, μπορεί να εμφανιστούν σφάλματα κατά την τροποποίηση.\nΕίστε βέβαιοι ότι θέλετε να προχωρήσετε με την τροποποίηση ενός split base APK;"
},
"appSelectorCard": {
"widgetTitle": "Επιλέξτε μια εφαρμογή",
"widgetTitleSelected": "Επιλεγμένη εφαρμογή",
"widgetSubtitle": "Δεν έχει επιλεχθεί εφαρμογή",
"noAppsLabel": "Δεν βρέθηκαν εφαρμογές",
"currentVersion": "Τρέχουσα",
"recommendedVersion": "Προτεινόμενη",
"anyVersion": "οποιαδήποτε"
},
"patchSelectorCard": {
"widgetTitle": "Επιλέξτε τροποποιήσεις",
"widgetTitleSelected": "Επιλεγμένες τροποποιήσεις",
"widgetSubtitle": "Επιλέξτε πρώτα μια εφαρμογή",
"widgetEmptySubtitle": "Δεν επιλέχθηκαν τροποποιήσεις"
},
"socialMediaCard": {
"widgetTitle": "Κοινωνικά Δίκτυα",
"widgetSubtitle": "Είμαστε ενεργοί!"
},
"appSelectorView": {
"viewTitle": "Επιλέξτε μια εφαρμογή",
"searchBarHint": "Αναζήτηση εφαρμογών",
"storageButton": "Αποθηκευτικός χώρος",
"errorMessage": "Αδυναμία χρήσης της επιλεγμένης εφαρμογής"
},
"patchesSelectorView": {
"viewTitle": "Επιλέξτε τροποποιήσεις",
"searchBarHint": "Αναζήτηση τροποποιήσεων",
"doneButton": "Τέλος",
"recommended": "Προτεινόμενα",
"all": "Όλα",
"none": "Κανένα",
"loadPatchesSelection": "Φόρτωση επιλεγμένων τροποποιήσεων",
"noSavedPatches": "Δεν υπάρχουν αποθηκευμένες τροποποιήσεις για την εφαρμογή που επιλέξατε.\nΠατήστε «Τέλος» για να αποθηκεύσετε τις τωρινές επιλογές σας",
"noPatchesFound": "Δε βρέθηκαν τροποποιήσεις για την επιλεγμένη εφαρμογή",
"selectAllPatchesWarningContent": "Πρόκειται να επιλέξτε όλες τις μη συνιστώμενες τροποποιήσεις, μπορεί να προκληθεί ανεπιθύμητη συμπεριφορά."
},
"patchItem": {
"unsupportedDialogText": "Η επιλογή αυτής της τροποποίησης μπορεί να επιφέρει σφάλματα τροποποίησης.\n\nΈκδοση εφαρμογής: {packageVersion}\nΥποστηριζόμενες εκδόσεις: {supportedVersions}",
"unsupportedPatchVersion": "Η τροποποίηση δεν είναι διαθέσιμη για αυτή την έκδοση της εφαρμογής. Ενεργοποιήστε την «Πειραματική Υποστήριξη Τροποποιήσεων» στις ρυθμίσεις για να συνεχίσετε."
},
"installerView": {
"widgetTitle": "Πρόγραμμα Εγκατάστασης",
"installButton": "Εγκατάσταση",
"installRootButton": "Εγκατάσταση με πρόσβαση root",
"openButton": "Άνοιγμα",
"shareButton": "Κοινοποίηση αρχείου",
"notificationTitle": "Το ReVanced Manager πραγματοποιεί τροποποίηση",
"notificationText": "Πατήστε για να επιστρέψετε στο πρόγραμμα εγκατάστασης",
"shareApkMenuOption": "Κοινοποίηση Αρχείου APK",
"exportApkMenuOption": "Εξαγωγή APK",
"shareLogMenuOption": "Κοινοποίηση αρχείου καταγραφής",
"installErrorDialogTitle": "Σφάλμα",
"installErrorDialogText1": "Η εγκατάσταση με χρήση πρόσβασης root δεν είναι δυνατή με την τρέχουσα επιλογή τροποποιήσεων.\nΤροποποιήστε ξανά την εφαρμογή σας ή επιλέξτε εγκατάσταση χωρίς πρόσβαση root.",
"installErrorDialogText2": "Η εγκατάσταση χωρίς πρόσβαση root δεν είναι δυνατή με την τρέχουσα επιλογή τροποποιήσεων.\nΕπιλέξτε άλλες τροποποιήσεις για την εφαρμογή σας ή επιλέξτε εγκατάσταση με πρόσβαση root αν έχετε πρόσβαση root στη συσκευή σας.",
"installErrorDialogText3": "Η εγκατάσταση με πρόσβαση root δεν είναι δυνατή διότι το αρχικό APK επιλέχθηκε από το χώρο αποθήκευσης.\nΕπιλέξτε μια εγκατεστημένη εφαρμογή ή επιλέξτε εγκατάσταση χωρίς πρόσβαση root.",
"noExit": "Το πρόγραμμα εγκατάστασης εκτελείται ακόμη, αδυναμία εξόδου..."
},
"settingsView": {
"widgetTitle": "Ρυθμίσεις",
"appearanceSectionTitle": "Εμφάνιση",
"teamSectionTitle": "Ομάδα",
"infoSectionTitle": "Πληροφορίες",
"advancedSectionTitle": "Για Προχωρημένους",
"logsSectionTitle": "Αρχεία καταγραφής",
"darkThemeLabel": "Σκουρόχρωμη λειτουργία",
"darkThemeHint": "Καλώς ήλθατε στη σκοτεινή πλευρά",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Εμφάνιση που ταιριάζει με τη δική σας συσκευή",
"languageLabel": "Γλώσσα",
"englishOption": "Αγγλικά",
"sourcesLabel": "Πηγές",
"sourcesLabelHint": "Διαμορφώστε τις δικές σας προσαρμοσμένες πηγές",
"orgPatchesLabel": "Οργάνωση τροποποιήσεων",
"sourcesPatchesLabel": "Πηγή τροποποιήσεων",
"orgIntegrationsLabel": "Οργάνωση ενσωματώσεων",
"sourcesIntegrationsLabel": "Πηγή ενσωματώσεων",
"sourcesResetDialogTitle": "Επαναφορά",
"sourcesResetDialogText": "Είστε βέβαιοι ότι θέλετε να επαναφέρετε τις προσαρμοσμένες πηγές στις προεπιλεγμένες τιμές τους;",
"apiURLResetDialogText": "Είστε βέβαιοι ότι θέλετε να επαναφέρετε το API URL στην προεπιλεγμένη τιμή του;",
"contributorsLabel": "Συνεισφέροντες",
"contributorsHint": "Λίστα με όσους έχουν συμβάλει στο ReVanced",
"logsLabel": "Αρχεία καταγραφής",
"logsHint": "Κοινή χρήση αρχείων καταγραφής του ReVanced Manager",
"apiURLLabel": "API URL",
"apiURLHint": "Διαμορφώστε το δικό σας προσαρμοσμένο API URL",
"selectApiURL": "Διεύθυνση URL API",
"experimentalPatchesLabel": "Πειραματική υποστήριξη τροποποιήσεων",
"experimentalPatchesHint": "Ενεργοποιήστε το για χρήση μη υποστηριζόμενων τροποποιήσεων, ανεξαρτήτως έκδοσης εφαρμογής",
"enabledExperimentalPatches": "Πειραματική υποστήριξη τροποποιήσεων ενεργή",
"exportSectionTitle": "Εισαγωγή & εξαγωγή",
"aboutLabel": "Σχετικά με",
"snackbarMessage": "Αντιγράφηκε στο πρόχειρο",
"sentryLabel": "Αρχεία καταγραφής «Sentry»",
"sentryHint": "Στείλτε ανώνυμα αρχεία καταγραφής για να μας βοηθήσετε να βελτιώσουμε το ReVanced Manager",
"restartAppForChanges": "Επανεκκινήστε την εφαρμογή για να εφαρμόσετε αλλαγές",
"deleteKeystoreLabel": "Διαγραφή κλειδιών",
"deleteKeystoreHint": "Διαγράψτε το κλειδί που χρησιμοποιείται για την υπογραφή της εφαρμογής",
"deletedKeystore": "Το κλειδί διαγράφηκε",
"deleteTempDirLabel": "Διαγραφή προσωρινών αρχείων",
"deleteTempDirHint": "Διαγραφή των αχρησιμοποίητων προσωρινών αρχείων",
"deletedTempDir": "Τα προσωρινά αρχεία διαγράφηκαν",
"exportPatchesLabel": "Εξαγωγή των επιλεγμένων τροποποιήσεων",
"exportPatchesHint": "Εξαγωγή των επιλεγμένων τροποποιήσεων σε ένα αρχείο JSON",
"exportedPatches": "Η εξαγωγή των επιλεγμένων τροποποιήσεων ολοκληρώθηκε",
"noExportFileFound": "Δεν υπάρχει επιλογή τροποποιήσεων για εξαγωγή",
"importPatchesLabel": "Εισαγωγή των επιλεγμένων τροποποιήσεων",
"importPatchesHint": "Εισαγωγή των επιλεγμένων τροποποιήσεων από ένα αρχείο JSON",
"importedPatches": "Η εισαγωγή των επιλεγμένων τροποποιήσεων ολοκληρώθηκε",
"resetStoredPatchesLabel": "Επαναφορά τροποποιήσεων",
"resetStoredPatchesHint": "Επαναφορά των αποθηκευμένων επιλογών τροποποιήσεων",
"resetStoredPatches": "Η επαναφορά των επιλεγμένων τροποποιήσεων ολοκληρώθηκε",
"jsonSelectorErrorMessage": "Αδυναμία χρήσης του συγκεκριμένου αρχείου JSON",
"deleteLogsLabel": "Διαγραφή αρχείων καταγραφής",
"deleteLogsHint": "Διαγραφή των αρχείων καταγραφής που έχει συλλέξει το ReVanced Manager",
"deletedLogs": "Τα αρχεία καταγραφής έχουν διαγραφεί"
},
"appInfoView": {
"widgetTitle": "Πληροφορίες εφαρμογής",
"openButton": "Άνοιγμα",
"uninstallButton": "Απεγκατάσταση",
"patchButton": "Τροποποίηση",
"unpatchButton": "Κατάργηση Τροποποιήσεων",
"unpatchDialogText": "Είστε βέβαιοι ότι θέλετε να καταργήσετε τις τροποποιήσεις για αυτήν την εφαρμογή;",
"rootDialogTitle": "Σφάλμα",
"rootDialogText": "Η εφαρμογή εγκαταστάθηκε με πρόσβαση root, αλλά αυτή τη στιγμή το ReVanced Manager δεν έχει πρόσβαση root.\nΠαρακαλώ παραχωρήστε πρόσβαση root.",
"packageNameLabel": "Όνομα πακέτου",
"originalPackageNameLabel": "Αρχικό όνομα πακέτου",
"installTypeLabel": "Τύπος εγκατάστασης",
"rootTypeLabel": "Μέσω root",
"nonRootTypeLabel": "Χωρίς root",
"patchedDateLabel": "Ημερομηνία τροποποίησης",
"patchedDateHint": "{date} στις {time}",
"appliedPatchesLabel": "Τροποποιήσεις που έχουν εφαρμοστεί",
"appliedPatchesHint": "{quantity} εφαρμοσμένες τροποποιήσεις",
"updateNotImplemented": "Αυτή η δυνατότητα δεν είναι ακόμα διαθέσιμη"
},
"contributorsView": {
"widgetTitle": "Συνεισφέροντες",
"patcherContributors": "Συνεισφέροντες του τροποποιητή",
"patchesContributors": "Συνεισφέροντες των τροποποιήσεων",
"integrationsContributors": "Συνεισφέροντες των ενσωματώσεων",
"cliContributors": "Συνεισφέροντες του CLI",
"managerContributors": "Συνεισφέροντες του Manager"
}
}

301
assets/i18n/en.i18n.json Executable file
View File

@ -0,0 +1,301 @@
{
"okButton": "OK",
"cancelButton": "Cancel",
"dismissButton": "Dismiss",
"quitButton": "Quit",
"updateButton": "Update",
"suggested": "Suggested: ${version}",
"yesButton": "Yes",
"noButton": "No",
"warning": "Warning",
"notice": "Notice",
"noShowAgain": "Don't show this again",
"add": "Add",
"remove": "Remove",
"showChangelogButton": "Show changelog",
"showUpdateButton": "Show update",
"navigationView": {
"dashboardTab": "Dashboard",
"patcherTab": "Patcher",
"settingsTab": "Settings"
},
"homeView": {
"refreshSuccess": "Refreshed successfully",
"widgetTitle": "Dashboard",
"updatesSubtitle": "Updates",
"lastPatchedAppSubtitle": "Last patched app",
"patchedSubtitle": "Installed apps",
"changeLaterSubtitle": "You can change this in the settings at a later time.",
"noSavedAppFound": "No app found",
"noInstallations": "No patched apps installed",
"installUpdate": "Continue to install the update?",
"updateSheetTitle": "Update ReVanced Manager",
"updateDialogTitle": "New update available",
"updatePatchesSheetTitle": "Update ReVanced Patches",
"updateChangelogTitle": "Changelog",
"updateDialogText": "A new update is available for ${file}.\n\nThe currently installed version is ${version}.",
"downloadConsentDialogTitle": "Download necessary files?",
"downloadConsentDialogText": "ReVanced Manager needs to download necessary files to work properly.",
"downloadConsentDialogText2": "This will connect you to ${url}.",
"downloadingMessage": "Downloading update...",
"downloadedMessage": "Update downloaded",
"installingMessage": "Installing update...",
"errorDownloadMessage": "Unable to download update",
"errorInstallMessage": "Unable to install update",
"noConnection": "No internet connection"
},
"applicationItem": {
"infoButton": "Info"
},
"latestCommitCard": {
"loadingLabel": "Loading...",
"timeagoLabel": "${time} ago"
},
"patcherView": {
"widgetTitle": "Patcher",
"patchButton": "Patch",
"incompatibleArchWarningDialogText": "Patching on this architecture is not yet supported and might fail. Continue anyways?",
"removedPatchesWarningDialogText": "Removed patches since the last time you patched this app:\n\n${patches}\n\n${newPatches}Continue anyways?",
"addedPatchesDialogText": "Added patches since the last time you patched this app:\n\n${addedPatches}\n\n",
"requiredOptionDialogText": "Some patch options have to be set."
},
"appSelectorCard": {
"widgetTitle": "Select an app",
"widgetTitleSelected": "Selected app",
"widgetSubtitle": "No app selected",
"noAppsLabel": "No applications found",
"anyVersion": "Any version"
},
"patchSelectorCard": {
"widgetTitle": "Select patches",
"widgetTitleSelected": "Selected patches",
"widgetSubtitle": "Select an application first",
"widgetEmptySubtitle": "No patches selected"
},
"socialMediaCard": {
"widgetTitle": "Socials",
"widgetSubtitle": "We are online!"
},
"appSelectorView": {
"viewTitle": "Select an app",
"searchBarHint": "Search app",
"storageButton": "Storage",
"selectFromStorageButton": "Select from storage",
"errorMessage": "Unable to use selected application",
"downloadToast": "Download function is not available yet",
"requireSuggestedAppVersionDialogText": "The version of the app you have selected does not match the suggested version which can lead to unexpected issues. Please use the suggested version.\n\nSelected version: ${selected}\nSuggested version: ${suggested}\n\nTo continue anyway, disable \"Require suggested app version\" in the settings.",
"featureNotAvailable": "Feature not implemented",
"featureNotAvailableText": "This app is a split APK and can only be patched and installed reliably by mounting with root permissions. However, you can patch and install a full APK by selecting it from storage."
},
"patchesSelectorView": {
"viewTitle": "Select patches",
"searchBarHint": "Search patches",
"universalPatches": "Universal patches",
"newPatches": "New patches",
"patches": "Patches",
"doneButton": "Done",
"defaultChip": "Default",
"defaultTooltip": "Select all default patches",
"noneChip": "None",
"noneTooltip": "Deselect all patches",
"loadPatchesSelection": "Load patch selection",
"noSavedPatches": "No saved patch selection for the selected app.\nPress Done to save the current selection.",
"noPatchesFound": "No patches found for the selected app",
"setRequiredOption": "Some patches require options to be set:\n\n${patches}\n\nPlease set them before continuing."
},
"patchOptionsView": {
"customValue": "Custom value",
"setToNull": "Set to null",
"nullValue": "This option value is currently null",
"viewTitle": "Patch options",
"saveOptions": "Save",
"unselectPatch": "Unselect patch",
"tooltip": "More input options",
"selectFilePath": "Select file path",
"selectFolder": "Select folder",
"requiredOption": "Setting this option is required",
"unsupportedOption": "This option is not supported",
"requiredOptionNull": "The following options have to be set:\n\n${options}"
},
"patchItem": {
"unsupportedDialogText": "Selecting this patch may result in patching errors.\n\nApp version: ${packageVersion}\nSupported versions:\n${supportedVersions}",
"unsupportedPatchVersion": "Patch is not supported for this app version.",
"unsupportedRequiredOption": "This patch contains a required option that is not supported by this app",
"patchesChangeWarningDialogText": "It is recommended to use the default patch selection and options. Changing them may result in unexpected issues.\n\nYou'll need to turn on \"Allow changing patch selection\" in the settings before changing any patch selection.",
"patchesChangeWarningDialogButton": "Use default selection"
},
"installerView": {
"installType": "Select install type",
"installTypeDescription": "Select the installation type to continue with.",
"installButton": "Install",
"installRootType": "Mount",
"installNonRootType": "Regular",
"warning": "Disable auto updates for the patched app to avoid unexpected issues.",
"pressBackAgain": "Press back again to cancel",
"openButton": "Open",
"notificationTitle": "ReVanced Manager is patching",
"notificationText": "Tap to return to the installer",
"exportApkButtonTooltip": "Export patched APK",
"exportLogButtonTooltip": "Export log",
"screenshotDetected": "A screenshot has been detected. If you are trying to share the log, please share a text copy instead.\n\nCopy log to clipboard?",
"copiedToClipboard": "Copied log to clipboard",
"noExit": "Installer is still running, cannot exit..."
},
"settingsView": {
"widgetTitle": "Settings",
"appearanceSectionTitle": "Appearance",
"teamSectionTitle": "Team",
"debugSectionTitle": "Debugging",
"advancedSectionTitle": "Advanced",
"exportSectionTitle": "Import & export",
"dataSectionTitle": "Data sources",
"themeModeLabel": "App theme",
"systemThemeLabel": "System",
"lightThemeLabel": "Light",
"darkThemeLabel": "Dark",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Enjoy an experience closer to your device",
"languageLabel": "Language",
"languageUpdated": "Language updated",
"sourcesLabel": "Alternative sources",
"sourcesLabelHint": "Configure the alternative sources for ReVanced Patches",
"useAlternativeSources": "Use alternative sources",
"useAlternativeSourcesHint": "Use alternative sources for ReVanced Patches instead of the API",
"sourcesResetDialogTitle": "Reset",
"sourcesResetDialogText": "Are you sure you want to reset your sources to their default values?",
"apiURLResetDialogText": "Are you sure you want to reset your API URL to its default value?",
"sourcesUpdateNote": "Note: This will automatically download ReVanced Patches from the alternative sources.\n\nThis will connect you to the alternative source.",
"apiURLLabel": "API URL",
"apiURLHint": "Configure the API URL of ReVanced Manager",
"selectApiURL": "API URL",
"orgPatchesLabel": "Patches organization",
"sourcesPatchesLabel": "Patches source",
"contributorsLabel": "Contributors",
"contributorsHint": "A list of contributors of ReVanced",
"logsLabel": "Share logs",
"logsHint": "Share ReVanced Manager logs",
"enablePatchesSelectionLabel": "Allow changing patch selection",
"enablePatchesSelectionHint": "Do not prevent selecting or deselecting patches",
"enablePatchesSelectionWarningText": "Changing the selection of patches may cause unexpected issues.\n\nEnable anyways?",
"disablePatchesSelectionWarningText": "You are about to disable changing the selection of patches.\nThe default selection of patches will be restored.\n\nDisable anyways?",
"autoUpdatePatchesLabel": "Auto update patches",
"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",
"universalPatchesHint": "Display all apps and universal patches (may slow down the app list)",
"lastPatchedAppLabel": "Save patched app",
"lastPatchedAppHint": "Save the last patch to install or export later",
"versionCompatibilityCheckLabel": "Version compatibility check",
"versionCompatibilityCheckHint": "Prevent selecting patches that are not compatible with the selected app version",
"requireSuggestedAppVersionLabel": "Require suggested app version",
"requireSuggestedAppVersionHint": "Prevent selecting an app with a version that is not the suggested",
"requireSuggestedAppVersionDialogText": "Selecting an app that is not the suggested version may cause unexpected issues.\n\nDo you want to proceed anyways?",
"aboutLabel": "About",
"snackbarMessage": "Copied to clipboard",
"restartAppForChanges": "Restart the app to apply changes",
"deleteTempDirLabel": "Delete temporary files",
"deleteTempDirHint": "Delete unused temporary files",
"deletedTempDir": "Temporary files deleted",
"exportSettingsLabel": "Export settings",
"exportSettingsHint": "Export settings to a JSON file",
"exportedSettings": "Settings exported",
"importSettingsLabel": "Import settings",
"importSettingsHint": "Import settings from a JSON file",
"importedSettings": "Settings imported",
"exportPatchesLabel": "Export patch selection",
"exportPatchesHint": "Export patch selection to a JSON file",
"exportedPatches": "Patch selection exported",
"noExportFileFound": "No patch selection to export",
"importPatchesLabel": "Import patch selection",
"importPatchesHint": "Import patch selection from a JSON file",
"importedPatches": "Patch selection imported",
"resetStoredPatchesLabel": "Reset patch selection",
"resetStoredPatchesHint": "Reset the stored patch selection",
"resetStoredPatchesDialogTitle": "Reset patch selection?",
"resetStoredPatchesDialogText": "The default selection of patches will be restored.",
"resetStoredPatches": "Patch selection has been reset",
"resetStoredOptionsLabel": "Reset patch options",
"resetStoredOptionsHint": "Reset all patch options",
"resetStoredOptionsDialogTitle": "Reset patch options?",
"resetStoredOptionsDialogText": "Resetting patch options will remove all saved options.",
"resetStoredOptions": "Options have been reset",
"deleteLogsLabel": "Clear logs",
"deleteLogsHint": "Delete collected ReVanced Manager logs",
"deletedLogs": "Logs deleted",
"regenerateKeystoreLabel": "Regenerate keystore",
"regenerateKeystoreHint": "Regenerate the keystore used to sign apps",
"regenerateKeystoreDialogTitle": "Regenerate keystore?",
"regenerateKeystoreDialogText": "Patched apps signed with the old keystore will no longer be able to be updated.",
"regeneratedKeystore": "Keystore regenerated",
"exportKeystoreLabel": "Export keystore",
"exportKeystoreHint": "Export the keystore used to sign apps",
"exportedKeystore": "Keystore exported",
"noKeystoreExportFileFound": "No keystore to export",
"importKeystoreLabel": "Import keystore",
"importKeystoreHint": "Import a keystore used to sign apps",
"importedKeystore": "Keystore imported",
"selectKeystorePassword": "Keystore password",
"selectKeystorePasswordHint": "Select keystore password used to sign apps",
"jsonSelectorErrorMessage": "Unable to use selected JSON file",
"keystoreSelectorErrorMessage": "Unable to use selected keystore file"
},
"appInfoView": {
"widgetTitle": "App info",
"openButton": "Open",
"installButton": "Install",
"uninstallButton": "Uninstall",
"unmountButton": "Unmount",
"exportButton": "Export",
"deleteButton": "Delete",
"rootDialogTitle": "Error",
"lastPatchedAppDescription": "This is a backup of the app that was last patched.",
"unmountDialogText": "Are you sure you want to unmount this app?",
"uninstallDialogText": "Are you sure you want to uninstall this app?",
"rootDialogText": "App was installed with superuser permissions, but currently ReVanced Manager has no permissions.\nPlease grant superuser permissions first.",
"removeAppDialogTitle": "Delete app?",
"removeAppDialogText": "Are you sure you want to delete this backup?",
"packageNameLabel": "Package name",
"installTypeLabel": "Installation type",
"mountTypeLabel": "Mount",
"regularTypeLabel": "Regular",
"patchedDateLabel": "Patched date",
"appliedPatchesLabel": "Applied patches",
"sizeLabel": "File size",
"patchedDateHint": "${date} at ${time}",
"appliedPatchesHint": "${quantity} applied patches",
"updateNotImplemented": "This feature has not been implemented yet"
},
"contributorsView": {
"widgetTitle": "Contributors"
},
"installErrorDialog": {
"mount_version_mismatch": "Version mismatch",
"mount_no_root": "No root access",
"mount_missing_installation": "Installation not found",
"status_failure_blocked": "Installation blocked",
"install_failed_verification_failure": "Verification failed",
"status_failure_invalid": "Installation invalid",
"install_failed_version_downgrade": "Can't downgrade",
"status_failure_conflict": "Installation conflict",
"status_failure_storage": "Installation storage issue",
"status_failure_incompatible": "Installation incompatible",
"status_failure_timeout": "Installation timeout",
"status_unknown": "Installation failed",
"mount_version_mismatch_description": "The installation failed due to the installed app being a different version than the patched app.\n\nInstall the version of the app you are mounting and try again.",
"mount_no_root_description": "The installation failed due to root access not being granted.\n\nGrant root access to ReVanced Manager and try again.",
"mount_missing_installation_description": "The installation failed due to the unpatched app not being installed on this device in order to mount over it.\n\nInstall the unpatched app before mounting and try again.",
"status_failure_timeout_description": "The installation took too long to finish.\n\nWould you like to try again?",
"status_failure_storage_description": "The installation failed due to insufficient storage.\n\nFree up some space and try again.",
"status_failure_invalid_description": "The installation failed due to the patched app being invalid.\n\nUninstall the app and try again?",
"status_failure_incompatible_description": "The app is incompatible with this device.\n\nUse an APK that is supported by this device and try again.",
"status_failure_conflict_description": "The installation was prevented by an existing installation of the app.\n\nUninstall the installed app and try again?",
"status_failure_blocked_description": "The installation was blocked by ${packageName}.\n\nAdjust your security settings and try again.",
"install_failed_verification_failure_description": "The installation failed due to a verification issue.\n\nAdjust your security settings and try again.",
"install_failed_version_downgrade_description": "The installation failed due to the patched app being a lower version than the installed app.\n\nUninstall the app and try again?",
"status_unknown_description": "The installation failed due to an unknown reason. Please try again."
}
}

View File

@ -1,198 +0,0 @@
{
"okButton": "OK",
"cancelButton": "Cancel",
"updateButton": "Update",
"enabledLabel": "Enabled",
"disabledLabel": "Disabled",
"yesButton": "Yes",
"noButton": "No",
"warning": "Warning",
"navigationView": {
"dashboardTab": "Dashboard",
"patcherTab": "Patcher",
"settingsTab": "Settings"
},
"homeView": {
"widgetTitle": "Dashboard",
"updatesSubtitle": "Updates",
"patchedSubtitle": "Patched applications",
"updatesAvailable": "Updates available",
"noUpdates": "No updates available",
"WIP": "Work in progress...",
"noInstallations": "No patched applications installed",
"installed": "Installed",
"updateDialogTitle": "Update Manager",
"updateChangelogTitle": "Changelog",
"notificationTitle": "Update downloaded",
"notificationText": "Tap to install the update",
"downloadingMessage": "Downloading update...",
"installingMessage": "Installing update...",
"errorDownloadMessage": "Unable to download update",
"errorInstallMessage": "Unable to install update",
"noConnection": "No internet connection",
"updatesDisabled": "Updating a patched app is currently disabled. Repatch the app again."
},
"applicationItem": {
"patchButton": "Patch",
"infoButton": "Info",
"changelogLabel": "Changelog"
},
"latestCommitCard": {
"loadingLabel": "Loading...",
"timeagoLabel": "{time} ago",
"patcherLabel": "Patcher: ",
"managerLabel": "Manager: ",
"updateButton": "Update Manager"
},
"patcherView": {
"widgetTitle": "Patcher",
"patchButton": "Patch",
"patchDialogText": "You have selected a resource patch and a split APK installation has been detected, so patching errors may occur.\nAre you sure you want to proceed?"
},
"appSelectorCard": {
"widgetTitle": "Select an application",
"widgetTitleSelected": "Selected application",
"widgetSubtitle": "No application selected",
"noAppsLabel": "No applications found",
"currentVersion": "Current",
"recommendedVersion": "Recommended",
"anyVersion": "any"
},
"patchSelectorCard": {
"widgetTitle": "Select patches",
"widgetTitleSelected": "Selected patches",
"widgetSubtitle": "Select an application first",
"widgetEmptySubtitle": "No patches selected"
},
"socialMediaCard": {
"widgetTitle": "Socials",
"widgetSubtitle": "We are online!"
},
"appSelectorView": {
"viewTitle": "Select an application",
"searchBarHint": "Search applications",
"storageButton": "Storage",
"errorMessage": "Unable to use selected application"
},
"patchesSelectorView": {
"viewTitle": "Select patches",
"searchBarHint": "Search patches",
"doneButton": "Done",
"recommended": "Recommended",
"all": "All",
"none": "None",
"loadPatchesSelection": "Load patches selection",
"noSavedPatches": "No saved patches for the selected app.\nPress Done to save current selection.",
"noPatchesFound": "No patches found for the selected app",
"selectAllPatchesWarningContent": "You are about to select all patches, that includes unrecommended patches and can cause unwanted behavior."
},
"patchItem": {
"unsupportedDialogText": "Selecting this patch may result in patching errors.\n\nApp version: {packageVersion}\nSupported versions:\n{supportedVersions}",
"unsupportedPatchVersion": "Patch is not supported for this app version. Enable the experimental toggle in settings to proceed."
},
"installerView": {
"widgetTitle": "Installer",
"installButton": "Install",
"installRootButton": "Install as Root",
"openButton": "Open",
"shareButton": "Share file",
"notificationTitle": "ReVanced Manager is patching",
"notificationText": "Tap to return to the installer",
"shareApkMenuOption": "Share APK",
"exportApkMenuOption": "Export APK",
"shareLogMenuOption": "Share log",
"installErrorDialogTitle": "Error",
"installErrorDialogText1": "Root install is not possible with the current patches selection.\nRepatch your app or choose non-root install.",
"installErrorDialogText2": "Non-root install is not possible with the current patches selection.\nRepatch your app or choose root install if you have your device rooted.",
"installErrorDialogText3": "Root install is not possible as the original APK was selected from storage.\nSelect an installed app or choose non-root install.",
"noExit": "Installer is still running, cannot exit..."
},
"settingsView": {
"widgetTitle": "Settings",
"appearanceSectionTitle": "Appearance",
"teamSectionTitle": "Team",
"infoSectionTitle": "Info",
"advancedSectionTitle": "Advanced",
"logsSectionTitle": "Logs",
"darkThemeLabel": "Dark mode",
"darkThemeHint": "Welcome to the dark side",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Enjoy an experience closer to your device",
"languageLabel": "Language",
"englishOption": "English",
"sourcesLabel": "Sources",
"sourcesLabelHint": "Configure your custom sources",
"hostRepositoryLabel": "Repository API",
"orgPatchesLabel": "Patches organization",
"sourcesPatchesLabel": "Patches source",
"orgIntegrationsLabel": "Integrations organization",
"sourcesIntegrationsLabel": "Integrations source",
"sourcesResetDialogTitle": "Reset",
"sourcesResetDialogText": "Are you sure you want to reset custom sources to their default values?",
"apiURLResetDialogText": "Are you sure you want to reset API URL to its default value?",
"contributorsLabel": "Contributors",
"contributorsHint": "A list of contributors of ReVanced",
"logsLabel": "Logs",
"logsHint": "Share Manager's logs",
"apiURLLabel": "API URL",
"apiURLHint": "Configure your custom API URL",
"selectApiURL": "API URL",
"experimentalPatchesLabel": "Experimental patches support",
"experimentalPatchesHint": "Enable usage of unsupported patches in any app version",
"enabledExperimentalPatches": "Experimental patches support enabled",
"exportSectionTitle": "Import & export",
"aboutLabel": "About",
"snackbarMessage": "Copied to clipboard",
"sentryLabel": "Sentry logging",
"sentryHint": "Send anonymous logs to help us improve ReVanced Manager",
"restartAppForChanges": "Restart the app to apply changes",
"deleteKeystoreLabel": "Delete keystore",
"deleteKeystoreHint": "Delete the keystore used to sign the app",
"deletedKeystore": "Keystore deleted",
"deleteTempDirLabel": "Delete temporary files",
"deleteTempDirHint": "Delete unused temporary files",
"deletedTempDir": "Temporary files deleted",
"exportPatchesLabel": "Export patches selection",
"exportPatchesHint": "Export patches selection to a JSON file",
"exportedPatches": "Patches selection exported",
"noExportFileFound": "No patches selection to export",
"importPatchesLabel": "Import patches selection",
"importPatchesHint": "Import patches selection from a JSON file",
"importedPatches": "Patches selection imported",
"resetStoredPatchesLabel": "Reset patches",
"resetStoredPatchesHint": "Reset the stored patches selection",
"resetStoredPatches": "Patches selection has been reset",
"jsonSelectorErrorMessage": "Unable to use selected JSON file",
"deleteLogsLabel": "Delete logs",
"deleteLogsHint": "Delete collected manager logs",
"deletedLogs": "Logs deleted"
},
"appInfoView": {
"widgetTitle": "App info",
"openButton": "Open",
"uninstallButton": "Uninstall",
"patchButton": "Patch",
"unpatchButton": "Unpatch",
"unpatchDialogText": "Are you sure you want to unpatch this app?",
"rootDialogTitle": "Error",
"rootDialogText": "App was installed with superuser permissions, but currently ReVanced Manager has no permissions.\nPlease grant superuser permissions first.",
"packageNameLabel": "Package name",
"originalPackageNameLabel": "Original package name",
"installTypeLabel": "Installation type",
"rootTypeLabel": "Root",
"nonRootTypeLabel": "Non-root",
"patchedDateLabel": "Patched date",
"patchedDateHint": "{date} at {time}",
"appliedPatchesLabel": "Applied patches",
"appliedPatchesHint": "{quantity} applied patches",
"updateNotImplemented": "This feature has not been implemented yet"
},
"contributorsView": {
"widgetTitle": "Contributors",
"patcherContributors": "Patcher contributors",
"patchesContributors": "Patches contributors",
"integrationsContributors": "Integrations contributors",
"cliContributors": "CLI contributors",
"managerContributors": "Manager contributors"
}
}

279
assets/i18n/es_AR.i18n.json Executable file
View File

@ -0,0 +1,279 @@
{
"okButton": "Aceptar",
"cancelButton": "Cancelar",
"dismissButton": "Descartar",
"quitButton": "Salir",
"updateButton": "Actualizar",
"suggested": "Sugerida: ${version}",
"yesButton": "Sí",
"noButton": "No",
"warning": "Advertencia",
"notice": "Aviso",
"noShowAgain": "No volver a mostrar",
"add": "Agregar",
"remove": "Eliminar",
"showChangelogButton": "Notas de la versión",
"showUpdateButton": "Actualizar",
"navigationView": {
"dashboardTab": "Panel de control",
"patcherTab": "Parcheador",
"settingsTab": "Configuración"
},
"homeView": {
"refreshSuccess": "Refrescado satisfactoriamente",
"widgetTitle": "Panel de control",
"updatesSubtitle": "Actualizaciones",
"patchedSubtitle": "Aplicaciones parcheadas",
"changeLaterSubtitle": "Podés cambiar esto en los ajustes más tarde.",
"noInstallations": "Aún no parcheaste ninguna aplicación",
"installUpdate": "¿Instalar actualización?",
"updateSheetTitle": "Actualizar ReVanced Manager",
"updateDialogTitle": "Nueva actualización disponible",
"updatePatchesSheetTitle": "Actualizar ReVanced Patches",
"updateChangelogTitle": "Notas de la versión",
"updateDialogText": "Hay una nueva actualización disponible para ${file}.\n\nLa versión instalada actualmente es la ${version}.",
"downloadConsentDialogTitle": "¿Descargar archivos necesarios?",
"downloadConsentDialogText": "ReVanced Manager necesita descargar los archivos necesarios para funcionar correctamente.",
"downloadConsentDialogText2": "Esto te va a conectar a ${url}.",
"downloadingMessage": "Descargando actualización...",
"downloadedMessage": "Actualización descargada",
"installingMessage": "Instalando actualización...",
"errorDownloadMessage": "No se pudo descargar la actualización",
"errorInstallMessage": "No se pudo instalar la actualización",
"noConnection": "No tenés conexión a Internet"
},
"applicationItem": {
"infoButton": "Gestionar"
},
"latestCommitCard": {
"loadingLabel": "Cargando...",
"timeagoLabel": "Hace ${time}"
},
"patcherView": {
"widgetTitle": "Parcheador",
"patchButton": "Parchear",
"removedPatchesWarningDialogText": "Los siguientes parches fueron eliminados desde la última vez que los usaste.\n\n${patches}\n\n${newPatches}¿Continuar de todas formas?",
"requiredOptionDialogText": "Algunas opciones de parche tienen que ser establecidas."
},
"appSelectorCard": {
"widgetTitle": "Seleccionar una aplicación",
"widgetTitleSelected": "Aplicación seleccionada",
"widgetSubtitle": "Ninguna aplicación seleccionada",
"noAppsLabel": "No se encontró ninguna aplicación",
"anyVersion": "Cualquier versión"
},
"patchSelectorCard": {
"widgetTitle": "Seleccionar parches",
"widgetTitleSelected": "Parches seleccionados",
"widgetSubtitle": "Ninguna aplicación seleccionada",
"widgetEmptySubtitle": "Ningún parche seleccionado"
},
"socialMediaCard": {
"widgetTitle": "Nuestras redes sociales",
"widgetSubtitle": "¡Estamos en línea!"
},
"appSelectorView": {
"viewTitle": "Seleccionar una aplicación",
"searchBarHint": "Buscar...",
"storageButton": "Seleccionar desde\\nel almacenamiento",
"selectFromStorageButton": "Seleccionar desde\\nel almacenamiento",
"errorMessage": "El archivo que seleccionaste no es una aplicación o está dañado",
"downloadToast": "La descarga de aplicaciones aún no está disponible",
"requireSuggestedAppVersionDialogText": "La versión de la app que seleccionaste no coincide con la versión sugerida, lo que puede causar errores inesperados. Por favor, usá la versión sugerida.\n\nVersión seleccionada: ${selected}\nVersión sugerida: ${suggested}\n\nPara continuar de todas formas, desactivá \"Requerir versión sugerida de la app\" en los ajustes.",
"featureNotAvailable": "Función no implementada",
"featureNotAvailableText": "Esta aplicación está instalada en formato AAB (Android App Bundle) y solo se puede parchear e instalar de forma fiable mediante el montaje con acceso root. Sin embargo, podés parchear e instalar una aplicación en formato APK seleccionándola desde el almacenamiento."
},
"patchesSelectorView": {
"viewTitle": "Seleccionar parches",
"searchBarHint": "Buscar...",
"universalPatches": "Parches universales",
"newPatches": "Parches nuevos",
"patches": "Parches",
"doneButton": "Guardar selección",
"defaultChip": "Por defecto",
"defaultTooltip": "Selecciona los parches por defecto",
"noneChip": "Ninguno",
"noneTooltip": "Deselecciona todos los parches",
"loadPatchesSelection": "Cargar selección de parches",
"noSavedPatches": "No se guardó ninguna selección de parches para la aplicación seleccionada.\nApretá 'Guardar selección' para guardar la selección actual.",
"noPatchesFound": "No se encontraron parches para la aplicación seleccionada",
"setRequiredOption": "Los siguientes parches requieren su propia configuración:\\n\\n${patches}\\n\\nPor favor, configuralos antes de continuar."
},
"patchOptionsView": {
"customValue": "Valor personalizado",
"setToNull": "Establecer a nulo",
"nullValue": "Este valor de opción es nulo actualmente",
"viewTitle": "Configuración\\ndel parche",
"saveOptions": "Guardar configuración",
"unselectPatch": "Deseleccionar parche",
"tooltip": "Más opciones de entrada",
"selectFilePath": "Seleccionar ruta del archivo",
"selectFolder": "Seleccionar carpeta",
"requiredOption": "La configuración de esta opción es necesaria",
"unsupportedOption": "Esta opción no es compatible",
"requiredOptionNull": "Tenés que configurar las siguientes opciones:\\n\\n${options}"
},
"patchItem": {
"unsupportedDialogText": "Seleccionar este parche puede provocar errores en el parcheo.\n\nVersión de la app: ${packageVersion}\nVersiones soportadas:\n${supportedVersions}",
"unsupportedPatchVersion": "El parche no es compatible con esta versión de la aplicación.",
"unsupportedRequiredOption": "El parche contiene una opción necesaria que no es compatible con esta aplicación",
"patchesChangeWarningDialogText": "Te recomendamos que utilices la selección y opciones de parches por defecto; cambiarlas puede causar problemas inesperados.\\n\\nTendrás que activar \\\"Permitir cambiar la selección de parches\\\" en la configuración antes de poder hacerlo.",
"patchesChangeWarningDialogButton": "Utilizar la opción por defecto"
},
"installerView": {
"installType": "Tipo de instalación",
"installTypeDescription": "Seleccioná el tipo de instalación para continuar.",
"installButton": "Instalar",
"installRootType": "Instalación por montaje (requiere root)",
"installNonRootType": "Instalación normal",
"warning": "Recordá desactivar las actualizaciones automáticas de la app parcheada para evitar problemas inesperados.",
"pressBackAgain": "Vuelve a presionar atrás para cancelar",
"openButton": "Abrir",
"notificationTitle": "ReVanced Manager está parcheando",
"notificationText": "Apretá para volver al instalador",
"exportApkButtonTooltip": "Exportar APK parcheado",
"exportLogButtonTooltip": "Exportar registro",
"screenshotDetected": "Detectamos que hiciste una captura de pantalla. Si estás intentando compartir el registro, por favor compartilo en formato de texto.\\n\\n¿Copiar registro al portapapeles?",
"copiedToClipboard": "Registro copiado al portapapeles",
"noExit": "El instalador aún se está ejecutando, no te podés salir..."
},
"settingsView": {
"widgetTitle": "Configuración",
"appearanceSectionTitle": "Apariencia",
"teamSectionTitle": "Equipo",
"debugSectionTitle": "Depuración",
"advancedSectionTitle": "Avanzado",
"exportSectionTitle": "Importación y exportación",
"dataSectionTitle": "Fuentes de datos",
"themeModeLabel": "Tema de la aplicación",
"systemThemeLabel": "Igual que el sistema",
"lightThemeLabel": "Claro",
"darkThemeLabel": "Oscuro",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Disfrutá de una experiencia más acorde a tu dispositivo",
"languageLabel": "Idioma",
"languageUpdated": "Idioma actualizado",
"sourcesLabel": "Fuentes alternativas",
"sourcesLabelHint": "Configurá las fuentes alternativas para ReVanced Patches y ReVanced Integrations",
"useAlternativeSources": "Usar fuentes alternativas",
"useAlternativeSourcesHint": "Usá fuentes alternativas para ReVanced Patches y ReVanced Integrations en lugar de la API",
"sourcesResetDialogTitle": "Resetear",
"sourcesResetDialogText": "¿Estás seguro de que quieres restablecer las fuentes a sus valores por defecto?",
"apiURLResetDialogText": "¿Estás seguro de que quieres restablecer la URL de tu API a su valor por defecto?",
"sourcesUpdateNote": "Nota: Esto descargará de forma automática ReVanced Patches y ReVanced Integrations desde las fuentes alternativas.\n\nEsto te va a conectar a la fuente alternativa.",
"apiURLLabel": "URL de la API",
"apiURLHint": "Configurá la URL de la API de ReVanced Manager",
"selectApiURL": "URL de la API",
"orgPatchesLabel": "Organización de los parches",
"sourcesPatchesLabel": "Fuente de los parches",
"contributorsLabel": "Contribuidores",
"contributorsHint": "Una lista de los contribuidores de ReVanced",
"logsLabel": "Compartir registros",
"logsHint": "Comparte los registros de ReVanced Manager",
"enablePatchesSelectionLabel": "Permitir cambiar la selección de parches",
"enablePatchesSelectionHint": "Permite la selección o deselección de parches",
"enablePatchesSelectionWarningText": "Cambiar la selección de parches puede causar problemas inesperados.\n\n¿Habilitar de todos modos?",
"disablePatchesSelectionWarningText": "Está a punto de desactivar el cambio de la selección de parches.\nSe restablecerá la selección de parches por defecto.\n\n¿Desactivar de todos modos?",
"autoUpdatePatchesLabel": "Actualizar parches automáticamente",
"autoUpdatePatchesHint": "Actualiza automáticamente los parches a la última versión",
"showUpdateDialogLabel": "Mostrar diálogo de actualización",
"showUpdateDialogHint": "Muestra un diálogo cuando haya una nueva actualización disponible",
"universalPatchesLabel": "Mostrar parches universales",
"universalPatchesHint": "Mostrar todas las aplicaciones y parches universales (puede ralentizar la lista de aplicaciones)",
"versionCompatibilityCheckLabel": "Comprobar compatibilidad de versiones",
"versionCompatibilityCheckHint": "Impide la selección de parches que no sean compatibles con la versión de la aplicación seleccionada",
"requireSuggestedAppVersionLabel": "Requerir versión sugerida de la aplicación",
"requireSuggestedAppVersionHint": "Impide seleccionar una aplicación cuya versión no sea la sugerida",
"requireSuggestedAppVersionDialogText": "Seleccionar una aplicación que no es la versión sugerida puede causar problemas inesperados.\n\n¿Desea continuar de todos modos?",
"aboutLabel": "Acerca de",
"snackbarMessage": "Copiado al portapapeles",
"restartAppForChanges": "Reiniciá la app para aplicar los cambios",
"deleteTempDirLabel": "Eliminar archivos temporales",
"deleteTempDirHint": "Elimina los archivos temporales que no se usan",
"deletedTempDir": "Archivos temporales eliminados",
"exportPatchesLabel": "Exportar selección de parches",
"exportPatchesHint": "Exporta la selección de parches a un archivo JSON",
"exportedPatches": "Selección de parches exportada",
"noExportFileFound": "No hay selección de parches para exportar",
"importPatchesLabel": "Importar selección de parches",
"importPatchesHint": "Importa la selección de parches desde un archivo JSON",
"importedPatches": "Selección de parches importada",
"resetStoredPatchesLabel": "Restablecer selección de parches",
"resetStoredPatchesHint": "Restablecer selección de parches guardada",
"resetStoredPatchesDialogTitle": "¿Restablecer selección de parches?",
"resetStoredPatchesDialogText": "Se restablecerá la selección predeterminada de parches.",
"resetStoredPatches": "La selección de parches se ha restablecido",
"resetStoredOptionsLabel": "Restablecer opciones de parche",
"resetStoredOptionsHint": "Reiniciar todas las opciones de parche",
"resetStoredOptionsDialogTitle": "¿Restablecer opciones de parche?",
"resetStoredOptionsDialogText": "Restablecer las opciones de parche eliminará todas las opciones guardadas.",
"resetStoredOptions": "Las opciones se han restablecido",
"deleteLogsLabel": "Borrar registros",
"deleteLogsHint": "Elimina los registros recopilados por ReVanced Manager",
"deletedLogs": "Registros eliminados",
"regenerateKeystoreLabel": "Regenerar repositorio de claves",
"regenerateKeystoreHint": "Regenera el repositorio de claves utilizado para firmar aplicaciones",
"regenerateKeystoreDialogTitle": "¿Regenerar repositorio de claves?",
"regenerateKeystoreDialogText": "Las aplicaciones parcheadas firmadas con el antiguo repositorio de claves ya no podrán actualizarse.",
"regeneratedKeystore": "Repositorio de claves regenerado",
"exportKeystoreLabel": "Exportar repositorio de claves",
"exportKeystoreHint": "Exporta el repositorio de claves utilizado para firmar aplicaciones",
"exportedKeystore": "Repositorio de claves exportado",
"noKeystoreExportFileFound": "No hay repositorio de claves para exportar",
"importKeystoreLabel": "Importar repositorio de claves",
"importKeystoreHint": "Importar un repositorio de claves utilizado para firmar aplicaciones",
"importedKeystore": "Repositorio de claves importado",
"selectKeystorePassword": "Contraseña del repositorio de claves",
"selectKeystorePasswordHint": "Selecciona la contraseña del repositorio de claves utilizada para firmar aplicaciones",
"jsonSelectorErrorMessage": "No se puede usar el archivo JSON seleccionado",
"keystoreSelectorErrorMessage": "No se puede utilizar el archivo de repositorio de claves seleccionado"
},
"appInfoView": {
"widgetTitle": "Información de la aplicación",
"openButton": "Abrir",
"uninstallButton": "Desinstalar",
"unmountButton": "Desmontar",
"rootDialogTitle": "Error",
"unmountDialogText": "¿Seguro que querés desmontar esta aplicación?",
"uninstallDialogText": "¿Seguro que querés desinstalar esta aplicación?",
"rootDialogText": "La app se instaló con permisos de superusuario, pero ReVanced Manager no los tiene.\nPor favor, concedele permisos de superusuario.",
"packageNameLabel": "Nombre del paquete",
"installTypeLabel": "Tipo de instalación",
"mountTypeLabel": "Instalación por montaje (requiere root)",
"regularTypeLabel": "Instalación normal",
"patchedDateLabel": "Fecha de parcheo",
"appliedPatchesLabel": "Parches aplicados",
"patchedDateHint": "${date} a las ${time}",
"appliedPatchesHint": "${quantity} parches aplicados",
"updateNotImplemented": "Esta función no se implementó aún"
},
"contributorsView": {
"widgetTitle": "Contribuidores"
},
"installErrorDialog": {
"mount_version_mismatch": "La versión no coincide",
"mount_no_root": "Sin acceso root",
"mount_missing_installation": "Instalación no encontrada",
"status_failure_blocked": "Instalación bloqueada",
"install_failed_verification_failure": "Verificación fallida",
"status_failure_invalid": "Instalación inválida",
"install_failed_version_downgrade": "No se puede degradar",
"status_failure_conflict": "Conflicto de instalación",
"status_failure_storage": "Problema de almacenamiento en la instalación",
"status_failure_incompatible": "Instalación incompatible",
"status_failure_timeout": "Tiempo de instalación agotado",
"status_unknown": "Instalación fallida",
"mount_version_mismatch_description": "La instalación fallo debido a que la aplicación instalada es una versión diferente a la parcheada.\n\nInstalá la versión de la aplicación que intentás montar y volvé a intentarlo.",
"mount_no_root_description": "La instalación falló debido a que no concediste acceso root.\n\nConcedele acceso root a ReVanced Manager y volvé a intentarlo.",
"mount_missing_installation_description": "La instalación falló debido a que no instalaste la aplicación original en el dispositivo para poder montar la aplicación modificada sobre ella.\n\nInstalá la aplicación original antes de montar y volvé a intentarlo.",
"status_failure_timeout_description": "La instalación tardó demasiado tiempo en terminar.\n\n¿Querés volver a intentarlo?",
"status_failure_storage_description": "La instalación falló debido a falta de almacenamiento.\n\nLiberá algo de espacio y volvé a intentarlo.",
"status_failure_invalid_description": "La instalación falló debido a que la aplicación parcheada es inválida.\n\n¿Querés desinstalar la aplicación y volver a intentarlo?",
"status_failure_incompatible_description": "La aplicación es incompatible con este dispositivo.\n\nContactá con el desarrollador de la aplicación y solicitá asistencia.",
"status_failure_conflict_description": "Una instalación existente de la aplicación impidió la instalación.\n\n¿Querés desinstalar la aplicación instalada y volver a intentarlo?",
"status_failure_blocked_description": "${packageName} bloqueó la instalación.\n\nAjustá la configuración de seguridad y volvé a intentarlo.",
"install_failed_verification_failure_description": "La instalación falló debido a un problema de verificación.\n\nAjustá la configuración de seguridad y volvé a intentarlo.",
"install_failed_version_downgrade_description": "La instalación falló debido a que la aplicación parcheada es una versión inferior a la instalada.\n\n¿Querés desinstalar la aplicación y volver a intentarlo?",
"status_unknown_description": "La instalación falló debido a una razón desconocida. Por favor, volvé a intentarlo."
}
}

298
assets/i18n/es_ES.i18n.json Executable file
View File

@ -0,0 +1,298 @@
{
"okButton": "Aceptar",
"cancelButton": "Cancelar",
"dismissButton": "Descartar",
"quitButton": "Cerrar",
"updateButton": "Actualizar",
"suggested": "Sugerido: ${version}",
"yesButton": "Sí",
"noButton": "No",
"warning": "Advertencia",
"notice": "Aviso",
"noShowAgain": "No mostrar de nuevo",
"add": "Añadir",
"remove": "Eliminar",
"showChangelogButton": "Mostrar historial de cambios",
"showUpdateButton": "Mostrar actualización",
"navigationView": {
"dashboardTab": "Panel de control",
"patcherTab": "Parcheador",
"settingsTab": "Configuración"
},
"homeView": {
"refreshSuccess": "Actualizado con éxito",
"widgetTitle": "Panel",
"updatesSubtitle": "Actualizaciones",
"lastPatchedAppSubtitle": "Última app parcheada",
"patchedSubtitle": "Apps instaladas",
"changeLaterSubtitle": "Puedes cambiar esto en la configuración más tarde.",
"noSavedAppFound": "App no encontrada",
"noInstallations": "No tienes apps parcheadas instaladas",
"installUpdate": "¿Continuar instalando la actualización?",
"updateSheetTitle": "Actualizar ReVanced Manager",
"updateDialogTitle": "Nueva actualización disponible",
"updatePatchesSheetTitle": "Actualizar Parches de ReVanced",
"updateChangelogTitle": "Registro de cambios",
"updateDialogText": "Una nueva actualización está disponible para ${file}.\n\nLa versión actualmente instalada es ${version}.",
"downloadConsentDialogTitle": "¿Descargar archivos necesarios?",
"downloadConsentDialogText": "ReVanced Manager necesita descargar los archivos necesarios para funcionar correctamente.",
"downloadConsentDialogText2": "Esto te conectará a ${url}.",
"downloadingMessage": "Descargando actualización...",
"downloadedMessage": "Actualización descargada",
"installingMessage": "Instalando actualización...",
"errorDownloadMessage": "No se pudo descargar la actualización",
"errorInstallMessage": "No se pudo instalar la actualización",
"noConnection": "No hay conexión a Internet"
},
"applicationItem": {
"infoButton": "Información"
},
"latestCommitCard": {
"loadingLabel": "Cargando...",
"timeagoLabel": "Hace ${time}"
},
"patcherView": {
"widgetTitle": "Parcheador",
"patchButton": "Parchear",
"incompatibleArchWarningDialogText": "Parchear en esta arquitectura aún no está soportado y podría fallar. ¿Continuar de todos modos?",
"removedPatchesWarningDialogText": "Parches eliminados desde la última vez que parcheaste esta aplicación:\n\n${patches}\n\n${newPatches}¿Continuar de todos modos?",
"addedPatchesDialogText": "Parches añadidos desde la última vez que parcheaste esta aplicación:\n\n${addedPatches}\n\n",
"requiredOptionDialogText": "Deben establecerse algunas opciones de parche."
},
"appSelectorCard": {
"widgetTitle": "Selecciona una app",
"widgetTitleSelected": "App seleccionada",
"widgetSubtitle": "Ninguna aplicación seleccionada",
"noAppsLabel": "No se encontraron aplicaciones",
"anyVersion": "Cualquier versión"
},
"patchSelectorCard": {
"widgetTitle": "Seleccionar parches",
"widgetTitleSelected": "Parches seleccionados",
"widgetSubtitle": "Selecciona una aplicación primero",
"widgetEmptySubtitle": "Ningún parche seleccionado"
},
"socialMediaCard": {
"widgetTitle": "Redes sociales",
"widgetSubtitle": "¡Estamos en línea!"
},
"appSelectorView": {
"viewTitle": "Selecciona una app",
"searchBarHint": "Buscar app",
"storageButton": "Almacenamiento",
"selectFromStorageButton": "Seleccionar desde el almacenamiento",
"errorMessage": "No se puede usar la aplicación seleccionada",
"downloadToast": "La función de descarga aún no está disponible",
"requireSuggestedAppVersionDialogText": "La versión de la app que has seleccionado no coincide con la versión sugerida por lo que puede dar errores inesperados. Por favor usa la versión sugerida.\n\nVersión seleccionada: ${selected}\nVersión sugerida: ${suggested}\n\nPara proceder de todos modos, desactiva \"Versión sugerida de la app requerida\" en la configuración.",
"featureNotAvailable": "Función no implementada",
"featureNotAvailableText": "Esta aplicación es un APK dividido y solo puede ser parcheada e instalada de forma fiable mediante el montaje con permisos de root. Sin embargo, puedes parchear e instalar un APK completo seleccionándolo del almacenamiento."
},
"patchesSelectorView": {
"viewTitle": "Seleccionar parches",
"searchBarHint": "Buscar parches",
"universalPatches": "Parches universales",
"newPatches": "Nuevos parches",
"patches": "Parches",
"doneButton": "Listo",
"defaultChip": "Por defecto",
"defaultTooltip": "Seleccionar todos los parches predeterminados",
"noneChip": "Ninguno",
"noneTooltip": "Deseleccionar todos los parches",
"loadPatchesSelection": "Cargar selección de parches",
"noSavedPatches": "No se ha guardado ninguna selección de parches para la aplicación seleccionada.\nPresione Hecho para guardar la selección actual.",
"noPatchesFound": "No se encontraron parches para la aplicación seleccionada",
"setRequiredOption": "Algunos parches requieren que se establezcan opciones:\n\n${patches}\n\nPor favor, establécelos antes de continuar."
},
"patchOptionsView": {
"customValue": "Valor personalizado",
"setToNull": "Establecer a nulo",
"nullValue": "Este valor de opción actualmente es nulo",
"viewTitle": "Opciones de parche",
"saveOptions": "Guardar",
"unselectPatch": "Deseleccionar parche",
"tooltip": "Más opciones de entrada",
"selectFilePath": "Seleccionar ruta del archivo",
"selectFolder": "Seleccionar carpeta",
"requiredOption": "La configuración de esta opción es necesaria",
"unsupportedOption": "Esta opción no está disponible",
"requiredOptionNull": "Hay que establecer las siguientes opciones:\n\n${options}"
},
"patchItem": {
"unsupportedDialogText": "Seleccionar este parche puede causar errores.\n\nVersión de la app: ${packageVersion}\nVersiones compatibles:\n${supportedVersions}",
"unsupportedPatchVersion": "El parche no es compatible con esta versión de la aplicación.",
"unsupportedRequiredOption": "Este parche contiene una opción necesaria que no está disponible en esta app",
"patchesChangeWarningDialogText": "Se recomienda utilizar la selección y las opciones predeterminadas del parche. Cambiarlas puede provocar problemas inesperados.\n\nDeberás activar \"Permitir cambiar la selección de parches\" en la configuración antes de cambiar cualquier selección de parche.",
"patchesChangeWarningDialogButton": "Usar selección por defecto"
},
"installerView": {
"installType": "Seleccionar tipo de instalación",
"installTypeDescription": "Seleccione el tipo de instalación para continuar.",
"installButton": "Instalar",
"installRootType": "Montar",
"installNonRootType": "Normal",
"warning": "Desactivar actualizaciones automáticas para la aplicación parcheada para evitar problemas inesperados.",
"pressBackAgain": "Pulsa de nuevo para cancelar",
"openButton": "Abrir",
"notificationTitle": "ReVanced Manager está parcheando",
"notificationText": "Toque para volver al instalador",
"exportApkButtonTooltip": "Exportar APK parcheado",
"exportLogButtonTooltip": "Exportar registro",
"screenshotDetected": "Se ha detectado una captura de pantalla. Si estás intentando compartir el registro, por favor, comparte una copia de texto en su lugar.\n\n¿Copiar registro al portapapeles?",
"copiedToClipboard": "Registro copiado al portapapeles",
"noExit": "El instalador todavía se está ejecutando, no se puede salir..."
},
"settingsView": {
"widgetTitle": "Configuración",
"appearanceSectionTitle": "Apariencia",
"teamSectionTitle": "Equipo",
"debugSectionTitle": "Depuración",
"advancedSectionTitle": "Avanzado",
"exportSectionTitle": "Importar y exportar",
"dataSectionTitle": "Fuentes de datos",
"themeModeLabel": "Tema de la app",
"systemThemeLabel": "Sistema",
"lightThemeLabel": "Claro",
"darkThemeLabel": "Oscuro",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Disfrute de una experiencia más acorde a su dispositivo",
"languageLabel": "Idioma",
"languageUpdated": "Idioma actualizado",
"sourcesLabel": "Fuentes alternativas",
"sourcesLabelHint": "Configurar las fuentes alternativas para los parches reVanced",
"useAlternativeSources": "Usar fuentes alternativas",
"useAlternativeSourcesHint": "Usar fuentes alternativas para Parches ReVanced en lugar de la API",
"sourcesResetDialogTitle": "Restablecer",
"sourcesResetDialogText": "¿Estás seguro de que quieres restablecer tus fuentes a sus valores predeterminados?",
"apiURLResetDialogText": "¿Estás seguro de que quieres restablecer la URL de tu API a su valor predeterminado?",
"sourcesUpdateNote": "Nota: Esto descargará automáticamente los Parches ReVanced desde las fuentes alternativas.\n\nEsto te conectará a las fuentes alternativas.",
"apiURLLabel": "URL de la API",
"apiURLHint": "Configurar la URL de API del ReVanced Manager",
"selectApiURL": "URL de la API",
"orgPatchesLabel": "Organización de los parches",
"sourcesPatchesLabel": "Fuente de los parches",
"contributorsLabel": "Contribuidores",
"contributorsHint": "Una lista de contribuidores de ReVanced",
"logsLabel": "Compartir registros",
"logsHint": "Compartir registros de ReVanced Manager",
"enablePatchesSelectionLabel": "Permitir cambiar la selección de parches",
"enablePatchesSelectionHint": "No prevenir la selección o deseleccion de parches",
"enablePatchesSelectionWarningText": "Cambiar la selección de parches puede causar problemas inesperados.\n\n¿Habilitar de todos modos?",
"disablePatchesSelectionWarningText": "Estás a punto de desactivar cambiar la selección de parches.\nLa selección predeterminada de parches se restaurará.\n\n¿Deshabilitar de todos modos?",
"autoUpdatePatchesLabel": "Actualizar automáticamente los parches",
"autoUpdatePatchesHint": "Actualizar automáticamente los parches a la última versión",
"showUpdateDialogLabel": "Mostrar diálogo de actualización",
"showUpdateDialogHint": "Mostrar un diálogo cuando una nueva actualización esté disponible",
"universalPatchesLabel": "Mostrar parches universales",
"universalPatchesHint": "Mostrar todas las apps y parches universales (puede ralentizar la lista de aplicaciones)",
"lastPatchedAppLabel": "Guardar app parcheada",
"lastPatchedAppHint": "Guardar el último parche para instalar o exportar más tarde",
"versionCompatibilityCheckLabel": "Comprobación de compatibilidad de versiones",
"versionCompatibilityCheckHint": "Evitar la selección de parches que no sean compatibles con la versión de la app seleccionada",
"requireSuggestedAppVersionLabel": "Versión sugerida de la app requerida",
"requireSuggestedAppVersionHint": "Evitar seleccionar una app con una versión que no sea la sugerida",
"requireSuggestedAppVersionDialogText": "Seleccionar una app que no es la versión sugerida puede causar problemas inesperados.\n\n¿Desea continuar de todos modos?",
"aboutLabel": "Acerca de",
"snackbarMessage": "Copiado al portapapeles",
"restartAppForChanges": "Reinicie la app para aplicar los cambios",
"deleteTempDirLabel": "Borrar archivos temporales",
"deleteTempDirHint": "Eliminar archivos temporales no utilizados",
"deletedTempDir": "Archivos temporales eliminados",
"exportSettingsLabel": "Exportar ajustes",
"exportSettingsHint": "Exportar ajustes a un archivo JSON",
"exportedSettings": "Ajustes exportados",
"importSettingsLabel": "Importar ajustes",
"importSettingsHint": "Importar ajustes desde un archivo JSON",
"importedSettings": "Ajustes importados",
"exportPatchesLabel": "Exportar la selección de parches",
"exportPatchesHint": "Exportar la selección de parches a un archivo JSON",
"exportedPatches": "Selección de parches exportada",
"noExportFileFound": "No hay selección de parches para exportar",
"importPatchesLabel": "Importar la selección de parches",
"importPatchesHint": "Importar la selección de parches desde un archivo JSON",
"importedPatches": "Selección de parches importada",
"resetStoredPatchesLabel": "Restablecer la selección de parches",
"resetStoredPatchesHint": "Restablecer la selección de parches almacenada",
"resetStoredPatchesDialogTitle": "¿Restablecer la selección de parches?",
"resetStoredPatchesDialogText": "Se restaurará la selección predeterminada de parches.",
"resetStoredPatches": "La selección de parches ha sido restablecida",
"resetStoredOptionsLabel": "Restablecer opciones de parche",
"resetStoredOptionsHint": "Reiniciar todas las opciones de parche",
"resetStoredOptionsDialogTitle": "¿Restablecer opciones de parche?",
"resetStoredOptionsDialogText": "Restablecer las opciones de parche eliminará todas las opciones guardadas.",
"resetStoredOptions": "Se han reiniciado las opciones",
"deleteLogsLabel": "Borrar registros",
"deleteLogsHint": "Eliminar los registros recopilados de ReVanced Manager",
"deletedLogs": "Registros eliminados",
"regenerateKeystoreLabel": "Regenerar keystore",
"regenerateKeystoreHint": "Regenerar el almacén de llaves utilizado para firmar apps",
"regenerateKeystoreDialogTitle": "¿Regenerar keystore?",
"regenerateKeystoreDialogText": "Las apps parcheadas firmadas con el antiguo keystore ya no podrán actualizarse.",
"regeneratedKeystore": "Keystore regenerado",
"exportKeystoreLabel": "Exportar keystore",
"exportKeystoreHint": "Exportar el keystore utilizado para firmar apps",
"exportedKeystore": "Repositorio de claves exportado",
"noKeystoreExportFileFound": "No hay repositorio de claves para exportar",
"importKeystoreLabel": "Importar keystore",
"importKeystoreHint": "Importar un repositorio de llaves utilizado para firmar apps",
"importedKeystore": "Repositorio de claves importado",
"selectKeystorePassword": "Contraseña del repositorio de llaves",
"selectKeystorePasswordHint": "Seleccionar la contraseña del repositorio de llaves utilizada para firmar apps",
"jsonSelectorErrorMessage": "No se puede utilizar el archivo JSON seleccionado",
"keystoreSelectorErrorMessage": "No se puede utilizar el archivo de keystore seleccionado"
},
"appInfoView": {
"widgetTitle": "Información de la app",
"openButton": "Abrir",
"installButton": "Instalar",
"uninstallButton": "Desinstalar",
"unmountButton": "Desmontar",
"exportButton": "Exportar",
"deleteButton": "Eliminar",
"rootDialogTitle": "Error",
"lastPatchedAppDescription": "Esta es una copia de seguridad de la aplicación que fue parcheada por última vez.",
"unmountDialogText": "¿Estás seguro de que quieres desmontar esta app?",
"uninstallDialogText": "¿Estás seguro de que quieres desinstalar esta app?",
"rootDialogText": "La app se instaló con permisos de superusuario, pero actualmente ReVanced Manager no tiene permisos.\nPor favor, concede permisos de superusuario primero.",
"removeAppDialogTitle": "¿Eliminar aplicación?",
"removeAppDialogText": "¿Está seguro que desea eliminar esta copia de seguridad?",
"packageNameLabel": "Nombre del paquete",
"installTypeLabel": "Tipo de instalación",
"mountTypeLabel": "Montar",
"regularTypeLabel": "Normal",
"patchedDateLabel": "Fecha del parche",
"appliedPatchesLabel": "Parches aplicados",
"sizeLabel": "Tamaño del archivo",
"patchedDateHint": "${date} a las ${time}",
"appliedPatchesHint": "${quantity} parches aplicados",
"updateNotImplemented": "Esta función no se ha implementado aún"
},
"contributorsView": {
"widgetTitle": "Contribuidores"
},
"installErrorDialog": {
"mount_version_mismatch": "La versión no coincide",
"mount_no_root": "Sin acceso root",
"mount_missing_installation": "Instalación no encontrada",
"status_failure_blocked": "Instalación bloqueada",
"install_failed_verification_failure": "La verificación falló",
"status_failure_invalid": "Instalación inválida",
"install_failed_version_downgrade": "No se puede bajar de versión",
"status_failure_conflict": "Problema de instalación",
"status_failure_storage": "Problema de almacenamiento de la instalación",
"status_failure_incompatible": "Instalación incompatible",
"status_failure_timeout": "Tiempo de instalación agotado",
"status_unknown": "La instalación falló",
"mount_version_mismatch_description": "La instalación ha fallado debido a que la app instalada es una versión diferente de la app parcheada.\n\nInstala la versión de la app que estás montando y vuelve a intentarlo.",
"mount_no_root_description": "La instalación ha fallado debido a que no se ha concedido acceso root.\n\nConcede acceso root a ReVanced Manager y vuelve a intentarlo.",
"mount_missing_installation_description": "La instalación ha fallado debido a que la aplicación no ha sido instalada en este dispositivo para montarla.\n\nInstala la aplicación sin parchear antes de montar y vuelve a intentarlo.",
"status_failure_timeout_description": "La instalación tardó demasiado tiempo en terminar.\n\n¿Te gustaría intentarlo de nuevo?",
"status_failure_storage_description": "La instalación ha fallado debido a falta de almacenamiento.\n\nLibera algo de espacio y vuelva a intentarlo.",
"status_failure_invalid_description": "La instalación falló debido a que la app parcheada es inválida.\n\n¿Desinstalar la app e intentarlo de nuevo?",
"status_failure_incompatible_description": "La aplicación es incompatible con este dispositivo.\n\nUtilice un APK soportado por este dispositivo e inténtelo de nuevo.",
"status_failure_conflict_description": "La instalación fue evitada por una instalación existente de la app.\n\n¿Desinstalar la app instalada y volver a intentarlo?",
"status_failure_blocked_description": "La instalación fue bloqueada por ${packageName}.\n\nAjusta la configuración de seguridad e inténtalo de nuevo.",
"install_failed_verification_failure_description": "La instalación ha fallado debido a un problema de verificación.\n\nAjusta la configuración de seguridad e inténtalo de nuevo.",
"install_failed_version_downgrade_description": "La instalación ha fallado debido a que la app parcheada es una versión inferior a la instalada.\n\n¿Desinstalar la app y volver a intentarlo?",
"status_unknown_description": "La instalación ha fallado debido a una razón desconocida. Por favor, inténtalo de nuevo."
}
}

View File

@ -1,196 +0,0 @@
{
"okButton": "OK",
"cancelButton": "Cancelar",
"enabledLabel": "Activado",
"disabledLabel": "Desactivado",
"yesButton": "Sí",
"noButton": "No",
"warning": "Advertencia",
"navigationView": {
"dashboardTab": "Panel de control",
"patcherTab": "Parcheador",
"settingsTab": "Configuración"
},
"homeView": {
"widgetTitle": "Panel",
"updatesSubtitle": "Actualizaciones",
"patchedSubtitle": "Aplicaciones parcheadas",
"updatesAvailable": "Actualizaciones disponibles",
"noUpdates": "No hay actualizaciones disponibles",
"WIP": "Trabajo en progreso...",
"noInstallations": "No hay aplicaciones parcheadas instaladas",
"installed": "Instalado",
"updateDialogTitle": "Actualizar Manager",
"updateDialogText": "¿Está seguro de que desea descargar y actualizar ReVanced Manager?",
"notificationTitle": "Actualización descargada",
"notificationText": "Toca para instalar la actualización",
"downloadingMessage": "Descargando actualización...",
"installingMessage": "Instalando actualización...",
"errorDownloadMessage": "No se pudo descargar la actualización",
"errorInstallMessage": "No se pudo instalar la actualización",
"noConnection": "No hay conexión a Internet",
"updatesDisabled": "La actualización de una app parcheada está deshabilitada. Re-parchea la app de nuevo."
},
"applicationItem": {
"patchButton": "Parchear",
"infoButton": "Información",
"changelogLabel": "Historial de cambios"
},
"latestCommitCard": {
"loadingLabel": "Cargando...",
"timeagoLabel": "Hace {time}",
"patcherLabel": "Parcheador: ",
"managerLabel": "Manager: ",
"updateButton": "Actualizar Manager"
},
"patcherView": {
"widgetTitle": "Parcheador",
"patchButton": "Parchear",
"patchDialogText": "Acaba de seleccionar un parche de recursos y un \"Split APK\" ha sido detectado, así que pueden ocurrir algunos errores en el proceso de parcheo.\n¿Está seguro de que quiere continuar el parcheo de un \"Split APK\"?"
},
"appSelectorCard": {
"widgetTitle": "Selecciona una aplicación",
"widgetTitleSelected": "Aplicación seleccionada",
"widgetSubtitle": "Ninguna aplicación seleccionada",
"noAppsLabel": "No se encontraron aplicaciones",
"currentVersion": "Versión actual",
"recommendedVersion": "Versión recomendada",
"anyVersion": "cualquiera"
},
"patchSelectorCard": {
"widgetTitle": "Seleccionar parches",
"widgetTitleSelected": "Parches seleccionados",
"widgetSubtitle": "Seleccioné una aplicación antes",
"widgetEmptySubtitle": "Ningún parche seleccionado"
},
"socialMediaCard": {
"widgetTitle": "Redes sociales",
"widgetSubtitle": "¡Estamos en la red!"
},
"appSelectorView": {
"viewTitle": "Selecciona una aplicación",
"searchBarHint": "Buscar aplicaciones",
"storageButton": "Almacenamiento",
"errorMessage": "No se puede usar la aplicación seleccionada"
},
"patchesSelectorView": {
"viewTitle": "Seleccionar parches",
"searchBarHint": "Buscar parches",
"doneButton": "Listo",
"recommended": "Recomendados",
"all": "Todos",
"none": "Ninguno",
"loadPatchesSelection": "Cargar selección de parches",
"noSavedPatches": "No hay parches guardados para la app seleccionada\nPresione Hecho para guardar la selección actual",
"noPatchesFound": "No se encontraron parches para la aplicación seleccionada",
"selectAllPatchesWarningContent": "Está a punto de seleccionar todos los parches incluyendo parches no recomendados, lo cual puede causar comportamientos inesperados."
},
"patchItem": {
"unsupportedDialogText": "Seleccionar este parche puede causar errores.\n\nVersión de la app: {packageVersion}\nVersiones compatibles:\n{supportedVersions}",
"unsupportedPatchVersion": "El parche no es compatible con esta versión de la app. Habilita la opción experimental en los ajustes para continuar."
},
"installerView": {
"widgetTitle": "Instalador",
"installButton": "Instalar",
"installRootButton": "Instalar como Root",
"openButton": "Abrir",
"shareButton": "Compartir archivo",
"notificationTitle": "ReVanced Manager está parcheando",
"notificationText": "Toque para volver al instalador",
"shareApkMenuOption": "Compartir APK",
"exportApkMenuOption": "Exportar APK",
"shareLogMenuOption": "Compartir registros",
"installErrorDialogTitle": "Error",
"installErrorDialogText1": "La instalación como root no es posible con la selección actual de parches.\nVuelva a parchear la aplicación o elija una instalación no-root.",
"installErrorDialogText2": "La instalación sin root no es posible con la selección actual de parches.\nVuelva a parchear la app o elija una instalación root.",
"installErrorDialogText3": "La instalación como root no es posible porque la APK original fue seleccionada desde el almacenamiento.\nSeleccione una app ya instalada o utilice una instalación sin root.",
"noExit": "El instalador todavía se está ejecutando, no se puede salir..."
},
"settingsView": {
"widgetTitle": "Configuración",
"appearanceSectionTitle": "Apariencia",
"teamSectionTitle": "Equipo",
"infoSectionTitle": "Info",
"advancedSectionTitle": "Avanzado",
"logsSectionTitle": "Registros",
"darkThemeLabel": "Modo oscuro",
"darkThemeHint": "Bienvenido al lado oscuro",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Disfrute de una experiencia más acorde a su dispositivo",
"languageLabel": "Idioma",
"englishOption": "Inglés",
"sourcesLabel": "Fuentes",
"sourcesLabelHint": "Configure sus fuentes personalizadas",
"orgPatchesLabel": "Organización de los parches",
"sourcesPatchesLabel": "Fuente de los parches",
"orgIntegrationsLabel": "Organización de integraciones",
"sourcesIntegrationsLabel": "Fuente de las integraciones",
"sourcesResetDialogTitle": "Restablecer",
"sourcesResetDialogText": "¿Está seguro de que desea restablecer las fuentes personalizadas a sus valores predeterminados?",
"apiURLResetDialogText": "¿Estás seguro de que quieres restablecer la URL de la API a su valor predeterminado?",
"contributorsLabel": "Contribuidores",
"contributorsHint": "Una lista de contribuidores de ReVanced",
"logsLabel": "Registros",
"logsHint": "Compartir registros del Manager",
"apiURLLabel": "URL de la API",
"apiURLHint": "Configure su URL personalizada para la API",
"selectApiURL": "URL de la API",
"experimentalPatchesLabel": "Soporte para parches experimentales",
"experimentalPatchesHint": "Habilite el uso de parches no compatibles en cualquier versión de la app",
"enabledExperimentalPatches": "Soporte para parches experimentales activado",
"exportSectionTitle": "Importar y Exportar",
"aboutLabel": "Acerca de",
"snackbarMessage": "Copiado al portapapeles",
"sentryLabel": "Registro Sentry",
"sentryHint": "Enviar registros anónimos para ayudarnos a mejorar ReVanced Manager",
"restartAppForChanges": "Reinicie la app para aplicar los cambios",
"deleteKeystoreLabel": "Eliminar keystore",
"deleteKeystoreHint": "Eliminar el keystore usado para firmar la app",
"deletedKeystore": "Keystore eliminado",
"deleteTempDirLabel": "Borrar archivos temporales",
"deleteTempDirHint": "Elimina los archivos temporales no utilizados",
"deletedTempDir": "Archivos temporales eliminados",
"exportPatchesLabel": "Exportar la selección de parches",
"exportPatchesHint": "Exportar selección de parches a un archivo JSON",
"exportedPatches": "Selección de parches exportados",
"noExportFileFound": "No hay selección de parches para exportar",
"importPatchesLabel": "Importar la selección de parches",
"importPatchesHint": "Importar selección de parches desde un archivo JSON",
"importedPatches": "Selección de parches importados",
"resetStoredPatchesLabel": "Restablecer parches",
"resetStoredPatchesHint": "Restablece la selección de parches almacenados",
"resetStoredPatches": "La selección de parches ha sido restablecida",
"jsonSelectorErrorMessage": "No se puede utilizar el archivo JSON seleccionado",
"deleteLogsLabel": "Eliminar registros",
"deleteLogsHint": "Borrar los registros del Manager recopilados",
"deletedLogs": "Registros eliminados"
},
"appInfoView": {
"widgetTitle": "Información de la app",
"openButton": "Abrir",
"uninstallButton": "Desinstalar",
"patchButton": "Parchear",
"unpatchButton": "Desparchear",
"unpatchDialogText": "¿Está seguro de que desea desparchear esta aplicación?",
"rootDialogTitle": "Error",
"rootDialogText": "La app se instaló con permisos de superusuario, pero actualmente ReVanced Manager no tiene permisos.\nPor favor, concede permisos de superusuario primero.",
"packageNameLabel": "Nombre del paquete",
"originalPackageNameLabel": "Nombre del paquete original",
"installTypeLabel": "Tipo de instalación",
"rootTypeLabel": "Root",
"nonRootTypeLabel": "No-Root",
"patchedDateLabel": "Fecha del parche",
"patchedDateHint": "{date} a las {time}",
"appliedPatchesLabel": "Parches aplicados",
"appliedPatchesHint": "{quantity} parches aplicados",
"updateNotImplemented": "Esta función no se ha implementado aún"
},
"contributorsView": {
"widgetTitle": "Contribuidores",
"patcherContributors": "Contribuidores de los parches",
"patchesContributors": "Contribuidores de los parches",
"integrationsContributors": "Contribuidores de las integraciones",
"cliContributors": "Contribuidores del CLI",
"managerContributors": "Contribuidores del Manager"
}
}

279
assets/i18n/es_MX.i18n.json Executable file
View File

@ -0,0 +1,279 @@
{
"okButton": "Aceptar",
"cancelButton": "Cancelar",
"dismissButton": "Descartar",
"quitButton": "Salir",
"updateButton": "Actualizar",
"suggested": "Sugerida: ${version}",
"yesButton": "Sí",
"noButton": "No",
"warning": "Advertencia",
"notice": "Aviso",
"noShowAgain": "No volver a mostrar",
"add": "Añadir",
"remove": "Quitar",
"showChangelogButton": "Registro de cambios",
"showUpdateButton": "Actualizar",
"navigationView": {
"dashboardTab": "Panel de control",
"patcherTab": "Parcheador",
"settingsTab": "Configuración"
},
"homeView": {
"refreshSuccess": "Refrescado satisfactoriamente",
"widgetTitle": "Panel de control",
"updatesSubtitle": "Actualizaciones",
"patchedSubtitle": "Aplicaciones parcheadas",
"changeLaterSubtitle": "Puedes cambiar esto en la configuración más tarde.",
"noInstallations": "No hay aplicaciones parcheadas instaladas",
"installUpdate": "¿Continuar actualizando la aplicación?",
"updateSheetTitle": "Actualizar ReVanced Manager",
"updateDialogTitle": "Nueva actualización disponible",
"updatePatchesSheetTitle": "Actualizar ReVanced Patches",
"updateChangelogTitle": "Registro de cambios",
"updateDialogText": "Hay una nueva versión disponible para ${file}.\n\nLa versión actualmente instalada es la ${version}.",
"downloadConsentDialogTitle": "¿Descargar archivos necesarios?",
"downloadConsentDialogText": "ReVanced Manager necesita descargar los archivos necesarios para funcionar correctamente.",
"downloadConsentDialogText2": "Esto te conectará a ${url}.",
"downloadingMessage": "Descargando actualización...",
"downloadedMessage": "Actualización descargada",
"installingMessage": "Instalando actualización...",
"errorDownloadMessage": "No se pudo descargar la actualización",
"errorInstallMessage": "Error al instalar la actualización",
"noConnection": "Sin conexión a internet"
},
"applicationItem": {
"infoButton": "Información"
},
"latestCommitCard": {
"loadingLabel": "Cargando...",
"timeagoLabel": "Hace ${time}"
},
"patcherView": {
"widgetTitle": "Parcheador",
"patchButton": "Parchear",
"removedPatchesWarningDialogText": "Los siguientes parches fueron removidos desde la última vez que los usaste.\n\n${patches}\n\n${newPatches}¿Quieres continuar de todas formas?",
"requiredOptionDialogText": "Algunas opciones de parche tienen que ser establecidas."
},
"appSelectorCard": {
"widgetTitle": "Seleccionar una aplicación",
"widgetTitleSelected": "Aplicación seleccionada",
"widgetSubtitle": "No se seleccionó ninguna aplicación",
"noAppsLabel": "No se encontraron aplicaciones",
"anyVersion": "Cualquier versión"
},
"patchSelectorCard": {
"widgetTitle": "Seleccionar parches",
"widgetTitleSelected": "Parches seleccionados",
"widgetSubtitle": "Selecciona primero una aplicación",
"widgetEmptySubtitle": "Ningún parche fue seleccionado"
},
"socialMediaCard": {
"widgetTitle": "Redes sociales",
"widgetSubtitle": "¡Estamos en línea!"
},
"appSelectorView": {
"viewTitle": "Seleccionar una aplicación",
"searchBarHint": "Buscar aplicación",
"storageButton": "Almacenamiento",
"selectFromStorageButton": "Seleccionar desde almacenamiento",
"errorMessage": "No se puede usar la aplicación seleccionada",
"downloadToast": "La función de descarga aún no está disponible",
"requireSuggestedAppVersionDialogText": "La versión de la aplicación que has seleccionado no coincide con la versión sugerida, lo que podría causar errores inesperados. Por favor, utiliza la versión sugerida.\n\nVersión seleccionada: ${selected}\nVersión sugerida: ${suggested}\n\nPara continuar de todas formas, desactiva \"Requerir versión sugerida de la aplicación\" en la configuración.",
"featureNotAvailable": "Característica no implementada",
"featureNotAvailableText": "Esta aplicación es una APK dividida y solo puede ser parcheada e instalada confiablemente al montar con permisos de root. Sin embargo, puedes parchear e instalar una APK completa seleccionándola en el almacenamiento."
},
"patchesSelectorView": {
"viewTitle": "Selecciona parches",
"searchBarHint": "Buscar parches",
"universalPatches": "Parches universales",
"newPatches": "Nuevos parches",
"patches": "Parches",
"doneButton": "Completado",
"defaultChip": "Por defecto",
"defaultTooltip": "Seleccionar todos los parches predeterminados",
"noneChip": "Ninguno",
"noneTooltip": "Deseleccionar todos los elementos",
"loadPatchesSelection": "Cargar selección de parches",
"noSavedPatches": "No se ha guardado ninguna selección de parches para la aplicación seleccionada.\nPresione Hecho para guardar la selección actual.",
"noPatchesFound": "No se encontraron parches para la aplicación seleccionada",
"setRequiredOption": "Algunos parches requieren que se establezcan opciones:\n\n${patches}\n\nPor favor, establécelos antes de continuar."
},
"patchOptionsView": {
"customValue": "Valor personalizado",
"setToNull": "Establecer a nulo",
"nullValue": "Este valor de opción es nulo actualmente",
"viewTitle": "Opciones de parche",
"saveOptions": "Guardar",
"unselectPatch": "Deseleccionar parche",
"tooltip": "Más opciones de entrada",
"selectFilePath": "Selecciona la ruta del archivo",
"selectFolder": "Selecciona la carpeta",
"requiredOption": "La configuración de esta opción es necesaria",
"unsupportedOption": "Esta opción no está disponible",
"requiredOptionNull": "Hay que configurar las siguientes opciones:\n\n${options}"
},
"patchItem": {
"unsupportedDialogText": "Seleccionar este parche puede causar errores.\n\nVersión de la app: ${packageVersion}\nVersiones compatibles:\n${supportedVersions}",
"unsupportedPatchVersion": "El parche no es compatible con esta versión de la aplicación.",
"unsupportedRequiredOption": "Este parche contiene una opción necesaria que no es compatible con esta aplicación",
"patchesChangeWarningDialogText": "Se recomienda utilizar la selección y opciones de parches por defecto. Cambiarlas puede resultar en problemas inesperados.\n\nTendrás que activar \"Permitir cambiar la selección de parches\" en la configuración antes de cambiar cualquier selección de parches.",
"patchesChangeWarningDialogButton": "Usar selección por defecto"
},
"installerView": {
"installType": "Seleccione el tipo de instalación",
"installTypeDescription": "Selecciona el tipo de instalación con el que quieres continuar.",
"installButton": "Instalar",
"installRootType": "Montar",
"installNonRootType": "Normal",
"warning": "Desactiva las actualizaciones para la aplicación parcheada para evitar problemas inesperados.",
"pressBackAgain": "Vuelve a presionar atrás para cancelar",
"openButton": "Abrir",
"notificationTitle": "ReVanced Manager está parcheando",
"notificationText": "Pulsa para volver al instalador",
"exportApkButtonTooltip": "Exportar APK parcheado",
"exportLogButtonTooltip": "Exportar registro",
"screenshotDetected": "Se ha detectado una captura de pantalla. Si está intentando compartir el registro, por favor comparta una copia de texto en su lugar.\n\n¿Copiar registro al portapapeles?",
"copiedToClipboard": "Registro copiado en el portapapeles",
"noExit": "El instalador se está ejecutando, no puedes salir..."
},
"settingsView": {
"widgetTitle": "Ajustes",
"appearanceSectionTitle": "Apariencia",
"teamSectionTitle": "Equipo",
"debugSectionTitle": "Depurando",
"advancedSectionTitle": "Avanzado",
"exportSectionTitle": "Importar y Exportar",
"dataSectionTitle": "Fuentes de datos",
"themeModeLabel": "Tema de la app",
"systemThemeLabel": "Sistema",
"lightThemeLabel": "Claro",
"darkThemeLabel": "Modo oscuro",
"dynamicThemeLabel": "Material para ti",
"dynamicThemeHint": "Disfruta de una experiencia más cercana a tu dispositivo",
"languageLabel": "Idioma",
"languageUpdated": "Idioma actualizado",
"sourcesLabel": "Fuentes alternativas",
"sourcesLabelHint": "Configura las fuentes alternativas para ReVanced Patches y ReVanced Integrations",
"useAlternativeSources": "Usar fuentes alternativas",
"useAlternativeSourcesHint": "Usa fuentes alternativas para ReVanced Patches y ReVanced Integrations en lugar de la API",
"sourcesResetDialogTitle": "Reiniciar",
"sourcesResetDialogText": "¿Estás seguro de que quieres restablecer las fuentes a sus valores por defecto?",
"apiURLResetDialogText": "¿Estás seguro de que quieres restablecer la URL de tu API a su valor por defecto?",
"sourcesUpdateNote": "Nota: Se descargarán de forma automática ReVanced Patches y ReVanced Integrations desde las fuentes alternativas.\n\nEsto te conectará a la misma.",
"apiURLLabel": "URL API",
"apiURLHint": "Configura la URL de la API de ReVanced Manager",
"selectApiURL": "URL de la API",
"orgPatchesLabel": "Organización de parches",
"sourcesPatchesLabel": "Fuente de los parches",
"contributorsLabel": "Contribuidores",
"contributorsHint": "Lista de contribuidores de ReVanced",
"logsLabel": "Compartir registros",
"logsHint": "Compartir los registros de ReVanced Manager",
"enablePatchesSelectionLabel": "Permitir cambiar la selección de parches",
"enablePatchesSelectionHint": "No prevenir la selección o deselección de parches",
"enablePatchesSelectionWarningText": "Cambiar la selección de parches puede cauar problemas inespereados.\n\n¿Quieres activarlo de todas formas?",
"disablePatchesSelectionWarningText": "Estás a punto de desactivar cambiar la selección de los parches.\nLa selección predeterminada de los parches será restaurada.\n\n¿Desactivar de todos modos?",
"autoUpdatePatchesLabel": "Actualizar parches automáticamente",
"autoUpdatePatchesHint": "Actualiza los parches a la última versión automáticamente",
"showUpdateDialogLabel": "Mostrar diálogo de actualización",
"showUpdateDialogHint": "Muestra un diálogo cuando una nueva actualización esté disponible",
"universalPatchesLabel": "Mostrar parches universales",
"universalPatchesHint": "Muestra todas las aplicaciones y los parches universales (puede ralentizar la carga de la lista de aplicaciones)",
"versionCompatibilityCheckLabel": "Comprobar compatibilidad de versiones",
"versionCompatibilityCheckHint": "Previene seleccionar parches que no sean compatibles con la versión de la aplicación seleccionada",
"requireSuggestedAppVersionLabel": "Requerir versión sugerida de la aplicación",
"requireSuggestedAppVersionHint": "Previene seleccionar una aplicación cuya versión no sea la sugerida",
"requireSuggestedAppVersionDialogText": "Seleccionar una aplicación cuya versión no sea la sugerida puede causar problemas inesperados.\n\n¿Quieres continuar de todas formas?",
"aboutLabel": "Acerca de",
"snackbarMessage": "Copiado al portapapeles",
"restartAppForChanges": "Reinicie la aplicación para aplicar los cambios",
"deleteTempDirLabel": "Borrar archivos temporales",
"deleteTempDirHint": "Eliminar archivos temporales no utilizados",
"deletedTempDir": "Archivos temporales eliminados",
"exportPatchesLabel": "Exportar selección de parches",
"exportPatchesHint": "Exporta la selección de parches a un archivo JSON",
"exportedPatches": "Selección de parches exportada",
"noExportFileFound": "No hay selección de parches para exportar",
"importPatchesLabel": "Importar selección de parches",
"importPatchesHint": "Importa la selección de parches desde un archivo JSON",
"importedPatches": "Selección de parches importada",
"resetStoredPatchesLabel": "Restablecer selección de parches",
"resetStoredPatchesHint": "Restablece la selección de parches almacenada",
"resetStoredPatchesDialogTitle": "¿Restablecer selección de parches?",
"resetStoredPatchesDialogText": "Se restaurará la selección de parches por defecto.",
"resetStoredPatches": "Selección de parches restablecida",
"resetStoredOptionsLabel": "Restablecer configuración de parches",
"resetStoredOptionsHint": "Restablece la configuración de todos los parches",
"resetStoredOptionsDialogTitle": "¿Restablecer configuración de parches?",
"resetStoredOptionsDialogText": "Restablecer la configuración de parches eliminará todas las opciones guardadas.",
"resetStoredOptions": "Configuración de parches restablecida",
"deleteLogsLabel": "Borrar registros",
"deleteLogsHint": "Elimina los registros recopilados por ReVanced Manager",
"deletedLogs": "Registros eliminados",
"regenerateKeystoreLabel": "Regenerar repositorio de claves",
"regenerateKeystoreHint": "Regenera el repositorio de claves utilizado para firmar aplicaciones",
"regenerateKeystoreDialogTitle": "¿Regenerar repositorio de claves?",
"regenerateKeystoreDialogText": "Las aplicaciones parcheadas con el repositorio de claves anterior ya no podrán actualizarse.",
"regeneratedKeystore": "Repositorio de claves regenerado",
"exportKeystoreLabel": "Exportar repositorio de claves",
"exportKeystoreHint": "Exporta el repositorio de claves utilizado para firmar aplicaciones",
"exportedKeystore": "Repositorio de claves exportado",
"noKeystoreExportFileFound": "No hay repositorio de claves para exportar",
"importKeystoreLabel": "Importar repositorio de claves",
"importKeystoreHint": "Importa el repositorio de claves utilizado para firmar aplicaciones",
"importedKeystore": "Repositorio de claves importado",
"selectKeystorePassword": "Contraseña del repositorio de claves",
"selectKeystorePasswordHint": "Introduce la contraseña del repositorio de claves utilizado para firmar aplicaciones",
"jsonSelectorErrorMessage": "No se puede utilizar el archivo JSON seleccionado",
"keystoreSelectorErrorMessage": "No se puede utilizar el archivo de repositorio de claves seleccionado"
},
"appInfoView": {
"widgetTitle": "Informacion de la aplicación",
"openButton": "Abrir",
"uninstallButton": "Desinstalar",
"unmountButton": "Desmontar",
"rootDialogTitle": "Ocurrió un error",
"unmountDialogText": "¿Seguro que quieres desmontar esta aplicación?",
"uninstallDialogText": "¿Seguro que quieres desinstalar esta aplicación?",
"rootDialogText": "La aplicación se instaló con permisos de root, pero actualmente ReVanced Manager no tiene permisos root.\nPor favor, conceda primero los permisos de root.",
"packageNameLabel": "Nombre del paquete",
"installTypeLabel": "Tipo de instalación",
"mountTypeLabel": "Montar",
"regularTypeLabel": "Normal",
"patchedDateLabel": "Fecha de parcheo",
"appliedPatchesLabel": "Parches aplicados",
"patchedDateHint": "${date} a las ${time}",
"appliedPatchesHint": "${quantity} parches aplicados",
"updateNotImplemented": "Esta función aún no se ha implementado"
},
"contributorsView": {
"widgetTitle": "Contribuidores"
},
"installErrorDialog": {
"mount_version_mismatch": "La versión no coincide",
"mount_no_root": "Sin acceso root",
"mount_missing_installation": "No se encontró la instalación",
"status_failure_blocked": "Instalación bloqueada",
"install_failed_verification_failure": "Verificación fallida",
"status_failure_invalid": "Instalación inválida",
"install_failed_version_downgrade": "No se puede bajar de versión",
"status_failure_conflict": "Conflicto de instalación",
"status_failure_storage": "Problema de almacenamiento de la instalación",
"status_failure_incompatible": "Instalación incompatible",
"status_failure_timeout": "Tiempo de instalación agotado",
"status_unknown": "Instalación fallida",
"mount_version_mismatch_description": "La instalación falló debido a que la versión de la aplicación instalada es diferente a la de la aplicación parcheada.\n\nInstala la versión de la aplicación que intentas montar e inténtalo de nuevo.",
"mount_no_root_description": "La instalación falló debido a que no se ha concedido acceso root.\n\nConcédele acceso root a ReVanced Manager y vuelve a intentarlo.",
"mount_missing_installation_description": "La instalación falló debido a que la aplicación original no ha sido instalada en este dispositivo para montar la versión parcheada sobre ella.\n\nInstala la aplicación original antes de montar y vuelve a intentarlo.",
"status_failure_timeout_description": "La instalación tardó demasiado en finalizar.\n\n¿Quieres intentarlo de nuevo?",
"status_failure_storage_description": "La instalación falló debido a falta de almacenamiento.\n\nLibera algo de espacio y vuelve a intentarlo.",
"status_failure_invalid_description": "La instalación falló debido a que la aplicación parcheada es inválida.\n\n¿Quieres desinstalar la aplicación e intentarlo de nuevo?",
"status_failure_incompatible_description": "La aplicación es incompatible con este dispositivo.\n\nContacta con el desarrollador de la aplicación y solicita asistencia.",
"status_failure_conflict_description": "Se impidió la instalación debido a una instalación existente de la aplicación.\n\n¿Quieres desinstalar la aplicación instalada e intentarlo de nuevo?",
"status_failure_blocked_description": "${packageName} bloqueó la instalación.\n\nAjusta la configuración de seguridad e inténtalo de nuevo.",
"install_failed_verification_failure_description": "La instalación falló debido a un problema de verificación.\n\nAjusta la configuración de seguridad e inténtalo de nuevo.",
"install_failed_version_downgrade_description": "La instalación falló debido a que la aplicación parcheada es una versión inferior a la instalada.\n\n¿Quieres desinstalar la aplicación e intentarlo de nuevo?",
"status_unknown_description": "La instalación falló debido a una razón desconocida. Por favor, inténtalo de nuevo."
}
}

View File

@ -1,196 +0,0 @@
{
"okButton": "Ok",
"cancelButton": "Cancelar",
"enabledLabel": "Activado",
"disabledLabel": "Desactivado",
"yesButton": "Si",
"noButton": "No",
"warning": "Advertencia",
"navigationView": {
"dashboardTab": "Panel de control",
"patcherTab": "Aplicador de parches",
"settingsTab": "Ajustes"
},
"homeView": {
"widgetTitle": "Panel de control",
"updatesSubtitle": "Actualizaciones",
"patchedSubtitle": "Aplicaciones parcheadas",
"updatesAvailable": "Actualizaciones disponibles",
"noUpdates": "No hay actualizaciones disponibles",
"WIP": "Trabajo en curso...",
"noInstallations": "No hay aplicaciones parcheadas instaladas",
"installed": "Instaladas",
"updateDialogTitle": "Actualizar administrador",
"updateDialogText": "¿Estás seguro de que quieres descargar y actualizar ReVanced Manager?",
"notificationTitle": "Actualización descargada",
"notificationText": "Toca para instalar la actualización",
"downloadingMessage": "Descargando actualización...",
"installingMessage": "Instalando actualización...",
"errorDownloadMessage": "No se pudo descargar la actualización",
"errorInstallMessage": "Error al instalar la actualización",
"noConnection": "Sin conexión a internet",
"updatesDisabled": "La actualización de una aplicación parcheada está deshabilitada. Vuelve a parchear la aplicación."
},
"applicationItem": {
"patchButton": "Parchear",
"infoButton": "Información",
"changelogLabel": "Registro de cambios"
},
"latestCommitCard": {
"loadingLabel": "Cargando...",
"timeagoLabel": "hace {time}",
"patcherLabel": "Patcher: ",
"managerLabel": "Manager: ",
"updateButton": "Actualizar ReVanced Manager"
},
"patcherView": {
"widgetTitle": "Parcheador",
"patchButton": "Parchear",
"patchDialogText": "Seleccionaste un parche de recursos y se ha detectado una instalación de APK dividida, por lo que pueden ocurrir errores de parcheado.\n¿Estás seguro de que deseas continuar?"
},
"appSelectorCard": {
"widgetTitle": "Selecciona una aplicación",
"widgetTitleSelected": "Aplicación seleccionada",
"widgetSubtitle": "Ninguna aplicación seleccionada",
"noAppsLabel": "No se encontraron aplicaciones",
"currentVersion": "Versión actual",
"recommendedVersion": "Versión recomendada",
"anyVersion": "Cualquier versión"
},
"patchSelectorCard": {
"widgetTitle": "Seleccionar parches",
"widgetTitleSelected": "Parches seleccionados",
"widgetSubtitle": "Seleccione primero una aplicación",
"widgetEmptySubtitle": "Ningún parche seleccionado"
},
"socialMediaCard": {
"widgetTitle": "Redes sociales",
"widgetSubtitle": "¡Estamos en línea!"
},
"appSelectorView": {
"viewTitle": "Selecciona una aplicación",
"searchBarHint": "Buscar aplicaciones",
"storageButton": "Almacenamiento",
"errorMessage": "No se puede usar la aplicación seleccionada"
},
"patchesSelectorView": {
"viewTitle": "Selecciona parches",
"searchBarHint": "Buscar parches",
"doneButton": "Completado",
"recommended": "Recomendados",
"all": "Todos",
"none": "Ninguno",
"loadPatchesSelection": "Cargar parches seleccionados",
"noSavedPatches": "No hay parches guardados para la aplicacion seleccionada\nPresiona Listo para guardar la seleccion actual",
"noPatchesFound": "No se encontraron parches para la aplicación seleccionada",
"selectAllPatchesWarningContent": "Estás seleccionando todos los parches, esto incluye algunos que no están recomendados y podrían causar comportamientos inadecuados."
},
"patchItem": {
"unsupportedDialogText": "Seleccionar este parche puede causar errores.\n\nVersión de la app: {packageVersion}\nVersiones compatibles:\n{supportedVersions}",
"unsupportedPatchVersion": "El parche no es compatible con esta versión de la aplicación. Activa la opción experimental en la configuración para continuar."
},
"installerView": {
"widgetTitle": "Instalador",
"installButton": "Instalar",
"installRootButton": "Instalar como Root",
"openButton": "Abrir",
"shareButton": "Compartir archivo",
"notificationTitle": "ReVanced Manager está parcheando",
"notificationText": "Pulsa para volver al instalador",
"shareApkMenuOption": "Compartir APK",
"exportApkMenuOption": "Exportar APK",
"shareLogMenuOption": "Compartir registro",
"installErrorDialogTitle": "Error",
"installErrorDialogText1": "La instalación de root no es posible con la selección de parches actual.\nVuelva a parchar su aplicación o elija una instalación sin-root.",
"installErrorDialogText2": "La instalación sin-root no es posible con la selección de parches actual.\nVuelva a parchar su aplicación o elija una instalación con root, si tu dispositivo cuenta con ello.",
"installErrorDialogText3": "La instalación con Root no es posible ya que la APK fue seleccionada desde el almacenamiento.\nSelecciona una aplicación instalada o elige la opcion no-root.",
"noExit": "El instalador se está ejecutando, no puedes salir..."
},
"settingsView": {
"widgetTitle": "Ajustes",
"appearanceSectionTitle": "Apariencia",
"teamSectionTitle": "Equipo",
"infoSectionTitle": "Información",
"advancedSectionTitle": "Avanzado",
"logsSectionTitle": "Registros",
"darkThemeLabel": "Modo oscuro",
"darkThemeHint": "Bienvenido al lado oscuro",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Disfruta de una experiencia más cercana a tu dispositivo",
"languageLabel": "Idioma",
"englishOption": "Inglés",
"sourcesLabel": "Fuentes",
"sourcesLabelHint": "Configura tus fuentes personalizadas",
"orgPatchesLabel": "Organización de parches",
"sourcesPatchesLabel": "Fuente de los parches",
"orgIntegrationsLabel": "Organización de integraciones",
"sourcesIntegrationsLabel": "Fuente de integraciones",
"sourcesResetDialogTitle": "Reiniciar",
"sourcesResetDialogText": "¿Esta seguro de reiniciar las fuentes personalizadas a su valor predeterminado?",
"apiURLResetDialogText": "¿Esta seguro de restablecer la URL de la API a su valor predeterminado?",
"contributorsLabel": "Contribuidores",
"contributorsHint": "Lista de contribuidores de ReVanced",
"logsLabel": "Registros",
"logsHint": "Compartir registros de la aplicación",
"apiURLLabel": "URL API",
"apiURLHint": "Configure la URL personalizada de la API",
"selectApiURL": "URL de la API",
"experimentalPatchesLabel": "Soporte a parches experimentales",
"experimentalPatchesHint": "Habilite el uso de parches no compatibles en cualquier versión de la aplicación",
"enabledExperimentalPatches": "Soporte a parches experimentales activado",
"exportSectionTitle": "Importar y Exportar",
"aboutLabel": "Acerca de",
"snackbarMessage": "Copiado al portapapeles",
"sentryLabel": "Registro centinela",
"sentryHint": "Enviar registros anónimos para ayudarnos a mejorar ReVanced Manager",
"restartAppForChanges": "Reinicie la aplicación para aplicar los cambios",
"deleteKeystoreLabel": "Eliminar keystore",
"deleteKeystoreHint": "Eliminar el keystore usado para firmar la app",
"deletedKeystore": "Keystore eliminado",
"deleteTempDirLabel": "Borrar archivos temporales",
"deleteTempDirHint": "Eliminar archivos temporales sin utilizar",
"deletedTempDir": "Archivos temporales eliminados",
"exportPatchesLabel": "Exportar la selección de parches",
"exportPatchesHint": "Exportar selección de parches a un archivo JSON",
"exportedPatches": "Selección de parches exportada",
"noExportFileFound": "No hay selección de parches para exportar",
"importPatchesLabel": "Importar selección de parches",
"importPatchesHint": "Importar selección de parches desde un archivo JSON",
"importedPatches": "Selección de parches importada",
"resetStoredPatchesLabel": "Restablecer parches",
"resetStoredPatchesHint": "Restablecer la selección de parches almacenados",
"resetStoredPatches": "Se ha restablecido la selección de parches",
"jsonSelectorErrorMessage": "No se puede utilizar el archivo JSON seleccionado",
"deleteLogsLabel": "Eliminar registros",
"deleteLogsHint": "Borrar los registros del administrador",
"deletedLogs": "Registros eliminados"
},
"appInfoView": {
"widgetTitle": "Informacion de la applicacion",
"openButton": "Abrir",
"uninstallButton": "Desinstalar",
"patchButton": "Parchar",
"unpatchButton": "Desparchar",
"unpatchDialogText": "¿Estás seguro que quieres remover el parche?",
"rootDialogTitle": "Error",
"rootDialogText": "La aplicación se instaló con permisos de superusuario, pero actualmente ReVanced Manager no tiene permisos.\nPor favor, conceda primero los permisos de superusuario.",
"packageNameLabel": "Nombre del paquete",
"originalPackageNameLabel": "Original package name",
"installTypeLabel": "Installation type",
"rootTypeLabel": "Root",
"nonRootTypeLabel": "Sin-Root",
"patchedDateLabel": "Fecha de parcheo",
"patchedDateHint": "{date} a las {time}",
"appliedPatchesLabel": "Parches aplicados",
"appliedPatchesHint": "{quantity} parches aplicados",
"updateNotImplemented": "Esta función aún no se ha implementado"
},
"contributorsView": {
"widgetTitle": "Contribuidores",
"patcherContributors": "Colaboradores del parcheador",
"patchesContributors": "Colaboradores de parches",
"integrationsContributors": "Colaboradores de la integración",
"cliContributors": "Colaboradores de la CLI",
"managerContributors": "Colaboradores del administrador"
}
}

298
assets/i18n/et_EE.i18n.json Executable file
View File

@ -0,0 +1,298 @@
{
"okButton": "OK",
"cancelButton": "Tühista",
"dismissButton": "Lükka tagasi",
"quitButton": "Välju",
"updateButton": "Uuenda",
"suggested": "Soovitatud: ${version}",
"yesButton": "Jah",
"noButton": "Ei",
"warning": "Hoiatus",
"notice": "Märkus",
"noShowAgain": "Ära näita seda enam",
"add": "Lisa",
"remove": "Eemalda",
"showChangelogButton": "Näita muudatuste logi",
"showUpdateButton": "Näita uuendust",
"navigationView": {
"dashboardTab": "Avaleht",
"patcherTab": "Patcher",
"settingsTab": "Seaded"
},
"homeView": {
"refreshSuccess": "Uuendatud edukalt",
"widgetTitle": "Avaleht",
"updatesSubtitle": "Uuendused",
"lastPatchedAppSubtitle": "Viimati parandatud rakendus",
"patchedSubtitle": "Installitud rakendused",
"changeLaterSubtitle": "Seda saate hiljem seadistuste kaudu muuta.",
"noSavedAppFound": "Rakendust ei leitud",
"noInstallations": "Parandatud rakendusi pole installitud",
"installUpdate": "Kas soovite uuenduse installida?",
"updateSheetTitle": "Värskenda ReVanced Manager",
"updateDialogTitle": "Uus uuendus on saadaval",
"updatePatchesSheetTitle": "Uuenda ReVancedi parandusi",
"updateChangelogTitle": "Muudatuste log",
"updateDialogText": "${file} jaoks on saadaval uus uuendus.\n\nPraegu installitud versioon on ${version}.",
"downloadConsentDialogTitle": "Lae alla vajalikud failid?",
"downloadConsentDialogText": "ReVanced Manager peab laadima alla vajalikud failid, et korrektselt töötada.",
"downloadConsentDialogText2": "See ühendab teid ${url} aadressiga.",
"downloadingMessage": "Laadin alla uuendust...",
"downloadedMessage": "Uuendus alla laaditud",
"installingMessage": "Installeerin uuendust...",
"errorDownloadMessage": "Uuendust ei saa alla laadida",
"errorInstallMessage": "Uuendust ei saa installida",
"noConnection": "Internet-ühendust pole"
},
"applicationItem": {
"infoButton": "Info"
},
"latestCommitCard": {
"loadingLabel": "Laadimine...",
"timeagoLabel": "${time} tagasi"
},
"patcherView": {
"widgetTitle": "Patcher",
"patchButton": "Paranda",
"incompatibleArchWarningDialogText": "Selle arhitektuuri parandamine pole veel toetatud ja see võib ebaõnnestuda. Kas jätkata ikkagi?",
"removedPatchesWarningDialogText": "Eemaldatud parandused alates viimasest korda, kui te seda rakendust parandasite:\n\n${patches}\n\n${newPatches} Kas jätkata ikkagi?",
"addedPatchesDialogText": "Lisatud parandused alates viimasest korda, kui te seda rakendust parandasite:\n\n${addedPatches}\n\n",
"requiredOptionDialogText": "Mõned parandusvalikud peavad olema seatud."
},
"appSelectorCard": {
"widgetTitle": "Vali rakendus",
"widgetTitleSelected": "Valitud rakendus",
"widgetSubtitle": "Rakendust pole valitud",
"noAppsLabel": "Rakendusi ei leitud",
"anyVersion": "Suvaline versioon"
},
"patchSelectorCard": {
"widgetTitle": "Vali parandused",
"widgetTitleSelected": "Valitud parandused",
"widgetSubtitle": "Valige esmalt rakendus",
"widgetEmptySubtitle": "Parandusi pole valitud"
},
"socialMediaCard": {
"widgetTitle": "Sotsiaalmeedia",
"widgetSubtitle": "Oleme võrgus!"
},
"appSelectorView": {
"viewTitle": "Vali rakendus",
"searchBarHint": "Otsi rakendust",
"storageButton": "Salvestus",
"selectFromStorageButton": "Vali salvestusest",
"errorMessage": "Valitud rakendust ei saa kasutada",
"downloadToast": "Laadimisfunktsioon pole veel saadaval",
"requireSuggestedAppVersionDialogText": "Teie valitud rakenduse versioon ei vasta soovitatud versioonile, mis võib põhjustada ootamatuid probleeme. Palun kasutage soovitatud versiooni.\n\nValitud versioon: ${selected}\nSoovitatud versioon: ${suggested}\n\nJätkamiseks keelake seadistuste kaudu \"Nõua soovitatud rakenduse versiooni\".",
"featureNotAvailable": "Funktsioon pole rakendatud",
"featureNotAvailableText": "See rakendus on jagatud APK ja seda saab usaldusväärselt parandada ja installida ainult juurõigustega mäluseadme paigaldamise abil. Siiski saate parandada ja installida täieliku APK, valides selle salvestusruumist."
},
"patchesSelectorView": {
"viewTitle": "Vali parandused",
"searchBarHint": "Otsi parandusi",
"universalPatches": "Universaalsed parandused",
"newPatches": "Uued parandused",
"patches": "Parandused",
"doneButton": "Valmis",
"defaultChip": "Vaikimisi",
"defaultTooltip": "Vali kõik vaikimisi parandused",
"noneChip": "Ükski",
"noneTooltip": "Tühista kõik parandused",
"loadPatchesSelection": "Laadi paranduste valik",
"noSavedPatches": "Valitud rakendusele salvestatud paranduste valikut pole.\nVajutage Valmis, et salvestada praegune valik.",
"noPatchesFound": "Valitud rakenduse jaoks ei leitud parandusi",
"setRequiredOption": "Mõned parandused vajavad valikute määramist:\n\n${patches}\n\nPalun määrake need enne jätkamist."
},
"patchOptionsView": {
"customValue": "Kohandatud väärtus",
"setToNull": "Sea nulliks",
"nullValue": "See suvandi väärtus on praegu null",
"viewTitle": "Parandusvalikud",
"saveOptions": "Salvesta",
"unselectPatch": "Tühista parandus",
"tooltip": "Rohkem sisestusvalikuid",
"selectFilePath": "Vali faili tee",
"selectFolder": "Vali kaust",
"requiredOption": "Selle suvandi seadistamine on nõutav",
"unsupportedOption": "See valik pole toetatud",
"requiredOptionNull": "Järgmised valikud peavad olema seatud:\n\n${options}"
},
"patchItem": {
"unsupportedDialogText": "Selle paranduse valik võib põhjustada parandusvigade tekkimist.\n\nRakenduse versioon: ${packageVersion}\nToetatud versioonid:\n${supportedVersions}",
"unsupportedPatchVersion": "See rakenduse versioon ei toeta parandust.",
"unsupportedRequiredOption": "See parandus sisaldab nõutavat valikut, mida see rakendus ei toeta",
"patchesChangeWarningDialogText": "Soovitatav on kasutada vaikimisi paranduste valikut ja suvandeid. Nende muutmine võib põhjustada ootamatuid probleeme.\n\nEnne paranduste valiku muutmist peate seadetes lubama \"Luba paranduste valiku muutmine\".",
"patchesChangeWarningDialogButton": "Kasuta vaikimisi valikut"
},
"installerView": {
"installType": "Vali installitüüp",
"installTypeDescription": "Valige installimisviis, et jätkata.",
"installButton": "Paigalda",
"installRootType": "Mounti",
"installNonRootType": "Tavaline",
"warning": "Keela parandatud rakenduse automaatsed uuendused, et vältida ootamatuid probleeme.",
"pressBackAgain": "Vajutage tagasi uuesti, et tühistada",
"openButton": "Ava",
"notificationTitle": "ReVanced Manager parandab",
"notificationText": "Puudutage, et naasta installeri juurde",
"exportApkButtonTooltip": "Ekspordi parandatud APK",
"exportLogButtonTooltip": "Ekspordi log",
"screenshotDetected": "Ekraanipilt on tuvastatud. Kui proovite logi jagada, jagage selle asemel teksti koopia.\n\nKopeeri log lõikepuhvrisse?",
"copiedToClipboard": "Logi kopeeritud lõikepuhvrisse",
"noExit": "Installer töötab ikka, ei saa väljuda..."
},
"settingsView": {
"widgetTitle": "Seaded",
"appearanceSectionTitle": "Välimus",
"teamSectionTitle": "Meeskond",
"debugSectionTitle": "Tõrkeotsing",
"advancedSectionTitle": "Täiustatud",
"exportSectionTitle": "Impordi ja ekspordi",
"dataSectionTitle": "Andmeallikad",
"themeModeLabel": "Rakenduse teema",
"systemThemeLabel": "Süsteem",
"lightThemeLabel": "Heledad",
"darkThemeLabel": "Tumedad",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Nautige oma seadmega lähemal kogemust",
"languageLabel": "Keel",
"languageUpdated": "Keel uuendatud",
"sourcesLabel": "Alternatiivsed allikad",
"sourcesLabelHint": "Konfigureeri ReVanced Patchide alternatiivsed allikad",
"useAlternativeSources": "Kasuta alternatiivseid allikaid",
"useAlternativeSourcesHint": "Kasuta ReVanced Patchide alternatiivseid allikaid API asemel",
"sourcesResetDialogTitle": "Lähtesta",
"sourcesResetDialogText": "Kas olete kindel, et soovite oma allikad vaikimisi väärtustele lähtestada?",
"apiURLResetDialogText": "Kas olete kindel, et soovite oma API URL-i vaikimisi väärtustele lähtestada?",
"sourcesUpdateNote": "Märkus: See laadib ReVanced Patchid automaatselt alternatiivsetest allikatest.\n\nSee ühendab teid alternatiivse allikaga.",
"apiURLLabel": "API URL",
"apiURLHint": "Konfigureeri ReVanced Manageri API URL",
"selectApiURL": "API URL",
"orgPatchesLabel": "Paranduste organisatsioon",
"sourcesPatchesLabel": "Paranduste allikas",
"contributorsLabel": "Kaasautorid",
"contributorsHint": "Nimekiri ReVanced'i kaasautoritest",
"logsLabel": "Jaga logisid",
"logsHint": "Jaga ReVanced Manageri logisid",
"enablePatchesSelectionLabel": "Luba paranduste valiku muutmine",
"enablePatchesSelectionHint": "Ära keela paranduste valimist või valikust eemaldamist",
"enablePatchesSelectionWarningText": "Paranduste valiku muutmine võib põhjustada ootamatuid probleeme.\n\nKas lubate ikkagi?",
"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",
"showUpdateDialogLabel": "Näita uuenduse dialoogi",
"showUpdateDialogHint": "Näita dialoogi, kui on saadaval uus uuendus",
"universalPatchesLabel": "Näita universaalseid parandusi",
"universalPatchesHint": "Kuva kõik rakendused ja universaalsed parandused (võib aeglustada rakenduste loendit)",
"lastPatchedAppLabel": "Salvesta parandatud rakendus",
"lastPatchedAppHint": "Salvesta viimane parandus, et hiljem installida või eksportida",
"versionCompatibilityCheckLabel": "Versiooni ühilduvuse kontroll",
"versionCompatibilityCheckHint": "Keela valitud rakenduse versiooniga mitteühilduvate paranduste valik",
"requireSuggestedAppVersionLabel": "Nõua soovitatud rakenduse versiooni",
"requireSuggestedAppVersionHint": "Keela valitud rakenduse versiooni valik, mis ei ole soovitatud",
"requireSuggestedAppVersionDialogText": "Soovitatud versioonist erineva rakenduse valik võib põhjustada ootamatuid probleeme.\n\nKas soovite jätkata ikkagi?",
"aboutLabel": "Teave",
"snackbarMessage": "Kopeeritud lõikepuhvrisse",
"restartAppForChanges": "Taaskäivitage rakendus muudatuste rakendamiseks",
"deleteTempDirLabel": "Kustuta ajutised failid",
"deleteTempDirHint": "Kustuta mittevajalikud ajutised failid",
"deletedTempDir": "Ajutine failid kustutatud",
"exportSettingsLabel": "Ekspordi seaded",
"exportSettingsHint": "Ekspordi seaded JSON-faili",
"exportedSettings": "Seaded eksporditud",
"importSettingsLabel": "Impordi seaded",
"importSettingsHint": "Impordi seaded JSON-failist",
"importedSettings": "Seaded imporditud",
"exportPatchesLabel": "Ekspordi paranduste valik",
"exportPatchesHint": "Ekspordi paranduste valik JSON-faili",
"exportedPatches": "Paranduste valik eksporditud",
"noExportFileFound": "Paranduste valikut pole võimalik eksportida",
"importPatchesLabel": "Impordi paranduste valik",
"importPatchesHint": "Impordi paranduste valik JSON-failist",
"importedPatches": "Paranduste valik imporditud",
"resetStoredPatchesLabel": "Lähtesta paranduste valik",
"resetStoredPatchesHint": "Lähtesta salvestatud paranduste valik",
"resetStoredPatchesDialogTitle": "Lähtesta paranduste valik?",
"resetStoredPatchesDialogText": "Taastatakse paranduste vaikimisi valik.",
"resetStoredPatches": "Paranduste valik on lähtestatud",
"resetStoredOptionsLabel": "Lähtesta paranduste suvandid",
"resetStoredOptionsHint": "Lähtesta kõik paranduste suvandid",
"resetStoredOptionsDialogTitle": "Lähtesta paranduste suvandid?",
"resetStoredOptionsDialogText": "Paranduste suvandite lähtestamine eemaldab kõik salvestatud suvandid.",
"resetStoredOptions": "Suvandid on lähtestatud",
"deleteLogsLabel": "Tühjenda logid",
"deleteLogsHint": "Kustuta ReVanced Manageri kogutud logid",
"deletedLogs": "Logid kustutatud",
"regenerateKeystoreLabel": "Taasta võtmehoidla",
"regenerateKeystoreHint": "Taasta võtmehoidla, mida kasutatakse rakenduste allkirjastamiseks",
"regenerateKeystoreDialogTitle": "Taasta võtmehoidla?",
"regenerateKeystoreDialogText": "Parandatud rakendused, mis on allkirjastatud vana võtmehoidlaga, ei saa enam uuendada.",
"regeneratedKeystore": "Võtmehoidla taastatud",
"exportKeystoreLabel": "Ekspordi võtmehoidla",
"exportKeystoreHint": "Ekspordi võtmehoidla, mida kasutatakse rakenduste allkirjastamiseks",
"exportedKeystore": "Võtmehoidla eksporditud",
"noKeystoreExportFileFound": "Võtmehoidla eksportida pole",
"importKeystoreLabel": "Impordi võtmehoidla",
"importKeystoreHint": "Impordi võtmehoidla, mida kasutatakse rakenduste allkirjastamiseks",
"importedKeystore": "Võtmehoidla imporditud",
"selectKeystorePassword": "Võtmehoidla parool",
"selectKeystorePasswordHint": "Vali võtmehoidla parool, mida kasutatakse rakenduste allkirjastamiseks",
"jsonSelectorErrorMessage": "Valitud JSON-faili ei saa kasutada",
"keystoreSelectorErrorMessage": "Valitud võtmehoidla faili ei saa kasutada"
},
"appInfoView": {
"widgetTitle": "Rakenduse info",
"openButton": "Ava",
"installButton": "Installi",
"uninstallButton": "Desinstalli",
"unmountButton": "Eemalda",
"exportButton": "Ekspordi",
"deleteButton": "Kustuta",
"rootDialogTitle": "Viga",
"lastPatchedAppDescription": "See on varukoopia viimast korda parandatud rakendusest.",
"unmountDialogText": "Kas olete kindel, et soovite selle rakenduse eemaldada?",
"uninstallDialogText": "Kas olete kindel, et soovite selle rakenduse desinstallida?",
"rootDialogText": "Rakendus on installitud superkasutaja õigustega, aga ReVanced Manageril pole praegu õigusi.\nPalun anna ReVanced Managerile superkasutaja õigused.",
"removeAppDialogTitle": "Kustutada rakendus?",
"removeAppDialogText": "Kas olete kindel, et soovite selle varukoopia kustutada?",
"packageNameLabel": "Pakettinimi",
"installTypeLabel": "Installatsiooni tüüp",
"mountTypeLabel": "Liigutamine",
"regularTypeLabel": "Tavaline",
"patchedDateLabel": "Parandatud kuupäev",
"appliedPatchesLabel": "Rakendatud parandused",
"sizeLabel": "Faili suurus",
"patchedDateHint": "${date} kell ${time}",
"appliedPatchesHint": "${quantity} rakendatud parandust",
"updateNotImplemented": "See funktsioon pole veel implementeeritud"
},
"contributorsView": {
"widgetTitle": "Kaasautorid"
},
"installErrorDialog": {
"mount_version_mismatch": "Versiooni erinevus",
"mount_no_root": "Juurõigusi pole",
"mount_missing_installation": "Installatsiooni ei leitud",
"status_failure_blocked": "Installatsioon blokeeritud",
"install_failed_verification_failure": "Kinnitamine ebaõnnestus",
"status_failure_invalid": "Installatsioon kehtetu",
"install_failed_version_downgrade": "Ei saa alla astuda",
"status_failure_conflict": "Installatsiooni konflikt",
"status_failure_storage": "Installatsiooni salvestusruumi probleem",
"status_failure_incompatible": "Installatsioon ei ole ühilduv",
"status_failure_timeout": "Installatsiooni aegumine",
"status_unknown": "Installatsioon ebaõnnestus",
"mount_version_mismatch_description": "Installatsioon ebaõnnestus, kuna installitud rakendus on erineva versiooniga kui parandatud rakendus.\n\nInstalleeri rakenduse versioon, mida sa liigutad, ja proovi uuesti.",
"mount_no_root_description": "Installatsioon ebaõnnestus, kuna juurõigusi pole antud.\n\nAnna ReVanced Managerile juurõigused ja proovi uuesti.",
"mount_missing_installation_description": "Installatsioon ebaõnnestus, kuna parandamata rakendus ei ole selles seadmes installitud, et seda üle liigutada.\n\nInstalleeri parandamata rakendus enne liigutamist ja proovi uuesti.",
"status_failure_timeout_description": "Installatsioon kestis liiga kaua.\n\nKas soovite uuesti proovida?",
"status_failure_storage_description": "Installatsioon ebaõnnestus ebapiisava salvestusruumi tõttu.\n\nVabasta ruumi ja proovi uuesti.",
"status_failure_invalid_description": "Installatsioon ebaõnnestus, kuna parandatud rakendus on kehtetu.\n\nDesinstalli rakendus ja proovi uuesti?",
"status_failure_incompatible_description": "Rakendus ei ole selle seadmega ühilduv.\n\nKasutage APK-d, mis on selle seadmega ühilduv, ja proovige uuesti.",
"status_failure_conflict_description": "Installatsiooni takistas olemasolev rakenduse installatsioon.\n\nDesinstalli installitud rakendus ja proovi uuesti?",
"status_failure_blocked_description": "Installatsiooni blokeeris ${packageName}.\n\nKohanda oma turvaseadeid ja proovi uuesti.",
"install_failed_verification_failure_description": "Installatsioon ebaõnnestus kinnituse probleemi tõttu.\n\nKohanda oma turvaseadeid ja proovi uuesti.",
"install_failed_version_downgrade_description": "Installatsioon ebaõnnestus, kuna parandatud rakendus on madalama versiooniga kui installitud rakendus.\n\nDesinstalli rakendus ja proovi uuesti?",
"status_unknown_description": "Installatsioon ebaõnnestus tundmatu põhjuse tõttu. Proovige uuesti."
}
}

174
assets/i18n/fa_IR.i18n.json Executable file
View File

@ -0,0 +1,174 @@
{
"okButton": "تأیید",
"cancelButton": "انصراف",
"dismissButton": "نادیده گرفتن",
"quitButton": "خروج",
"updateButton": "به‌روزرسانی",
"suggested": "پیشنهاد شده:${version}",
"yesButton": "بله",
"noButton": "خیر",
"warning": "هشدار",
"notice": "توجه",
"noShowAgain": "دوباره نشان داده نشود",
"add": "افزودن",
"remove": "حذف",
"showChangelogButton": "نمایش تغییرات",
"showUpdateButton": "نمایش به روز رسانی",
"navigationView": {
"dashboardTab": "پیشخوان",
"patcherTab": "نصب کننده پچ",
"settingsTab": "تنظیمات"
},
"homeView": {
"refreshSuccess": "با موفقیت به روزرسانی شد",
"widgetTitle": "پیشخوان",
"updatesSubtitle": "به‌روزرسانی‌ها",
"lastPatchedAppSubtitle": "آخرین برنامه پچ شده",
"patchedSubtitle": "برنامه‌های نصب‌شده",
"noSavedAppFound": "\n\t\tهیچ برنامه ای پیدا نشد\n\t",
"noInstallations": "هیچ برنامه پچ شده ای نصب نشده",
"installUpdate": "ادامه نصب بروزرسانی?",
"updateSheetTitle": "بروزرسانی Revanced Manager",
"updateDialogTitle": "به‌روزرسانی جدیدی موجود است",
"updatePatchesSheetTitle": "بروزرسانی پچ های Revanced",
"updateChangelogTitle": "لیست تغییرات",
"downloadConsentDialogText2": "اتصال به ${url}.",
"downloadingMessage": "در حال بارگیری به‌روزرسانی...",
"downloadedMessage": "به‌روزرسانی دانلود شد",
"installingMessage": "درحال نصب بروزرسانی...",
"errorDownloadMessage": "دانلود بروزرسانی ممکن نیست",
"errorInstallMessage": "نصب بروزرسانی ممکن نیست",
"noConnection": "اتصال به اینترنت موجود نیست"
},
"applicationItem": {
"infoButton": "اطلاعات"
},
"latestCommitCard": {
"loadingLabel": "درحال بارگذاری...",
"timeagoLabel": "${time} پیش"
},
"patcherView": {
"widgetTitle": "نصب کننده پچ",
"patchButton": "پچ",
"requiredOptionDialogText": "بعضی از تنظیمات پچ باید انتخاب شود."
},
"appSelectorCard": {
"widgetTitle": "یک برنامه را انتخاب کنید",
"widgetTitleSelected": "برنامه‌ انتخاب شده",
"noAppsLabel": "هیچ برنامه ای یافت نشد"
},
"patchSelectorCard": {
"widgetTitle": "پچ ها را انتخاب کنید",
"widgetTitleSelected": "پچ های انتخاب شده",
"widgetSubtitle": "ابتدا یک برنامه را انتخاب کنید",
"widgetEmptySubtitle": "هیچ پچی انتخاب نشده است"
},
"socialMediaCard": {
"widgetTitle": "شبکه های اجتماعی",
"widgetSubtitle": "ما آنلاین هستیم!"
},
"appSelectorView": {
"viewTitle": "یک برنامه را انتخاب کنید",
"searchBarHint": "جستجوی برنامه‌",
"storageButton": "محل ذخیره",
"selectFromStorageButton": "انتخاب از محل ذخیره",
"errorMessage": "امکان استفاده از برنامه انتخابی وجود ندارد",
"downloadToast": "بارگیری عملکرد فعلا در دسترس نیست",
"featureNotAvailable": "قابلیت اضافه نشده است"
},
"patchesSelectorView": {
"viewTitle": "پچ ها را انتخاب کنید",
"searchBarHint": "جست و جوی پچ ها",
"universalPatches": "پچ های عمومی",
"newPatches": "پچ های جدید",
"patches": "پچ ها",
"doneButton": "انجام شد",
"defaultChip": "پیشفرض",
"defaultTooltip": "تمام پچ های پیشفرض انتخاب شود",
"noneChip": "هیچکدام",
"noneTooltip": "حذف انتخاب همه پچ ها",
"noPatchesFound": "هیچ وصله ای برای این برنامه پیدا نشد"
},
"patchOptionsView": {
"setToNull": "تنظیم به null",
"saveOptions": "ذخیره",
"selectFolder": "انتخاب پوشه"
},
"patchItem": {
"unsupportedDialogText": "انتخاب این پچ(وصله) ممکنه خطاهای در هنگام پچ کردن ایجاد کند.\n\nنسخه برنامه: ${packageVersion}\nنسخه های پشتیبان شده:\n${supportedVersions}"
},
"installerView": {
"installButton": "نصب",
"installRootType": "قرار دادن",
"installNonRootType": "عادی",
"openButton": "باز کن",
"notificationTitle": "ریونسد منیجر در حال پچ کردن است",
"notificationText": "کلیک کنید تا به نصب کننده برگردید",
"exportLogButtonTooltip": "صدور لاگ",
"noExit": "نصب کننده در حال اجراست، نمی‌توان خارج شد..."
},
"settingsView": {
"widgetTitle": "تنظیمات",
"appearanceSectionTitle": "ظاهر",
"teamSectionTitle": "گروه",
"advancedSectionTitle": "پیشرفته",
"exportSectionTitle": "وارد کردن /خروجی گرفتن",
"dataSectionTitle": "منابع اطلاعات",
"themeModeLabel": "پوسته برنامه",
"systemThemeLabel": "سیستم",
"lightThemeLabel": "روشن",
"darkThemeLabel": "تاریک",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "یک تجربه نزدیکتر به دستگاهتان را داشته باشید",
"languageLabel": "زبان",
"languageUpdated": "زبان آپدیت شد",
"sourcesLabel": "منبع جایگزین",
"sourcesResetDialogTitle": "تنظیم مجدد",
"apiURLLabel": "آدرس API",
"selectApiURL": "آدرس API",
"orgPatchesLabel": "سازمان پچ‌ها(وصله ها)",
"sourcesPatchesLabel": "منبع پچ ها",
"contributorsLabel": "مشارکت کنندگان",
"contributorsHint": "لیست مشارکت‌کنندگان ریونسد",
"logsLabel": "اشتراک لاگ ها",
"logsHint": "اشتراک لاگ های Revanced Manager",
"aboutLabel": "درباره ما",
"snackbarMessage": "در کلیپ‌بورد کپی شد",
"restartAppForChanges": "راه‌اندازی مجدد برنامه برای اعمال تغییرات",
"deleteTempDirLabel": "حذف فایل های موقت",
"deleteTempDirHint": "حذف فایل‌های بی استفاده",
"deletedTempDir": "فایل های موقت حذف شدند",
"deletedLogs": "لاگ ها حذف شدند",
"jsonSelectorErrorMessage": "فایل JSON انتخاب شده قابل استفاده نیست"
},
"appInfoView": {
"widgetTitle": "اطلاعات برنامه",
"openButton": "بازکردن",
"installButton": "نصب",
"uninstallButton": "حذف نصب",
"unmountButton": "پیاده کردن",
"exportButton": "صدور",
"deleteButton": "حذف",
"rootDialogTitle": "خطا",
"rootDialogText": "برنامه با مجوز کاربر ویژه نصب شده، ولی اکنون برنامه هیچ مجوزی ندارد. لطفا ابتدا مجوز کاربر ویژه را اعطا کنید.",
"removeAppDialogTitle": "حذف برنامه?",
"packageNameLabel": "نام بسته",
"installTypeLabel": "نوع نصب",
"mountTypeLabel": "قرار دادن",
"regularTypeLabel": "عادی",
"patchedDateLabel": "تاریخ وصله شدن",
"appliedPatchesLabel": "وصله های اعمال شده",
"sizeLabel": "حجم فایل",
"patchedDateHint": "${date} در ${time}",
"appliedPatchesHint": "${quantity} وصله اعمال شده",
"updateNotImplemented": "این ویژگی هنوز تکمیل نشده است"
},
"contributorsView": {
"widgetTitle": "مشارکت کنندگان"
},
"installErrorDialog": {
"mount_version_mismatch": "عدم تطابق نسخه ها",
"mount_no_root": "بدون دسترسی روت",
"install_failed_verification_failure": "اعتبارسنجی با خطا مواجه شد"
}
}

298
assets/i18n/fi_FI.i18n.json Executable file
View File

@ -0,0 +1,298 @@
{
"okButton": "OK",
"cancelButton": "Peruuta",
"dismissButton": "Sulje",
"quitButton": "Sulje",
"updateButton": "Päivitä",
"suggested": "Ehdotettu: ${version}",
"yesButton": "Kyllä",
"noButton": "Ei",
"warning": "Varoitus",
"notice": "Huomautus",
"noShowAgain": "Älä näytä tätä uudelleen",
"add": "Lisää",
"remove": "Poista",
"showChangelogButton": "Näytä muutoshistoria",
"showUpdateButton": "Näytä päivitys",
"navigationView": {
"dashboardTab": "Hallintapaneeli",
"patcherTab": "Paikkaaja",
"settingsTab": "Asetukset"
},
"homeView": {
"refreshSuccess": "Päivitys onnistui",
"widgetTitle": "Hallintapaneeli",
"updatesSubtitle": "Päivitykset",
"lastPatchedAppSubtitle": "Viimeksi paikattu sovellus",
"patchedSubtitle": "Asennetut sovellukset",
"changeLaterSubtitle": "Voit muuttaa tätä asetuksissa koska tahansa.",
"noSavedAppFound": "Sovellusta ei löytynyt",
"noInstallations": "Paikattuja sovelluksia ei ole asennettu",
"installUpdate": "Jatketaanko päivityksen asennusta?",
"updateSheetTitle": "Päivitä ReVanced Manager",
"updateDialogTitle": "Uusi päivitys on saatavilla",
"updatePatchesSheetTitle": "Päivitä ReVanced-paikkaukset",
"updateChangelogTitle": "Muutoshistoria",
"updateDialogText": "Uusi ${file} päivitys on saatavilla.\n\nNyt asennettu versio on ${version}.",
"downloadConsentDialogTitle": "Ladataanko tarvittavat tiedostot?",
"downloadConsentDialogText": "Revanced Managerin on ladattava kunnollista toimintaa varten tarvittavat tiedostot.",
"downloadConsentDialogText2": "Tämä yhdistää osoitteeseen ${url}.",
"downloadingMessage": "Päivitystä ladataan...",
"downloadedMessage": "Päivitys on ladattu",
"installingMessage": "Päivitystä asennetaan...",
"errorDownloadMessage": "Päivityksen lataus epäonnistui",
"errorInstallMessage": "Päivityksen asennus epäonnistui",
"noConnection": "Internet-yhteyttä ei ole"
},
"applicationItem": {
"infoButton": "Tietoja"
},
"latestCommitCard": {
"loadingLabel": "Ladataan...",
"timeagoLabel": "${time} sitten"
},
"patcherView": {
"widgetTitle": "Paikkaaja",
"patchButton": "Paikkaa",
"incompatibleArchWarningDialogText": "Paikkaamista ei vielä tueta tällä kokoonpanolla, ja se saattaa epäonnistua. Jatketaanko silti?",
"removedPatchesWarningDialogText": "Paikkaukset, jotka on poistettu sen jälkeen, kun viimeksi paikkasit tämän sovelluksen:\n\n${patches}\n\n${newPatches}Jatketaanko silti?",
"addedPatchesDialogText": "Sen jälkeen, kun viimeksi paikkasit tämän sovelluksen lisätyt paikkaukset:\n\n${addedPatches}",
"requiredOptionDialogText": "Joitakin paikkausasetuksia on määritettävä."
},
"appSelectorCard": {
"widgetTitle": "Valitse sovellus",
"widgetTitleSelected": "Valittu sovellus",
"widgetSubtitle": "Sovellusta ei valittu",
"noAppsLabel": "Sovelluksia ei löytynyt",
"anyVersion": "Kaikki versiot"
},
"patchSelectorCard": {
"widgetTitle": "Valitse paikkaukset",
"widgetTitleSelected": "Valitut paikkaukset",
"widgetSubtitle": "Valitse ensin sovellus",
"widgetEmptySubtitle": "Paikkauksia ei ole valittu"
},
"socialMediaCard": {
"widgetTitle": "Somet",
"widgetSubtitle": "Olemme verkossa!"
},
"appSelectorView": {
"viewTitle": "Valitse sovellus",
"searchBarHint": "Etsi sovellusta",
"storageButton": "Tallennustila",
"selectFromStorageButton": "Valitse tallennustilasta",
"errorMessage": "Valittua sovellusta ei voida käyttää",
"downloadToast": "Lataustoiminto ei ole vielä käytettävissä",
"requireSuggestedAppVersionDialogText": "Valitsemasi sovellusversio ei vastaa ehdotettua versiota ja tämä voi aiheuttaa odottamattomia ongelmia. Käytä ehdotettua sovellusversiota.\n\nValittu versio: v${selected}\nEhdotettu versio: v${suggested}\n\nOhittaaksesi tämän, ota \"Vaadi ehdotettu sovellusversio\" -asetus käyttöön.",
"featureNotAvailable": "Ominaisuutta ei ole toteutettu",
"featureNotAvailableText": "Tämä sovellus on jaettu APK ja se voidaan paikata ja asentaa luotettavasti vain root-oikeuksilla liitettynä. Voit kuitenkin paikata ja asentaa täyden APK:n valitsemalla sen tallennustilasta."
},
"patchesSelectorView": {
"viewTitle": "Valitse paikkaukset",
"searchBarHint": "Etsi paikkauksia",
"universalPatches": "Yleispaikkaukset",
"newPatches": "Uudet paikkaukset",
"patches": "Paikkaukset",
"doneButton": "Valmis",
"defaultChip": "Oletus",
"defaultTooltip": "Valitse kaikki oletuspaikkaukset",
"noneChip": "Ei mitään",
"noneTooltip": "Tyhjennä kaikki paikkausvalinnat",
"loadPatchesSelection": "Lataa paikkausvalikoima",
"noSavedPatches": "Valitulle sovellukselle ei ole tallennettu paikkausvalikoimaa.\nTallenna nykyinen valikoima painamalla \"Valmis\".",
"noPatchesFound": "Valitulle sovellukselle ei löytynyt paikkauksia",
"setRequiredOption": "Joillekin paikkauksille on määritettävä asetuksia:\n\n${patches}\n\nMääritä ne ennen kuin jatkat."
},
"patchOptionsView": {
"customValue": "Oma arvo",
"setToNull": "Aseta nollaksi",
"nullValue": "Tämän asetuksen arvo on tällä hetkellä tyhjä",
"viewTitle": "Paikkausasetukset",
"saveOptions": "Tallenna",
"unselectPatch": "Poista paikkauksen valinta",
"tooltip": "Enemmän syöttöasetuksia",
"selectFilePath": "Valitse tiedostosijainti",
"selectFolder": "Valitse kansio",
"requiredOption": "Tämän valinnan asettaminen on pakollista",
"unsupportedOption": "Tätä asetusta ei tueta",
"requiredOptionNull": "Seuraavat asetukset on määritettävä:\n\n${options}"
},
"patchItem": {
"unsupportedDialogText": "Tämän paikkauksen valinta voi aiheuttaa virheitä.\n\nSovelluksen versio: ${packageVersion}\nTuetut versiot: \n${supportedVersions}",
"unsupportedPatchVersion": "Tämän sovellusversio ei tue paikkaa.",
"unsupportedRequiredOption": "Paikkaus sisältää pakollisen asetuksen, jota tämä sovellus ei tue",
"patchesChangeWarningDialogText": "On suositeltavaa käyttää oletusarvoisia paikkausvalintoja ja -asetuksia. Niiden muutokset voivat aiheuttaa odottamattomia ongelmia.\n\n\"Salli paikkausvalintojen muutos\" -asetus on otettava käyttöön ennen kuin valintoja voidaan muuttaa.",
"patchesChangeWarningDialogButton": "Käytä oletusvalintaa"
},
"installerView": {
"installType": "Valitse asennustyyppi",
"installTypeDescription": "Valitse asennustyyppi, jolla jatketaan.",
"installButton": "Asenna",
"installRootType": "Liitä",
"installNonRootType": "Tavallinen",
"warning": "Poista paikatun sovelluksen automaattiset päivitykset käytöstä odottamattomien ongelmien välttämiseksi.",
"pressBackAgain": "Peru painamalla takaisin-painiketta uudelleen",
"openButton": "Avaa",
"notificationTitle": "ReVanced Manager suorittaa paikkauksia",
"notificationText": "Napauta palataksesi hallintasovellukseen",
"exportApkButtonTooltip": "Via paikattu APK",
"exportLogButtonTooltip": "Vie loki",
"screenshotDetected": "Havaittiin kuvankaappaus. Jos yrität jakaa lokin, jaa se kuvan sijaan tekstinä.\n\nKopioidaanko loki leikepöydälle?",
"copiedToClipboard": "Loki kopioitiin leikepöydälle",
"noExit": "Asennus on vielä kesken, eikä poistuminen ole mahdollista..."
},
"settingsView": {
"widgetTitle": "Asetukset",
"appearanceSectionTitle": "Ulkoasu",
"teamSectionTitle": "Tiimi",
"debugSectionTitle": "Virheenkorjaus",
"advancedSectionTitle": "Lisäasetukset",
"exportSectionTitle": "Tuonti ja vienti",
"dataSectionTitle": "Tietolähteet",
"themeModeLabel": "Sovelluksen teema",
"systemThemeLabel": "Järjestelmä",
"lightThemeLabel": "Vaalea",
"darkThemeLabel": "Tumma",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Nauti paremmin laitettasi vastaavasta käyttökokemuksesta",
"languageLabel": "Kieli",
"languageUpdated": "Kieli on vaihdettu",
"sourcesLabel": "Vaihtoehtoiset lähteet",
"sourcesLabelHint": "Määritä ReVanced Patchesien vaihtoehtoiset lähteet",
"useAlternativeSources": "Käytä vaihtoehtoisia lähteitä",
"useAlternativeSourcesHint": "Käytä vaihtoehtoisia ReVanced Patches -lähteitä API:n sijaan",
"sourcesResetDialogTitle": "Palauta",
"sourcesResetDialogText": "Haluatko varmasti palauttaa oletuslähteet?",
"apiURLResetDialogText": "Haluatko varmasti palauttaa oletusarvoisen API:n URL-osoitteen?",
"sourcesUpdateNote": "Huomaa: Tämä lataa automaattisesti ReVanced Patchesin vaihtoehtoisista lähteistä.\n\nTämä yhdistää sinut vaihtoehtoiseen lähteeseen.",
"apiURLLabel": "API:n URL-osoite",
"apiURLHint": "Määritä ReVanced Managerin API:N URL-osoite",
"selectApiURL": "API:n URL-osoite",
"orgPatchesLabel": "Paikkauksien organisaatio",
"sourcesPatchesLabel": "Paikkauksien lähde",
"contributorsLabel": "Osallistujat",
"contributorsHint": "Listaus ReVancedin kehitykseen osallistuneista",
"logsLabel": "Jaa lokit",
"logsHint": "Jaa ReVanced Managerin lokit",
"enablePatchesSelectionLabel": "Salli paikkausvalintojen muutos",
"enablePatchesSelectionHint": "Älä estä paikkausten valintaa tai valintojen poistoa",
"enablePatchesSelectionWarningText": "Paikkausvalikoiman muuttaminen voi aiheuttaa odottamattomia ongelmia.\n\nSallitaanko se silti?",
"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",
"showUpdateDialogLabel": "Näytä päivitysruutu",
"showUpdateDialogHint": "Näytä ilmoitus, kun uusi päivitys on saatavilla",
"universalPatchesLabel": "Näytä yleispaikkaukset",
"universalPatchesHint": "Näytä kaikki sovellukset ja yleispaikkaukset (voi hidastaa sovelluslistausta)",
"lastPatchedAppLabel": "Tallenna paikattu sovellus",
"lastPatchedAppHint": "Tallenna viimeisin paikkaus myöhempää asennusta tai vientiä varten",
"versionCompatibilityCheckLabel": "Version yhteensopivuustarkastus",
"versionCompatibilityCheckHint": "Estä valitsemasta valitun sovellusversion kanssa yhteensopimattomia paikkauksia",
"requireSuggestedAppVersionLabel": "Vaadi ehdotettu sovellusversio",
"requireSuggestedAppVersionHint": "Estä ehdotetusta sovellusversiosta poikkeavan version valinta",
"requireSuggestedAppVersionDialogText": "Ehdotetusta poikkeavan sovellusversion valinta voi aiheuttaa odottamattomia ongelmia.\n\nJatketaanko tästä huolimatta?",
"aboutLabel": "Tietoja",
"snackbarMessage": "Kopioitu leikepöydälle",
"restartAppForChanges": "Käynnistä sovellus uudestaan muutosten käyttöönottamiseksi",
"deleteTempDirLabel": "Poista väliaikaistiedostot",
"deleteTempDirHint": "Poista käyttämättömät väliaikaistiedostot",
"deletedTempDir": "Väliaikaistiedostot poistettiin",
"exportSettingsLabel": "Vie asetukset",
"exportSettingsHint": "Vie asetukset JSON-tiedostoon",
"exportedSettings": "Asetukset viety",
"importSettingsLabel": "Tuo asetukset",
"importSettingsHint": "Tuo asetukset JSON-tiedostosta",
"importedSettings": "Asetukset tuotu",
"exportPatchesLabel": "Vie paikkausvalikoima",
"exportPatchesHint": "Vie paikkausvalikoima JSON-tiedostoon",
"exportedPatches": "Paikkausvalikoima vietiin",
"noExportFileFound": "Vietäviä paikkausvalikoimia ei ole",
"importPatchesLabel": "Tuo paikkausvalikoima",
"importPatchesHint": "Tuo paikkausvalikoima JSON-tiedostosta",
"importedPatches": "Paikkausvalikoima tuotiin",
"resetStoredPatchesLabel": "Palauta paikkausvalikoima",
"resetStoredPatchesHint": "Palauta tallennettu paikkausvalikoima",
"resetStoredPatchesDialogTitle": "Palautetaanko paikkausvalikoima?",
"resetStoredPatchesDialogText": "Oletusarvoinen paikkausvalikoima palautetaan.",
"resetStoredPatches": "Paikkausvalikoima palautettiin",
"resetStoredOptionsLabel": "Palauta paikkausasetukset",
"resetStoredOptionsHint": "Palauta kaikki paikkausasetukset",
"resetStoredOptionsDialogTitle": "Palautetaanko paikkausasetukset?",
"resetStoredOptionsDialogText": "Paikkausasetusten palautus poistaa kaikki tallennetut asetukset.",
"resetStoredOptions": "Asetukset palautettiin",
"deleteLogsLabel": "Tyhjennä lokit",
"deleteLogsHint": "Poista kerätyt ReVanced Managerin lokitiedot",
"deletedLogs": "Lokitiedot on poistettu",
"regenerateKeystoreLabel": "Luo avainsäilö uudelleen",
"regenerateKeystoreHint": "Luo sovellusten allekirjoitukseen käytettävä avainsäilö uudelleen",
"regenerateKeystoreDialogTitle": "Luodaanko avainsäilö uudelleen?",
"regenerateKeystoreDialogText": "Vanhalla avainsäilöllä allekirjoitettuja sovelluksia ei voida enää päivittää.",
"regeneratedKeystore": "Avainsäilö luotiin uudelleen",
"exportKeystoreLabel": "Vie avainsäilö",
"exportKeystoreHint": "Vie sovellusten allekirjoitukseen käytettävä avainsäilö",
"exportedKeystore": "Avainsäilö vietiin",
"noKeystoreExportFileFound": "Vietävää avainsäilöä ei ole",
"importKeystoreLabel": "Tuo avainsäilö",
"importKeystoreHint": "Tuo sovellusten allekirjoitukseen käytettävä avainsäilö",
"importedKeystore": "Avainsäilö tuotiin",
"selectKeystorePassword": "Avainsäilön salasana",
"selectKeystorePasswordHint": "Valitse sovellusten allekirjoitukseen käytettävä avainsäilö",
"jsonSelectorErrorMessage": "Valittua JSON-tiedostoa ei voida käyttää",
"keystoreSelectorErrorMessage": "Valittua avainsäilötiedostoa ei voida käyttää"
},
"appInfoView": {
"widgetTitle": "Sovelluksen tiedot",
"openButton": "Avaa",
"installButton": "Asenna",
"uninstallButton": "Poista asennus",
"unmountButton": "Irroita liitos",
"exportButton": "Vie",
"deleteButton": "Poista",
"rootDialogTitle": "Virhe",
"lastPatchedAppDescription": "Tämä on viimeksi korjatun sovelluksen varmuuskopio.",
"unmountDialogText": "Haluatko varmasti irrottaa sovelluksen liitoksen?",
"uninstallDialogText": "Oletko varma, että haluat poistaa sovelluksen?",
"rootDialogText": "Sovellus asennettiin superuser-oikeuksilla, mutta ReVanced Managerilla ei tällä hetkellä ole näitä käyttöoikeuksia.\nMyönnä superuser-käyttöoikeus ensin.",
"removeAppDialogTitle": "Poistetaanko sovellus?",
"removeAppDialogText": "Haluatko varmasti poistaa tämän varmuuskopion?",
"packageNameLabel": "Paketin nimi",
"installTypeLabel": "Asennustyyppi",
"mountTypeLabel": "Liitä",
"regularTypeLabel": "Tavallinen",
"patchedDateLabel": "Paikkausaika",
"appliedPatchesLabel": "Suoritetut paikkaukset",
"sizeLabel": "Tiedostokoko",
"patchedDateHint": "${date} klo ${time}",
"appliedPatchesHint": "${quantity} suoritettua paikkausta",
"updateNotImplemented": "Ominaisuutta ei ole vielä toteutettu"
},
"contributorsView": {
"widgetTitle": "Osallistujat"
},
"installErrorDialog": {
"mount_version_mismatch": "Versioristiriita",
"mount_no_root": "Root-oikeuksia ei ole",
"mount_missing_installation": "Asennusta ei löytynyt",
"status_failure_blocked": "Asennus estettiin",
"install_failed_verification_failure": "Vahvistus epäonnistui",
"status_failure_invalid": "Asennus ei kelpaa",
"install_failed_version_downgrade": "Ei voida alentaa",
"status_failure_conflict": "Asennusristiriita",
"status_failure_storage": "Asennuksen tallennustilaongelma",
"status_failure_incompatible": "Asennus ei ole yhteensopiva",
"status_failure_timeout": "Asennus aikakatkaistiin",
"status_unknown": "Asennus epäonnistui",
"mount_version_mismatch_description": "Asennus epäonnistui, koska asennettu sovellusversio eroaa paikatusta versiosta.\n\nAsenna sovelluksesta se versio, jonka liität ja yritä uudelleen.",
"mount_no_root_description": "Asennus epäonnistui, koska root-oikeuksia ei myönnetty.\n\nMyönnä ReVanced Managerille root-oikeudet ja yritä uudelleen.",
"mount_missing_installation_description": "Asennus epäonnistui, koska paikkaamatonta sovellusta ei ole asennettu tälle laitteelle sen liikosen korvaamiseksi.\n\nAsenna paikkaamaton sovellus ennen liitosta ja yritä uudelleen.",
"status_failure_timeout_description": "Asennus kesti liian kauan.\n\nHaluatko yrittää uudelleen?",
"status_failure_storage_description": "Asennus epäonnistui riittämättömän tallennustilan vuoksi.\n\nVapauta tilaa ja yritä uudelleen.",
"status_failure_invalid_description": "Asennus epäonnistui, koska paikattu sovellus ei kelpaa.\n\nPoistetaanko sovelluksen asennus ja yritetään uudelleen?",
"status_failure_incompatible_description": "Sovellus ei ole yhteensopiva tämän laitteen kanssa.\n\nKäytä APK:a, jota tämä laite tukee ja yritä uudelleen.",
"status_failure_conflict_description": "Sovelluksen jo olemassaoleva asennus esti asennuksen.\n\nPoistetaanko asennettu sovellus ja yritetään uudelleen?",
"status_failure_blocked_description": "${packageName} esti asennuksen.\n\nMuuta suojausasetuksiasi ja yritä uudelleen.",
"install_failed_verification_failure_description": "Asennus epäonnistui todennusongelman vuoksi.\n\nSäädä suojausasetuksiasi ja yritä uudelleen.",
"install_failed_version_downgrade_description": "Asennus epäonnistui, koska paikatun sovelluksen versio on asennettua vanhempi.\n\nPoistetaanko sovelluksen asennus ja yritetään uudelleen?",
"status_unknown_description": "Asennus epäonnistui tuntemattomasta syystä. Yritä uudelleen."
}
}

View File

@ -1,196 +0,0 @@
{
"okButton": "OK",
"cancelButton": "Peruuta",
"enabledLabel": "Käytössä",
"disabledLabel": "Poistettu käytöstä",
"yesButton": "Kyllä",
"noButton": "Ei",
"warning": "Varoitus",
"navigationView": {
"dashboardTab": "Hallinta",
"patcherTab": "Patcher",
"settingsTab": "Asetukset"
},
"homeView": {
"widgetTitle": "Hallintapaneeli",
"updatesSubtitle": "Päivitykset",
"patchedSubtitle": "Paikatut sovellukset",
"updatesAvailable": "Päivityksiä on saatavilla",
"noUpdates": "Päivityksiä ei ole saatavilla",
"WIP": "Työn alla...",
"noInstallations": "Paikattuja sovelluksia ei ole asennettu",
"installed": "Asennettu",
"updateDialogTitle": "Päivitä Manager",
"updateDialogText": "Haluatko varmasti ladata ja päivittää ReVanced Managerin?",
"notificationTitle": "Päivitys ladattu",
"notificationText": "Asenna päivitys napauttamalla",
"downloadingMessage": "Ladataan päivitystä...",
"installingMessage": "Asennetaan päivitystä...",
"errorDownloadMessage": "Päivityksen lataus epäonnistui",
"errorInstallMessage": "Päivityksen asennus epäonnistui",
"noConnection": "Ei internetyhteyttä",
"updatesDisabled": "Paikatun sovelluksen päivitys ei tällä hetkellä ole käytössä. Paikkaa sovellus uudelleen."
},
"applicationItem": {
"patchButton": "Paikkaa",
"infoButton": "Info",
"changelogLabel": "Muutosloki"
},
"latestCommitCard": {
"loadingLabel": "Ladataan...",
"timeagoLabel": "{time} sitten",
"patcherLabel": "Patcher: ",
"managerLabel": "Manager: ",
"updateButton": "Päivitä Manager"
},
"patcherView": {
"widgetTitle": "Patcher",
"patchButton": "Paikkaa",
"patchDialogText": "Olet valinnut resurssipaikkauksen ja havaittu asennus on ns. split APK -tyyppinen, joten paikkausvirheet ovat mahdollisia.\nHaluatko varmasti jatkaa ja paikata split APK -asennuksen?"
},
"appSelectorCard": {
"widgetTitle": "Valitse sovellus",
"widgetTitleSelected": "Valittu sovellus",
"widgetSubtitle": "Sovellusta ei ole valittu",
"noAppsLabel": "Sovelluksia ei löytynyt",
"currentVersion": "Nykyinen",
"recommendedVersion": "Suositeltu",
"anyVersion": "mikä tahansa"
},
"patchSelectorCard": {
"widgetTitle": "Valitse paikkaukset",
"widgetTitleSelected": "Valitut paikkaukset",
"widgetSubtitle": "Valitse ensin sovellus",
"widgetEmptySubtitle": "Paikkauksia ei ole valittu"
},
"socialMediaCard": {
"widgetTitle": "Somet",
"widgetSubtitle": "Löydymme täältä!"
},
"appSelectorView": {
"viewTitle": "Valitse sovellus",
"searchBarHint": "Hae sovelluksia",
"storageButton": "Tallennustila",
"errorMessage": "Valittua sovellusta ei voida käyttää"
},
"patchesSelectorView": {
"viewTitle": "Valitse paikkaukset",
"searchBarHint": "Etsi paikkauksia",
"doneButton": "Valmis",
"recommended": "Suositellut",
"all": "Kaikki",
"none": "Ei mitään",
"loadPatchesSelection": "Lataa paikkausvalikoima",
"noSavedPatches": "Paikkauksia ei ole tallennettu valitulle sovellukselle\nTallenna nykyinen valikoima paunamalla Valmis",
"noPatchesFound": "Valitulle sovellukselle ei löytynyt paikkauksia",
"selectAllPatchesWarningContent": "Olet valitsemassa kaikki paikkaukset ja näihin sisältyy myös ei suositeltavia paikkauksia, jotka saattavat aiheuttaa ei toivottua toimintaa."
},
"patchItem": {
"unsupportedDialogText": "Tämän paikkauksen valinta voi aiheuttaa virheitä.\n\nSovelluksen versio: {packageVersion}\nTuetut versiot: \n{supportedVersions}",
"unsupportedPatchVersion": "Tämän sovellusversion paikkausta ei tueta. Jos haluat jatkaa, ota kokeellinen paikkaustuki käyttöön asetuksista."
},
"installerView": {
"widgetTitle": "Asennusohjelma",
"installButton": "Asenna",
"installRootButton": "Asenna root-oikeuksilla",
"openButton": "Avaa",
"shareButton": "Jaa tiedosto",
"notificationTitle": "ReVanced Manager suorittaa paikkauksia",
"notificationText": "Napauta palataksesi hallintasovellukseen",
"shareApkMenuOption": "Jaa APK",
"exportApkMenuOption": "Vie APK",
"shareLogMenuOption": "Jaa loki",
"installErrorDialogTitle": "Virhe",
"installErrorDialogText1": "Root-asennus ei ole mahdollista nykyisillä paikkausvalinnoilla.\nPaikkaa sovellus uudelleen tai valitse normaali asennus.",
"installErrorDialogText2": "Nykyisten paikkausvalintojen normaali asennus ei ole mahdollista.\nPaikkaa sovellus uudelleen tai valitse root-asennus, jos laitteesi on rootattu.",
"installErrorDialogText3": "Root-asennus ei ole mahdollista, koska tallennusmedialta valittiin alkuperäinen APK.\nValitse asennettu sovellus tai valitse normaali asennus.",
"noExit": "Asennus on vielä kesken, eikä poistuminen ole mahdollista..."
},
"settingsView": {
"widgetTitle": "Asetukset",
"appearanceSectionTitle": "Ulkoasu",
"teamSectionTitle": "Tiimi",
"infoSectionTitle": "Tiedot",
"advancedSectionTitle": "Lisäasetukset",
"logsSectionTitle": "Lokitiedot",
"darkThemeLabel": "Tumma tila",
"darkThemeHint": "Tervetuloa pimeälle puolelle",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Nauti kokemuksesta, joka on lähempänä laitettasi",
"languageLabel": "Kieli",
"englishOption": "Englanti",
"sourcesLabel": "Lähteet",
"sourcesLabelHint": "Määritä mukautetut lähteet",
"orgPatchesLabel": "Paikkauksien organisaatio",
"sourcesPatchesLabel": "Paikkauksien lähde",
"orgIntegrationsLabel": "Integraatioiden organisaatio",
"sourcesIntegrationsLabel": "Integraatioiden lähde",
"sourcesResetDialogTitle": "Palauta",
"sourcesResetDialogText": "Haluatko varmasti palauttaa nämä asetukset oletusarvoihin?",
"apiURLResetDialogText": "Haluatko varmasti palauttaa API URL-osoitteen oletusarvoon?",
"contributorsLabel": "Osallistujat",
"contributorsHint": "Listaus ReVancedin kehitykseen osallistuneista",
"logsLabel": "Lokit",
"logsHint": "Jaa Managerin lokitiedot",
"apiURLLabel": "API URL",
"apiURLHint": "Määritä oma API URL-osoite",
"selectApiURL": "API:n URL-osoite",
"experimentalPatchesLabel": "Kokeellinen paikkaustuki",
"experimentalPatchesHint": "Mahdollistaa paikkausten asennuksen myös ei tuettuihin sovellusversiohin",
"enabledExperimentalPatches": "Kokeellinen paikkaustuki on käytössä",
"exportSectionTitle": "Tuonti/vienti",
"aboutLabel": "Tietoja",
"snackbarMessage": "Kopioitu leikepöydälle",
"sentryLabel": "Sentry-lokikirjaus",
"sentryHint": "Lähetä nimettömiä tietoja auttaaksesi ReVanced Managerin kehityksessä",
"restartAppForChanges": "Käynnistä sovellus uudestaan muutosten käyttöönottamiseksi",
"deleteKeystoreLabel": "Poista avainsäilö",
"deleteKeystoreHint": "Poista sovelluksen allekirjoitukseen käytetty avainsäilö",
"deletedKeystore": "Avainsäilö poistettiin",
"deleteTempDirLabel": "Poista väliaikaistiedostot",
"deleteTempDirHint": "Poista käyttämättömät väliaikaistiedostot",
"deletedTempDir": "Väliaikaistiedostot poistettiin",
"exportPatchesLabel": "Vie paikkausvalikoima",
"exportPatchesHint": "Vie paikkausvalikoima JSON-tiedostona",
"exportedPatches": "Paikkausvalikoima vietiin",
"noExportFileFound": "Vietävää paikkausvalikoimaa ei ole",
"importPatchesLabel": "Tuo paikkausvalikoima",
"importPatchesHint": "Tuo paikkausvalikoima JSON-tiedostosta",
"importedPatches": "Paikkausvalikoima tuotiin",
"resetStoredPatchesLabel": "Palauta paikkaukset",
"resetStoredPatchesHint": "Palauta tallennettu paikkausvalikoima",
"resetStoredPatches": "Paikkausvalikoima palautettiin",
"jsonSelectorErrorMessage": "Valittua JSON-tiedostoa ei voida käyttää",
"deleteLogsLabel": "Poista lokitiedot",
"deleteLogsHint": "Poista kerätyt Managerin lokitiedot",
"deletedLogs": "Lokitiedot on poistettu"
},
"appInfoView": {
"widgetTitle": "Sovelluksen tiedot",
"openButton": "Avaa",
"uninstallButton": "Poista asennus",
"patchButton": "Paikkaa",
"unpatchButton": "Poista paikkaus",
"unpatchDialogText": "Haluatko varmasti poistaa sovelluksen paikkauksen?",
"rootDialogTitle": "Virhe",
"rootDialogText": "Sovellus on asennettu superuser-käyttöoikeudella, mutta ReVanced Managerilla ei tällä hetkellä ole käyttöoikeutta.\nMyönnä superuser-käyttöoikeus ensin.",
"packageNameLabel": "Paketin nimi",
"originalPackageNameLabel": "Paketin alkuperäinen nimi",
"installTypeLabel": "Asennustyyppi",
"rootTypeLabel": "Rootattu",
"nonRootTypeLabel": "Normaali",
"patchedDateLabel": "Paikkausaika",
"patchedDateHint": "{date} klo {time}",
"appliedPatchesLabel": "Suoritetut paikkaukset",
"appliedPatchesHint": "{quantity} suoritettua paikkausta",
"updateNotImplemented": "Toimintoa ei ole toteutettu vielä"
},
"contributorsView": {
"widgetTitle": "Osallistujat",
"patcherContributors": "Patcheriin osallistuneet",
"patchesContributors": "Paikkauksiin osallistuneet",
"integrationsContributors": "Integrointeihin osallistuneet",
"cliContributors": "Komentoriviin osallistuneet",
"managerContributors": "Manageriin osallistuneet"
}
}

298
assets/i18n/fil_PH.i18n.json Executable file
View File

@ -0,0 +1,298 @@
{
"okButton": "Sige",
"cancelButton": "I-cancel",
"dismissButton": "Kalimutan",
"quitButton": "Itigil",
"updateButton": "Magbago",
"suggested": "Version payo ng ReVanced: ${version}",
"yesButton": "Sige",
"noButton": "Hindi",
"warning": "Babala",
"notice": "Pabatid",
"noShowAgain": "Wag na ipakita ito muli",
"add": "Idagdag",
"remove": "Itanggal",
"showChangelogButton": "Ipakita ang naibago",
"showUpdateButton": "Ipakita ang pagbabago",
"navigationView": {
"dashboardTab": "Dashboard",
"patcherTab": "Tagapagtapal",
"settingsTab": "Mga Setting"
},
"homeView": {
"refreshSuccess": "Tapos nang Refresh",
"widgetTitle": "Mga Dashboard",
"updatesSubtitle": "Mga Pagbabago",
"lastPatchedAppSubtitle": "Huling na-patch na app",
"patchedSubtitle": "Na-install na apps",
"changeLaterSubtitle": "Pwede mo palitan ito sa settings mamaya.",
"noSavedAppFound": "Walang nahanap na app",
"noInstallations": "Walang naka-install na na-patch na mga app",
"installUpdate": "Ituloy ang pag-install ng update?",
"updateSheetTitle": "I-update ang ReVanced Manager",
"updateDialogTitle": "May bagong update na available",
"updatePatchesSheetTitle": "I-update ang mga Patch ng ReVanced",
"updateChangelogTitle": "Talaan ng mga pagbabago",
"updateDialogText": "May bagong update na available para sa ${file}.\n\nAng kasalukuyang naka-install na bersyon ay ${version}.",
"downloadConsentDialogTitle": "I-download ang mga kinakailangang files?",
"downloadConsentDialogText": "Kailangan ng ReVanced Manager na i-download ang mga kinakailangang file para gumana nang maayos.",
"downloadConsentDialogText2": "Ito ay magkokonekta sa iyo sa ${url}.",
"downloadingMessage": "Nagda-download ng update...",
"downloadedMessage": "Na-download ang update",
"installingMessage": "Ini-install ang update...",
"errorDownloadMessage": "Hindi ma-download ang update",
"errorInstallMessage": "Hindi ma-install ang update",
"noConnection": "Walang koneksyon sa internet"
},
"applicationItem": {
"infoButton": "Impormasyon"
},
"latestCommitCard": {
"loadingLabel": "Naglo-load...",
"timeagoLabel": "${time} ang nakalipas"
},
"patcherView": {
"widgetTitle": "Tagapagtapal",
"patchButton": "Tapalan",
"incompatibleArchWarningDialogText": "Ang pag-patch sa arkitektura na ito ay hindi pa suportado at maaaring mabigo. Magpatuloy pa rin?",
"removedPatchesWarningDialogText": "Naalis na mga patch mula noong huling pag-patch mo sa app na ito:\n\n${patches}\n\n${newPatches}Magpatuloy pa rin?",
"addedPatchesDialogText": "Idinagdag na mga patch mula noong huling pag-patch mo sa app na ito:\n\n${addedPatches}\n\n",
"requiredOptionDialogText": "Kailangan mo i-set ang ilang mga opsyon para sa patch."
},
"appSelectorCard": {
"widgetTitle": "Pumili ka ng apps",
"widgetTitleSelected": "Piniling app",
"widgetSubtitle": "Walang app na pinili",
"noAppsLabel": "Walang nakitang aplikasyon",
"anyVersion": "Anumang bersyon"
},
"patchSelectorCard": {
"widgetTitle": "Pumili ng mga pantapal",
"widgetTitleSelected": "Mga Napiling Pantapal",
"widgetSubtitle": "Muna pumili ng aplikasyon",
"widgetEmptySubtitle": "Walang patches ang napili"
},
"socialMediaCard": {
"widgetTitle": "Mga Social",
"widgetSubtitle": "Online na kami!"
},
"appSelectorView": {
"viewTitle": "Pumili ka ng app",
"searchBarHint": "Hanapin ang app",
"storageButton": "Imbakan",
"selectFromStorageButton": "Pumili ka galing sa imbakan",
"errorMessage": "Hindi magamit ang napiling aplikasyon",
"downloadToast": "Ang function ng pag-download ay hindi pa available",
"requireSuggestedAppVersionDialogText": "Ang bersyon ng app na iyong pinili ay hindi tumutugma sa inirerekomendang bersyon na maaaring magdulot ng di-inaasahang mga isyu. Mangyaring gamitin ang inirerekomendang bersyon.\n\nPiniling bersyon: ${selected} \nInirerekomendang bersyon: ${suggested}\n\nPara magpatuloy pa rin, i-disable ang \"Kinakailangang inirerekomendang bersyon ng app\" sa mga setting.",
"featureNotAvailable": "Hindi pa nagagawa ang feature",
"featureNotAvailableText": "Ang app na ito ay isang split APK at maaari lamang ma-patch at ma-install nang maayos sa pamamagitan ng pag-mount na may root permissions. Gayunpaman, maaari mong ma-patch at ma-install ang buong APK sa pamamagitan ng pagpili nito mula sa storage."
},
"patchesSelectorView": {
"viewTitle": "Pumili ka ng patches",
"searchBarHint": "Maghanap ng mga pantapal",
"universalPatches": "Unibersal na mga patch",
"newPatches": "Mga bagong patch",
"patches": "Mga patch",
"doneButton": "Tapos na",
"defaultChip": "Regular",
"defaultTooltip": "Pumili ng lahat ng mga regular na mga patch",
"noneChip": "Wala",
"noneTooltip": "Huwag piliin lahat ng tapal",
"loadPatchesSelection": "Mag-load ng pagpipilian ng patch",
"noSavedPatches": "Walang na-save na pagpipilian ng patch para sa piniling app. Pindutin ang 'Tapos na' para i-save ang kasalukuyang pagpipilian.",
"noPatchesFound": "Walang nahanap na pantapal para sa napiling aplikasyon",
"setRequiredOption": "Ilang mga patch ay nangangailangan ng mga opsyon na dapat itakda:\n\n${patches}\n\nMangyaring i-set ang mga ito bago magpatuloy."
},
"patchOptionsView": {
"customValue": "Halaga ng Custom",
"setToNull": "Itakda sa null",
"nullValue": "Ang halaga ng opsyong ito ay kasalukuyang null",
"viewTitle": "Mga opsyon ng patch",
"saveOptions": "I-save",
"unselectPatch": "Alisin ang pag-patch",
"tooltip": "Mga karagdagang opsyon sa input",
"selectFilePath": "Pumili ng landas ng file",
"selectFolder": "Pumili ng folder",
"requiredOption": "Kinakailangan ang pagtatakda ng opsyong ito",
"unsupportedOption": "Hindi suportado ang opsyong ito",
"requiredOptionNull": "Ang mga sumusunod na opsyon ay kailangang i-set:\n\n${options}"
},
"patchItem": {
"unsupportedDialogText": "Maaaring magkaproblema sa pagtatapal kung pipiliin mo ang pantapal na ito.\n\nBersyon ng app: ${packageVersion}\nSuportadong mga bersyon:\n${supportedVersions}",
"unsupportedPatchVersion": "Hindi suportado ang patch para sa bersyon ng app na ito.",
"unsupportedRequiredOption": "Ang patch na ito ay naglalaman ng isang kinakailangang opsyon na hindi suportado ng app na ito",
"patchesChangeWarningDialogText": "Inirerekomenda na gamitin ang default na pagpili ng patch at opsyon. Ang pagbabago sa mga ito ay maaaring magdulot ng di-inaasahang mga isyu.\n\nKailangan mong buksan ang \"Pahintulot sa pagbabago ng pagpili ng patch\" sa mga setting bago baguhin ang anumang pagpili ng patch.",
"patchesChangeWarningDialogButton": "Gamitin ang regular na pagpili"
},
"installerView": {
"installType": "Pumili ng uri ng pag-install",
"installTypeDescription": "Upang magpatuloy, pumili ng uri ng pag-install.",
"installButton": "I-install",
"installRootType": "I-mount",
"installNonRootType": "Regular ",
"warning": "Upang maiwasan ang di-inaasahang mga isyu, i-disable ang mga auto-update para sa patched na app.",
"pressBackAgain": "Pindutin muli ang back para kanselahin",
"openButton": "Buksan",
"notificationTitle": "May tinatapalan ang ReVanced Manager",
"notificationText": "Pindutin para bumalik sa installer",
"exportApkButtonTooltip": "I-export ang na-patch na APK",
"exportLogButtonTooltip": "I-export ang log",
"screenshotDetected": "May nakitang screenshot. Kung sinusubukan mong ibahagi ang log, Ibahagi na lang ang text copy sa halip.\n\nKopyahin ang log sa clipboard?",
"copiedToClipboard": "Nakopya ang log sa clipboard",
"noExit": "Hindi pwedeng umalis, umaandar pa ang installer..."
},
"settingsView": {
"widgetTitle": "Mga Setting",
"appearanceSectionTitle": "Hitsura",
"teamSectionTitle": "Pangkat",
"debugSectionTitle": "Pagde-debug",
"advancedSectionTitle": "Advanced",
"exportSectionTitle": "Mag-import at mag-export",
"dataSectionTitle": "Pinagkukunan na datos",
"themeModeLabel": "Tema ng app",
"systemThemeLabel": "Sistema",
"lightThemeLabel": "Liwanag",
"darkThemeLabel": "Dilim",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Lasapin ang karanasang naaangkop sa iyong device",
"languageLabel": "Wika",
"languageUpdated": "Wika na-update na",
"sourcesLabel": "Iba pang mga sources ",
"sourcesLabelHint": "I-configure ang mga alternatibong pinagmulan para sa ReVanced Patches",
"useAlternativeSources": "Gumamit ng alternatibong mga sources ",
"useAlternativeSourcesHint": "Gumamit ng mga alternatibong pinagmulan para sa ReVanced Patches sa halip na ang API",
"sourcesResetDialogTitle": "I-reset",
"sourcesResetDialogText": "Sigurado ka bang gusto mong ibalik sa dati ang lahat ng mga pinasadyang pinagkukunan?",
"apiURLResetDialogText": "Sigurado ka bang gusto mong ibalik sa dati ang URL ng API?",
"sourcesUpdateNote": "Tandaan: Awtomatikong magda-download ito ng ReVanced Patches mula sa mga alternatibong pinagmulan.\n\nIkakonekta ka nito sa alternatibong pinagmulan.",
"apiURLLabel": "URL ng API",
"apiURLHint": "I-configure ang API URL ng ReVanced Manager",
"selectApiURL": "URL ng API",
"orgPatchesLabel": "Pagsasaayos ng mga pantapal",
"sourcesPatchesLabel": "Pinanggalingan ng mga pantapal",
"contributorsLabel": "Mga taga-ambag",
"contributorsHint": "Listahan ng mga tumulong sa ReVanced",
"logsLabel": "Ibahagi ang log",
"logsHint": "Ibahagi ang mga log ng ReVanced Manager",
"enablePatchesSelectionLabel": "Pinapayagan ang pagbabago sa pagpipilian ng patch",
"enablePatchesSelectionHint": "Huwag pigilan ang pagpili o pag-unselect ng mga patch",
"enablePatchesSelectionWarningText": "Ang pagbabago ng piniling patch ay maaaring magdulot ng mga hindi inaasahang isyu.\n\nI-enable pa rin?",
"disablePatchesSelectionWarningText": "Ikaw ay malapit nang magdisable sa pagpalit ng mga pinili na patches.\nDahil dyan, ang karaniwang pagpili ng mga patch ay maibalik.\n\nI-disable pa rin?",
"autoUpdatePatchesLabel": "Auto update patches",
"autoUpdatePatchesHint": "Awtomatikong i-update ang mga patch sa pinakabagong bersyon",
"showUpdateDialogLabel": "Ipakita ang dialog ng update",
"showUpdateDialogHint": "Ipakita ang isang dialog kapag magagamit ang isang bagong update",
"universalPatchesLabel": "Ipakita ang mga pangkalahatang patch",
"universalPatchesHint": "I-display lahat ng mga app at lahat ng mga patch (maaaring mapabagal ang paglo-load ng app list)",
"lastPatchedAppLabel": "I-save ang na-patch na app",
"lastPatchedAppHint": "I-save ang huling patch upang mai-install o mai-export sa ibang pagkakataon",
"versionCompatibilityCheckLabel": "Pag-check ng katugmang sa bersyon",
"versionCompatibilityCheckHint": "Huwag pahintulutan ang pagpili ng mga patch na hindi tugma sa napiling bersyon ng app",
"requireSuggestedAppVersionLabel": "I-require ang inirerekomendang bersyon ng app",
"requireSuggestedAppVersionHint": "Huwag pahintulutan ang pagpili ng app na may bersyon na hindi iminungkahi",
"requireSuggestedAppVersionDialogText": "Ang pagpili ng app na hindi ang inirerekomendang bersyon ay maaaring magdulot ng hindi inaasahang mga problema.\n\nGusto mo bang magpatuloy pa rin?",
"aboutLabel": "Tungkol",
"snackbarMessage": "Nakopya sa clipboard",
"restartAppForChanges": "I-restart ang app para umepekto ang mga pagbabago",
"deleteTempDirLabel": "Burahin ang mga pansamantalang file",
"deleteTempDirHint": "Burahin ang mga hindi na ginagamit na pansamantalang file",
"deletedTempDir": "Binura ang mga pansamantalang file",
"exportSettingsLabel": "I-export ang mga setting",
"exportSettingsHint": "I-export ang mga setting sa isang JSON file",
"exportedSettings": "Na-export ang mga setting",
"importSettingsLabel": "I-import ang mga setting",
"importSettingsHint": "I-import ang mga setting mula sa isang JSON file",
"importedSettings": "Na-import ang mga setting",
"exportPatchesLabel": "Mag-export ng seleksyon ng mga pantapal",
"exportPatchesHint": "I-export ang seleksyon ng mga pantapal sa isang JSON file",
"exportedPatches": "Na-export ang seleksyon ng mga pantapal",
"noExportFileFound": "Walang seleksyon ng mga pantapal para i-export",
"importPatchesLabel": "Mag-import ng seleksyon ng mga pantapal",
"importPatchesHint": "Mag-import ng seleksyon ng mga pantapal mula sa isang JSON file",
"importedPatches": "Na-import ang seleksyon ng mga pantapal",
"resetStoredPatchesLabel": "I-reset ang seleksyon ng pantapal",
"resetStoredPatchesHint": "I-reset ang seleksyon ng mga nakaimbak na pantapal",
"resetStoredPatchesDialogTitle": "I-reset ang seleksyon ng pantapal?",
"resetStoredPatchesDialogText": "Ibabalik ang default na pagpipilian ng mga patch.",
"resetStoredPatches": "Na-reset na ang pagpili ng mga patch",
"resetStoredOptionsLabel": "I-reset ang mga opsyon ng patch",
"resetStoredOptionsHint": "I-reset ang lahat ng opsyon ng patch",
"resetStoredOptionsDialogTitle": "I-reset ang mga opsyon ng patch?",
"resetStoredOptionsDialogText": "Ang pag-reset ng mga opsyon ng patch ay tatanggalin ang lahat ng nai-save na mga opsyon.",
"resetStoredOptions": "Na-reset na ang mga opsyon",
"deleteLogsLabel": "Burahin lahat ng logs",
"deleteLogsHint": "I-clear ang mga nakolektang logs ng ReVanced Manager",
"deletedLogs": "Nabura na yung logs",
"regenerateKeystoreLabel": "I-regenerate ang keystore",
"regenerateKeystoreHint": "I-regenerate ang keystore na ginamit sa pagpirma ng mga apps",
"regenerateKeystoreDialogTitle": "I-regenerate ang keystore?",
"regenerateKeystoreDialogText": "Ang mga app na patched na nilagdaan gamit ang lumang keystore ay hindi na maa-update.",
"regeneratedKeystore": "Keystore naibalik ang",
"exportKeystoreLabel": "I-export ang keystore",
"exportKeystoreHint": "I-export ang keystore na ginagamit para lagdaan ang mga app",
"exportedKeystore": "Nai-export ang keystore",
"noKeystoreExportFileFound": "Walang keystore na ma-export",
"importKeystoreLabel": "I-import ang keystore",
"importKeystoreHint": "Mag-import ng isang keystore na ginamit sa pagpirma ng mga apps",
"importedKeystore": "Nai-import ang keystore",
"selectKeystorePassword": "Keystore password",
"selectKeystorePasswordHint": "Pumili ng password ng keystore na ginamit sa pagpirma ng mga app",
"jsonSelectorErrorMessage": "Hindi magamit ang napiling JSON file",
"keystoreSelectorErrorMessage": "Hindi magamit ang piniling file ng keystore"
},
"appInfoView": {
"widgetTitle": "Impormasyon",
"openButton": "Buksan",
"installButton": "I-install",
"uninstallButton": "Alisin",
"unmountButton": "I-unmount",
"exportButton": "I-export",
"deleteButton": "Tanggalin",
"rootDialogTitle": "Error",
"lastPatchedAppDescription": "Ito ay isang backup ng app na huling na-patch.",
"unmountDialogText": "Gusto mo bang i-tanggal ang aplikasyong ito?",
"uninstallDialogText": "Gusto mo bang i-alis ang aplikasyong ito?",
"rootDialogText": "Na-install ang app gamit ang pahintulot ng superuser, pero walang kasalukuyang pahintulot ang ReVanced Manager.\nBigyan muna kami ng pahintulot pang-superuser.",
"removeAppDialogTitle": "Tanggalin ang app?",
"removeAppDialogText": "Sigurado ka bang gusto mong tanggalin ang backup na ito?",
"packageNameLabel": "Pangalan ng package",
"installTypeLabel": "Uri ng installation",
"mountTypeLabel": "I-mount",
"regularTypeLabel": "Regular",
"patchedDateLabel": "Petsa ng pagtatapal",
"appliedPatchesLabel": "Nalapat na mga pantapal",
"sizeLabel": "Laki ng file",
"patchedDateHint": "${date} sa ${time}",
"appliedPatchesHint": "${quantity} ang naka-apply nga patches",
"updateNotImplemented": "Binubuo pa lamang ang feature na ito"
},
"contributorsView": {
"widgetTitle": "Mga nag-ambag"
},
"installErrorDialog": {
"mount_version_mismatch": "Hindi magkatugma ang bersyon",
"mount_no_root": "Walang access sa root",
"mount_missing_installation": "`Hindi matagpuan ang pag-install' means 'Installation not found'",
"status_failure_blocked": "`Hindi pinagana ang pag-install' means 'Installation blocked'",
"install_failed_verification_failure": "`Hindi pinagana ang pag-verify' means 'Verification failed'",
"status_failure_invalid": "`Hindi ito pinagana' means 'Installation invalid'",
"install_failed_version_downgrade": "`Hindi ito pinagana' means 'Can't downgrade'",
"status_failure_conflict": "`Hindi ito pinagana' means 'Installation conflict'",
"status_failure_storage": "Suliranin sa espasyo ng pag-iimbak ng pag-install",
"status_failure_incompatible": "Hindi tugma ang pag-install",
"status_failure_timeout": "Nasuspende ang pag-install",
"status_unknown": "Nabigo ang pag-install",
"mount_version_mismatch_description": "Naging bigo ang pag-install dahil sa ibang bersyon ang na-install na app kaysa sa napatch na app.\n\nI-install ang bersyon ng app na ino-mount mo at subukang muli.",
"mount_no_root_description": "Nabigo ang pag-install dahil hindi pinagkalooban ng root access.\n\nPagkalooban ng root access ang ReVanced Manager at subukang muli.",
"mount_missing_installation_description": "Ang pag-install ay nabigo dahil ang hindi pa na-patch na app ay hindi naka-install sa device na ito para mai-mount dito.\n\nI-install ang hindi pa na-patch na app bago mag-mount at subukang muli.",
"status_failure_timeout_description": "Masyadong matagal bago matapos ang pag-install.\n\nGusto mo bang subukang muli?",
"status_failure_storage_description": "Ang pag-install ay nabigo dahil sa hindi sapat na imbakan.\n\nMagbakante ng ilang espasyo at subukang muli.",
"status_failure_invalid_description": "Nabigo ang pag-install dahil hindi wasto ang na-patch na app.\n\nAlisin ang app at subukan muli?",
"status_failure_incompatible_description": "Hindi tugma ang app sa device na ito.\n\nGumamit ng APK na sinusuportahan ng device na ito at subukan muli.",
"status_failure_conflict_description": "Napigilan ang pag-install ng isang umiiral na pag-install ng app.\n\nAlisin ang na-install na app at subukan muli?",
"status_failure_blocked_description": "Hinarang ng ${packageName} ang pag-install.\n\nAyusin ang iyong mga setting ng seguridad at subukan muli.",
"install_failed_verification_failure_description": "Nabigo ang pag-install dahil sa isyu sa pag-verify.\n\nAyusin ang iyong mga setting ng seguridad at subukan muli.",
"install_failed_version_downgrade_description": "Nabigo ang pag-install dahil ang na-patch na app ay mas mababang bersyon kaysa sa na-install na app.\n\nAlisin ang app at subukan muli?",
"status_unknown_description": "Nabigo ang pag-install dahil sa hindi kilalang dahilan. Subukan muli."
}
}

298
assets/i18n/fr_FR.i18n.json Executable file
View File

@ -0,0 +1,298 @@
{
"okButton": "OK",
"cancelButton": "Annuler",
"dismissButton": "Ignorer",
"quitButton": "Quitter",
"updateButton": "Mettre à jour",
"suggested": "Suggéré : ${version}",
"yesButton": "Oui",
"noButton": "Non",
"warning": "Avertissement",
"notice": "Remarque",
"noShowAgain": "Ne plus afficher",
"add": "Ajouter",
"remove": "Retirer",
"showChangelogButton": "Voir l'historique",
"showUpdateButton": "Voir la mise à jour",
"navigationView": {
"dashboardTab": "Tableau de bord",
"patcherTab": "Patcheur",
"settingsTab": "Paramètres"
},
"homeView": {
"refreshSuccess": "Actualisé avec succès",
"widgetTitle": "Tableau de bord",
"updatesSubtitle": "Mises à jour",
"lastPatchedAppSubtitle": "Dernière appli patchée",
"patchedSubtitle": "Applis installées",
"changeLaterSubtitle": "Vous pouvez changer cela dans les paramètres ultérieurement.",
"noSavedAppFound": "Aucune appli trouvée",
"noInstallations": "Aucune application patchée installée",
"installUpdate": "Continuer à installer la mise à jour ?",
"updateSheetTitle": "Mettre à jour ReVanced Manager",
"updateDialogTitle": "Nouvelle mise à jour disponible",
"updatePatchesSheetTitle": "Mettre à jour les patchs ReVanced",
"updateChangelogTitle": "Journal des modifications",
"updateDialogText": "Une nouvelle mise à jour est disponible pour ${file}.\n\nLa version actuellement installée est la version ${version}.",
"downloadConsentDialogTitle": "Télécharger les fichiers requis ?",
"downloadConsentDialogText": "ReVanced Manager doit télécharger les fichiers nécessaires à son bon fonctionnement.",
"downloadConsentDialogText2": "Cette opération vous connectera à ${url}.",
"downloadingMessage": "Téléchargement de la mise à jour...",
"downloadedMessage": "Mise à jour téléchargée",
"installingMessage": "Installation de la mise à jour...",
"errorDownloadMessage": "Impossible de télécharger la mise à jour",
"errorInstallMessage": "Impossible d'installer la mise à jour",
"noConnection": "Aucune connexion internet"
},
"applicationItem": {
"infoButton": "Infos"
},
"latestCommitCard": {
"loadingLabel": "Chargement...",
"timeagoLabel": "Il y a ${time}"
},
"patcherView": {
"widgetTitle": "Patcheur",
"patchButton": "Patcher",
"incompatibleArchWarningDialogText": "Patcher sur cette architecture n'est pas encore pris en charge et pourrait échouer. Continuer quand même ?",
"removedPatchesWarningDialogText": "Patchs supprimés depuis la dernière fois que vous avez patché cette application :\n\n${patches}\n\n${newPatches}Continuer quand même ?",
"addedPatchesDialogText": "Patchs ajoutés depuis la dernière fois que vous avez patché cette application :\n\n${addedPatches}\n\n",
"requiredOptionDialogText": "Certaines options de patch doivent être définies."
},
"appSelectorCard": {
"widgetTitle": "Sélectionner une application",
"widgetTitleSelected": "Application sélectionnée",
"widgetSubtitle": "Aucune application sélectionnée",
"noAppsLabel": "Aucune application trouvée",
"anyVersion": "Toutes les versions"
},
"patchSelectorCard": {
"widgetTitle": "Sélectionner les patchs",
"widgetTitleSelected": "Patchs sélectionnés",
"widgetSubtitle": "Sélectionnez d'abord une application",
"widgetEmptySubtitle": "Aucun patch sélectionné"
},
"socialMediaCard": {
"widgetTitle": "Réseaux sociaux",
"widgetSubtitle": "Nous sommes en ligne !"
},
"appSelectorView": {
"viewTitle": "Sélectionnez une appli",
"searchBarHint": "Rechercher une application",
"storageButton": "Stockage",
"selectFromStorageButton": "Sélectionner à partir du stockage",
"errorMessage": "Impossible d'utiliser l'application sélectionnée",
"downloadToast": "La fonction de téléchargement est actuellement indisponible",
"requireSuggestedAppVersionDialogText": "La version de l'application que vous avez sélectionnée ne correspond pas à la version recommandée, ce qui pourrait engendrer des problèmes inattendus. Veuillez utiliser la version suggérée.\n\nVersion sélectionnée : ${selected}\nVersion suggérée : ${suggested}\n\nPour continuer quand même, désactivez \"Exiger la version suggérée de l'appli\" dans les paramètres.",
"featureNotAvailable": "Fonctionnalité non implémentée",
"featureNotAvailableText": "Cette appli est un APK fractionné et ne peut être patchée et installée de manière fiable uniquement en la montant avec les privilèges root. Vous pouvez toutefois patcher et installer un APK classique en le sélectionnant à partir du stockage."
},
"patchesSelectorView": {
"viewTitle": "Choix des patchs",
"searchBarHint": "Rechercher des patchs",
"universalPatches": "Patchs universels",
"newPatches": "Nouveaux patchs",
"patches": "Patchs",
"doneButton": "Terminé",
"defaultChip": "Par défaut",
"defaultTooltip": "Sélectionner tous les patchs par défaut",
"noneChip": "Aucun",
"noneTooltip": "Désélectionner tous les patchs",
"loadPatchesSelection": "Charger la sélection de patchs",
"noSavedPatches": "Aucune sélection de patchs enregistrée pour l'application sélectionnée.\nAppuyez sur Terminé pour enregistrer la sélection actuelle.",
"noPatchesFound": "Aucun patch n'a été trouvé pour l'application sélectionnée",
"setRequiredOption": "Certains patchs ont des options qui doivent obligatoirement être définies :\n\n${patches}\n\nVeuillez les définir avant de continuer."
},
"patchOptionsView": {
"customValue": "Valeur personnalisée",
"setToNull": "Définir sur null",
"nullValue": "Cette option est actuellement définie sur null",
"viewTitle": "Options de patch",
"saveOptions": "Enregistrer",
"unselectPatch": "Désélectionner le patch",
"tooltip": "Plus d'options de saisie",
"selectFilePath": "Sélectionner un emplacement de fichier",
"selectFolder": "Sélectionner un dossier",
"requiredOption": "Définir cette option est nécessaire",
"unsupportedOption": "Cette option n'est pas prise en charge",
"requiredOptionNull": "Les options suivantes doivent être définies :\n\n${options}"
},
"patchItem": {
"unsupportedDialogText": "Sélectionner ce patch peut engendrer des erreurs de patching.\n\nVersion de l'application : ${packageVersion}\nVersions prises en charge :\n${supportedVersions}",
"unsupportedPatchVersion": "Le patch n'est pas pris en charge pour cette version de l'application.",
"unsupportedRequiredOption": "Ce patch contient une option requise qui n'est pas prise en charge par cette application",
"patchesChangeWarningDialogText": "Il est recommandé d'utiliser la sélection de patchs et les options par défaut. En les modifiant, vous vous exposez à des problèmes inattendus.\n\nAvant de modifier une sélection de patchs, vous devez activer \"Autoriser la modification de la sélection de patchs\" dans les paramètres.",
"patchesChangeWarningDialogButton": "Utiliser la sélection par défaut"
},
"installerView": {
"installType": "Sélectionnez un type d'installation",
"installTypeDescription": "Sélectionner le mode d'installation avec lequel continuer.",
"installButton": "Installer",
"installRootType": "Montage",
"installNonRootType": "Standard",
"warning": "Désactivez les mises à jour automatiques pour l'application patchée afin d'éviter des problèmes inattendus.",
"pressBackAgain": "Appuyez à nouveau sur retour pour annuler",
"openButton": "Ouvrir",
"notificationTitle": "ReVanced Manager est en train de patcher",
"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 ?",
"copiedToClipboard": "Journal copié dans le presse-papiers",
"noExit": "L'installateur s'exécute encore, impossible de quitter..."
},
"settingsView": {
"widgetTitle": "Paramètres",
"appearanceSectionTitle": "Apparence",
"teamSectionTitle": "Équipe",
"debugSectionTitle": "Débogage",
"advancedSectionTitle": "Avancés",
"exportSectionTitle": "Importer et exporter",
"dataSectionTitle": "Sources de données",
"themeModeLabel": "Thème de l'appli",
"systemThemeLabel": "Système",
"lightThemeLabel": "Clair",
"darkThemeLabel": "Sombre",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Profitez d'une expérience en harmonie avec votre appareil",
"languageLabel": "Langue",
"languageUpdated": "Langue mise à jour",
"sourcesLabel": "Sources alternatives",
"sourcesLabelHint": "Configurez les sources alternatives pour les patchs ReVanced",
"useAlternativeSources": "Utiliser les sources alternatives",
"useAlternativeSourcesHint": "Utilisez des sources alternatives pour les patchs ReVanced plutôt que celles de l'API",
"sourcesResetDialogTitle": "Réinitialiser",
"sourcesResetDialogText": "Êtes-vous sûr de vouloir réinitialiser vos sources à leurs valeurs par défaut ?",
"apiURLResetDialogText": "Êtes-vous sûr de vouloir réinitialiser l'URL d'API à sa valeur par défaut ?",
"sourcesUpdateNote": "Remarque : Les patchs ReVanced seront téléchargés automatiquement à partir des sources alternatives.\n\nCela vous connectera à la source alternative.",
"apiURLLabel": "URL de l'API",
"apiURLHint": "Configurer l'URL de l'API de ReVanced Manager",
"selectApiURL": "URL de l'API",
"orgPatchesLabel": "Organisation des patchs",
"sourcesPatchesLabel": "Source des patchs",
"contributorsLabel": "Contributeurs",
"contributorsHint": "Liste des personnes qui contribuent à ReVanced",
"logsLabel": "Partager les journaux",
"logsHint": "Partager les journaux de ReVanced Manager",
"enablePatchesSelectionLabel": "Autoriser la modification de la sélection de patchs",
"enablePatchesSelectionHint": "Ne pas empêcher la sélection ou la désélection des patchs",
"enablePatchesSelectionWarningText": "Modifier la sélection de patchs peut engendrer des problèmes inattendus.\n\nActiver quand même ?",
"disablePatchesSelectionWarningText": "Vous êtes sur le point de désactiver la modification de la sélection de patchs.\nLa sélection de patchs par défaut sera rétablie.\n\nDésactiver quand même ?",
"autoUpdatePatchesLabel": "Mise à jour auto. des patchs",
"autoUpdatePatchesHint": "Mettre à jour automatiquement les patchs vers la dernière version",
"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",
"universalPatchesHint": "Afficher toutes les applis et les patchs universels (peut ralentir la liste d'applis)",
"lastPatchedAppLabel": "Enregistrer l'application patchée",
"lastPatchedAppHint": "Enregistrer le dernier patch pour l'installer ou l'exporter plus tard",
"versionCompatibilityCheckLabel": "Vérification de la compatibilité des versions",
"versionCompatibilityCheckHint": "Empêcher de sélectionner des patchs qui ne sont pas compatibles avec la version sélectionnée de l'appli",
"requireSuggestedAppVersionLabel": "Exiger la version suggérée de l'appli",
"requireSuggestedAppVersionHint": "Empêcher la sélection d'une appli dont la version n'est pas celle suggérée",
"requireSuggestedAppVersionDialogText": "Sélectionner une appli dont la version n'est pas celle suggérée peut engendrer des problèmes inattendus.\n\nVoulez-vous quand même continuer ?",
"aboutLabel": "À propos",
"snackbarMessage": "Copié dans le presse-papiers",
"restartAppForChanges": "Redémarrez l'application pour appliquer les changements",
"deleteTempDirLabel": "Supprimer les fichiers temporaires",
"deleteTempDirHint": "Supprimer les fichiers temporaires inutilisés",
"deletedTempDir": "Fichiers temporaires supprimés",
"exportSettingsLabel": "Exporter les paramètres",
"exportSettingsHint": "Exporter les paramètres vers un fichier JSON",
"exportedSettings": "Paramètres exportés",
"importSettingsLabel": "Importer les paramètres",
"importSettingsHint": "Importer les paramètres depuis un fichier JSON",
"importedSettings": "Paramètres importés",
"exportPatchesLabel": "Exporter la sélection de patchs",
"exportPatchesHint": "Exporter la sélection de patchs vers un fichier JSON",
"exportedPatches": "Sélection de patchs exportée",
"noExportFileFound": "Aucune sélection de patchs à exporter",
"importPatchesLabel": "Importer une sélection de patchs",
"importPatchesHint": "Importer une sélection de patchs depuis un fichier JSON",
"importedPatches": "Sélection de patchs importée",
"resetStoredPatchesLabel": "Réinitialiser la sélection de patchs",
"resetStoredPatchesHint": "Réinitialiser la sélection de patchs sauvegardée",
"resetStoredPatchesDialogTitle": "Réinitialiser la sélection de patchs ?",
"resetStoredPatchesDialogText": "La sélection de patchs par défaut sera restaurée.",
"resetStoredPatches": "La sélection de patchs a été réinitialisée",
"resetStoredOptionsLabel": "Réinitialiser les options des patchs",
"resetStoredOptionsHint": "Réinitialiser toutes les options des patchs",
"resetStoredOptionsDialogTitle": "Réinitialiser les options des patchs ?",
"resetStoredOptionsDialogText": "Réinitialiser les options des patchs aura pour effet de supprimer toutes les options enregistrées.",
"resetStoredOptions": "Les options ont été réinitialisées",
"deleteLogsLabel": "Effacer les journaux",
"deleteLogsHint": "Supprimer les journaux collectés par ReVanced Manager",
"deletedLogs": "Journaux supprimés",
"regenerateKeystoreLabel": "Régénérer le magasin de clés",
"regenerateKeystoreHint": "Recréer le magasin de clés utilisé pour signer les applications",
"regenerateKeystoreDialogTitle": "Régénérer le magasin de clés ?",
"regenerateKeystoreDialogText": "Les applications patchées qui ont été signées avec l'ancien stockage de clés ne pourront plus être mises à jour.",
"regeneratedKeystore": "Magasin de clés régénéré",
"exportKeystoreLabel": "Exporter le magasin de clés",
"exportKeystoreHint": "Exporter le magasin de clés utilisé pour signer les applications",
"exportedKeystore": "Magasin de clés exporté",
"noKeystoreExportFileFound": "Pas de magasin de clés à exporter",
"importKeystoreLabel": "Importer le magasin de clés",
"importKeystoreHint": "Importer le magasin de clés utilisé pour signer les applications",
"importedKeystore": "Magasin de clés importé",
"selectKeystorePassword": "Mot de passe du magasin de clés",
"selectKeystorePasswordHint": "Sélectionner le mot de passe du magasin de clés utilisé pour signer les applications",
"jsonSelectorErrorMessage": "Impossible d'utiliser le fichier JSON sélectionné",
"keystoreSelectorErrorMessage": "Impossible d'utiliser le fichier de stockage de clés sélectionné"
},
"appInfoView": {
"widgetTitle": "Infos sur l'appli",
"openButton": "Ouvrir",
"installButton": "Installer",
"uninstallButton": "Désinstaller",
"unmountButton": "Démonter",
"exportButton": "Exporter",
"deleteButton": "Supprimer",
"rootDialogTitle": "Erreur",
"lastPatchedAppDescription": "Il s'agit d'une sauvegarde de la dernière application qui a été patchée.",
"unmountDialogText": "Êtes-vous sûr de vouloir démonter cette application ?",
"uninstallDialogText": "Êtes-vous sûr de vouloir désinstaller cette application ?",
"rootDialogText": "L'application a été installée avec les autorisations superutilisateur, mais ReVanced Manager n'a actuellement aucune autorisation.\nVeuillez commencer par accorder les autorisations superutilisateur.",
"removeAppDialogTitle": "Supprimer l'application ?",
"removeAppDialogText": "Êtes-vous sûr de vouloir supprimer cette sauvegarde ?",
"packageNameLabel": "Nom du paquet",
"installTypeLabel": "Type d'installation",
"mountTypeLabel": "Montage",
"regularTypeLabel": "Standard",
"patchedDateLabel": "Patché le",
"appliedPatchesLabel": "Patchs appliqués",
"sizeLabel": "Taille de fichier",
"patchedDateHint": "${date} à ${time}",
"appliedPatchesHint": "${quantity} patchs appliqués",
"updateNotImplemented": "Cette fonctionnalité n'a pas encore été implémentée"
},
"contributorsView": {
"widgetTitle": "Contributeurs"
},
"installErrorDialog": {
"mount_version_mismatch": "Incompatibilité de version",
"mount_no_root": "Aucun accès administrateur",
"mount_missing_installation": "Installation introuvable",
"status_failure_blocked": "Installation bloquée",
"install_failed_verification_failure": "Échec de la vérification",
"status_failure_invalid": "Installation invalide",
"install_failed_version_downgrade": "Impossible d'installer une version antérieure",
"status_failure_conflict": "Conflit d'installation",
"status_failure_storage": "Problème de stockage",
"status_failure_incompatible": "Installation incompatible",
"status_failure_timeout": "Temps d'installation écoulé",
"status_unknown": "Échec de l'installation",
"mount_version_mismatch_description": "L'installation a échoué car l'application installée n'a pas la même version que l'application patchée.\n\nInstallez la version de l'application que vous essayez de monter et réessayez.",
"mount_no_root_description": "L'installation a échoué parce que l'accès root n'a pas été accordé.\n\nAccordez l'accès root à ReVanced Manager et réessayez.",
"mount_missing_installation_description": "L'installation a échoué parce que l'application non patchée n'est pas installée sur cet appareil, il est donc impossible d'effectuer le montage sur celle-ci.\n\nInstallez l'application non patchée avant d'essayer d'effectuer le montage et réessayez.",
"status_failure_timeout_description": "L'installation a pris trop de temps.\n\nVoulez-vous réessayer ?",
"status_failure_storage_description": "L'installation a échoué en raison d'un espace de stockage insuffisant.\n\nLibérez de l'espace et réessayez.",
"status_failure_invalid_description": "L'installation a échoué car l'application patchée est invalide.\n\nDésinstaller l'application et réessayer ?",
"status_failure_incompatible_description": "L'application est incompatible avec cet appareil.\n\nUtilisez un APK pris en charge par cet appareil et réessayez.",
"status_failure_conflict_description": "L'installation a été empêchée par une installation existante de l'application.\n\nDésinstaller l'application et réessayer ?",
"status_failure_blocked_description": "L'installation a été bloquée par ${packageName}.\n\nAjustez vos paramètres de sécurité et réessayez.",
"install_failed_verification_failure_description": "L'installation a échoué en raison d'un problème de vérification.\n\nAjustez vos paramètres de sécurité et réessayez.",
"install_failed_version_downgrade_description": "L'installation a échoué car la version de l'application patchée est inférieure à celle de l'application installée.\n\nDésinstaller l'application et réessayer ?",
"status_unknown_description": "L'installation a échoué pour une raison inconnue. Veuillez réessayer."
}
}

View File

@ -1,196 +0,0 @@
{
"okButton": "OK",
"cancelButton": "Annuler",
"enabledLabel": "Activé",
"disabledLabel": "Désactivé",
"yesButton": "Oui",
"noButton": "Non",
"warning": "Avertissement",
"navigationView": {
"dashboardTab": "Tableau de bord",
"patcherTab": "Patcheur",
"settingsTab": "Paramètres"
},
"homeView": {
"widgetTitle": "Tableau de bord",
"updatesSubtitle": "Mises à jour",
"patchedSubtitle": "Applications patchées",
"updatesAvailable": "Mises à jour disponibles",
"noUpdates": "Aucune mise à jour disponible",
"WIP": "Bientôt disponible...",
"noInstallations": "Aucune application patchée n'est installée",
"installed": "Installée",
"updateDialogTitle": "Mettre à jour le Manager",
"updateDialogText": "Êtes-vous sûr de vouloir télécharger et mettre à jour ReVanced Manager?",
"notificationTitle": "Mise à jour téléchargée",
"notificationText": "Appuyer pour installer la mise à jour",
"downloadingMessage": "Téléchargement de la mise à jour...",
"installingMessage": "Installation de la mise à jour...",
"errorDownloadMessage": "Impossible de télécharger la mise à jour",
"errorInstallMessage": "Impossible d'installer la mise à jour",
"noConnection": "Aucune connexion Internet",
"updatesDisabled": "Mettre à jour une application patchée est actuellement désactivé. Réappliquez à nouveau le patch."
},
"applicationItem": {
"patchButton": "Patch",
"infoButton": "Info",
"changelogLabel": "Liste des changements"
},
"latestCommitCard": {
"loadingLabel": "Chargement...",
"timeagoLabel": "Il y a {time}",
"patcherLabel": "Patcheur:",
"managerLabel": "Manager: ",
"updateButton": "Mettre à jour le Manager"
},
"patcherView": {
"widgetTitle": "Patcheur",
"patchButton": "Patch",
"patchDialogText": "Vous avez sélectionné un emplacement de ressource et une installation d'un APK divisé a été détecté, donc le patch pourrait entrainer des erreurs.\nÊtes-vous sûr de vouloir continuer?"
},
"appSelectorCard": {
"widgetTitle": "Sélectionner une application",
"widgetTitleSelected": "Application sélectionnée",
"widgetSubtitle": "Aucune application n'a été sélectionnée",
"noAppsLabel": "Aucune application trouvée",
"currentVersion": "Version actuelle",
"recommendedVersion": "Version recommandée",
"anyVersion": "n'importe laquelle"
},
"patchSelectorCard": {
"widgetTitle": "Sélectionner les patchs",
"widgetTitleSelected": "Patchs sélectionnés",
"widgetSubtitle": "Choisissez d'abord une application",
"widgetEmptySubtitle": "Aucun patch n'est sélectionné"
},
"socialMediaCard": {
"widgetTitle": "Réseaux sociaux",
"widgetSubtitle": "Nous sommes en ligne !"
},
"appSelectorView": {
"viewTitle": "Sélectionner une application",
"searchBarHint": "Rechercher une application",
"storageButton": "Stockage",
"errorMessage": "Impossible d'utiliser l'application sélectionnée"
},
"patchesSelectorView": {
"viewTitle": "Sélectionner les patchs",
"searchBarHint": "Rechercher des patchs",
"doneButton": "Terminé",
"recommended": "Recommandé",
"all": "Tout",
"none": "Aucun",
"loadPatchesSelection": "Charger les patches sélectionnés",
"noSavedPatches": "Aucun patch enregistré pour l'application sélectionnée\nAppuyez sur Terminé pour enregistrer la sélection actuelle",
"noPatchesFound": "Aucun patch n'a été trouvé pour l'application sélectionnée",
"selectAllPatchesWarningContent": "Vous êtes sur le point de sélectionner tous les patchs, cela inclut des patchs non recommandés et peut causer des comportements indésirables."
},
"patchItem": {
"unsupportedDialogText": "Sélectionner ce patch pourrait entrainer des erreurs dans la modification.\n\nVersion de l'application: {packageVersion}\nVersions supportées:\n{supportedVersions}",
"unsupportedPatchVersion": "Le patch n'est pas supporté pour cette version de l'application. Activez le commutateur expérimental dans les réglages pour continuer."
},
"installerView": {
"widgetTitle": "Installateur",
"installButton": "Installer",
"installRootButton": "Installer en tant que Root",
"openButton": "Ouvrir",
"shareButton": "Partager le fichier",
"notificationTitle": "ReVanced Manager est en train de patcher",
"notificationText": "Appuyer pour revenir à linstallateur",
"shareApkMenuOption": "Partager le fichier APK",
"exportApkMenuOption": "Exporter l'APK",
"shareLogMenuOption": "Partager le log",
"installErrorDialogTitle": "Erreur",
"installErrorDialogText1": "L'installation Root n'est pas possible avec la sélection actuelle de patchs.\nRe-patchez votre application ou choisissez une installation non root.",
"installErrorDialogText2": "L'installation Non-root n'est pas possible avec la sélection actuelle de patchs.\nRe-patchez votre application ou choisissez une installation en tant que Root.",
"installErrorDialogText3": "L'installation root n'est pas possible car l'APK original a été sélectionné à partir du stockage.\nSélectionnez une application installée ou choisissez une installation non root.",
"noExit": "L'installateur est toujours en fonctionnement, impossible de quitter..."
},
"settingsView": {
"widgetTitle": "Réglages",
"appearanceSectionTitle": "Apparence",
"teamSectionTitle": "Équipe",
"infoSectionTitle": "Info",
"advancedSectionTitle": "Avancé",
"logsSectionTitle": "Journaux",
"darkThemeLabel": "Mode sombre",
"darkThemeHint": "Bienvenue dans le côté obscur",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Profitez d'une expérience plus proche de votre appareil",
"languageLabel": "Langue",
"englishOption": "Anglais",
"sourcesLabel": "Sources",
"sourcesLabelHint": "Configurer vos sources personnalisées",
"orgPatchesLabel": "Organisation des patchs",
"sourcesPatchesLabel": "Source des patches",
"orgIntegrationsLabel": "Organisme d'intégration",
"sourcesIntegrationsLabel": "Source des intégrations",
"sourcesResetDialogTitle": "Réinitialiser",
"sourcesResetDialogText": "Êtes-vous sûr de vouloir réinitialiser les sources personnalisées à leur valeur par défaut ?",
"apiURLResetDialogText": "Êtes-vous sûr de vouloir réinitialiser l'URL d'API à sa valeur par défaut ?",
"contributorsLabel": "Contributeurs",
"contributorsHint": "Liste des contributeurs de ReVanced",
"logsLabel": "Journal",
"logsHint": "Partager les journaux du Manager",
"apiURLLabel": "URL de l'API",
"apiURLHint": "Configurez l'URL de votre API personnalisée",
"selectApiURL": "URL de l'API",
"experimentalPatchesLabel": "Support des patchs expérimentaux",
"experimentalPatchesHint": "Activer l'utilisation des patchs non supportés dans n'importe quelle version de l'application",
"enabledExperimentalPatches": "Support pour les patchs expérimentaux activé",
"exportSectionTitle": "Importer & exporter",
"aboutLabel": "À propos",
"snackbarMessage": "Copié dans le presse-papier",
"sentryLabel": "Journal sentinel",
"sentryHint": "Envoyer des journaux anonymes pour nous aider à améliorer ReVanced Manager",
"restartAppForChanges": "Redémarrez l'application pour appliquer les changements",
"deleteKeystoreLabel": "Supprimer le magasin de clés",
"deleteKeystoreHint": "Supprimer le magasin de clés utilisé pour signer l'application",
"deletedKeystore": "Magasin de clés supprimé",
"deleteTempDirLabel": "Supprimer les fichiers temporaires",
"deleteTempDirHint": "Supprimer les fichiers temporaires inutilisés",
"deletedTempDir": "Fichiers temporaires supprimés",
"exportPatchesLabel": "Exporter la sélection de patchs",
"exportPatchesHint": "Exporter la sélection de patchs vers un fichier JSON",
"exportedPatches": "Sélection de patchs exportée",
"noExportFileFound": "Aucune sélection de patchs à exporter",
"importPatchesLabel": "Importer une sélection de patchs",
"importPatchesHint": "Importer une sélection de patchs depuis un fichier JSON",
"importedPatches": "Sélection de patchs importée",
"resetStoredPatchesLabel": "Réinitialiser les patches",
"resetStoredPatchesHint": "Réinitialiser la sélection des patches sauvegardés",
"resetStoredPatches": "La sélection des patches a été réinitialisée",
"jsonSelectorErrorMessage": "Impossible d'utiliser le fichier JSON sélectionné",
"deleteLogsLabel": "Supprimer les journaux",
"deleteLogsHint": "Supprimer les journaux du gestionnaire collectés",
"deletedLogs": "Journaux supprimés"
},
"appInfoView": {
"widgetTitle": "Infos concernant l'application",
"openButton": "Ouvrir",
"uninstallButton": "Désinstaller",
"patchButton": "Patcher",
"unpatchButton": "Dépatcher",
"unpatchDialogText": "Êtes-vous sûr de vouloir dépatcher cette application?",
"rootDialogTitle": "Erreur",
"rootDialogText": "L'application a été installée avec les permissions d'accès à la racine, mais ReVanced Manager n'a actuellement aucune permissions.\nVeuillez d'abord accorder l'accès à la racine.",
"packageNameLabel": "Nom du paquet",
"originalPackageNameLabel": "Nom originel du paquet",
"installTypeLabel": "Type d'installation",
"rootTypeLabel": "Root",
"nonRootTypeLabel": "Non-root",
"patchedDateLabel": "Date du patch",
"patchedDateHint": "le {date} à {time}",
"appliedPatchesLabel": "Patchs appliqués",
"appliedPatchesHint": "{quantity} patchs appliqués",
"updateNotImplemented": "Cette fonction n'a pas encore été implémentée"
},
"contributorsView": {
"widgetTitle": "Contributeurs",
"patcherContributors": "Contributeurs du patcheur",
"patchesContributors": "Contributeurs des patchs",
"integrationsContributors": "Contributeurs des intégrations",
"cliContributors": "Contributeurs de la CLI",
"managerContributors": "Contributeurs du Manager"
}
}

Some files were not shown because too many files have changed in this diff Show More