Compare commits

...

973 Commits

Author SHA1 Message Date
semantic-release-bot
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
Pun Butrach
23690a98df feat: Include primary architecture in external search (#2068) 2024-07-29 22:56:00 +07:00
Pun Butrach
7449d4e318 docs: Link user to the latest version of app (#2077) 2024-07-25 09:27:29 +07:00
validcube
c6f9e36f4b refactor: Migrate deprecated member 2024-07-13 17:32:34 +07:00
Pun Butrach
e9cee0abe2 ci: Prefer installing NPM dependencies from lock 2024-07-13 17:04:43 +07:00
Benjamin
9440f23b55 chore: Remove NDK constraint (#2016)
Co-authored-by: Pun Butrach <pun.butrach@gmail.com>
2024-07-13 16:55:02 +07:00
dependabot[bot]
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
kitadai31
1bdb820aed refactor: Remove unused strings (#2010) 2024-07-11 11:28:02 +07:00
semantic-release-bot
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
Benjamin Halko
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
kitadai31
3209c0e430 fix: Unsupported patch toast says "patchItem.unsupportedPatchVersion" (#2011) 2024-06-30 15:24:25 +07:00
aAbed
7ef8f0454b fix: Select previously applied patches when loading patch selection (#1865) 2024-06-29 14:40:20 +02:00
DMzS
232b702789 fix: Increase dashboard RefreshIndicator edge offset (#1859) 2024-06-29 14:40:04 +02:00
Snehith
694f2a9fae fix: Follow system theme immediately (#1942)
Co-authored-by: surya-technovert <surya.m@technovert.com>
2024-06-29 14:39:00 +02:00
Benjamin
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
Francesco Marastoni
b26760b216 fix: Handle selecting files and folders for patch options correctly (#1941) 2024-06-29 14:34:34 +02:00
semantic-release-bot
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
DMzS
bbeb836923 fix: Adjust scroll from clipping children form fields in AlertDialog from showSourcesDialog (#1782) 2024-06-27 05:45:55 +07:00
semantic-release-bot
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
Pun Butrach
73368b58be build: Support for Flutter 3.22 (#1921)
Signed-off-by: validcube <pun.butrach@gmail.com>
2024-06-24 23:55:37 +07:00
ReVanced Bot
ca14e77ba3 chore: Sync translations (#1899) 2024-06-24 23:55:03 +07:00
Pun Butrach
cafdfcda47 ci: Don't fail validation on unimportant warnings 2024-06-24 23:52:23 +07:00
aAbed
5c68d513a3 feat: Add ability to set null in patch options (#1947) 2024-06-24 23:37:16 +07:00
kitadai31
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
Pun Butrach
46f6a49a7a ci: Always run on dev branch only 2024-06-15 17:36:25 +07:00
Snehith
c13827e8e1 fix: Follow language update immediately (#1944)
Co-authored-by: surya-technovert <surya.m@technovert.com>
2024-06-15 17:21:47 +07:00
Pun Butrach
e0a6de2c2b fix: SecurityException when patching application (#1856) 2024-05-28 11:36:31 +07:00
yonggamer
afdba00722 build: Fix invalid Gradle wrapper checksum (#1919) 2024-05-28 09:31:48 +07:00
oSumAtrIX
9084c71aa3 build: Bump dependencies 2024-05-26 01:21:14 +02:00
oSumAtrIX
8fc5fb6a80 docs: Improve issue templates 2024-05-26 00:43:38 +02:00
validcube
5f762c5442 build: Update Dart dependencies
Signed-off-by: validcube <pun.butrach@gmail.com>
2024-05-19 19:15:35 +07:00
Pun Butrach
8b21ec1ea3 ci: Switch to Flutter instead 2024-05-19 18:54:48 +07:00
Pun Butrach
e83fbb864e ci: Run slang first before validating translation 2024-05-19 18:46:49 +07:00
KobeW50
f03af17f71 docs: Fix issue template mistakes (#1910) 2024-05-19 01:33:18 +07:00
kitadai31
2c3e2e639f fix: Cache external API calls (#1911) 2024-05-18 10:52:13 -07:00
KobeW50
cc85b393dc docs: Fix punctuation in issue forms (#1909) 2024-05-18 01:18:29 +07:00
semantic-release-bot
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
validcube
3ceb63be1d build: Downgrade intl to 0.18.1
1.19.0 is for beta channel atm
2024-05-07 20:53:43 +07:00
validcube
200483d733 ci: Always validate Dart file during translation 2024-05-07 20:51:34 +07:00
validcube
6b03f3a169 fix: Change problematic translation string 2024-05-07 20:51:01 +07:00
validcube
612a3bab49 build: Safely upgrade dependencies 2024-05-07 20:50:26 +07:00
ReVanced Bot
3ac08512f3 chore: Sync translations (#1888)
Co-authored-by: Pun Butrach <pun.butrach@gmail.com>
2024-05-06 21:24:51 +07:00
ReVanced Bot
1adc673c44 chore: Sync translations (#1842) 2024-04-29 10:24:25 +07:00
semantic-release-bot
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
oSumAtrIX
4a72267d41 fix: Download latest integrations non-pre-release 2024-04-28 23:40:28 +02:00
oSumAtrIX
7e0f18e3b7 build: Bump dependencies 2024-04-28 23:39:20 +02:00
hellidox
aab5d4411b docs: Remove duplicate section in README (#1879)
[skip ci]
2024-04-23 18:29:06 +02:00
semantic-release-bot
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
Aunali321
bc300d81d9 feat: open browser when clicking on changelog link 2024-04-16 20:00:46 +05:30
dependabot[bot]
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
dependabot[bot]
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
dependabot[bot]
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
dependabot[bot]
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
dependabot[bot]
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
dependabot[bot]
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
semantic-release-bot
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
Ushie
95a8234e2d chore: Merge branch dev to main (#1855) 2024-04-05 05:43:17 +03:00
Ushie
a7e481c827 fix: Don't crash on patch
This reverts commit 7833a0d552.
2024-04-05 05:35:36 +03:00
semantic-release-bot
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
Ushie
b7c838fd25 chore: Merge branch dev to main (#1763) 2024-04-05 04:11:17 +03:00
semantic-release-bot
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
ReVanced Bot
4293e27681 chore: Sync translations (#1804) 2024-04-05 04:03:11 +03:00
aAbed
8564c1a72e fix: Do not crash when selecting an APK from storage (#1768) 2024-04-05 03:58:59 +03:00
Lam Thanh Nhan
f9e6ef3fd3 feat: Improve language update settings (#1838) 2024-04-05 03:55:16 +03:00
semantic-release-bot
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
DMzS
025ff527ee fix(ui): Support free-scroll and auto-scroll for the installer logs (#1736) (#1836) 2024-04-04 09:27:47 +07:00
semantic-release-bot
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
Ax333l
401646ace4 fix: disable proguard obfuscation 2024-04-02 18:09:38 +02:00
dependabot[bot]
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
dependabot[bot]
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
dependabot[bot]
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
dependabot[bot]
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
dependabot[bot]
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
Ushie
aba2ed4378 ci: Don't specify bundle 2024-03-30 03:16:39 +03:00
Ushie
076e17d670 chore: Don't preserve hierachy in Crowdin 2024-03-30 03:12:06 +03:00
semantic-release-bot
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
Pun Butrach
c265794d0e fix: Don't translation ReVanced repository
Regex:

,
    "patcherContributors":.*,
    "patchesContributors":.*,
    "integrationsContributors":.*,
    "cliContributors":.*,
    "managerContributors":.*
2024-03-28 06:13:05 +00:00
semantic-release-bot
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
Pun Butrach
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
Pun Butrach
63d83a43ad chore: Remove unused en_US file
This file contains absolulely nothing, whereabout: Unknown.
2024-03-28 05:20:32 +00:00
Pun Butrach
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
Pun Butrach
966796dfec fix: Set text colour on dropdown menu for Custom Value
This fix #1584 and a continuation of acb1e2434b

Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
2024-03-28 05:15:02 +00:00
semantic-release-bot
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
Pun Butrach
6f70a07970 fix: Replace Spacer with Expanded to avoid overflow (#1791) 2024-03-28 11:38:07 +07:00
Pun Butrach
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
Ushie
ad416387c2 ci(Crowdin): Specify bundle to download 2024-03-28 02:02:55 +03:00
kitadai31
58d8e7f34f build: Bump dependencies (#1796) 2024-03-27 13:46:37 +01:00
Pun Butrach
bb105b5662 chore(Branding): Update ReVanced Logo name (#1794) 2024-03-27 17:33:42 +07:00
semantic-release-bot
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
github-actions[bot]
af7e39b7f0 chore(i18n): Sync translations (#1719)
Co-authored-by: revanced-bot <github@revanced.app>
2024-03-23 17:55:11 +07:00
DMzS
c981cb4a41 fix: Ensure safe area usage in Changelogs Modal Bottom Sheet (#1772) 2024-03-23 17:51:17 +07:00
Pun Butrach
3ea6ef0bbf ci(Dependabot): Add Gradle ecosystem to RVM Flutter 2024-03-22 04:54:57 +00:00
Pun Butrach
2772a96727 docs(Build): Shorten build_runner args 2024-03-22 04:41:34 +00:00
oSumAtrIX
50b4a5f1d8 ci: Fix PR build success message 2024-03-18 11:51:07 +01:00
semantic-release-bot
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
aAbed
add49e14fb fix: Pre-releases changelog being shown (#1767) 2024-03-17 10:14:22 -07:00
Pun Butrach
ab13895196 docs(Security): Improve badges' accessibility
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
2024-03-11 15:05:40 +07:00
Pun Butrach
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
Pun Butrach
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
Pun Butrach
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
semantic-release-bot
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
oSumAtrIX
9e5e89ac95 chore: Merge branch dev to main (#1756) 2024-03-09 10:09:13 +01:00
semantic-release-bot
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
oSumAtrIX
5cd1cba668 fix: Copy APK to working directory before trying to write to it 2024-03-09 10:01:36 +01:00
oSumAtrIX
ca365bac6e build: Bump dependencies to fix generating keystore 2024-03-09 09:58:41 +01:00
semantic-release-bot
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
oSumAtrIX
316e440d0d chore: Merge branch dev to main (#1739) 2024-03-09 04:48:12 +01:00
oSumAtrIX
95018814a7 ci: Bump dependencies to fix release workflow 2024-03-09 04:44:38 +01:00
oSumAtrIX
b52e49d90a build: Bump dependencies to fix signing issues 2024-03-09 04:39:58 +01:00
oSumAtrIX
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
semantic-release-bot
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
Nikita
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
oSumAtrIX
adb7e5663a docs: Fix small mistakes [skip ci] 2024-03-05 14:58:11 +01:00
Benjamin
ffc14f2146 chore: Upgrade dependencies (#1734) 2024-03-05 14:09:02 +07:00
semantic-release-bot
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
oSumAtrIX
a8b7debf8d chore: Merge branch dev to main (#1729) 2024-03-05 03:22:11 +01:00
oSumAtrIX
7ed9787b58 ci: Add workflow to open a PR to main 2024-03-05 03:21:07 +01:00
oSumAtrIX
eef701615b fix: Keep names for needed classes to fix crash at launch 2024-03-05 03:19:20 +01:00
semantic-release-bot
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
oSumAtrIX
00210f7f0e chore: Workaround CI bug by setting the expected version 2024-03-05 02:49:42 +01:00
Pun Butrach
cea4c6c27a chore: Merge dev to main (#1611)
100 commits 
2024-03-05 07:48:42 +07:00
semantic-release-bot
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
Ushie
aa0575a637 feat: Display current app language at the top of the list 2024-03-05 03:04:01 +03:00
semantic-release-bot
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
oSumAtrIX
6ec6546cc5 fix: Bump dependencies to support BCS keystore 2024-03-04 15:48:13 +01:00
oSumAtrIX
c5e04cc824 build: Bump dependencies 2024-03-04 13:53:33 +01:00
semantic-release-bot
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
oSumAtrIX
2d7026ac7a feat: Use more appropriate progress values 2024-03-04 13:43:35 +01:00
oSumAtrIX
1200360588 fix: Fix patched APKs exports after installation 2024-03-04 13:43:34 +01:00
semantic-release-bot
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
oSumAtrIX
2e1de94623 chore: Fix builds 2024-03-04 13:14:30 +01:00
oSumAtrIX
10bae69db6 build(Needs bump): Bump dependencies (#1717) 2024-03-04 12:47:38 +01:00
oSumAtrIX
6dee3aa1b7 docs: Fix consistency issues with other repositories (#1707) 2024-03-04 12:42:46 +01:00
github-actions[bot]
e76418d48d chore: Sync translations (#1701) 2024-03-04 11:28:34 +01:00
Pun Butrach
52e1020a90 chore(Dependency): Switch language_code back to Upstream version 2024-03-04 13:31:51 +07:00
Pun Butrach
c170392123 ci(Release): Use ReVanced account instead of semantic-release 2024-03-04 11:51:54 +07:00
Benjamin
d414a91f40 ci: Match changelog format of other ReVanced repos (#1705) 2024-02-26 03:01:30 +01:00
semantic-release-bot
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
Ushie
6d866d4424 feat: Improve language distinguishness and resolve language-specific issues (#1706) 2024-02-26 08:08:14 +07:00
semantic-release-bot
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
oSumAtrIX
c72d10ac85 fix: Show version label correctly 2024-02-25 21:49:38 +01:00
Eray Erdin (&mut self)
3e696d6847 feat: Hide the Install button during installation (#1633)
Co-authored-by: Ushie <ushiekane@gmail.com>
2024-02-25 23:48:52 +03:00
semantic-release-bot
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
github-actions[bot]
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
Benjamin
d4b15aee4d fix: Specify that dark theme is dark (#1699) 2024-02-25 09:37:55 +07:00
oSumAtrIX
d0689555f1 docs: Switch order of note and tip [skip ci] 2024-02-25 01:01:00 +01:00
Benjamin
82d6e3f105 ci(Release): Remove unnecessary upload (#1695) 2024-02-20 06:41:03 +07:00
semantic-release-bot
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
aAbed
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
semantic-release-bot
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
github-actions[bot]
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
Benjamin
8a4161753e chore: Upgrade dependencies (#1693) 2024-02-19 05:31:24 +07:00
semantic-release-bot
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
Benjamin
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
Pun Butrach
3b58d229da refactor: PopScope Migration (#1674)
Co-authored-by: Benjamin Halko <benjaminhalko@hotmail.com>
2024-02-18 08:32:32 +07:00
oSumAtrIX
f5ba84d81e docs: Adjust footnote regarding obtaining APK files 2024-02-15 19:03:35 +01:00
oSumAtrIX
933c71923e docs: Use consistent wording 2024-02-15 18:55:54 +01:00
oSumAtrIX
bfe59ea57a docs: Add a tip for the prompt to select an APK from storage 2024-02-15 18:54:32 +01:00
semantic-release-bot
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
Pun Butrach
b2119ce60e feat: Improve consistency on language selector 2024-02-15 16:41:09 +07:00
Pun Butrach
e0c750d27e ci(build): Upload build artifact 2024-02-15 16:31:19 +07:00
kitadai31
b754a045eb build: Enable ProGuard (#1650) 2024-02-15 16:24:24 +07:00
Pun Butrach
5a24911fad refactor: Check-in pubspec.lock 2024-02-15 08:17:11 +00:00
Pun Butrach
0ec6897fda chore: Update .gitignore 2024-02-15 08:17:10 +00:00
Pun Butrach
f57898a471 build: Bump Gradle to v8.6 2024-02-15 08:17:10 +00:00
semantic-release-bot
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
Pun Butrach
3b0fed55e4 revert: WillPopScope migration
This reverts commit ef9b1d5c2d.

Why is this so hard to implement??? Are we missing something??
2024-02-15 08:00:52 +00:00
github-actions[bot]
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
semantic-release-bot
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
oSumAtrIX
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
semantic-release-bot
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
Benjamin Halko
1aaeac1fe3 chore: update dependencies 2024-02-13 09:31:23 -08:00
github-actions[bot]
f5578b0fc1 chore(i18n): Sync translations (#1671) 2024-02-12 02:25:59 +03:00
Ushie
f82c439b26 feat: Allow changing languages (#1488)
Co-authored-by: validcube <pun.butrach@gmail.com>
2024-02-12 02:22:25 +03:00
semantic-release-bot
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
aAbed
3559477247 fix: adjust padding 2024-02-06 20:52:19 +05:45
Pun Butrach
b9241fa1b2 docs(Security): Format badges 2024-02-03 08:16:33 +00:00
semantic-release-bot
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
Benjamin
eb6d3cd64e fix(PopScope): User able to exit patch screen when the installer is still running (#1663) 2024-02-03 10:29:34 +07:00
Benjamin
8cda2c164d ci: Add scope to changelog (#1672) 2024-02-03 09:02:53 +07:00
Benjamin
c900d09cf8 refactor: Disable update for dev build (#1662) 2024-02-02 21:12:10 +07:00
semantic-release-bot
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
Pun Butrach
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
Pun Butrach
8be07de373 ci(release): Migrate deprecated Node version 2024-02-02 11:38:53 +07:00
semantic-release-bot
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
kitadai31
5b2c55142e fix: Stop patch when signing fails (#1553) 2024-02-02 00:55:18 +01:00
Benjamin
088a3b7c28 ci: Improve build workflow (#1668) 2024-02-01 08:57:15 +07:00
semantic-release-bot
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
Benjamin
07fc964f9c ci: Specify paths in release workflow (#1664) 2024-01-29 11:11:42 +01:00
Pun Butrach
3e51caf111 docs(Security): Avoid table shifting layout 2024-01-29 11:11:42 +01:00
Pun Butrach
deb1ba339f docs(Security): Use dynamic information on version
Meanwhile latest get the static treatment.
2024-01-29 11:11:42 +01:00
aAbed
70a1086edf fix: Do not delete files from post-fs-data.d 2024-01-27 09:08:44 +05:45
aAbed
c7d975e612 feat: Show a dialog when an update is available (#1654) 2024-01-27 09:08:44 +05:45
semantic-release-bot
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
Benjamin
d933997c89 fix: Use correct version code & name (#1647) 2024-01-23 05:27:33 +07:00
semantic-release-bot
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
Pun Butrach
f38a593434 ci(Release Build): Use correct syntax in getting the version 2024-01-22 18:34:35 +07:00
Pun Butrach
85950991ab fix(Release CI): truncate the "v" from version
ci: cleanup

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

Signed-off-by: validcube <pun.butrach@gmail.com>
2023-12-11 19:02:13 +07:00
Pun Butrach
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
Pun Butrach
d9a316abbb docs(contributing): update branding 2023-12-09 11:49:19 +07:00
Pun Butrach
093cfa5269 docs(contributing): use correct semantic 2023-12-09 11:48:20 +07:00
Pun Butrach
61a025de4d docs: correct styling issue 2023-12-09 11:47:26 +07:00
Dhruvan Bhalara
7df1ae7ed8 feat: append patch version to the APK name while sharing/exporting (#1547) 2023-12-05 12:58:32 +05:45
Pun Butrach
eb6e75b156 ci: use migrate setup-java to Node 20 (#1542) 2023-12-05 09:43:04 +07:00
validcube
8480b3ac3d chore: update repository's owner name 2023-12-02 17:39:02 +07:00
validcube
6339a31fec build(dart-dependency): bump FlutterToast to v8.2.4 2023-12-02 17:35:35 +07:00
validcube
71b5bb3f8f build(dart-dependency): prefer immutable for dependency using git 2023-12-02 17:33:42 +07:00
Ushie
a9878dbbdf chore: Merge dev to main (#1544) 2023-12-02 03:46:17 +03:00
Ushie
b1fb9dd7d3 build: Bump version to v1.17.1 2023-12-02 03:44:51 +03:00
Dhruvan Bhalara
de51fbd7be fix: Incorrect duplicate filename handling when exporting files (#1541) 2023-12-01 20:31:46 +05:45
Ax333l
c9412a97d0 build(dependency): Bump patcher to 19.1.0 2023-12-01 13:22:38 +01:00
Ushie
63c29bdd75 chore: Merge dev to main (#1529) 2023-11-27 11:06:43 +03:00
Ushie
bace26063d build: Bump version to v1.17.0 2023-11-27 11:05:56 +03:00
Benjamin
7931eb97b9 feat: updated logs (#1526) 2023-11-25 17:06:18 -08:00
aAbed
9df89c7b74 fix: Disable wakelock when patching is canceled (#1514) 2023-11-22 16:21:27 +03:00
aAbed
78978276c4 fix(App Selector): Unable to select APK from storage when asked to (#1513) 2023-11-22 16:20:51 +03:00
Ushie
011eddbbc5 chore: Merge dev to main (#1478) 2023-11-21 17:37:40 +03:00
Ushie
4e9f3fe1dc build: Bump version to v1.16.0 2023-11-21 17:36:24 +03:00
Aditya Arora
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
Pun Butrach
c0516c3665 ci(build): Improve pull request build (#1305)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-11-20 14:50:44 +07:00
Pun Butrach
06ff36c836 feat: improve predictive back (#1487)
Signed-off-by: validcube <pun.butrach@gmail.com>
2023-11-20 14:49:39 +07:00
Pun Butrach
98c16eb1dc docs(readme): remove redundant feature information 2023-11-20 07:34:08 +07:00
KAZI MMT
35d80840e5 fix: Remove incorrect punctuation (#1499) 2023-11-19 05:38:34 +01:00
validcube
ad3a778fb9 refactor: apply lint from analyzer 2023-11-12 10:02:40 +05:45
Pun Butrach
d25d1efe9c fix(build): allow profile variant to compile
fix backported from #1305
2023-11-12 10:02:10 +05:45
Pun Butrach
de58dff423 docs: improve readme (#1484) 2023-11-12 10:02:07 +05:45
Pun Butrach
ec26e4d8d1 feat: update color scheme (#1483) 2023-11-12 09:59:55 +05:45
validcube
c24da41505 refactor: replace deprecated command 2023-11-12 09:59:50 +05:45
Pun Butrach
f785185e1c chore: update label for template 2023-11-11 13:19:01 +07:00
aAbed
5ed3ed9a2d fix: patcher logs hiding behind navigation bar (#1476) 2023-11-11 12:00:21 +07:00
oSumAtrIX
a3adace60e build: Update Gradle to v8.4 2023-11-08 17:22:06 +01:00
oSumAtrIX
3db4de09e2 chore: Remove unnecessary project files 2023-11-08 17:21:02 +01:00
aAbed
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
aAbed
e7d82850c9 fix: Log saved patch option values (#1420) 2023-11-07 23:37:59 +01:00
oSumAtrIX
e6a8f4e6dc build: Bump version to v1.15.1 2023-11-04 22:41:48 +01:00
oSumAtrIX
494e268bc5 fix: Use correct method name for string replacement 2023-11-04 22:41:27 +01:00
oSumAtrIX
e1c6f65b7e chore: Merge branch dev to main (#1446) 2023-11-04 22:10:14 +01:00
oSumAtrIX
89075c5588 build: Bump version to v1.15.0 2023-11-04 22:08:20 +01:00
Benjamin
c7fa9b8ce7 chore: upgrade dependencies (#1404) 2023-11-04 22:08:20 +01:00
oSumAtrIX
cb70082d31 docs: Remove unneeded steps to build from source 2023-11-04 22:08:19 +01:00
Mr. X
48b9ac8f5b docs: use correct directory path (#1440) 2023-11-04 22:08:19 +01:00
aAbed
0be568bbbd fix: Hide empty patches category labels (#1439) 2023-11-04 22:08:19 +01:00
aAbed
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
Ushie
dde402afbf chore: merge dev to main (#1437) 2023-10-26 17:22:07 +03:00
Ushie
bbe5142ca9 build: bump version to v1.14.2 2023-10-26 17:21:25 +03:00
aAbed
e74ffac5b0 fix: unable to use custom API (#1435) 2023-10-26 17:20:34 +03:00
Ushie
cfb8980e3a chore: merge dev to main (#1425) 2023-10-25 11:42:54 +03:00
Ushie
e06e1bdcbe build: bump version to v1.14.1 2023-10-25 11:42:19 +03:00
Ushie
d60ced2f61 fix: remove codeblock from log export
Fixes: #1416
2023-10-25 11:40:30 +03:00
aAbed
e68689828e fix: Material You toggle not updating sometimes (#1421) 2023-10-25 11:37:03 +03:00
validcube
ba932758c8 build: bump version to v1.14.0 2023-10-21 23:00:51 +07:00
Pun Butrach
ee43fa6311 chore: merge dev to main (#1399) 2023-10-21 22:58:58 +07:00
Pun Butrach
ad6b164d51 feat: root status in export patch log (#1407)
Co-authored-by: Ushie <ushiekane@gmail.com>
2023-10-21 17:46:51 +07:00
validcube
4a5510acb2 refactor: remove the remaining of semantic release
Removal reason: not maintained
2023-10-21 15:37:23 +07:00
validcube
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
validcube
f8f37325eb refactor(social): change Twitter to X 2023-10-21 15:32:13 +07:00
Benjamin
bb999019ef feat: show patch options in error log (#1394) 2023-10-17 13:21:59 +07:00
KobeW50
533b6a155a feat: clarify "Version compatibility check" description (#1397) 2023-10-17 13:20:46 +07:00
KobeW50
4cdc92388c refactor: fix patch log order to be consistent with settings order (#1398) 2023-10-17 13:19:18 +07:00
Pun Butrach
ccc6be1e71 refactor(accessibility): improve patch options (#1369)
Co-authored-by: Palm <palmpasuthorn@gmail.com>
2023-10-16 16:47:59 +07:00
Ushie
b355778a92 chore: merge dev to main (#1388) 2023-10-15 20:19:54 +03:00
Ushie
6a12e8f37a build: bump version to v1.13.1 2023-10-15 20:19:23 +03:00
Ushie
59adb91f5f fix(settings): inverted version compatibility switch 2023-10-15 20:16:58 +03:00
KobeW50
53677e2f39 fix: typo in reset patch selection dialog (#1387) 2023-10-15 20:14:19 +03:00
validcube
1c74f43b22 build: bump version to 1.13.0 2023-10-15 18:22:42 +07:00
Pun Butrach
b4801970e8 chore: merge dev to main (#1384)
ReVanced Manager 1.13.0!!
2023-10-15 18:18:09 +07:00
Pun Butrach
7a3a6b512f docs(building): use new highlight format 2023-10-15 18:04:19 +07:00
Pun Butrach
72ea33b6de fix(patch_selector): correct popup menu style
fix: #1372
2023-10-15 17:46:44 +07:00
Pun Butrach
d97192e0ee refactor(patch_options): disable card tap (#1368) 2023-10-15 16:56:43 +07:00
KobeW50
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
Benjamin
e960fcc303 feat: add user agent (#1380)
Co-authored-by: Pun Butrach <pun.butrach@gmail.com>
2023-10-15 16:51:31 +07:00
Benjamin
f334da95ff feat: Remove full external storage access (#1381) 2023-10-15 16:44:11 +07:00
aAbed
5d5f311e36 fix(settings-view): list items jumping on scroll up (#1375) 2023-10-15 16:17:28 +07:00
aAbed
d577e97758 fix(app-bar): title not hiding completely (#1376) 2023-10-15 16:16:55 +07:00
aAbed
2dc92e26d3 fix(patches-selector): ignore punctuation marks when searching for patch (#1377) 2023-10-14 19:43:18 +07:00
oSumAtrIX
f4994a36a3 chore: Merge branch dev to main (#1366) 2023-10-13 00:22:02 +02:00
oSumAtrIX
7a785a8163 build: Bump version to v1.12.1 2023-10-13 00:14:14 +02:00
oSumAtrIX
6ad0d860c7 fix: Load patches from older versions of ReVanced Manager correctly 2023-10-13 00:12:27 +02:00
oSumAtrIX
38a2fa55df chore: Merge branch dev to main (#1350) 2023-10-12 21:58:29 +02:00
oSumAtrIX
a21b170b52 build: Bump version to v1.12.0 2023-10-12 21:55:06 +02:00
oSumAtrIX
44265b2362 chore: Setup Crowdin configuration file 2023-10-12 18:51:16 +02:00
oSumAtrIX
069193342b docs: use correct alert syntax 2023-10-12 14:25:13 +02:00
oSumAtrIX
54e9a56cda docs: Add options setting 2023-10-12 14:22:20 +02:00
oSumAtrIX
39bc9227dc docs: Improve readability 2023-10-12 14:20:44 +02:00
aAbed
ac636670c3 feat: Add patch options (#1354) 2023-10-12 02:00:39 +02:00
MD Danish Ansari
2abadc73e4 fix: selected patches order (#1345) 2023-10-10 18:54:42 +07:00
KobeW50
377368f6bf docs: reflect the latest changes of ReVanced Manager (#1349) 2023-10-10 01:07:58 +07:00
Sagar
4085c10bfc fix: search with package name (#1344) 2023-10-09 11:22:15 +07:00
oSumAtrIX
657ba11e7e chore: Merge branch dev to main (#1340) 2023-10-07 02:04:26 +02:00
oSumAtrIX
a9ae45fe63 build: Bump version to v1.11.2 2023-10-07 02:01:10 +02:00
oSumAtrIX
61bb39b46f build: Bump dependencies to improve merging integrations speed 2023-10-07 02:01:10 +02:00
Benjamin Halko
2ad106f7d7 fix(export-settings): remove boolean workaround 2023-10-07 02:01:09 +02:00
Benjamin
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
oSumAtrIX
b1c9aedac3 build: Bump version to v1.11.1 2023-10-05 17:45:56 +02:00
oSumAtrIX
a80415be02 build: Bump dependencies 2023-10-05 17:45:56 +02:00
oSumAtrIX
d9acd0d74b chore: Merge branch dev to main (#1329) 2023-10-05 01:35:08 +02:00
oSumAtrIX
7ae09159ba build: Bump version to v1.11.0 2023-10-05 01:23:48 +02:00
oSumAtrIX
a709abd80c perf: Do not load patches twice (#1328) 2023-10-04 21:58:25 +02:00
Benjamin Halko
cd07f39b69 fix: reset patches after patching 2023-10-04 12:16:56 -07:00
Benjamin Halko
f7c11d07a8 fix(export-settings): export patches as json object 2023-10-04 11:33:13 -07:00
oSumAtrIX
b07439d402 fix: Reload patches 2023-10-04 19:38:34 +02:00
oSumAtrIX
d8eadc2a2d feat: Use simpler wording 2023-10-04 19:01:17 +02:00
oSumAtrIX
3a88d4d3e6 build: Bump dependencies 2023-10-04 18:39:24 +02:00
oSumAtrIX
012110f008 perf: Do not load patches twice 2023-10-04 18:39:24 +02:00
oSumAtrIX
4de274bf62 feat: Export settings migration activity (#1308) 2023-10-01 19:12:31 +02:00
oSumAtrIX
76b89baee3 build: Bump dependencies (#1311) 2023-10-01 19:03:26 +02:00
oSumAtrIX
697ae92031 Apply suggestions from code review [skip ci] 2023-10-01 19:02:49 +02:00
oSumAtrIX
c87f92b346 feat: Adjust install dialog labels 2023-10-01 06:21:03 +02:00
oSumAtrIX
6961bb7fd0 fix: Do not delete cached downloads 2023-10-01 04:48:24 +02:00
oSumAtrIX
6e26130744 chore: Add todo 2023-09-30 22:15:46 +02:00
oSumAtrIX
123a375a27 refactor: Remove unused strings 2023-09-30 22:14:51 +02:00
oSumAtrIX
2b4b3ca0a5 fix: Retrieve app information from patched app 2023-09-30 21:40:03 +02:00
oSumAtrIX
c4a795418f fix: Move installation log to correct place 2023-09-30 21:13:32 +02:00
oSumAtrIX
91837ebade feat: Remove original package name in app info view 2023-09-30 21:07:26 +02:00
oSumAtrIX
0492e910ea fix: Fill the preferred action 2023-09-30 20:11:53 +02:00
oSumAtrIX
36c86e22b1 fix: Load installed apps 2023-09-30 20:03:09 +02:00
oSumAtrIX
6bdc0c7bb2 feat: Simplify label 2023-09-30 19:58:45 +02:00
aAbed
1e8d8f749a fix: do not ask for patches consent before initializing model 2023-09-30 14:57:48 +05:45
oSumAtrIX
2e8e3b0d1e fix: Do not hardcode any predefined packages 2023-09-29 20:12:39 +02:00
oSumAtrIX
15b8613d3c feat: Only log relevant records 2023-09-29 19:40:22 +02:00
oSumAtrIX
8ce266bc94 perf: Reduce amount of network requests 2023-09-29 18:39:07 +02:00
oSumAtrIX
8661d72e45 feat: Simplify label 2023-09-29 17:00:34 +02:00
oSumAtrIX
62505f2543 build: Bump dependencies 2023-09-28 17:36:10 +02:00
Pun Butrach
37986c58ec docs(building): correct path to gradle.properties 2023-09-28 21:45:41 +07:00
Benjamin Halko
2968d96fe9 remove log import 2023-09-27 14:42:11 -07:00
Benjamin Halko
e7c8d0e78c use same fingerprint 2023-09-27 14:36:39 -07:00
Benjamin Halko
83cbb34a5b use revanced fingerprint 2023-09-27 14:27:38 -07:00
Benjamin Halko
7559c7b67e verify fingerprint of calling app 2023-09-27 14:17:29 -07:00
Benjamin Halko
02822f4b38 remove user interaction 2023-09-27 13:47:59 -07:00
Benjamin Halko
96736afb94 make bars transparent 2023-09-27 12:32:19 -07:00
Benjamin Halko
72ae132fcd make export settings activity transparent 2023-09-27 12:21:27 -07:00
Benjamin Halko
2250e1bcab convert Booleans to Ints 2023-09-26 16:46:49 -07:00
Benjamin Halko
d9d5b746c3 Added ExportSettingsActivity 2023-09-26 16:21:46 -07:00
Benjamin Halko
f1ea306291 change booleans to numbers 2023-09-25 14:42:40 -07:00
Benjamin Halko
378d62395a remove newlines from base64 output 2023-09-25 10:15:56 -07:00
Benjamin Halko
99c92069b9 export saved patches and keystore 2023-09-25 08:43:10 -07:00
Benjamin Halko
2a89ef797f feat: share settings 2023-09-24 16:56:25 -07:00
Ushie
5838550188 build: bump version to v1.10.3 2023-09-23 13:10:46 +03:00
Ushie
e0e01ae3ee chore: merge dev to main (#1300) 2023-09-23 13:10:08 +03:00
Benjamin
0983ba8a0f fix: search bar overflow (#1301) 2023-09-23 00:51:25 +03:00
Ushie
0bfa776ce7 fix: npe when loading patch bundle on android 8 2023-09-23 00:24:17 +03:00
Pun Butrach
d2b09936d1 chore: merge dev to main (#1295) 2023-09-22 22:08:13 +07:00
Pun Butrach
68e9f0f7c1 build: bump version 1.10.2
!!
2023-09-22 22:05:31 +07:00
Benjamin
c3d345de80 fix: force disable material you on Android 11 and below (#1293) 2023-09-22 21:05:13 +07:00
Pun Butrach
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
Benjamin Halko
5ead49a5b7 build: bump version to v1.10.1 2023-09-20 20:06:19 -07:00
Benjamin
c0760b1347 chore: merge dev to main (#1289) 2023-09-20 20:04:10 -07:00
Benjamin Halko
e01b323aee fix: make entire theme item clickable 2023-09-20 20:03:47 -07:00
Benjamin Halko
6f4866ef63 fix: default theme not following system (#1288) 2023-09-20 20:03:15 -07:00
Benjamin Halko
1b6d72661c build: bump version to v1.10.0 2023-09-20 17:40:23 -07:00
Benjamin
c59d4aea81 chore: merge dev to main (#1239) 2023-09-20 17:35:01 -07:00
Benjamin
6260a80738 feat(settings - appearance): add system option (#1279)
Closes #1260
2023-09-21 03:25:23 +03:00
Benjamin
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
Benjamin Halko
b7acb475e9 fix: update install type dialog padding 2023-09-20 16:57:13 -07:00
Benjamin
42b6bbff7c fix: update youtube link (#1286) 2023-09-21 02:16:55 +03:00
aAbed
4b8542b35b fix: load patches via PatchBundle (#1242) 2023-09-21 01:35:32 +03:00
Julienraptor01
9ad1d6cbfb fix(custom-sources): ignore casing when checking if default repo is being used (#1281) 2023-09-21 00:42:29 +03:00
KobeW50
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
Benjamin
f4b0a695d6 fix: improve app list loading speed (#1166) 2023-09-15 22:58:15 +07:00
Benjamin
b525ea1ba4 ci: remove analyze workflow (#1262)
Code style is not enforced so analysis is not needed.
2023-09-12 23:40:00 +07:00
Pun Butrach
c1fc2c4766 ci: bump actions/checkout to v4 2023-09-10 14:43:58 +07:00
Ushie
5c733932c7 ci(pr-build): revert "sign apk with keystore (#1231)"
This reverts commit 8bf08ff464, as it fails for PRs originating from forks
2023-09-08 01:14:13 +02:00
Ushie
d1218616ec docs(readme): minor improvements 2023-09-08 01:14:13 +02:00
aAbed
2bf6a03d56 fix: back button closing the app from any page 2023-09-08 01:14:13 +02:00
Pun Butrach
b6ee63c1ea ci(pr-build): sign apk with keystore (#1231) 2023-09-08 01:14:13 +02:00
oSumAtrIX
6d08efdcd7 chore: fix issue template 2023-09-08 01:13:42 +02:00
Ushie
a0a43a5651 build: bump version to v1.9.5 2023-09-08 01:13:42 +02:00
Ushie
3af2f5b032 chore: merge dev to main (#1177) 2023-09-04 04:15:12 +03:00
Ushie
8f54b226b4 refactor(patches-selector): improve universal patches header 2023-09-03 21:14:09 +03:00
Ushie
9f64011b26 fix: npe when patching on android 8 2023-09-03 20:54:42 +03:00
Pun Butrach
c5fc54e721 fix(installer): open the patched app after install (#1233) 2023-09-03 21:48:28 +07:00
Jay Gajjar
fc8a4fc5b6 fix: Don't use 'BuildContext's across async gaps. (#1148) 2023-09-03 01:47:20 +03:00
Benjamin
6f9ab232ae chore: ignore the root .gradle folder (#1160) 2023-09-02 09:29:49 -07:00
aAbed
8cb96f1e45 fix: permissions handling at first launch 2023-08-31 19:34:12 +05:45
Pun Butrach
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
oSumAtrIX
e49bcb2a69 chore: simplify issue templates (#1165) 2023-08-31 17:36:29 +07:00
Ushie
42e41c399f fix: hide install button on error 2023-08-28 19:05:30 +03:00
Ushie
166a3180d3 build: correct version code 2023-08-28 03:20:15 +03:00
Ushie
3bf4982f23 chore: merge dev to main (#1163) 2023-08-28 02:47:47 +03:00
oSumAtrIX
f4e1cccfac build: bump version to v1.9.4 2023-08-28 01:44:46 +02:00
oSumAtrIX
7911a8f49e fix: properly log messages and progress 2023-08-28 01:44:46 +02:00
oSumAtrIX
64a96fc3ce fix: close before returning 2023-08-28 01:44:46 +02:00
BenjaminHalko
8e2cfbddc5 fix: ignore the root .gradle folder 2023-08-27 14:05:39 -07:00
oSumAtrIX
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
aAbed
e45a7824c1 build: bump version to v1.9.3 2023-08-27 13:27:53 +07:00
aAbed
5d72c48a76 chore: merge dev to main (#1157) 2023-08-27 13:27:01 +07:00
aAbed
d6169c6fa2 fix: broken settings page 2023-08-27 11:55:21 +05:45
Ushie
9df6d52e2d build: bump version to v1.9.2 2023-08-27 05:40:50 +03:00
Ushie
239de8e923 chore: merge dev to main (#1156) 2023-08-27 05:40:13 +03:00
Ushie
7d553a87f3 build: revert patcher to v11.0.4 2023-08-27 05:39:24 +03:00
Ushie
557b42bc56 build: bump version to 1.9.1 2023-08-27 03:58:30 +03:00
Ushie
8423914748 chore: merge dev to main (#1155) 2023-08-27 03:57:57 +03:00
Ushie
07dce23794 build: bump patcher to v14.2.0 2023-08-27 03:55:56 +03:00
Ushie
18fd0552db build: bump version to v1.9.0 2023-08-27 02:23:36 +03:00
Ushie
d537d48f8e chore: merge dev to main (#1125) 2023-08-27 02:21:48 +03:00
Ushie
b456512bbb build: bump patcher to v14.1.0 (#1153)
Co-authored-by: aAbed <aabedhkhan@gmail.com>
2023-08-27 02:21:16 +03:00
Pun Butrach
d9953b1473 fix(installer): use correct elevation level 2023-08-24 19:00:50 +07:00
aAbed
c6ac898390 fix: universal patches not selectable 2023-08-17 18:25:23 +05:45
Pun Butrach
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
Pun Butrach
63175cdec6 ci(build): create debug variant instead of release 2023-08-15 20:55:11 +07:00
Pun Butrach
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
aAbed
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
Ushie
dcd5ba41cf build: add mavenlocal to repositories 2023-08-14 03:40:05 +03:00
Pun Butrach
7525e52fab fix(installer): use correct bg colour for dialog 2023-08-12 15:07:04 +07:00
Pun Butrach
72fd24e624 fix: use i18n translation for installer page 2023-08-12 15:06:17 +07:00
Pun Butrach
11d8f9fd30 refactor: apply changes according to Dart
trailing commas
2023-08-12 14:53:54 +07:00
Pun Butrach
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
Dhruvan Bhalara
372ce174c9 fix: overlapping issue in application selection page (#1128) 2023-08-11 19:19:44 +03:00
kitadai31
381daff980 fix: exclude x86 aapt2 binary from release builds (#1126) 2023-08-11 19:19:33 +03:00
Subhamoy Biswas
94acebbebd docs(fixed): replaced some emoji icons, not rendering on chromium based browsers on windows (#1123) 2023-08-11 10:17:46 +07:00
aAbed
f90f6e81ee feat: patch apps without internet (#1114) 2023-08-11 08:11:19 +07:00
Dhruvan Bhalara
97e37f304b refactor: migrate MediaQuery properties to InheritedModel (#1115)
Co-authored-by: Ushie <ushiekane@gmail.com>
2023-08-10 15:25:07 +03:00
Pun Butrach
f5e45ead26 ci(build): don't build on every pull request unrelated to application 2023-08-10 19:14:13 +07:00
Pun Butrach
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
Pun Butrach
b77d46b2c2 feat(installer): redesign utility options (#1062)
Co-authored-by: Ushie <ushiekane@gmail.com>
2023-08-10 19:02:30 +07:00
Ushie
1442916b20 build: bump version to 1.8.0 2023-08-10 03:01:03 +03:00
Ushie
c6a5f42d23 chore: merge dev to main (#1120) 2023-08-10 03:00:27 +03:00
Ushie
580d50eb8d fix: use right label for auto patch 2023-08-10 00:05:47 +03:00
Ushie
9a66b6e50d fix(root-install): create service and postfs directories if they dont exist (#1116)
Fixes #860
2023-08-09 23:57:09 +03:00
aAbed
acec064cb7 feat(patcher-view): show notice for removed patches that were used previously (#1107) 2023-08-09 22:32:13 +03:00
aAbed
ea05d13a1f fix(patches-selector): New tag showing for old patches (#1113) 2023-08-09 22:31:37 +03:00
Ushie
fd741f2ccf build: bump version to v1.7.0 2023-08-08 03:52:03 +03:00
Ushie
055c52178f chore: merge dev branch to main branch (#1096) 2023-08-08 03:51:05 +03:00
aAbed
722a5859a5 fix: pair integrations and patches updates (#1102) 2023-08-08 03:30:48 +03:00
aAbed
1714c3fa86 feat(patches-selector): show New tag for new patches (#1099) 2023-08-07 22:28:09 +07:00
Pun Butrach
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
aAbed
1be284f8d8 feat: switch to the new ReVanced API (#1101) 2023-08-07 17:14:16 +07:00
Pun Butrach
218e53ae75 refactor(analysis): migrate deprecated rule
deprecated since Dart 2.0, yike
2023-08-06 14:41:15 +07:00
Pun Butrach
264d8d90c4 refactor: apply changes according to analysis
trailing commas, and sort import alphabetically
2023-08-06 14:39:46 +07:00
aAbed
0b529c2629 fix(patches-selector): separate all universal patches to the bottom (#1092) 2023-08-06 12:12:01 +07:00
aAbed
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
aAbed
5346f6e1bf fix(patch-item): hide universal patches if not enabled (#1087) 2023-08-05 20:19:36 +07:00
oSumAtrIX
2f471b3de4 fix: use user friendly strings (#1088) 2023-08-05 20:19:03 +07:00
Ushie
3cf06efddf build: bump version to v1.6.1 2023-08-04 03:33:19 +03:00
Ushie
1f4f0a3bb7 build: revert patcher to v11.0.4 2023-08-04 03:32:50 +03:00
Ushie
c07f8eae9b build: bump version to v1.6.0 2023-08-04 00:54:13 +03:00
aAbed
374eb3d06d feat: abort patching process at any time (#1072) 2023-08-04 00:40:08 +03:00
BrentBoyMeBob
fe75b75ddc feat: dpi responsive layout (#361) 2023-08-04 00:38:38 +03:00
Pun Butrach
d3790bf64b refactor: remove unimplemented features (#1061)
Co-authored-by: Ushie <ushiekane@gmail.com>
2023-08-03 23:58:50 +03:00
aAbed
f905a52988 feat: allow control over patches update (#1063)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-08-03 23:23:56 +03:00
aAbed
e55f427b05 build: bump patcher version to v12.1.1 2023-08-04 01:53:19 +05:45
aAbed
0f000fc4d1 build: bump version to v1.5.2 2023-08-04 01:52:24 +05:45
Ushie
a0339e3c19 chore: merge dev to main (#1077) 2023-08-03 05:24:25 +03:00
Ushie
9cfa274d81 build: bump version to v1.5.1 2023-08-03 05:23:47 +03:00
Ushie
8c79f5e371 build: bump patcher to v12.1.0 2023-08-03 05:23:16 +03:00
aAbed
0d716513d7 fix: keystore password dialog showing up before importing (#1068) 2023-08-03 08:36:39 +07:00
Ushie
08f6724060 chore: merge dev branch to main branch (#1060) 2023-08-03 02:20:24 +03:00
Ushie
29daf51e64 build: bump version to 2023-08-03 02:19:14 +03:00
Pun Butrach
b3b2b01c0f ci(build): use pr event trigger for now
I just heard of cache eviction policy :)
2023-08-01 20:20:27 +07:00
Pun Butrach
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
Pun Butrach
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
Pun Butrach
8ca6418630 refactor(settings): improve clarity of the warning dialogs (#1058) 2023-07-31 21:53:23 +07:00
Pun Butrach
95632b7f55 chore(deps): update revanced-patcher to v12.0.0 2023-07-30 11:49:01 +07:00
aAbed
64744b2abf fix: original.apk not found despite existing (#1052) 2023-07-30 10:35:34 +07:00
aAbed
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
Pun Butrach
c27ca08d3a docs: leftovers from 6495687841 2023-07-29 16:08:54 +07:00
Aunali321
0011222371 chore:fix incorrect version 2023-07-23 14:25:11 +05:30
Aunali321
29db947e25 fix: using non const value in a const variable 2023-07-23 14:04:35 +05:30
Aunali321
fd43ac7581 chore: merge dev branch to main branch (#1032) 2023-07-23 13:53:25 +05:30
Aunali321
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
Dhruvan Bhalara
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
Aabed Khan
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
Pun Butrach
29323d4e20 build: update app version to v1.4.1 2023-07-15 12:55:59 +07:00
Pun Butrach
630b22e193 refactor: applies changes from formatter & linter 2023-07-15 12:41:03 +07:00
Aabed Khan
79116f9e67 fix(patched-applications): non-patched app showing on Installed section (#1022) 2023-07-15 08:11:51 +07:00
Aabed Khan
eb58475259 fix: showing Installed when it's actually not (#1021) 2023-07-15 08:10:36 +07:00
ponces
a879ac30fb fix: prevent unsupported operation exception (#1018) 2023-07-14 17:55:04 +07:00
Aabed Khan
c5b0621323 fix(navigation-view): back button closing the app from any page (#1019) 2023-07-13 19:25:48 +05:45
Aabed Khan
0462815014 fix(app-selector): fix text overflow on small screen (#1017) 2023-07-13 00:16:53 +05:45
Aabed Khan
e64318c947 fix(app-selector): fix text overflow on small screen 2023-07-13 00:14:47 +05:45
Pun Butrach
b784482788 chore: update libsu to 5.1.0
This should fixes some issues with root
2023-07-11 19:28:59 +07:00
Aabed Khan
2834e8b348 fix: patchable apps not showing if none of them is installed (#1009) 2023-07-11 17:11:45 +07:00
Aunali321
b23dfd4289 chore: merge dev branch to main branch (#1010) 2023-07-11 01:24:54 +05:30
Aunali321
217d525cb2 build: update app version to v1.4.0 2023-07-11 01:22:57 +05:30
Aunali321
85b166cbda fix: update hardcoded patch name 2023-07-11 01:21:45 +05:30
Pun Butrach
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
Ushie
48c878af21 chore: merge dev branch to main branch (#996) 2023-07-10 16:56:50 +03:00
Pun Butrach
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
Pun Butrach
567b1a3ace refactor: improve code readability according to linter 2023-07-10 19:45:50 +07:00
Pun Butrach
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
Aabed Khan
9828857570 fix: fixed typo 2023-07-10 12:16:51 +05:45
KobeW50
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
Aabed Khan
344717b021 fix: app crash after custom source (#1003) 2023-07-08 23:07:19 +05:45
Aabed Khan
da6cf585c0 fix: app crash after custom source 2023-07-08 22:26:31 +05:45
Pun Butrach
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
Pun Butrach
16318efb01 refactor: seperate translation string by context 2023-07-08 10:45:13 +07:00
Pun Butrach
e83e13b6d4 refactor: fix more problem with analyser
Missing trailing comma in app_selector_view
2023-07-07 22:21:22 +07:00
Pun Butrach
7c2c695d88 refactor: apply changes from analyser 2023-07-07 22:15:12 +07:00
Pun Butrach
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
oSumAtrIX
14f49e9d30 docs: fix description for next page 2023-07-05 15:43:40 +02:00
Aabed Khan
1875c4ee73 fix: update button being clickable when offline (#987) 2023-07-05 19:59:53 +07:00
Pun Butrach
76c68baa1f build: update gradle to v7.6.2 2023-07-01 18:21:49 +07:00
Aunali321
68876a4414 build: bump version to v1.3.8 and patcher dep 2023-07-01 14:33:25 +05:30
Ushie
26d7e5b60f build: bump version to v1.3.7 and patcher dep 2023-07-01 02:46:43 +03:00
Ushie
e78af6ae99 chore: merge dev to main (#976) 2023-07-01 02:41:57 +03:00
Aabed Khan
6fe05cd86e feat: show all the unseen changelogs on changelog section (#970) 2023-07-01 02:41:03 +03:00
Aabed Khan
4100d7a391 fix: different message when trying to patch spilt apk (#973) 2023-07-01 02:40:30 +03:00
Ushie
c1cc812ea4 build: bump version to v1.3.6 2023-06-24 19:17:59 +03:00
Ushie
9663e3f0f4 chore: merge dev branch to main branch (#945) 2023-06-24 19:16:22 +03:00
Aabed Khan
941f618153 fix(app-selector): remove direct use of strings (#944) 2023-06-23 16:39:12 +03:00
Aabed Khan
716a30bf7b fix: experimental patches stay selected when toggled off (#946) 2023-06-23 16:37:23 +03:00
Aabed Khan
d051ae576b feat(updater): download successful dialog (#938) 2023-06-23 16:36:36 +03:00
ponces
35e99cb014 feat(mount): use /data/adb/revanced again and ensure migration scenario (#948) 2023-06-23 01:03:03 +03:00
taku
af054fba49 docs: improve clarity of footnotes [skip ci] (#950) 2023-06-17 14:48:57 +02:00
Aabed Khan
58d837d641 feat(app-selector): Improve app item UI to avoid overflow issues (#943) 2023-06-16 10:04:55 +03:00
Aabed Khan
6cc1bd21cd fix(updater): ability to start again after cancelling (#937) 2023-06-16 10:04:07 +03:00
oSumAtrIX
cebfa7c8ae docs: simplify steps 2023-06-16 05:09:52 +02:00
oSumAtrIX
e2d7ab8f8f chore: fix broken docs link 2023-06-15 16:42:09 +02:00
Aabed Khan
ec77987fcd feat(app-selector): improve skeleton UI (#939) 2023-06-15 12:57:39 +03:00
ponces
b161608d02 feat(patches-selector): improve disabled card UI (#941) 2023-06-15 12:54:49 +03:00
Aabed Khan
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
Aunali321
13b7179941 fix: fix not asking for permission 2023-06-12 09:56:49 +05:30
Aunali321
da0d88d86f build: bump patcher 2023-06-12 09:08:29 +05:30
Aunali321
b7347c312a build: bump version to v1.3.4 2023-06-12 08:59:49 +05:30
Aunali321
c876f2f7e3 feat: add permission to manage storage 2023-06-12 08:59:14 +05:30
Aunali321
adad5fd8ff build: bump version to v1.3.3 2023-06-12 07:02:49 +05:30
Aunali321
2aaa7ae8c9 chore: merge dev to main (#935) 2023-06-12 07:01:12 +05:30
Aunali321
1f64ea37bd fix: using wrong string 2023-06-12 06:59:43 +05:30
Aunali321
cac1525da0 build: bump patcher 2023-06-12 06:02:16 +05:30
Aunali321
1ad906fedc refactor: improve code 2023-06-12 06:01:57 +05:30
Aabed Khan
20ffef39a3 fix: update button being shown as clickable on launch (#932) 2023-06-12 05:55:53 +05:30
Aabed Khan
185460c054 chore(fastlane): update description (#933)
Co-authored-by: Ushie <ushiekane@gmail.com>
2023-06-12 03:21:33 +03:00
Aabed Khan
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
oSumAtrIX
a8e019482f ci: add workflow to update documentation repository 2023-06-10 23:41:36 +02:00
Yaros
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
Ushie
6b8cfe2b49 build: bump version to v1.3.2 2023-06-09 11:42:06 +03:00
Ushie
7f7b14bae3 fix: use correct variable name for armv7 check 2023-06-09 11:40:54 +03:00
Ushie
810b02d9fd build: bump version to v1.3.1 2023-06-09 10:45:22 +03:00
Ushie
62813145b2 chore: merge dev to main (#926) 2023-06-09 01:59:18 +03:00
Ushie
4877058253 chore(fastlane): add banner 2023-06-09 01:58:02 +03:00
Ushie
2a9fd3abb8 chore(fastlane): add missing directory 2023-06-09 01:57:49 +03:00
Ushie
a244f7b598 chore: merge dev to main 2023-06-08 21:31:41 +03:00
Ushie
5396457ad5 chore: move fastlane to correct directory 2023-06-08 21:30:44 +03:00
Ushie
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
Yaros
67c5d67a61 feat: update icons for the new logo
fixed #918
2023-06-07 20:10:14 +03:00
Aunali321
9592dde534 feat: add fastlane for F-Droid (#889)
Co-authored-by: Ushie <ushiekane@gmail.com>
2023-06-07 19:59:17 +03:00
oSumAtrIX
d030b0af70 docs: init (#911)
Co-authored-by: afn <_@afn.lol>
2023-06-07 12:01:36 +02:00
MrAngelos6
4ccb9ac94d fix: remove redundant "v" in the downloader screen (#895) 2023-05-26 13:54:52 +03:00
Ushie
8af62b917c build: bump version to 1.3.0 (#892) 2023-05-24 23:33:04 +03:00
Steven
311f114132 chore: update v1.3.0 2023-05-24 21:46:00 +02:00
Ushie
d015bd03f7 chore: merge dev to main (#891) 2023-05-24 22:17:16 +03:00
oSumAtrIX
a61b9de0fa chore(deps): bump revanced-patcher to 9.0.0 2023-05-24 02:02:59 +02:00
Ushie
ef1b283917 chore(deps): bump revanced-patcher to 8.0.0 (#880) 2023-05-24 01:07:22 +05:30
Ushie
c677f00105 build: bump version to v1.2.0 2023-05-20 02:30:18 +03:00
Ushie
8d2f778dfe chore: merge dev to main (#881) 2023-05-20 02:28:58 +03:00
Aunali321
c549d102f6 build: migrate to dart 3 (#871) 2023-05-20 04:07:53 +05:30
Aunali321
39a9ee4e9d chore: remove coreLibraryDesugaring (#873) 2023-05-20 04:05:46 +05:30
Sangam Shrestha
a27dc6ad1c feat: migrate to dart3 2023-05-19 14:23:48 +05:45
kitadai31
8ccb75fc8d chore: remove coreLibraryDesugaring 2023-05-17 15:38:03 +09:00
Ushie
8fc86dbe02 feat: allow selecting installed if app is full apk 2023-05-13 04:54:35 +03:00
Sebok Andras
359f052608 fix: export keystore not working in some conditions (#862) 2023-05-12 19:36:47 +03:00
Hokora Yinphine
4150e2265c fix: use correct version in update download dialog (#859) 2023-05-10 13:23:02 +03:00
Dhruvan Bhalara
b803ce7435 fix: system navigation overlapping UI (#853) 2023-05-10 13:18:51 +03:00
Aunali321
289c6cd7a9 chore: merge dev to main (#857) 2023-05-08 21:46:33 +05:30
Aunali321
31fc7b74c2 build: bump version to v1.1.0 2023-05-08 21:38:19 +05:30
Aunali321
3e565f25be fix(appselector): closing dialog closes app selector 2023-05-08 21:27:07 +05:30
Aunali321
e509be4e21 chore(deps): bump patcher to 7.1.1 2023-05-08 21:19:45 +05:30
Aunali321
170fc537ac fix: fix armv7 dialog shown for x86, x86_64 2023-05-07 04:14:57 +05:30
Aunali321
3fe5882145 feat: remove cronet 2023-05-06 05:39:46 +05:30
Aunali321
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
Dhruvan Bhalara
cd987a5b19 fix: broken filename when saving files with the same name (#837) 2023-05-03 21:34:30 +03:00
Ushie
7f1dab7ee1 ci: temporarily restore old release workflow 2023-05-02 17:50:07 +03:00
SodaWithoutSparkles
bed3945aa5 feat: clarify warning and consequences for ARMv7 users (#836) 2023-05-02 16:41:11 +07:00
Aunali321
15a32a18b7 fix: fix broken manager update implmentation 2023-04-30 17:38:08 +07:00
Palm
d2e8e7dd5d chore: comply with review changes 2023-04-30 01:03:36 +07:00
Palm
ce12ec89c4 ci(release): automatically bump version codes 2023-04-29 20:53:54 +07:00
EvadeMaster
b286444ad9 fix(i18n): update translation for refreshSucess 2023-04-29 20:43:02 +07:00
EvadeMaster
941263102d refactor: change name from "recommendedVersion" to "suggestedVersion" 2023-04-29 20:43:02 +07:00
Palm
e2ed296dc7 chore(deps): constrain get_it to 7.2.0 2023-04-29 19:46:07 +07:00
Ushie
cfc866bef2 feat: change continue anyways to cancel 2023-04-29 15:37:30 +03:00
Sebok Andras
affba669ce feat: add continue anyway button to select from storage dialog (#810) 2023-04-29 15:36:25 +03:00
Palm
7230152ab8 chore: fix issues with gitignore [skip ci] 2023-04-29 17:42:19 +07:00
Palm
21fee7171f chore: update pubspec version
skip-checks: true
2023-04-29 15:40:25 +07:00
SodaWithoutSparkles
ad17995f28 feat: improve suggested app version text (#822) 2023-04-28 17:41:28 +03:00
Yaros
ac830cbe7f fix: resized monochrome icon to match the original (#789)
cherry-pick from 6281ae82876c69ff4194a782e4b08b398a1285d6
2023-04-27 18:12:48 +07:00
Aunali321
65da6af3f9 fix: update pubspec version 2023-04-21 14:56:31 +03:00
oSumAtrIX
3d90bf7588 ci: bypass push permission on protected branches with owner PAT 2023-04-21 14:55:29 +03:00
EvadeMaster
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
Aunali321
d6918920b6 chore: add missing translations 2023-04-20 23:53:24 +05:30
Aunali321
cdfb09fbfa feat: warning for armv7 devices 2023-04-20 23:20:30 +05:30
Aunali321
bb681e31c9 feat: disable selecting installed apps for nonroot 2023-04-20 22:25:29 +05:30
Aunali321
c7483936ec docs: remove alpha disclaimer 2023-04-20 05:07:46 +05:30
Aunali321
0a1f2da33d feat: appreciation message for new contributors 2023-04-20 05:04:37 +05:30
Aunali321
f5aafdb7d6 feat: progress bar for manager updates 2023-04-20 04:45:46 +05:30
Aunali321
c9adf1c492 style: sort imports 2023-04-19 01:32:43 +05:30
Aunali321
4c9cb560e3 feat: auto select default patches 2023-04-19 01:21:08 +05:30
Yaros
f0b028279c fix: open contributor links externally (#791) 2023-04-18 19:46:16 +05:30
Aman Sikarwar
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
EvadeMaster
37b583f560 feat: trim extra space when setting custom source (#771) 2023-04-18 17:15:04 +07:00
Sebok Andras
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
Aunali321
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 74e0c09b54.

* 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
Palm
0b952578d1 ci(release): update semantic-release 2023-04-02 02:37:49 +07:00
EvadeMaster
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
Palm
866a6e4a44 chore(CHANGELOG): reset changelog 2023-03-30 23:29:26 +07:00
Palm
8ea7dd478b ci(release): update node dependencies 2023-03-30 23:20:31 +07:00
EvadeMaster
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
EvadeMaster
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
Palm
d214a02abd ci(release): fix argument parsing of npm exec 2023-03-26 23:02:57 +07:00
Palm
d1c12edd1b ci(release): use appropriate npm commands for ci environment 2023-03-26 23:02:57 +07:00
Palm
ded1a44c37 ci(release): fix step not moving artifact to accessible path 2023-03-26 23:02:57 +07:00
Ushie
790a6cd1e3 ci(release): remove unnecessary variables in flutter build step 2023-03-26 18:57:27 +03:00
EvadeMaster
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
Palm
d9c5a540a3 ci(release): fix wrong artifact name and ci not uploading build 2023-03-24 01:01:44 +07:00
Palm
276f33b9ec ci: use semantic-release (#746) 2023-03-23 17:34:52 +01:00
Ushie
ded59d2da0 feat(ci): update crowdin workflow to use new main branch 2023-03-20 22:39:29 +03:00
Ushie
62f7a820d8 feat: remove notice about stale development [skip ci] 2023-03-20 18:03:58 +03:00
Ushie
7063ffa013 build: bump version to v0.0.57 2023-03-14 21:00:48 +03:00
Ushie
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
EvadeMaster
c10e5848bf Merge pull request #707 from revanced/dev
chore: merge branch `dev` to `flutter`
2023-03-14 22:07:35 +07:00
EvadeMaster
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
Aunali321
b475bd25c8 build: remove env setup step 2023-03-11 23:01:26 +05:30
Aunali321
d318224a6f fix: black screen after resetting custom sources 2023-03-06 18:08:48 +05:30
Aunali321
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
Aunali321
5617535a63 refactor: remove sentry and crowdin (#730)
We no longer use sentry and crowdin.
2023-03-05 16:12:46 +07:00
EvadeMaster
68ccefc59f revert: "refactor: update deprecated and minor code refactors (#710)"
This reverts commit 6829d3cdea.

Signed-off-by: EvadeMaster <93124920+EvadeMaster@users.noreply.github.com>
2023-03-03 18:06:24 +07:00
Ushie
6d60541626 chore(deps): meet patcher breaking changes 2023-03-03 03:11:44 +03:00
EvadeMaster
a635e5b8d0 chore: addFiles -> addIntegrations (#725)
fix #721
2023-03-02 14:51:35 +07:00
EvadeMaster
48a10440fe ci(build): remove environment on PR build 2023-03-02 11:06:15 +07:00
EvadeMaster
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
EvadeMaster
ab8fccc544 chore(deps): bump patcher version from 6.4.3 -> 7.0.0 2023-02-27 19:19:19 +07:00
EvadeMaster
8319dc9164 fix: improperly sized monochrome icon (#715) 2023-02-27 19:07:44 +07:00
Sailesh Dahal
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
EvadeMaster
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
LisoUseInAIKyrios
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
EvadeMaster
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
Alex
12d25570af fix: Long patch description truncated (#702)
fix: long patch description truncated (#702)

Allow flexible height
2023-02-14 18:42:24 +07:00
EvadeMaster
378c947654 chore: bump version to v0.0.56 2023-02-12 13:04:34 +07:00
EvadeMaster
bd39a3140e feat: fix patch bundle version no longer displayed (#686) 2023-02-12 00:02:30 +07:00
Boris Michiels
7d3ca3dec1 fix: display patches version on first load (#687) 2023-02-12 00:00:01 +07:00
oSumAtrIX
1cb556c8f8 chore: bump version to 0.0.55 2023-02-11 23:59:53 +07:00
oSumAtrIX
8c8f96de1c build: bump patcher version 2023-02-11 23:59:47 +07:00
EvadeMaster
318cd87a9a feat(style): use the correct m3 theming (partially) (#680) 2023-02-07 15:46:29 +03:00
Aunali321
5d63d5c2d3 feat: potentially fix apps disappearing when update is available (#674) 2023-01-31 15:42:00 +03:00
Ushie
7d347fccc6 build: bump version to v0.0.54 2023-01-30 15:57:06 +03:00
Jay Gajjar
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
Mipirakas
f5bc1a996f feat: remove select all icon from searchbar (#669) 2023-01-30 15:13:25 +03:00
Mipirakas
8591bc4d01 chore: update cr_file_saver (#668)
Co-authored-by: Ushie <github@ushie.dev>
2023-01-30 15:11:31 +03:00
EvadeMaster
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
Mipirakas
1c965c3788 refactor: cleanup remember patches feature (#630) 2023-01-30 15:03:55 +03:00
Bennett
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
Abhiram
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
oSumAtrIX
3434c862e9 feat: improve note [skip ci] 2023-01-28 07:49:57 +01:00
EvadeMaster
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
EvadeMaster
c3df48174c feat: warn user for selecting all patches (#649) 2023-01-21 16:37:28 +01:00
oSumAtrIX
f1e60f96c4 chore: bump version to 0.0.53 2023-01-18 22:07:00 +01:00
oSumAtrIX
cdd852678b build: bump patcher version 2023-01-18 22:07:00 +01:00
Ushie
bf518b5467 bump: kotlin gradle plugin 2023-01-18 22:07:00 +01:00
oSumAtrIX
ffd53fab26 feat: clarify acknowledgement label (#608) 2023-01-14 20:23:49 +03:00
oSumAtrIX
5aad7dad35 chore: fix incorrect wording 2023-01-12 21:03:11 +01:00
oSumAtrIX
b1c1a9f4e1 feat: stale development notice [skip ci] 2023-01-07 14:24:43 +01:00
oSumAtrIX
d847a8e0b2 build: bump version to v0.0.52 2022-12-19 01:39:48 +01:00
oSumAtrIX
9668730b5d build: bump patcher version (#610) 2022-12-19 01:35:58 +01:00
Ushie
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
Ushie
82c2b2f128 build: bump version to v0.0.51 2022-12-15 21:24:06 +03:00
Ushie
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
Ushie
19f990c564 build: bump version to v0.0.50 2022-12-14 14:17:38 +03:00
Ushie
62467007b2 Revert "feat: display app's patch count in appcard"
This reverts commit 8d4e4ba6c9.
2022-12-14 13:20:17 +03:00
Ushie
d7624e5e1f Revert "feat: filter apps by patch count"
This reverts commit d78868b462.
2022-12-14 13:19:59 +03:00
oSumAtrIX
4505f10e50 build: bump version number 2022-12-14 06:04:42 +01:00
oSumAtrIX
3ce3df5e19 build: bump patcher version 2022-12-14 06:04:10 +01:00
Ushie
8d4e4ba6c9 feat: display app's patch count in appcard 2022-12-14 02:12:57 +03:00
Ushie
d78868b462 feat: filter apps by patch count 2022-12-14 01:52:06 +03:00
Canny
01a681ad00 build: bump version to v0.0.48 2022-12-12 22:34:39 +03:00
Canny
adfeb61eab fix: print patch fail cause if message is null 2022-12-12 22:32:11 +03:00
Ushie
8c3faac343 build: bump version to v0.0.47 2022-12-12 17:09:32 +03:00
Ushie
c81acce31c feat: improve patch fail logging 2022-12-12 17:09:32 +03:00
Aunali321
fe629ce77c Merge branch 'flutter' of https://github.com/revanced/revanced-manager into flutter 2022-12-11 18:04:06 +05:30
Aunali321
5c27add2b2 bump:bump version to v0.0.46 2022-12-11 18:04:00 +05:30
aliernfrog
ff90dae695 feat: add support for shared patches (#577)
* fix: avoid npe if a patch has empty compatible package.

* feat: support for shared patches

* fix: incorrect bool check and cleanup

Co-authored-by: Aunali321 <aunvakil.aa@gmail.com>
2022-12-11 18:00:44 +05:30
Aunali321
4f8aec6a05 build: bump version to v0.0.45 2022-12-09 17:47:51 +05:30
Syed Ahmad
ba8df57580 Update broken link (#569) 2022-12-09 17:42:09 +05:30
Logykk
3bab1940c1 Support Gitea repositories (#570) 2022-12-09 17:40:43 +05:30
oSumAtrIX
e300c92215 build: bump version to v0.0.44 2022-12-06 03:15:23 +01:00
oSumAtrIX
99764e25ed build: bump patcher dependency version 2022-12-06 03:14:35 +01:00
Aunali321
b5dcae11a4 Merge branch 'flutter' of https://github.com/revanced/revanced-manager into flutter 2022-11-29 21:16:54 +05:30
Aunali321
f69f475ab9 build: bump version to v0.0.43 2022-11-29 21:16:42 +05:30
annon
061e929705 feat: Changelog in update dialog (#551)
* add update confirmation dialog

* fix loader placement
2022-11-29 21:15:44 +05:30
Aunali321
9e8193a6ac fix: selected patches not being remembered. 2022-11-29 21:12:46 +05:30
Aunali321
1601796c6c build: bump patcher dependency. 2022-11-29 21:03:12 +05:30
Aunali321
a0af0dde0a fix: disable changing languages for now. 2022-11-29 17:45:42 +05:30
Ushie
c5ba6a238a ci(crowdin): upload sources only 2022-11-29 14:29:30 +03:00
Ushie
3c3ebe7d9d build: bump version to v0.0.42 2022-11-26 22:14:56 +03:00
Ushie
b7227bfad7 fix(build): use correct step id 2022-11-26 22:14:42 +03:00
Ushie
447c16cff1 fix(build): migrate env name to new workflow 2022-11-26 21:17:57 +03:00
Ushie
47529ae3f5 build: workflows for PRs & all commits 2022-11-26 21:16:29 +03:00
Ushie
149af96d51 New Crowdin translations by Github Action (#541)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2022-11-26 16:43:08 +03:00
Nico Mexis
14e9dd1c04 fix: update workflow actions (#482)
* fix: update workflow actions

* fix: sign apk parameters
2022-11-26 16:34:14 +03:00
ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ
ec9ef98981 feat(apiUrl): fix textbox hint (#521) 2022-11-26 16:33:18 +03:00
d4rkk3y
922f474b59 fix: apply correct patch if patch names are same (#535) 2022-11-24 20:14:04 +03:00
Ushie
795a1c78df build: bump version to v0.0.41 2022-11-24 00:36:03 +03:00
Canny
6ea055d486 feat: use secrets for keys (#528) 2022-11-24 00:27:00 +03:00
Aunali321
b0c4567cb8 feat: use github to get latest patches version if custom sources are used. 2022-11-23 10:03:56 +05:30
Aunali321
6e05120aa5 feat: add chips for patches selection. 2022-11-23 09:48:10 +05:30
Ushie
c5958f1257 docs: add translation field 2022-11-15 14:20:23 +03:00
Aunali321
0faf86c9e9 refactor: restructure codebase. (#501)
* refactor: separate language selection to own widget.

* feat: separate theme changer to own widget.

* refactor: move Appearance UI to separate class.

* refactor: move language selection UI to separate class.

* refactor: move sources selection to separate file.

* refactor: move sources selection to separate file.

* refactor: split settings sections in separate files.

* refactor: move logging section to separate file.

* fix: show toast on bottom.

* fix: recommended patches not being selected by default.

* fix: patch selection selecting non recommended patches.

* fix: experimental toggle not updating.
2022-11-12 21:25:33 +05:30
oSumAtrIX
ee689922a3 feat: do not update on tracing logs 2022-11-11 16:15:23 +01:00
Aunali321
be77a181ec feat: EXPERIMENTAL language switching. 2022-11-10 23:03:07 +05:30
Aunali321
30376c960f build: bump version to v0.0.40 2022-11-10 12:14:50 +05:30
Palm
405147b1c5 fix(i18n): locale capitalization and grammar (#496)
* fix(i18n): locale capitalization and grammar

* fix(i18n): add some more changes requested
2022-11-09 19:07:28 +05:30
Aunali321
d545dfe49b refactor: move exporting patches to another section 2022-11-09 14:20:32 +05:30
Boris M
c571cf2c53 feat: ability to store and load selected patches (#469)
* feat: ability to store and load selected patches

* fix: I18n

* fix: do not append but truncate file

* fix: use json file, minor fixes

* fix: better ui

* WIP

* feat: load patches selection after app selection

* feat: import/export json file

* fix: reformat code

* fix: rare bug on import feature fixed

* fix: move export/ipmort to settings page & import full json

* fix: minor improvements

* fix: minor code quality improvements

* fix: export filename fix

* fix: select list element istead of removing it
2022-11-09 13:06:04 +05:30
Boris M
fd5d71e24d fix: delete cached apk files when picking new one (#481) 2022-11-09 13:05:26 +05:30
Boris M
2c3809d2bc feat: show selected patches count in patches selector view & patch selector card (#466)
* feat: show selected patches count in patches selector view & patch selector card

* fix: add Widget on row

* fix: formatting

* fix: same text style for count
2022-11-09 13:02:39 +05:30
Ushie
0fc8e7cbc8 feat: crowdin workflow 2022-11-05 01:31:56 +03:00
Ushie
787e47f634 Update Crowdin configuration file 2022-11-04 23:14:55 +03:00
nkitsaini
dc47da75f2 feat: Adding support for Exporting APK (#439)
* feat: Adding Export APK support

* Using cr_file_saver to simplify export
2022-11-02 17:22:40 +05:30
Ushie
6b999b0a0c build: bump version to v0.0.39 2022-11-02 00:06:29 +03:00
oSumAtrIX
b00d2d16d4 feat: simplify logging (#305)
Co-authored-by: Ushie <ushiekane@gmail.com>
2022-11-02 00:02:51 +03:00
Boris M
97d4da568b fix: allow tapping on patch card when experimental switch is enabled (#464) 2022-11-02 00:02:33 +03:00
Ushie
e563049f6a build: bump version to v0.0.38 2022-11-01 19:04:23 +03:00
Ushie
cc00d0dc08 bump: kotlin gradle plugin (#461) 2022-11-01 19:03:26 +03:00
Aunali321
2a220c3984 fix: custom sources. 2022-11-01 19:03:30 +05:30
Aunali321
1d440d25be fix: dont select all patches if experimental toggle is off. 2022-11-01 15:36:06 +05:30
Aunali321
ba5234e850 feat: experimental settings to allow patch on any app version. 2022-11-01 15:26:15 +05:30
Ushie
293f7150f1 build: bump version to v0.0.37 2022-10-31 00:59:57 +03:00
Ushie
41b1cec8d3 feat: move to new API domain 2022-10-31 00:57:12 +03:00
Ushie
c129c1eeae build: bump version to v0.0.36
totally didnt forget to bump last night
2022-10-20 10:08:33 +03:00
Ushie
caa9694543 feat: improve explanation of update being unusable 2022-10-20 00:15:48 +03:00
Aunali321
ac79765372 fix: keystore name typo. 2022-10-19 18:55:27 +05:30
Aunali321
39500f054d feat: disable sentry for time being. 2022-10-19 18:53:13 +05:30
Aunali321
f2d5cc91db Merge branch 'flutter' of https://github.com/revanced/revanced-manager into flutter 2022-10-19 16:33:00 +05:30
Aunali321
84a788fd9e feat: toast for disabled updates. 2022-10-19 16:32:54 +05:30
Ushie
3778bfe1b5 feat(installer): remove restriction of Share APK, closes #410 (#412)
Share APK has a requirement of needing to install the patched app before sharing, this PR removes that as I see no reason for this restriction
2022-10-18 16:16:04 +03:00
Aunali321
63b2d8e0bd build: remove create env step from actions. 2022-10-17 21:51:18 +05:30
Aunali321
e7490b8d75 refactor: disable sentry for now. 2022-10-17 21:39:46 +05:30
Aunali321
2e050d06e8 feat: remove firebase. (#405)
* feat: remove firebase.

* build: remove firebase config.
2022-10-17 20:24:47 +05:30
Aunali321
5fd1154039 build: bump version to 0.0.34 2022-10-17 19:53:46 +05:30
Aunali321
39401a78ec refactor: disable firebase for now. 2022-10-17 19:52:47 +05:30
Aunali321
273aa42b17 refactor: redo the environment system. 2022-10-17 16:48:39 +05:30
Aunali321
603917d21e feat: create env with github actions. 2022-10-17 16:25:22 +05:30
Aunali321
e55cd6a938 feat: add env vars to repo. 2022-10-17 15:06:33 +05:30
Aunali321
2aaed14a3a fix: add firebase options to repo. 2022-10-17 13:59:39 +05:30
Aunali321
511c25163d refactor: delete empty env. 2022-10-17 12:58:26 +05:30
Aunali321
c24e50f3a0 feat: add empty .env config. 2022-10-17 02:09:45 +05:30
Aunali321
2d732288a7 feat: option to delete manager logs. 2022-10-17 01:58:50 +05:30
Aunali321
56e715cd3c build: bump version to v0.0.33 2022-10-17 01:41:11 +05:30
Aunali321
074d8005bc feat: show patch bundle version in patch selector screen. 2022-10-17 01:40:16 +05:30
Aunali321
5b38c9442a fix: increase sleep timer for mount script. 2022-10-17 00:46:48 +05:30
Aunali321
3b8dc66da6 feat: option to delete temporary directory. 2022-10-17 00:41:20 +05:30
Aunali321
f5ebfc92fc feat: decrease time for force refresh of patches. 2022-10-17 00:32:45 +05:30
Aunali321
9de063aced feat: ability to delete keystores. 2022-10-17 00:22:07 +05:30
Aunali321
331691cc9d fix: add env file to repo. 2022-10-16 23:55:09 +05:30
Aunali321
1a97cdf91d refactor: remove useless prints. 2022-10-16 23:54:07 +05:30
Aunali321
fbd4359d61 fix: add missing else block. 2022-10-16 23:43:33 +05:30
Aunali321
f31a60d9bb feat: make firebase crashlytics optional. 2022-10-15 18:29:50 +05:30
Aunali321
79aca0e579 feat: firebase crashlytics for improving manager. 2022-10-15 15:01:31 +05:30
Aunali321
6d35c47b6b feat: make sentry logging optional. 2022-10-15 01:52:10 +05:30
Aunali321
f1261398e9 feat: sentry integration. 2022-10-14 23:35:33 +05:30
Aunali321
007b518503 build: Bump version to v0.0.32 2022-10-12 02:07:23 +05:30
Aunali321
c6edc620c8 feat: cronet lib for non gms device. 2022-10-12 01:52:57 +05:30
Aunali321
3f9d7c9cc0 fix: add back saving patched apps after clearing data. 2022-10-11 20:27:29 +05:30
Aunali321
6c1845e246 feat: add fallback for cronet. 2022-10-11 20:19:50 +05:30
Aunali321
0b2572a730 Bump version to v0.0.31 2022-10-11 02:56:27 +05:30
Aunali321
6fc46d632b feat: make applied patches dialog scrollable. 2022-10-11 02:55:35 +05:30
Aunali321
b2a35813f6 fix: disable update functionality for now. 2022-10-11 02:32:23 +05:30
Aunali321
279b76ad53 fix: don't show previously patched apps after clearing data. 2022-10-11 02:17:13 +05:30
Aunali321
b550016681 fix: use original package name to load patches. 2022-10-10 19:02:42 +05:30
Aunali321
3ab5d12f3e fix: use original package name for changelog. 2022-10-10 18:57:32 +05:30
Aunali321
53bcb8b85f Merge branch 'flutter' of https://github.com/revanced/revanced-manager into flutter 2022-10-10 18:46:02 +05:30
Aunali321
94397dcb4c feat: store original package name of patches apps. 2022-10-10 18:45:58 +05:30
afn
53fbee2d44 refactor: Reorder sections in readme. 2022-10-10 00:21:49 +05:30
aliernfrog
e46ad3595d fix: permanent keystore path if available (#375) 2022-10-10 00:05:43 +05:30
Aunali321
f2b03b6e69 Merge branch 'flutter' of https://github.com/revanced/revanced-manager into flutter 2022-10-09 23:01:18 +05:30
Aunali321
0df2a6bdc0 feat: brotli support. 2022-10-09 23:01:10 +05:30
Aunali321
df31e5ccd1 feat: add building from source instructions. 2022-10-09 02:59:50 +05:30
Aunali321
4dfa0dada6 build: bump version to v0.0.30 2022-10-08 22:08:03 +05:30
Aunali321
857a523f84 fix: changelog for youtube. 2022-10-08 22:06:45 +05:30
Aunali321
ceac838706 feat: use new api url. 2022-10-08 19:03:45 +05:30
Aunali321
e8cb6d27fc Merge branch 'flutter' of https://github.com/revanced/revanced-manager into flutter 2022-10-07 18:23:49 +05:30
Aunali321
78428f6bd3 feat: HTTP/3 Support. 2022-10-07 18:23:43 +05:30
Ushie
da94dfba70 build: Android Studio project build config 2022-10-06 12:40:25 +03:00
oSumAtrIX
8275792f45 chore: bump patcher dependency version to v6.0.0 (#355) 2022-10-06 11:26:20 +02:00
j4k0xb
a90923011a feat: allow searching for displayed patch names (#348) 2022-10-03 21:06:12 +03:00
oSumAtrIX
1aa24e2871 fix: print stack trace of patch exceptions (#314) 2022-10-03 22:34:46 +05:30
oSumAtrIX
68ce751745 build: bump version to v0.0.27 2022-10-01 02:15:47 +02:00
oSumAtrIX
74ff64d41a chore: bump patcher dependency version to v5.1.2 2022-10-01 02:15:08 +02:00
Ushie
6d45ccecc2 build: Bump version to v0.0.27 2022-09-30 21:38:15 +03:00
Ushie
5418c36716 feat: use patcher for resourcePatch detection (#337)
Co-authored-by: Aunali321 <aunvakil.aa@gmail.com>
2022-09-30 21:36:39 +03:00
Aunali321
ca0657e8f9 feat: decrease cache duration of patches and integrations. 2022-09-28 22:26:54 +05:30
Canny
a5511c2a2c feat: update unsupported button title 2022-09-26 23:36:17 +03:00
Ushie
a346f8857f build: Bump version to v0.0.26 2022-09-26 16:52:04 +03:00
oSumAtrIX
e12532ea4c chore: bump patcher dependency version to v5.1.0 2022-09-26 04:34:23 +02:00
afn
7ecf951bfb fix: tweak card appearances (#296)
* fix: tweak card appearances

* Update patch_selector_card.dart
2022-09-25 18:13:37 +05:30
Aunali321
db18874ea1 fix: now using country code for languages. 2022-09-25 14:38:25 +05:30
oSumAtrIX
18a69776cd feat: en_US.json language asset file 2022-09-25 08:26:08 +02:00
oSumAtrIX
21cadf6450 feat: remove en.json language asset 2022-09-25 08:22:21 +02:00
oSumAtrIX
5ddbe6e252 Update Crowdin configuration file 2022-09-25 08:19:47 +02:00
afn
6d1427e01e fix: move changelog into app item custom card (#294) 2022-09-25 00:19:02 +05:30
Alberto Ponces
6ac901f1d6 build: Bump version to v0.0.24 2022-09-24 13:50:44 +01:00
Alberto Ponces
587ba795bb Revert "fix: Prevent content from being overlapped by system navigation bar"
This reverts commit 4d82ff3011.
2022-09-24 13:49:46 +01:00
Alberto Ponces
6b66c7bbd0 build: Bump version to v0.0.23 2022-09-24 12:16:02 +01:00
Alberto Ponces
f398b6863a Merge branch 'flutter' of github.com:revanced/revanced-manager into flutter 2022-09-24 12:12:24 +01:00
Alberto Ponces
4d82ff3011 fix: Prevent content from being overlapped by system navigation bar 2022-09-24 12:06:36 +01:00
Alberto Ponces
2a0ea78d7f feat: Adds support for patching on x86 and x64 devices
Introduces new aapt2 binaries from revanced/aapt2
2022-09-24 12:05:36 +01:00
Aunali321
4722880647 feat: better patch version background. 2022-09-24 13:47:09 +05:30
Aunali321
32fabcfa3f fix: nav overlapping install buttons. 2022-09-24 12:53:46 +05:30
Alberto Ponces
e0c46e4268 fix: Show "Share log" menu option even if patching has errors 2022-09-23 17:22:39 +01:00
Alberto Ponces
d84230fa22 feat: Merge integrations if a patch or any of its dependencies need them 2022-09-23 17:20:19 +01:00
Alberto Ponces
9561153bfb feat: Hide "Install as Root" button if user does not have root access at all 2022-09-23 15:47:30 +01:00
Alberto Ponces
c8c35ca801 build: Bump version to v0.0.22 2022-09-23 15:34:18 +01:00
Alberto Ponces
cf99069804 fix: Handle minor lint errors 2022-09-23 15:33:27 +01:00
Alberto Ponces
6abb761724 refactor: Move some logic to ManagerAPI and PatcherAPI 2022-09-23 15:31:24 +01:00
Alberto Ponces
4609ed9eba fix: Make sure we are getting app from from storage when selection is from storage 2022-09-23 15:21:58 +01:00
Aunali321
c0f743df89 feat: HTTP2 support for api requests. (#290) 2022-09-23 19:06:06 +05:30
Aunali321
f00f910973 Merge branch 'flutter' of https://github.com/revanced/revanced-manager into flutter 2022-09-23 14:58:19 +05:30
Aunali321
2bc486dcec build: Bump version to v0.0.21. 2022-09-23 14:58:07 +05:30
Aunali321
148981da18 refactor: removed dropdown for branch. 2022-09-23 14:57:05 +05:30
Aunali321
d8df377427 feat: warning dialog when selecting all patches. 2022-09-23 14:53:21 +05:30
Aunali321
efe1306aac fix: reverse versions list to have recents first. 2022-09-23 13:35:47 +05:30
Aunali321
ead308740f refactor: move custom button to shared dir. 2022-09-23 13:00:30 +05:30
oSumAtrIX
fa0f250e27 build: bump patcher dependency version to v5.0.1 2022-09-23 07:45:44 +02:00
oSumAtrIX
185d883b65 feat: acknowledgements section for template feature-issue 2022-09-23 07:33:30 +02:00
oSumAtrIX
9d8b2e1a35 feat: acknowledgements section for template feature-issue 2022-09-23 07:32:44 +02:00
Alberto Ponces
a6a7ff5040 build: Bump version to v0.0.19 2022-09-23 00:39:44 +01:00
Alberto Ponces
1028ec8e2a fix: Prevent Manager from crashing when a patcher exception occurs and print its stack trace on installer's log 2022-09-23 00:38:42 +01:00
Alberto Ponces
f9242c1958 build: Bump version to v0.0.18 2022-09-22 14:04:59 +01:00
Alberto Ponces
f9865166b0 fix: TikTok integrations and settings patches should be merged if needed 2022-09-22 14:02:07 +01:00
Alberto Ponces
f0f934f6a1 fix: Prevent printing of denied root permission exceptions for unrooted users 2022-09-22 14:01:05 +01:00
Alberto Ponces
3d25655851 fix: Uninstall button should always be shown 2022-09-22 09:46:28 +01:00
oSumAtrIX
733190e76c build: bump version to v0.0.17+17 2022-09-21 05:19:26 +02:00
oSumAtrIX
ab312dec43 build: bump patcher dependency version to v5.0.0 2022-09-21 04:16:19 +02:00
oSumAtrIX
70159b8cd8 Update Crowdin configuration file 2022-09-20 19:17:29 +02:00
oSumAtrIX
97060913a2 Update Crowdin configuration file 2022-09-20 19:07:41 +02:00
oSumAtrIX
4a0c5f9935 Update Crowdin configuration file 2022-09-20 12:06:23 +02:00
Alberto Ponces
f643a31455 Merge branch 'flutter' of github.com:revanced/revanced-manager into flutter 2022-09-20 10:05:06 +01:00
Alberto Ponces
03b87a50ea fix: Use a proper app name when MicroG is applied 2022-09-20 10:04:51 +01:00
Alberto Ponces
4631982d42 fix: Use original packageName to get compatible patches 2022-09-20 10:04:02 +01:00
Palm
4c4b694db9 chore: update English language capitalizations and format (#228)
* chore: update English language capitalizations and format

* chore: revert capitalization changes as requested
2022-09-20 12:27:20 +05:30
Alberto Ponces
fd099fb632 build: Bump version to v0.0.16 2022-09-20 02:38:55 +01:00
Alberto Ponces
e374e03355 fix: Readd padding between Application Items 2022-09-20 02:38:28 +01:00
Alberto Ponces
d0293f5412 build: Bump version to v0.0.15 2022-09-20 01:54:41 +01:00
Alberto Ponces
6f72c2ebec fix: Fix unfixed fixes which needed to be fixed (better now??) 2022-09-20 01:07:36 +01:00
Alberto Ponces
07407933d9 fix: Don't select patches by default based on their excluded flag 2022-09-20 00:59:14 +01:00
Alberto Ponces
2f4726ea68 fix: Add toast service to simplify creation of toasts 2022-09-20 00:49:31 +01:00
Alberto Ponces
207e94de5a fix: Fix Update Manager's button 2022-09-20 00:03:37 +01:00
Alberto Ponces
7231d44e02 fix: Push Custom Sources tile to Advanced section and reorder a bit 2022-09-19 23:31:21 +01:00
Alberto Ponces
bd5b38d88e fix: Add rounded borders on Unpatch button inkwell as well 2022-09-19 23:25:39 +01:00
Unknown
530dd78752 fix: make inkwells visible (#205) 2022-09-19 17:55:44 +01:00
Alberto Ponces
efcf455b24 Merge branch 'flutter' of github.com:revanced/revanced-manager into flutter 2022-09-19 17:40:11 +01:00
Alberto Ponces
bed2cf76d5 feat: Prevent exiting installer on new back button as well and show why exiting is not possible during patching 2022-09-19 17:40:06 +01:00
Aunali321
5c8079ae95 fix: warn about no armv7 support. 2022-09-19 21:34:52 +05:30
Alberto Ponces
2a2bb8212f fix: Add back button on app bars of secondary views 2022-09-19 16:24:31 +01:00
Aunali321
3e6e94c098 fix: disable creating blank issues. 2022-09-19 18:23:33 +05:30
Aunali321
ce100d97fd refactor: add dropdown for feature template. 2022-09-19 18:22:51 +05:30
Aunali321
743a661c10 refactor: use dropdown for branch. 2022-09-19 18:10:59 +05:30
Unknown
2b7287c04c feat: CustomScrollView in app and patches selector views (#208) 2022-09-19 12:57:40 +01:00
Aunali321
9bdccb3c9d refactor: more strict bug issue template. 2022-09-19 17:17:48 +05:30
Alberto Ponces
b8171253c7 fix: Readd divider mistakenly removed in #194 2022-09-19 09:56:51 +01:00
Unknown
d6dde3e23b fix: (settings) remove padding from inkwells (#194) 2022-09-19 09:39:25 +01:00
Unknown
fc5414c788 fix: delete tests (#196) 2022-09-19 09:13:40 +01:00
Alberto Ponces
ed9038ffe8 build: Bump version to v0.0.14 2022-09-19 01:47:51 +01:00
Alberto Ponces
269a71d336 fix: Improve foreground service init and disable 2022-09-19 01:46:12 +01:00
Alberto Ponces
9405334a7d fix: Fix multiple APK shares 2022-09-19 01:45:24 +01:00
Alberto Ponces
2f14746124 feat: Add install error dialogs to prevent faulty installations 2022-09-19 01:44:27 +01:00
Alberto Ponces
6c2ceed91f fix: Improve API URL handling and force init after setting a new config 2022-09-19 00:28:26 +01:00
Alberto Ponces
c333fa3c33 fix: Prefer Yes/No instead of OK/Cancel on a few dialogs 2022-09-18 22:53:04 +01:00
Alberto Ponces
79d0396630 fix: No need for an uninstall confirmation dialog as OS already handles this 2022-09-18 22:47:24 +01:00
Unknown
110c3326bd fix: navigation bar color (#197) 2022-09-18 22:20:08 +01:00
Alberto Ponces
9c5b0b9c14 fix: Readd permission_handler with a proper fix 2022-09-18 22:13:29 +01:00
Aunali321
c5ad337daa feat: Custom api endpoints. (#216)
Co-authored-by: Alberto Ponces <ponces26@gmail.com>
2022-09-18 23:12:30 +05:30
Aunali321
a9f64e449b refactor: basic prerequisites in readme. 2022-09-18 23:01:12 +05:30
Unknown
48f0bc625d feat: animate switching updates on HomeView (#209) 2022-09-18 16:49:18 +01:00
Aunali321
4c6b93320f build: Bump bump version to v0.0.13 2022-09-18 12:22:39 +05:30
Aunali321
2f3bb6cfe4 refactor: better wording. 2022-09-18 12:18:47 +05:30
oSumAtrIX
0e1fa1a5d6 build: bump patcher dependency 2022-09-18 08:38:03 +02:00
Alberto Ponces
38fb3444e4 build: Bump version to v0.0.12 2022-09-18 05:07:12 +01:00
Alberto Ponces
f10b5aebac fix: Decrease app name space a bit to prevent overflowing 2022-09-18 05:06:51 +01:00
Alberto Ponces
5a3884e159 fix: Fix uninstall apps 2022-09-18 05:06:23 +01:00
Alberto Ponces
41ac2b0df8 build: Bump version to v0.0.11 2022-09-18 04:47:23 +01:00
Alberto Ponces
52e7d76c9d fix: Fix spacing of App Info buttons 2022-09-18 04:46:21 +01:00
Alberto Ponces
3aa80cacc0 fix: Fix duplicate entries on non-root installations 2022-09-18 04:44:44 +01:00
Alberto Ponces
dd52c379b4 fix: Show updatable app item only on updatable apps listing 2022-09-18 04:12:33 +01:00
Alberto Ponces
5d073bddf2 fix: Minor i18n typo 2022-09-18 03:41:16 +01:00
Alberto Ponces
7d09169c06 build: Bump version to v0.0.10 2022-09-18 03:35:32 +01:00
Alberto Ponces
ce6f11f3f2 feat: Show recommendation version when possible 2022-09-18 03:14:48 +01:00
Alberto Ponces
d0fb6ac3c0 fix: Ignore empty results on root installed apps listing 2022-09-18 02:41:11 +01:00
Alberto Ponces
ae801a2918 fix: Fix apps reassess on root 2022-09-18 01:54:25 +01:00
Alberto Ponces
257fd46e27 fix: Improve quality of launcher and splash icons 2022-09-18 01:23:21 +01:00
Alberto Ponces
bb96c3ed63 fix: Make sure aapt lib gets extracted to native lib dir during install 2022-09-17 22:54:38 +01:00
Alberto Ponces
6bd218277d build: Bump version to v0.0.9 2022-09-17 19:40:44 +01:00
Alberto Ponces
83ad7605c4 fix: Minor improvements on App Info view 2022-09-17 19:30:04 +01:00
Alberto Ponces
5fbc8ff7a0 feat: Retrieve unsaved apps from manager's root folder and known packages from user's apps list 2022-09-17 19:29:46 +01:00
Alberto Ponces
bb4b59eee6 Disable permission_handler package for now 2022-09-17 17:42:29 +01:00
Aunali321
4cfb620d63 build: Bump version to v0.0.8. 2022-09-17 20:58:19 +05:30
Aunali321
55739a9c78 fix: background should be more opaque. 2022-09-17 20:56:44 +05:30
Alberto Ponces
482599bb4e fix: Do not import dart:html 2022-09-17 14:59:23 +01:00
Alberto Ponces
3aaf49fee0 fix: Only init foreground service if user allowed IGNORE_BATTERY_OPTIMIZATIONS permission 2022-09-17 14:55:00 +01:00
Alberto Ponces
0424ee235c build: Bump patcher dependency version 2022-09-17 14:51:09 +01:00
Alberto Ponces
a178afce99 fix: Fix typo on menu options visibility 2022-09-17 14:47:03 +01:00
Alberto Ponces
ef3685c817 fix: Add Unpatch option on App Info view 2022-09-17 14:45:43 +01:00
Alberto Ponces
e74fce8574 Merge branch 'flutter' of github.com:revanced/revanced-manager into flutter 2022-09-17 14:42:58 +01:00
Aunali321
73e4ae1416 build: restrict manager to android 8. 2022-09-17 16:14:24 +03:00
afnzmn
bcf3b36b13 feat: tweak UI 2022-09-17 16:13:41 +03:00
Alberto Ponces
9c3626c8ed fix: Request permissions a single time at boot 2022-09-16 17:29:32 +01:00
Alberto Ponces
a3dca8c142 fix: Add build mode to about widget 2022-09-16 16:39:57 +01:00
Alberto Ponces
ef0c59f693 fix: Surround isRooted with a try/catch just to be safe 2022-09-16 16:39:37 +01:00
Aunali321
31756884b6 build: Bump version to v0.0.7. 2022-09-16 03:48:23 +05:30
Aunali321
0a2a495ab0 feat: custom animated progressbar. 2022-09-16 03:46:46 +05:30
Aunali321
8300cc4071 feat: dropdown for changelogs. 2022-09-16 00:49:11 +05:30
Alberto Ponces
9f58757caf feat: Apply dark/light mode to system navigation bar too 2022-09-15 13:27:48 +01:00
Alberto Ponces
5d296038b7 fix: Increase API's maxAge to 1 day 2022-09-15 12:33:19 +01:00
Alberto Ponces
9f85450c6c build: Bump version to v0.0.6 2022-09-15 09:14:43 +01:00
Alberto Ponces
cba4e175a3 build: Bump version to v0.0.5 2022-09-15 02:27:36 +01:00
Alberto Ponces
cf3fa935ce fix: Fix select from storage for Android 13 devices 2022-09-15 02:18:07 +01:00
251 changed files with 33329 additions and 4474 deletions

View File

@@ -1,67 +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: Branch
description: Which github branch did you use (Flutter or Compose)?
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: Relevant log output
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: 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

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

5
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,5 @@
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,44 +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: Branch
description: Which github branch did you use (Flutter or Compose)?
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

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.

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

@@ -0,0 +1,38 @@
version: 2
updates:
- package-ecosystem: github-actions
labels: []
directory: /
target-branch: dev
schedule:
interval: monthly
- package-ecosystem: npm
labels: []
directory: /
target-branch: dev
schedule:
interval: monthly
# ReVanced Manager Flutter
- package-ecosystem: pub
labels: []
directory: /
target-branch: dev
schedule:
interval: monthly
- package-ecosystem: gradle
labels: []
directory: /
target-branch: dev
schedule:
interval: monthly
# ReVanced Manager Compose
- package-ecosystem: gradle
labels: [ "ReVanced Manager Compose" ]
directory: /
target-branch: compose-dev
schedule:
interval: monthly

117
.github/workflows/build_pull_request.yml vendored Normal file
View File

@@ -0,0 +1,117 @@
name: Build pull request
on:
workflow_dispatch:
inputs:
# Enable or disable cache
flutter-cache:
description: Cache
type: boolean
default: true
# Select app flavour
app-flavour:
description: App flavour
default: 'release'
type: choice
options:
- release
- debug
- profile
# Select pull request
pr-number:
description: PR number (Without hashtag)
required: true
run-name: "Build pull request ${{ inputs.pr-number }}"
jobs:
build:
name: Build
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- name: Setup pull request
env:
GH_TOKEN: ${{ github.token }}
run: |
gh repo clone "${{ github.repository }}"
cd revanced-manager
gh repo set-default "${{ github.repository }}"
gh pr checkout "${{ inputs.pr-number }}"
echo "COMMIT_HASH=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
- name: Checkout
uses: actions/checkout@v4
with:
persist-credentials: false
fetch-depth: 0
- name: Cache Gradle
uses: burrunan/gradle-cache-action@v1
- name: Setup Java
run: echo "JAVA_HOME=$JAVA_HOME_17_X64" >> $GITHUB_ENV
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: "stable"
flutter-version: 3.22.x
cache: ${{ inputs.flutter-cache }}
- 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
continue-on-error: true
id: flutter-build
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
flutter build apk --"${{ inputs.app-flavour }}";
- name: Prepare comment
run: |
if [[ "${{ steps.flutter-build.outcome }}" == "success" ]]; then
echo "MESSAGE=✅ Succeeded build on ${{ env.COMMIT_HASH }}." >> $GITHUB_ENV
else
echo "MESSAGE=🚫 Failed build on ${{ env.COMMIT_HASH }}." >> $GITHUB_ENV
fi
- name: "Comment on pull request #${{ inputs.pr-number }}"
uses: thollander/actions-comment-pull-request@v2
with:
GITHUB_TOKEN: ${{ github.token }}
pr_number: ${{ inputs.pr-number }}
mode: recreate
message: |
## ⚒️ Build status
${{ env.MESSAGE }}
Details: [${{ github.run_id }}](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})!
### ⚙️ Workflow run configuration
- Flutter cache: ${{ inputs.flutter-cache }}
- App flavor: ${{ inputs.app-flavour }}
- name: Upload
uses: actions/upload-artifact@v4
with:
if-no-files-found: error
name: revanced-manager-(${{ env.COMMIT_HASH }}-${{ inputs.pr-number }}-${{ inputs.app-flavour }})
path: |
build/app/outputs/flutter-apk/app-${{ inputs.app-flavour }}.apk
build/app/outputs/flutter-apk/app-${{ inputs.app-flavour }}.apk.sha1

View File

@@ -1,39 +0,0 @@
name: "Debug Build"
on:
push:
branches:
- "flutter-disabled"
tags-ignore:
- "*"
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Set up JDK 12
uses: actions/setup-java@v1
with:
java-version: '12.x'
- uses: subosito/flutter-action@v1
with:
channel: 'stable'
- 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 --debug
- name: Add version to APK
run: mv build/app/outputs/flutter-apk/app-debug.apk revanced-manager-latest.apk
- name: Publish debug APK
uses: "marvinpinto/action-automatic-releases@latest"
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
automatic_release_tag: "latest"
prerelease: true
title: "Development Build"
files: revanced-manager-latest.apk

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

@@ -0,0 +1,28 @@
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
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
github_token: ${{ secrets.REPOSITORY_PUSH_ACCESS }}

View File

@@ -1,49 +0,0 @@
name: "Release Build"
on:
push:
tags:
- "v*"
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Set env
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
- name: Set up JDK 12
uses: actions/setup-java@v1
with:
java-version: '12.x'
- uses: subosito/flutter-action@v1
with:
channel: 'stable'
- 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: r0adkll/sign-android-release@v1
with:
releaseDirectory: build/app/outputs/apk/release
signingKeyBase64: ${{ secrets.SIGNING_KEYSTORE }}
keyStorePassword: ${{ secrets.SIGNING_KEYSTORE_PASSWORD }}
alias: ${{ secrets.SIGNING_KEY_ALIAS }}
keyPassword: ${{ secrets.SIGNING_KEY_PASSWORD }}
- name: Add version to APK
run: mv ${{steps.sign_apk.outputs.signedReleaseFile}} 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

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

@@ -0,0 +1,62 @@
name: Release
on:
workflow_dispatch:
push:
branches:
- main
- dev
paths:
- ".github/workflows/release.yml"
- "android/**"
- "assets/**"
- "lib/**"
- "pubspec.yaml"
jobs:
release:
name: Release
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Java
run: echo "JAVA_HOME=$JAVA_HOME_17_X64" >> $GITHUB_ENV
- 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"
flutter-version: 3.22.x
- 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: Release
env:
GITHUB_TOKEN: ${{ secrets.REPOSITORY_PUSH_ACCESS }}
signingKey: "keystore.jks"
keyStorePassword: ${{ secrets.SIGNING_KEYSTORE_PASSWORD }}
keyAlias: ${{ secrets.SIGNING_KEY_ALIAS }}
keyPassword: ${{ secrets.SIGNING_KEY_PASSWORD }}
run: |
echo "${{ secrets.SIGNING_KEYSTORE }}" | base64 --decode > android/app/keystore.jks
npx semantic-release

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

@@ -0,0 +1,69 @@
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
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
cache: true
flutter-version: 3.22.x
- name: Sync translations from Crowdin
uses: crowdin/github-action@v1
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"
github_user_name: revanced-bot
github_user_email: github@revanced.app
env:
GITHUB_TOKEN: ${{ secrets.REPOSITORY_PUSH_ACCESS }}
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
- name: Remove empty values from JSON
run: |
cd assets/i18n
sudo chmod 777 *.json
dart nuke.dart >> $GITHUB_STEP_SUMMARY
- name: Validation of Translation Strings
run: |
dart pub get
dart run slang
flutter analyze lib/gen/strings.g.dart --no-fatal-infos --no-fatal-warnings
- name: Commit translations
run: |
git config user.name revanced-bot
git config user.email github@revanced.app
sudo chown -R $USER:$USER .git
git add assets/i18n/*.json
git commit -m "chore: Remove empty values from JSON" assets/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 }}"}'

172
.gitignore vendored
View File

@@ -1,14 +1,41 @@
# Miscellaneous
*.class
*.lock
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/
# See https://www.dartlang.org/guides/libraries/private-files
# Files and directories created by pub
.dart_tool/
.packages
build/
# If you're building an application, you may want to check-in your pubspec.lock
# pubspec.lock
# Directory created by dartdoc
# If you don't generate documentation locally you can remove this line.
doc/api/
# dotenv environment variables file
.env*
# Avoid committing generated Javascript files:
*.dart.js
*.info.json # Produced by the --dump-info flag.
*.js # When generated by dart2js. Don't specify *.js if your
# project includes source files written in JavaScript.
*.js_
*.js.deps
*.js.map
.flutter-plugins
.flutter-plugins-dependencies
# Generated Builder file
**/*.g.dart
**/*.locator.dart
**/*.router.dart
flutter_*.png
#### Custom
local.properties
# IntelliJ related
*.iml
@@ -16,123 +43,8 @@
*.iws
.idea/
# Visual Studio Code related
.classpath
.project
.settings/
# Node Dependency directories
node_modules/
# 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
# Flutter/Dart/Pub related
**/doc/api/
**/*.g.dart
**/*.locator.dart
**/*.router.dart
.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/
# Symbolication related
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
Firebase related
.firebase
# FVM
.fvm

64
.releaserc Normal file
View File

@@ -0,0 +1,64 @@
{
"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",
[
"@droidsolutions-oss/semantic-release-update-file",
{
"files": [
{
"path": ["pubspec.yaml"],
"type": "flutter",
"branches": ["main", "dev"]
}
]
}
],
[
"@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"
}
],
"successComment": false
}
],
[
"@saithodev/semantic-release-backmerge",
{
"backmergeBranches": [{"from": "main", "to": "dev"}],
"clearWorkspace": true
}
]
]
}

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

106
README.md
View File

@@ -1,15 +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.
## 🔴 Issues
For suggestions and bug reports, open an issue [here](https://github.com/revanced/revanced-manager/issues/new/choose).
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).
## 💭 Discussion
If you wish to discuss the Manager, a thread has been made under the [#chat](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.
## 📚 Everything else
## ⚠️ Disclaimer
*Please note that even though we're releasing the Manager, it is an ALPHA version. Meaning there's a big chance that the Manager might not work at all for you.*
### 📙 Contributing
Thank you for considering contributing to ReVanced Manager.
You can find the contribution guidelines [here](CONTRIBUTING.md).
### 🛠️ Building
To build a ReVanced Manager, you can follow the [documentation](/docs).
### 📄 Documentation
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

@@ -9,21 +9,153 @@
# packages, and plugins designed to encourage good coding practices.
include: package:flutter_lints/flutter.yaml
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
analyzer:
exclude:
- lib/app/app.locator.dart
- lib/app/app.router.dart
- lib/models/patch.g.dart
- lib/models/patched_application.g.dart
# Additional information about this file can be found at
# https://dart.dev/guides/language/analysis-options
linter:
rules:
- 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_names
- 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_api_docs
- package_names
- package_prefixed_library_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_mixin # Has false positives, see https://github.com/dart-lang/linter/issues/3018
- 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
- prefer_void_to_null
- 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
- unsafe_html
- 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

3
android/Gemfile Normal file
View File

@@ -0,0 +1,3 @@
source "https://rubygems.org"
gem "fastlane"

View File

@@ -1,3 +1,9 @@
plugins {
id "com.android.application"
id "kotlin-android"
id "dev.flutter.flutter-gradle-plugin"
}
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
@@ -6,11 +12,6 @@ if (localPropertiesFile.exists()) {
}
}
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'
@@ -21,46 +22,90 @@ 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
compileSdk 34
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = '11'
jvmTarget = '17'
}
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
defaultConfig {
applicationId "app.revanced.manager.flutter"
minSdkVersion 21
targetSdkVersion 33
minSdk 26
targetSdk 34
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}
buildTypes {
release {
ndk {
abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86_64'
}
if (System.getenv("signingKey") != null) {
signingConfigs {
create("release") {
storeFile = file(System.getenv("signingKey"))
storePassword = System.getenv("keyStorePassword")
keyAlias = System.getenv("keyAlias")
keyPassword = System.getenv("keyPassword")
}
}
signingConfig = signingConfigs.release
resValue "string", "app_name", "ReVanced Manager"
applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "revanced-manager-v${flutterVersionName}.apk"
}
}
} else {
signingConfig = signingConfigs.debug
resValue "string", "app_name", "ReVanced Manager Debug"
applicationIdSuffix ".debug"
}
}
debug {
shrinkResources false
minifyEnabled false
resValue "string", "app_name", "ReVanced Manager Debug"
applicationIdSuffix ".debug"
signingConfig signingConfigs.debug
ndk {
abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86_64'
}
}
profile {
shrinkResources false
minifyEnabled false
resValue "string", "app_name", "ReVanced Manager Profile"
applicationIdSuffix ".profile"
signingConfig signingConfigs.debug
ndk {
abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86_64'
}
}
}
packagingOptions {
jniLibs {
useLegacyPackaging true
excludes += ['/prebuilt/**']
}
resources {
excludes += ['/prebuilt/**']
}
}
packagingOptions {
exclude '/prebuilt/**'
}
namespace 'app.revanced.manager.flutter'
}
kotlin {
jvmToolchain(17)
}
flutter {
@@ -68,12 +113,7 @@ flutter {
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
// ReVanced
implementation "app.revanced:revanced-patcher:4.4.0"
// Signing & aligning
implementation("org.bouncycastle:bcpkix-jdk15on:1.70")
implementation("com.android.tools.build:apksig:7.2.2")
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.4") // https://pub.dev/packages/flutter_local_notifications#gradle-setup
implementation("app.revanced:revanced-patcher:19.3.1")
implementation("app.revanced:revanced-library:2.2.1")
}

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

@@ -0,0 +1,21 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.kts.kts.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
-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.**

View File

@@ -1,4 +1,3 @@
<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">
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>

View File

@@ -1,18 +1,33 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="app.revanced.manager.flutter">
<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.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<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.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:largeHeap="true"
android:requestLegacyExternalStorage="true"
android:enableOnBackInvokedCallback="true">
<activity
android:name=".MainActivity"
android:exported="true"
@@ -22,14 +37,17 @@
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>
<activity
android:name=".ExportSettingsActivity"
android:exported="true">
</activity>
<meta-data
android:name="flutterEmbedding"
android:value="2" />
@@ -42,5 +60,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>

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,83 @@
package app.revanced.manager.flutter
import android.app.Activity
import android.content.Context
import android.content.Intent
import android.content.pm.PackageInfo
import android.content.pm.PackageManager
import android.os.Bundle
import android.util.Base64
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)
val callingPackageName = getCallingPackage()!!
if (getFingerprint(callingPackageName) == getFingerprint(getPackageName())) {
// 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,78 +1,197 @@
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.PatchBundleLoader
import app.revanced.patcher.PatchSet
import app.revanced.patcher.Patcher
import app.revanced.patcher.PatcherOptions
import app.revanced.patcher.extensions.PatchExtensions.patchName
import app.revanced.patcher.logging.Logger
import app.revanced.patcher.util.patch.impl.DexPatchBundle
import dalvik.system.DexClassLoader
import app.revanced.patcher.PatcherConfig
import app.revanced.patcher.patch.PatchResult
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: PatchSet
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 resourcePatching = call.argument<Boolean>("resourcePatching")
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 &&
resourcePatching != 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,
resourcePatching,
keyStoreFilePath
options,
tmpDirPath,
keyStoreFilePath,
keystorePassword
)
} else {
result.notImplemented()
} else result.notImplemented()
}
"stopPatcher" -> {
cancel = true
stopResult = result
}
"getPatches" -> {
val patchBundleFilePath = call.argument<String>("patchBundleFilePath")!!
val cacheDirPath = call.argument<String>("cacheDirPath")!!
try {
val patchBundleFile = File(patchBundleFilePath)
patchBundleFile.setWritable(false)
patches = PatchBundleLoader.Dex(
patchBundleFile,
optimizedDexDirectory = File(cacheDirPath)
)
} catch (ex: Exception) {
return@setMethodCallHandler result.notImplemented()
} catch (err: Error) {
return@setMethodCallHandler result.notImplemented()
}
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 { compatiblePackage ->
val compatiblePackageJson = JSONObject().apply {
put("name", compatiblePackage.name)
put(
"versions",
JSONArray().apply {
compatiblePackage.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("valueType", option.valueType)
}.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()
@@ -80,220 +199,222 @@ class MainActivity : FlutterActivity() {
}
}
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,
resourcePatching: 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)
val outFile = File(outFilePath)
val integrations = File(integrationsPath)
val keyStoreFile = File(keyStoreFilePath)
val patches = DexPatchBundle(
patchBundleFilePath,
DexClassLoader(
patchBundleFilePath,
cacheDirPath,
null,
javaClass.classLoader
)
).loadPatches().filter { patch -> selectedPatches.any { it == patch.patchName } }
val tmpDir = File(tmpDirPath)
Thread {
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,
resourcePatching,
Aapt.binary(applicationContext).absolutePath,
cacheDirPath,
logger = ManagerLogger()
)
)
handler.post {
installerChannel.invokeMethod(
"update",
mapOf("progress" to 0.3, "header" to "", "log" to "")
)
}
if (mergeIntegrations) {
fun updateProgress(progress: Double, header: String, log: String) {
handler.post {
installerChannel.invokeMethod(
"update",
mapOf(
"progress" to 0.4,
"header" to "Merging integrations...",
"log" to "Merging integrations"
"progress" to progress,
"header" to header,
"log" to log
)
)
}
patcher.addFiles(listOf(integrations)) {}
}
handler.post {
installerChannel.invokeMethod(
"update",
mapOf(
"progress" to 0.5,
"header" to "Applying patches...",
"log" to ""
)
)
fun postStop() = handler.post { stopResult!!.success(null) }
fun cancel(block: () -> Unit = {}): Boolean {
if (cancel) {
block()
postStop()
}
return cancel
}
patcher.addPatches(patches)
patcher.applyPatches().forEach { (patch, res) ->
if (res.isSuccess) {
val msg = "[success] $patch"
handler.post {
installerChannel.invokeMethod(
"update",
mapOf(
"progress" to 0.5,
"header" to "",
"log" to msg
)
)
// Setup logger
Logger.getLogger("").apply {
handlers.forEach {
it.close()
removeHandler(it)
}
object : java.util.logging.Handler() {
override fun publish(record: LogRecord) {
if (record.loggerName?.startsWith("app.revanced") != true || cancel) return
updateProgress(-1.0, "", record.message)
}
return@forEach
}
val msg = "[error] $patch:" + res.exceptionOrNull()!!
handler.post {
installerChannel.invokeMethod(
"update",
mapOf("progress" to 0.5, "header" to "", "log" to msg)
)
}
override fun flush() = Unit
override fun close() = flush()
}.let(::addHandler)
}
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 {
updateProgress(0.0, "Reading APK...", "Reading APK")
handler.post {
installerChannel.invokeMethod(
"update",
mapOf(
"progress" to 1.0,
"header" to "Finished!",
"log" to "Finished!"
val patcher = Patcher(
PatcherConfig(
inFile,
tmpDir,
Aapt.binary(applicationContext).absolutePath,
tmpDir.path,
true // TODO: Add option to disable this
)
)
if (cancel(patcher::close)) return@Thread
updateProgress(0.02, "Loading patches...", "Loading patches")
val patches = patches.filter { patch ->
val isCompatible = patch.compatiblePackages?.any {
it.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 {
patcher.apply {
acceptIntegrations(setOf(integrations))
acceptPatches(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.apply(false).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.sign(
inFile,
outFile,
ApkUtils.SigningOptions(
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"
)
}
}
handler.post { result.success(null) }
}
.start()
}.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) {
handler.post {
installerChannel.invokeMethod(
"update",
mapOf("progress" to -1.0, "header" to "", "log" to msg)
)
}
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.

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: 4.4 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
the Flutter engine draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
<item name="android:windowSplashScreenAnimatedIcon">@drawable/ic_launcher_round</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Flutter UI initializes, as well as behind your Flutter UI while its
running.
This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
</style>
</resources>

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
the Flutter engine draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
<item name="android:windowSplashScreenAnimatedIcon">@drawable/ic_launcher_round</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Flutter UI initializes, as well as behind your Flutter UI while its
running.
This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
</style>
</resources>

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,3 @@
<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">
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>

View File

@@ -1,36 +1,27 @@
buildscript {
ext.kotlin_version = '1.7.10'
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")
// A repository must be speficied for some reason. "registry" is a dummy.
url = uri("https://maven.pkg.github.com/revanced/registry")
credentials {
username = (project.findProperty("gpr.user") ?: System.getenv("GITHUB_ACTOR")) as String
password = (project.findProperty("gpr.key") ?: System.getenv("GITHUB_TOKEN")) as String
username = project.findProperty("gpr.user") as String ?: System.getenv("GITHUB_ACTOR")
password = project.findProperty("gpr.key") as String ?: System.getenv("GITHUB_TOKEN")
}
}
mavenLocal()
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(':app')
}
task clean(type: Delete) {
tasks.register("clean", Delete) {
delete rootProject.buildDir
}

View File

@@ -1,3 +1,8 @@
org.gradle.jvmargs=-Xmx1536M
org.gradle.jvmargs=-Xmx1536M -XX:+UseParallelGC
org.gradle.parallel=true
org.gradle.daemon=true
org.gradle.caching=true
android.useAndroidX=true
android.enableJetifier=true
android.defaults.buildfeatures.buildconfig=true
android.nonTransitiveRClass=false
android.nonFinalResIds=false

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=544c35d6bd849ae8a5ed0bcea39ba677dc40f49df7d1835561582da2009b961d
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

View File

@@ -1,11 +1,25 @@
include ':app'
pluginManagement {
def flutterSdkPath = {
def properties = new Properties()
file("local.properties").withInputStream { properties.load(it) }
def flutterSdkPath = properties.getProperty("flutter.sdk")
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
return flutterSdkPath
}
settings.ext.flutterSdkPath = flutterSdkPath()
def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
def properties = new Properties()
includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle")
assert localPropertiesFile.exists()
localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
repositories {
google()
mavenCentral()
}
}
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"
plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
id "com.android.application" version "8.4.1" apply false
id "org.jetbrains.kotlin.android" version "2.0.0" apply false
}
include ":app"

14
assets/i18n/README.md Normal file
View File

@@ -0,0 +1,14 @@
# Nuke:tm:
> ![CAUTION]
> Some of the code are licensed under BSD 3-Clause License, please check inside the code file for more information.
## Usage
Move to your desire directory and run
```bash
dart nuke.dart
```
and it will remove all the empty keys from the JSON files in the current folder.

View File

@@ -1,144 +0,0 @@
{
"okButton": "OK",
"cancelButton": "Cancel",
"enabledLabel": "Enabled",
"disabledLabel": "Disabled",
"yesLabel": "Yes",
"noLabel": "No",
"navigationView": {
"dashboardTab": "Dashboard",
"patcherTab": "Patcher",
"settingsTab": "Settings"
},
"homeView": {
"widgetTitle": "Dashboard",
"updatesSubtitle": "Updates",
"patchedSubtitle": "Patched Applications",
"updatesAvailable": "Updates Available",
"noUpdates": "No updates available",
"noInstallations": "No patched applications installed",
"installed": "Installed",
"updateDialogTitle": "Update",
"updateDialogText": "Are you sure you want to download and update Manager?",
"notificationTitle": "ReVanced Manager was updated!",
"notificationText": "Tap to open the app",
"downloadingMessage": "Downloading update!",
"installingMessage": "Installing update... Hang on!",
"errorDownloadMessage": "Unable to download update!",
"errorInstallMessage": "Unable to download update!",
"noConnection": "No internet connection"
},
"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",
"patchDialogTitle": "Warning",
"patchDialogText": "You have selected a resource patch and a split APK installation was detected so patching errors can occur.\nAre you sure you want to proceed with patching a split base APK?"
},
"appSelectorCard": {
"widgetTitle": "Select application",
"widgetTitleSelected": "Selected application",
"widgetSubtitle": "No application selected.",
"noAppsLabel": "No applications found."
},
"patchSelectorCard": {
"widgetTitle": "Select patches",
"widgetTitleSelected": "Selected patches",
"widgetSubtitle": "Select an application first.",
"widgetEmptySubtitle": "No patches selected."
},
"socialMediaCard": {
"widgetTitle": "Social Media",
"widgetSubtitle": "We are online!"
},
"appSelectorView": {
"searchBarHint": "Search applications",
"storageButton": "Storage",
"errorMessage": "Unable to use selected application."
},
"patchesSelectorView": {
"searchBarHint": "Search patches",
"doneButton": "Done"
},
"patchItem": {
"unsupportedWarningButton": "Unsupported version",
"unsupportedDialogTitle": "Warning",
"unsupportedDialogText": "Selecting this patch may or may not result in patching errors.\n\nApp version: {packageVersion}\nCurrent supported versions:\n{supportedVersions}"
},
"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",
"shareLogMenuOption": "Share log"
},
"settingsView": {
"widgetTitle": "Settings",
"appearanceSectionTitle": "Appearance",
"patcherSectionTitle": "Patcher",
"teamSectionTitle": "Team",
"infoSectionTitle": "Info",
"darkThemeLabel": "Dark Mode",
"darkThemeHint": "Welcome to the Dark Side",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Enjoy an experience closer to your device",
"languageLabel": "Language",
"englishOption": "English",
"frenchOption": "French",
"sourcesLabel": "Sources",
"sourcesLabelHint": "Configure your custom sources",
"orgPatchesLabel" : "Patches Org",
"sourcesPatchesLabel" : "Patches Source",
"orgIntegrationsLabel": "Integrations Org",
"sourcesIntegrationsLabel": "Integrations Source",
"sourcesResetDialogTitle": "Reset",
"sourcesResetDialogText": "Are you sure you want to reset custom sources to their default values?",
"contributorsLabel": "Contributors",
"contributorsHint": "A list of contributors of ReVanced",
"logsLabel": "Logs",
"logsHint": "Share device debug logs",
"aboutLabel": "About",
"snackbarMessage": "Copied to clipboard"
},
"appInfoView": {
"widgetTitle": "App Info",
"openButton": "Open",
"uninstallButton": "Uninstall",
"patchButton": "Patch",
"uninstallDialogTitle": "Uninstall",
"uninstallDialogText": "Are you sure you want to uninstall this app?",
"rootDialogTitle": "Error",
"rootDialogText": "App was installed with root mode enabled but currently root mode is disabled.\nPlease enable root mode first.",
"packageNameLabel": "Package Name",
"installTypeLabel": "Installation Type",
"rootTypeLabel": "Root",
"nonRootTypeLabel": "Non-root",
"patchedDateLabel": "Patched Date",
"patchedDateHint": "{date} at {time}",
"appliedPatchesLabel": "Applied Patches",
"appliedPatchesHint": "{quantity} applied patches"
},
"contributorsView": {
"widgetTitle": "Contributors",
"patcherContributors": "Patcher Contributors",
"patchesContributors": "Patches Contributors",
"integrationsContributors": "Integrations Contributors",
"cliContributors": "CLI Contributors",
"managerContributors": "Manager Contributors"
}
}

79
assets/i18n/nuke.dart Normal file
View File

@@ -0,0 +1,79 @@
// ignore_for_file: avoid_print
import 'dart:convert';
import 'dart:io';
T? removeBlankEntries<T>(T? json) {
// This function is protected by BSD 3-Clause License
// Changes made to this section are allow removing of '' values from JSON
/*
https://pub.dev/documentation/swiss_knife/latest/swiss_knife/removeEmptyEntries.html
Copyright 2014, the Dart project authors. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
if (json == null) {
return null;
}
if (json is List) {
json.removeWhere((e) => e == null);
json.forEach(removeBlankEntries);
} else if (json is Map) {
json.removeWhere(
(key, value) => key == null || value == null || value == '',
);
json.values.forEach(removeBlankEntries);
}
return json;
}
Future<void> processJsonFiles() async {
final Directory directory = Directory.current;
final List<FileSystemEntity> files = directory.listSync();
for (final file in files) {
try {
if (file is File && file.path.endsWith('.json')) {
final String contents = await file.readAsString();
final dynamic json = jsonDecode(contents);
final dynamic processedJson = removeBlankEntries(json);
file.writeAsString(
const JsonEncoder.withIndent(' ').convert(processedJson),
);
print('🥞 Task successful on: ${file.path}');
}
} catch (e) {
print('💥 Task failed on: ${file.path}: $e');
}
}
}
void main() async {
processJsonFiles();
}

293
assets/i18n/strings.i18n.json Executable file
View File

@@ -0,0 +1,293 @@
{
"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",
"armv7WarningDialogText": "Patching on ARMv7 devices is not yet supported and might fail. Continue anyways?",
"removedPatchesWarningDialogText": "The following patches have been removed since the last time you used them.\n\n${patches}\n\nContinue anyways?",
"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 and ReVanced Integrations",
"sourcesIntegrationsLabel": "Integrations source",
"useAlternativeSources": "Use alternative sources",
"useAlternativeSourcesHint": "Use alternative sources for ReVanced Patches and ReVanced Integrations instead of the API",
"sourcesResetDialogTitle": "Reset",
"sourcesResetDialogText": "Are you sure you want to reset your sources to their default values?",
"apiURLResetDialogText": "Are you sure you want to reset your API URL to its default value?",
"sourcesUpdateNote": "Note: This will automatically download ReVanced Patches and ReVanced Integrations from the alternative sources.\n\nThis will connect you to the alternative source.",
"apiURLLabel": "API URL",
"apiURLHint": "Configure the API URL of ReVanced Manager",
"selectApiURL": "API URL",
"orgPatchesLabel": "Patches organization",
"sourcesPatchesLabel": "Patches source",
"orgIntegrationsLabel": "Integrations organization",
"contributorsLabel": "Contributors",
"contributorsHint": "A list of contributors of ReVanced",
"logsLabel": "Share logs",
"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",
"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",
"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\nContact the developer of the app and ask for support.",
"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

@@ -0,0 +1,304 @@
{
"okButton": "موافق",
"cancelButton": "إلغاء",
"dismissButton": "تجاهل",
"quitButton": "إنهاء",
"updateButton": "تحديث",
"enabledLabel": "مفعّل",
"disabledLabel": "معطّل",
"installed": "المثبّت: ${version}",
"suggested": "المقترح: ${version}",
"yesButton": "نعم",
"noButton": "لا",
"warning": "تحذير",
"options": "الخيارات",
"notice": "تنويه",
"noShowAgain": "لا تعرض هذا مرة أخرى",
"add": "إضافة",
"remove": "إزالة",
"showChangelogButton": "عرض سجل التغييرات",
"showUpdateButton": "عرض التحديث",
"navigationView": {
"dashboardTab": "لوحة التحكم",
"patcherTab": "المعدّل",
"settingsTab": "الإعدادات"
},
"homeView": {
"refreshSuccess": "تم التحديث بنجاح",
"widgetTitle": "لوحة التحكم",
"updatesSubtitle": "تحديثات",
"patchedSubtitle": "التطبيقات المعدلة",
"changeLaterSubtitle": "يمكنك تغيير هذا في الإعدادات في وقت لاحق.",
"noUpdates": "لا توجد تحديثات متاحة",
"WIP": "العمل قيد التنفيذ...",
"noInstallations": "لا توجد تطبيقات معدلة مثبتة",
"installUpdate": "هل تريد الاستمرار في تثبيت التحديث؟",
"updateSheetTitle": "تحديث ReVanced Manager",
"updateDialogTitle": "تحديث جديد متوفر",
"updatePatchesSheetTitle": "تحديث تعديلات ReVanced",
"updateChangelogTitle": "سجل التغييرات",
"updateDialogText": "يتوفر تحديث جديد لـ ${file}.\n\nالإصدار المثبت حاليًا هو ${version}.",
"downloadConsentDialogTitle": "تنزيل الملفات اللازمة؟",
"downloadConsentDialogText": "يحتاج مدير ReVanced إلى تنزيل الملفات اللازمة ليعمل بشكل صحيح.",
"downloadConsentDialogText2": "سيؤدي هذا إلى توصيلك بـ ${url}.",
"checkUpdateDialogTitle": "التحقق من توفر تحديثات؟",
"checkUpdateDialogText": "هل تريد أن يقوم مدير ReVanced بالتحقق من توفر تحديثات تلقائيًا؟",
"notificationTitle": "تم تنزيل التحديث",
"notificationText": "اضغط لتثبيت التحديث",
"downloadingMessage": "جارٍ تنزيل التحديث...",
"downloadedMessage": "تم تنزيل التحديث",
"installingMessage": "جارٍ تثبيت التحديث...",
"errorDownloadMessage": "تعذر تنزيل التحديث",
"errorInstallMessage": "تعذّر تثبيت التحديث",
"noConnection": "لا يوجد اتصال بالإنترنت",
"updatesDisabled": "تحديث تطبيق تم تعديله معطل حاليًا. أعد تعديل التطبيق مرة أخرى."
},
"applicationItem": {
"infoButton": "معلومات"
},
"latestCommitCard": {
"loadingLabel": "جارٍ التحميل...",
"timeagoLabel": "منذ ${time}",
"patcherLabel": "المعدل: ",
"managerLabel": "المدير: ",
"updateButton": "تحديث المدير"
},
"patcherView": {
"widgetTitle": "المُعَّدِّل",
"patchButton": "تعديل",
"armv7WarningDialogText": "التعديل على أجهزة ARMv7 غير مدعوم حتى الآن وقد يفشل. هل تريد المتابعة على أي حال؟",
"removedPatchesWarningDialogText": "تم إزالة التعديلات التالية منذ آخر مرة استخدمتها فيها.\n\n${patches}\n\nتابع على أي حال؟",
"requiredOptionDialogText": "يجب ضبط بعض خيارات التعديل."
},
"appSelectorCard": {
"widgetTitle": "حدد تطبيق",
"widgetTitleSelected": "التطبيق المحدد",
"widgetSubtitle": "لم يتم تحديد أي تطبيق",
"noAppsLabel": "لم يتم العثور على تطبيقات",
"currentVersion": "الحالي",
"suggestedVersion": "المقترح",
"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": "قيمة هذا الخيار فارغة حاليا",
"resetOptionsTooltip": "إعادة تعيين خيارات التعديل",
"viewTitle": "خيارات التعديل",
"saveOptions": "حفظ",
"addOptions": "إضافة خيارات",
"unselectPatch": "إلغاء تحديد التصحيح",
"tooltip": "المزيد من خيارات الإدخال",
"selectFilePath": "تحديد مسار الملف",
"selectFolder": "تحديد مجلد",
"selectOption": "تحديد خيار",
"requiredOption": "إعداد هذا الخيار مطلوب",
"unsupportedOption": "هذا الخيار غير مدعوم",
"requiredOptionNull": "يجب تعيين الخيارات التالية:\n\n${options}"
},
"patchItem": {
"unsupportedDialogText": "قد يؤدي تحديد هذا التعديل إلى حدوث أخطاء في عملية التعديل.\n\nإصدار التطبيق: ${packageVersion}\nالإصدارات المدعومة حاليًا:\n${supportedVersions}",
"unsupportedPatchVersion": "التعديل غير مدعوم لإصدار التطبيق هذا.",
"unsupportedRequiredOption": "يحتوي هذا التعديل على خيار مطلوب لا يدعمه هذا التطبيق",
"patchesChangeWarningDialogText": "يوصى باستخدام تحديد التعديل وخياراته الافتراضية. قد يؤدي تغييرها إلى حدوث مشكلات غير متوقعة.\n\nستحتاج إلى تشغيل \"السماح بتغيير تحديد التعديل\" في الإعدادات قبل تغيير أي تحديد تعديل.",
"patchesChangeWarningDialogButton": "استخدام التحديد الافتراضي"
},
"installerView": {
"widgetTitle": "المثبت",
"installType": "تحديد نوع التثبيت",
"installTypeDescription": "تحديد نوع التثبيت للمتابعة.",
"installButton": "تثبيت",
"installRootType": "Mount",
"installNonRootType": "عادي",
"warning": "قم بتعطيل التحديثات التلقائية للتطبيق المعدل لتجنب المشكلات غير المتوقعة.",
"pressBackAgain": "اضغط رجوع مرة اخرى للإلغاء",
"openButton": "فتح",
"shareButton": "شارك مِلَفّ",
"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": "تم تحديث اللغة",
"englishOption": "English",
"sourcesLabel": "مصادر بديلة",
"sourcesLabelHint": "قم بتكوين المصادر البديلة لتعديلات ReVanced وتكاملات ReVanced",
"sourcesIntegrationsLabel": "مصدر الـدمج",
"useAlternativeSources": "استخدام مصادر بديلة",
"useAlternativeSourcesHint": "استخدم مصادر بديلة لتعديلات ReVanced وعمليات التكامل ReVanced بدلاً من API",
"sourcesResetDialogTitle": "إعادة التعيين",
"sourcesResetDialogText": "هل أنت متأكد من أنك تريد إعادة تعيين المصادر الخاصة بك إلى قيمها الافتراضية؟",
"apiURLResetDialogText": "هل أنت متأكد من أنك تريد إعادة تعيين رابط API الخاص بك إلى قيمته الافتراضية؟",
"sourcesUpdateNote": "ملاحظة: سيؤدي هذا إلى تنزيل تعديلات ReVanced وتكاملات ReVanced تلقائيًا من المصادر البديلة.\n\nسيؤدي هذا إلى توصيلك بالمصدر البديل.",
"apiURLLabel": "رابط API",
"apiURLHint": "تكوين عنوان URL لواجهة برمجة التطبيقات الخاصة بـ ReVanced Manager",
"selectApiURL": "رابط API",
"orgPatchesLabel": "تنظيم التعديلات",
"sourcesPatchesLabel": "مصدر التعديلات",
"orgIntegrationsLabel": "تنظيم الدمج",
"contributorsLabel": "المساهمون",
"contributorsHint": "قائمة المساهمين في ReVanced",
"logsLabel": "مشاركة السجلات",
"logsHint": "مشاركة سجلات ReVanced Manager",
"enablePatchesSelectionLabel": "السماح بتغيير تحديد التعديل",
"enablePatchesSelectionHint": "لا تمنع تحديد أو إلغاء تحديد التعديلات",
"enablePatchesSelectionWarningText": "قد يؤدي تغيير تحديد التعديلات إلى حدوث مشكلات غير متوقعة.\n\nهل تريد التمكين على أي حال؟",
"disablePatchesSelectionWarningText": "أنت على وشك تعطيل تغيير تحديد التعديلات.\nستتم استعادة التحديد الافتراضي للتعديلات.\n\nهل تريد التعطيل على أي حال؟",
"autoUpdatePatchesLabel": "تحديث التعديلات تلقائيًا",
"autoUpdatePatchesHint": "تحديث التعديلات تلقائيًا إلى الإصدار الأحدث",
"showUpdateDialogLabel": "عرض مربع حوار التحديث",
"showUpdateDialogHint": "عرض مربع حوار عندما يتوفر تحديث جديد",
"universalPatchesLabel": "عرض التعديلات العامة",
"universalPatchesHint": "عرض جميع التطبيقات والتعديلات العامة (قد تؤدي إلى إبطاء قائمة التطبيقات)",
"versionCompatibilityCheckLabel": "التحقق من توافق الإصدار",
"versionCompatibilityCheckHint": "منع تحديد التعديلات غير المتوافقة مع إصدار التطبيق المحدد",
"requireSuggestedAppVersionLabel": "يتطلب إصدار التطبيق المقترح",
"requireSuggestedAppVersionHint": "منع تحديد تطبيق بإصدار غير المقترح",
"requireSuggestedAppVersionDialogText": "قد يؤدي تحديد تطبيق ليس هو الإصدار المقترح إلى حدوث مشكلات غير متوقعة.\n\nهل تريد المتابعة على أية حال؟",
"aboutLabel": "لمحة",
"snackbarMessage": "نُسِخ إلى الحافظة",
"restartAppForChanges": "أعد تشغيل التطبيق لتطبيق التغييرات",
"deleteTempDirLabel": "حذف الملفات المؤقتة",
"deleteTempDirHint": "حذف الملفات المؤقتة غير المستخدمة",
"deletedTempDir": "تم حذف الملفات المؤقتة",
"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": "فتح",
"uninstallButton": "إلغاء التثبيت",
"unmountButton": "Unmount",
"rootDialogTitle": "خطأ",
"unmountDialogText": "هل أنت متأكد من أنك تريد Unmount لهذا التطبيق؟",
"uninstallDialogText": "هل أنت متأكد من أنك تريد إلغاء تثبيت هذا التطبيق؟",
"rootDialogText": "تم تثبيت التطبيق بأذونات المستخدم المتميز، لكن ReVanced Manager ليس لديه أذونات حاليًا.\nالرجاء منح أذونات المستخدم المتميز أولاً.",
"packageNameLabel": "اسم الحُزْمَة",
"installTypeLabel": "نوع التثبيت",
"mountTypeLabel": "Mount",
"regularTypeLabel": "عادي",
"patchedDateLabel": "تاريخ التعديل",
"appliedPatchesLabel": "التعديلات المطبقة",
"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اتصل بمطور التطبيق واطلب الدعم.",
"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

@@ -0,0 +1,302 @@
{
"okButton": "Oldu",
"cancelButton": "Ləğv et",
"dismissButton": "Rədd et",
"quitButton": ıxış",
"updateButton": "Yenilə",
"enabledLabel": "Fəaldır",
"disabledLabel": "Sıradan çıxarıldı",
"installed": "Quraşdırılan: ${version}",
"suggested": "Təklif edilən: ${version}",
"yesButton": "Bəli",
"noButton": "Xeyr",
"warning": "Xәbәrdarlıq",
"options": "Seçimlər",
"notice": "Bildiriş",
"noShowAgain": "Bunu təkrar göstərmə",
"add": "Əlavə et",
"remove": "Sil",
"showChangelogButton": "Dəyişiklik jurnalını göstər",
"showUpdateButton": "Güncəlləməni göstər",
"navigationView": {
"dashboardTab": "İdarəetmə lövhəsi",
"patcherTab": "Yamaqlayıcı",
"settingsTab": "Ayarlar"
},
"homeView": {
"refreshSuccess": "Uğurla yeniləndi",
"widgetTitle": "İdarəetmə lövhəsi",
"updatesSubtitle": "Yeniləmələr",
"patchedSubtitle": "Yamaqlanmış tətbiqlər",
"changeLaterSubtitle": "Bunu daha sonra ayarlarda dəyişdirə bilərsiniz.",
"noUpdates": "Güncəlləmə mövcud deyil",
"WIP": "Proses davam edir...",
"noInstallations": "Yamaqlanmış tətbiq quraşdırılmayıb",
"installUpdate": "Yeniləməni quraşdırmağa davam edilsin?",
"updateSheetTitle": "ReVanced Menecerini Güncəllə",
"updateDialogTitle": "Güncəlləmə mövcuddur",
"updatePatchesSheetTitle": "ReVanced yamaqlarını güncəllə",
"updateChangelogTitle": "Dəyişiklik jurnalı",
"updateDialogText": "${file} üçün yeni bir güncəlləmə var.\n\nHazırkı quraşdırılmış versiya: ${version}.",
"downloadConsentDialogTitle": "Lazımi fayllar endirilsin?",
"downloadConsentDialogText": "\"ReVanced Meneceri\"nin düzgün işləməsi üçün lazımi faylları endirməsi lazımdır.",
"downloadConsentDialogText2": "Bu, sizi ${url} ünvanına bağlayacaq.",
"checkUpdateDialogTitle": "Güncəlləmələr yoxlanılsın?",
"checkUpdateDialogText": "\"ReVanced Meneceri\"nin güncəlləmələri avto-yoxlamasını istəyirsiniz?",
"notificationTitle": "Güncəlləmə endirildi",
"notificationText": "Güncəlləməni quraşdırmaq üçün toxunun",
"downloadingMessage": "Yeniləmə yüklənilir...",
"downloadedMessage": "Güncəlləmə endirildi",
"installingMessage": "Yenilə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": {
"infoButton": "Məlumat"
},
"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",
"armv7WarningDialogText": "ARMv7 cihazlarında yamaqlama hələ dəstəklənmir və xəta verə bilər. Yenə də davam edilsin?",
"removedPatchesWarningDialogText": "Aşağıdakı yamaqlar son istifadədən bu yana silindi.\n\n${patches}\n\nYenə də davam edilsin?",
"requiredOptionDialogText": "Bəzi yamaq seçimləri ayarlanmalıdır."
},
"appSelectorCard": {
"widgetTitle": "Bir tətbiq seçin",
"widgetTitleSelected": "Seçilmiş tətbiq",
"widgetSubtitle": "Heç bir tətbiq seçilmədi",
"noAppsLabel": "Heç bir tətbiq tapılmadı",
"currentVersion": "Hazırkı",
"suggestedVersion": "Təklif edilən",
"anyVersion": "Bütün versiyalar"
},
"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",
"storageButton": "Anbar",
"selectFromStorageButton": "Anbardan seç",
"errorMessage": "Seçilmiş tətbiq istifadə edilə bilmir",
"downloadToast": "Endirmə hələ əlçatmazdır",
"requireSuggestedAppVersionDialogText": "Seçdiyiniz tətbiqin versiyası təklif edilən versiya ilə uyuşmur və bu, gözlənilməz problemlərə səbəb ola bilər. Lütfən təklif edilən versiyanı istifadə edin.\n\nSeçilmiş versiya: v${selected}\nTəklif edilən versiya: v${suggested}\n\nYenə də davam etmək üçün, ayarlarda \"Təklif edilən versiyanı tələb et\"i sıradan çıxarda bilərsiniz.",
"featureNotAvailable": "Özəllik tətbiq edilmədi",
"featureNotAvailableText": "Bu tətbiq bölünmüş bir APK-dir və yalnız root icazələri ilə qoşularaq yamaqlana və quraşdırıla bilər. Ancaq, anbar sahəsindən tam APK-ni seçərək yamaqlaya və quraşdıra bilərsiniz."
},
"patchesSelectorView": {
"viewTitle": "Yamaqları seçin",
"searchBarHint": "Yamaqları axtarın",
"universalPatches": "Universal yamaqlar",
"newPatches": "Yeni yamaqlar",
"patches": "Yamaqlar",
"doneButton": "Hazırdır",
"defaultChip": "İlkin",
"defaultTooltip": "Bütün ilkin yamaqları seç",
"noneChip": "Yoxdur",
"noneTooltip": "Yamaqların heç birini seçmə",
"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ı",
"setRequiredOption": "Bəzi yamaqlar seçimlərin ayarlanmasını tələb edir:\n\n${patches}\n\nLütfən davam etməzdən əvvəl onları ayarlayın."
},
"patchOptionsView": {
"customValue": "Özəl dəyər",
"resetOptionsTooltip": "Yamaq seçimlərini sıfırla",
"viewTitle": "Yamaq seçimləri",
"saveOptions": "Saxla",
"addOptions": "Seçim əlavə et",
"deselectPatch": "Yamağı seçmə",
"tooltip": "Daha çox giriş seçimləri",
"selectFilePath": "Fayl yolunu seç",
"selectFolder": "Qovluq seç",
"selectOption": "Seçim et",
"requiredOption": "Bu seçim tələb olunur",
"unsupportedOption": "Bu seçim dəstəklənmir",
"requiredOptionNull": "Aşağıdakı seçimlər ayarlanmalıdır:\n\n${options}"
},
"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, tətbiqin bu versiyası üçün dəstəklənmir.",
"unsupportedRequiredOption": "Bu yamaqda, bu tətbiq tərəfindən dəstəklənməyən və tələb edilən bir seçim var",
"patchesChangeWarningDialogText": "İlkin yamaq seçimi və seçimlərin istifadəsi tövsiyə olunur. Onların dəyişdirilməsi gözlənilməz problemlərlə nəticələnə bilər.\n\nHər hansısa bir yamaq seçimini dəyişdirməzdən əvvəl ayarlarda \"Yamaq seçimini dəyişdirməyə icazə ver\"i işə salmalısınız.",
"patchesChangeWarningDialogButton": "İlkin seçimi istifadə et"
},
"installerView": {
"widgetTitle": "Quraşdırıcı",
"installType": "Quraşdırma növünü seçin",
"installTypeDescription": "Davam etmək üçün quraşdırma növünü seçin.",
"installButton": "Quraşdır",
"installRootType": "Qoş",
"installNonRootType": "Normal",
"warning": "Gözlənilməz problemlərin qarşısını almaq məqsədilə yamaqlanmış tətbiq üçün avto-güncəlləmələri sıradan çıxardın.",
"pressBackAgain": "Ləğv etmək üçün yenidən geri düyməsinə bas",
"openButton": "Aç",
"shareButton": "Faylı paylaş",
"notificationTitle": "ReVanced Menecer yamaqlayır",
"notificationText": "Quraşdırıcıya geri qayıtmaq üçün toxunun",
"exportApkButtonTooltip": "Yamaqlı APK-ni xaricə köçür",
"exportLogButtonTooltip": "Jurnalı xaricə köçür",
"screenshotDetected": "Ekran şəkli silindi. Jurnalı paylaşmağa çalışırsınızsa, lütfən bunun əvəzinə mətnin kopyasını paylaşın.\n\nJurnal lövhəyə kopyalansın?",
"copiedToClipboard": "Jurnal lövhəyə kopyalandı",
"noExit": "Quraşdırıcı hələ də işləyir, çıxış edilə bilməz..."
},
"settingsView": {
"widgetTitle": "Ayarlar",
"appearanceSectionTitle": "Görünüş",
"teamSectionTitle": "Komanda",
"debugSectionTitle": "Sazlama",
"advancedSectionTitle": "Qabaqcıl",
"exportSectionTitle": "Daxilə və xaricə köçür",
"dataSectionTitle": "Data mənbələri",
"themeModeLabel": "Tətbiq teması",
"systemThemeLabel": "Sistem",
"lightThemeLabel": "İşıqlı",
"darkThemeLabel": "Qaranlıq rejim",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Cihazınıza yaxın bir təcrübədən həzz alın",
"languageLabel": "Dil",
"languageUpdated": "Dil güncəlləndi",
"englishOption": "İngiliscə",
"sourcesLabel": "Alternativ mənbələr",
"sourcesLabelHint": "ReVanced Yamaqları və ReVanced İnteqrasiyaları üçün alternativ mənbələri konfiqurasiya edin",
"sourcesIntegrationsLabel": "İnteqrasiya mənbəyi",
"useAlternativeSources": "Alternativ mənbələri istifadə et",
"useAlternativeSourcesHint": "ReVanced Yamaqları və ReVanced İnteqrasiyaları üçün API əvəzinə alternativ mənbələri istifadə et",
"sourcesResetDialogTitle": "Sıfırla",
"sourcesResetDialogText": "Mənbələrinizi ilkin dəyərlərinə sıfırlamaq istədiyinizə əminsiniz?",
"apiURLResetDialogText": "API URL-nizi ilkin dəyərinə sıfırlamaq istədiyinizə əminsiz?",
"sourcesUpdateNote": "Qeyd: Bu, ReVanced Yamaqları və ReVanced İnteqrasiyalarını alternativ mənbələrdən avtomatik olaraq endirəcək.\n\nBu, sizi alternativ mənbəyə bağlayacaq.",
"apiURLLabel": "API URL",
"apiURLHint": "\"ReVacned Manager\"in API URL-sini konfiqurasiya et",
"selectApiURL": "API URL",
"orgPatchesLabel": "Yamaq təşkilatı",
"sourcesPatchesLabel": "Yamaq mənbəyi",
"orgIntegrationsLabel": "İnteqrasiya təşkilatı",
"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 götürülməsi əngəllənməsin",
"enablePatchesSelectionWarningText": "Yamaq seçimini dəyişdirmək gözlənilməz problemlərə səbəb ola bilər.\n\nYenə də fəallaşdırılsın?",
"disablePatchesSelectionWarningText": "Yamaq seçiminin dəyişdirilməsini sıradan çıxartmaq üzrəsiniz.\nİlkin yamaq seçimi bərpa ediləcək.\n\nYenə də sıradan çıxarılsın?",
"autoUpdatePatchesLabel": "Yamaqları avto-güncəllə",
"autoUpdatePatchesHint": "Yamaqları son versiyaya avtomatik güncəllə",
"showUpdateDialogLabel": "Güncəlləmə dialoqunu göstər",
"showUpdateDialogHint": "Yeni güncəlləmə mövcud olduqda bir dialoq pəncərəsi göstər",
"universalPatchesLabel": "Universal yamaqları göstər",
"universalPatchesHint": "Bütün tətbiqləri və universal yamaqları göstər (tətbiqlərin sadalanmasını yavaşlandıra bilər)",
"versionCompatibilityCheckLabel": "Versiya uyumluluq yoxlanışı",
"versionCompatibilityCheckHint": "Seçilmiş tətbiq versiyası ilə uyumlu olmayan yamaqların seçilməsini əngəllə",
"requireSuggestedAppVersionLabel": "Təklif edilən versiyanı tələb et",
"requireSuggestedAppVersionHint": "Təklif edilməyən bir versiyaya sahib olan tətbiqin seçilməsini əngəllə",
"requireSuggestedAppVersionDialogText": "Təklif edilən versiya olmayan bir tətbiqin seçilməsi gözlənilməz problemlər yarada bilər.\n\nYenə də davam etmək istəyirsiniz?",
"aboutLabel": "Haqqında",
"snackbarMessage": "Lövhəyə kopyalandı",
"restartAppForChanges": "Dəyişiklikləri tətbiq etmək üçün tətbiqi yenidən başlat",
"deleteTempDirLabel": "Müvəqqəti faylları sil",
"deleteTempDirHint": "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": "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ərinin sıfırlanması, bütün saxlanılmış seçimləri silir.",
"resetStoredOptions": "Seçimlər sıfırlandı",
"deleteLogsLabel": "Jurnalları təmizlə",
"deleteLogsHint": "Yığılmış 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ə imzalanmış yamaqlanmış tətbiqlər artıq güncəllənə bilməyəcək.",
"regeneratedKeystore": "Keystore yenidən yaradıldı",
"exportKeystoreLabel": "Açar mağazasını xaricə köçür",
"exportKeystoreHint": "Tətbiqləri imzalamaq üçün istifadə olunan keystoru-u xaricə köçür",
"exportedKeystore": "Açar mağazası xaricə köçürüldü",
"noKeystoreExportFileFound": "Xaricə köçürüləcək açar mağazası yoxdur",
"importKeystoreLabel": "Açar mağazasını daxilə köçür",
"importKeystoreHint": "Tətbiqləri imzalamaq üçün istifadə olunan keystoru-u daxilə köçür",
"importedKeystore": "Açar mağazası daxilə köçürüldü",
"selectKeystorePassword": "Keystore parolu",
"selectKeystorePasswordHint": "Tətbiqləri imzalamaq üçün istifadə olunan keystore-u seçin",
"jsonSelectorErrorMessage": "Seçilmiş JSON faylı istifadə edilə bilmir",
"keystoreSelectorErrorMessage": "Seçilmiş keystore faylı istifadə edilə bilmir"
},
"appInfoView": {
"widgetTitle": "Tətbiq məlumatı",
"openButton": "Aç",
"uninstallButton": "Sil",
"unmountButton": "Ayır",
"rootDialogTitle": "Xəta",
"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 verin.",
"packageNameLabel": "Paket adı",
"installTypeLabel": "Quraşdırma növü",
"mountTypeLabel": "Qoş",
"regularTypeLabel": "Normal",
"patchedDateLabel": "Yamaqlama tarixi",
"appliedPatchesLabel": "Tətbiq edilmiş yamaqlar",
"patchedDateHint": "${time} ${date}",
"appliedPatchesHint": "${quantity} tətbiq edilmiş yamaq",
"updateNotImplemented": "Bu özəllik hələ tətbiq olunmayıb"
},
"contributorsView": {
"widgetTitle": "Töhfə verənlər"
},
"installErrorDialog": {
"mount_version_mismatch": "Versiya uyuşmur",
"mount_no_root": "Root müraciəti yoxdur",
"mount_missing_installation": "Quraşdırma tapılmadı",
"status_failure_blocked": "Quraşdırma əngəlləndi",
"install_failed_verification_failure": "Doğrulama uğursuz oldu",
"status_failure_invalid": "Quraşdırma yararsızdır",
"install_failed_version_downgrade": "Köhnə versiyaya keçilə bilmir",
"status_failure_conflict": "Quraşdırma ziddiyəti",
"status_failure_storage": "Quraşdırma anbar sahəsi problemi",
"status_failure_incompatible": "Quraşdırma uyumsuzdur",
"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 bir versiyaya sahib olduğu üçün quraşdırma uğursuz oldu.\n\nQoşduğunuz tətbiqin versiyasını quraşdırıb yenidən sınayın.",
"mount_no_root_description": "Root müraciətinə icazə verilmədiyi üçün quraşdırma uğursuz oldu.\n\n\"ReVanced Manager\"ə root müraciət icazəsini verib yenidən sınayın.",
"mount_missing_installation_description": "Üzərinə qoşulacaq yamaqlanmamış tətbiq bu cihazda quraşdırılmadığı üçün quraşdırma uğursuz oldu.\n\nQoşmazdan əvvəl yamaqlanmamış tətbiqi quraşdırıb yenidən sınayın.",
"status_failure_timeout_description": "Quraşdırmanın bitməsi çox uzun çəkdi.\n\nYenidən sınamaq istəyirsiniz?",
"status_failure_storage_description": "Yetərsiz anbar 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 yararsı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 uyumlu deyil.\n\nTətbiqin tərtibatçısı ilə əlaqə saxlayın və dəstək istəyin.",
"status_failure_conflict_description": "Quraşdırma, tətbiqin mövcud quraşdırmasına görə əngəlləndi.\n\nQuraşdırılmış tətbiqi silib yenidən sınayırsınız?",
"status_failure_blocked_description": "Quraşdırma, ${packageName} tərəfindən əngəlləndi.\n\nGüvənlik ayarlarınızı nizamlayıb yenidən sınayın.",
"install_failed_verification_failure_description": "Doğrulama probleminə görə quraşdırma uğursuz oldu.\n\nGüvənlik ayarlarınızı nizamlayıb yenidən sınayın.",
"install_failed_version_downgrade_description": "Yamaqlanmış tətbiq, quraşdırılmış tətbiqdən daha aşağı versiyaya sahib olduğu üçün quraşdırma uğursuz oldu.\n\nTətbiqi silib yenidən sınayırsınız?",
"status_unknown_description": "Bilinməyən bir səbəbə görə quraşdırma uğursuz oldu. Lütfən yenidən sınayın."
}
}

View File

@@ -0,0 +1,302 @@
{
"okButton": "ОК",
"cancelButton": "Скасаваць",
"dismissButton": "Адхіліць",
"quitButton": "Выйсці",
"updateButton": "Абнавіць",
"enabledLabel": "Уключана",
"disabledLabel": "Адключана",
"installed": "Усталявана: ${version}",
"suggested": "Прапанавана: ${version}",
"yesButton": "Так",
"noButton": "Не",
"warning": "Увага",
"options": "Параметры",
"notice": "Заўвага",
"noShowAgain": "Больш не паказваць",
"add": "Дадаць",
"remove": "Выдаліць",
"showChangelogButton": "Паказаць журнал змяненняў",
"showUpdateButton": "Паказаць абнаўленне",
"navigationView": {
"dashboardTab": "Галоўная",
"patcherTab": "Праграма выпраўлення",
"settingsTab": "Налады"
},
"homeView": {
"refreshSuccess": "Паспяхова абноўлена",
"widgetTitle": "Галоўная",
"updatesSubtitle": "Абнаўленні",
"patchedSubtitle": "Выпраўленыя праграмы",
"changeLaterSubtitle": "Вы можаце змяніць гэта ў наладах пазней.",
"noUpdates": "Няма даступных абнаўленняў",
"WIP": "У працэсе...",
"noInstallations": "Няма ўсталяваных праграм з выпраўленнямі",
"installUpdate": "Працягнуць усталяванне абнаўлення?",
"updateSheetTitle": "Абнавіць ReVanced Manager",
"updateDialogTitle": "Даступна новае абнаўленне",
"updatePatchesSheetTitle": "Абнавіць выпраўленні ReVanced",
"updateChangelogTitle": "Спіс змяненняў",
"updateDialogText": "Даступна новае абнаўленне для ${file}\n\nЦяпер усталявана версія ${version}.",
"downloadConsentDialogTitle": "Спампаваць неабходныя файлы?",
"downloadConsentDialogText": "ReVanced Manager неабходна спампаваць неабходныя файлы для правільнай працы.",
"downloadConsentDialogText2": "Гэта падключыць вас да ${url}.",
"checkUpdateDialogTitle": "Праверыць наяўнасць абнаўленняў?",
"checkUpdateDialogText": "Вы сапраўды хочаце правяраць абнаўленні ReVanced Manager аўтаматычна?",
"notificationTitle": "Абнаўленне спампавана",
"notificationText": "Націсніце, каб усталяваць абнаўленне",
"downloadingMessage": "Спампоўваецца абнаўленне...",
"downloadedMessage": "Абнаўленне спампавана",
"installingMessage": "Усталяванне абнаўлення...",
"errorDownloadMessage": "Немагчыма спампаваць абнаўленне",
"errorInstallMessage": "Немагчыма ўсталяваць абнаўленне",
"noConnection": "Няма злучэння з інтэрнэтам",
"updatesDisabled": "Абнаўленне выпраўленай праграмы ў цяперашні час адключана. Неабходна паўторна ўжыць выпраўленне для праграмы."
},
"applicationItem": {
"infoButton": "Звесткі"
},
"latestCommitCard": {
"loadingLabel": "Загрузка...",
"timeagoLabel": "${time} таму",
"patcherLabel": "Праграма выпраўлення: ",
"managerLabel": "Менеджар: ",
"updateButton": "Абнавіць ReVanced Manager"
},
"patcherView": {
"widgetTitle": "Праграма выпраўлення",
"patchButton": "Выправіць",
"armv7WarningDialogText": "Выпраўленне для прылад на ARMv7 пакуль не падтрымліваецца і можа прывесці да збою. Працягнуць?",
"removedPatchesWarningDialogText": "Наступныя выпраўленні былі выдалены з моманту іх апошняга выкарыстання.\n\n${patches}\n\nУсё роўна працягнуць?",
"requiredOptionDialogText": "Неабходна задаць некаторыя параметры выпраўленняў."
},
"appSelectorCard": {
"widgetTitle": "Выбраць праграму",
"widgetTitleSelected": "Выбраная праграма",
"widgetSubtitle": "Праграма не выбрана",
"noAppsLabel": "Праграмы не знойдзены",
"currentVersion": "Бягучая версія",
"suggestedVersion": "Прапанаваная",
"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": "Уласнае значэнне",
"resetOptionsTooltip": "Скінуць параметры выпраўлення",
"viewTitle": "Параметры выпраўлення",
"saveOptions": "Захаваць",
"addOptions": "Дадаць параметры",
"deselectPatch": "Зняць выбар з выпраўлення",
"tooltip": "Больш уваходных параметраў",
"selectFilePath": "Выбраць шлях да файла",
"selectFolder": "Выбраць папку",
"selectOption": "Выберыце параметр",
"requiredOption": "Абавязковы параметр",
"unsupportedOption": "Гэты параметр не падтрымліваецца",
"requiredOptionNull": "Наступныя параметры павінны быць зададзены:\n\n${options}"
},
"patchItem": {
"unsupportedDialogText": "Выбар гэтага выпраўлення можа прывесці да памылак падчас яго ўжывання.\n\nВерсія праграмы: ${packageVersion}\nВерсіі, якія падтрымліваюцца:\n${supportedVersions}",
"unsupportedPatchVersion": "Выпраўленне не падтрымліваецца гэтай версіяй праграмы.",
"unsupportedRequiredOption": "Гэта выпраўленне змяшчае неабходныя параметры, якія не падтрымліваюцца гэтай праграмай",
"patchesChangeWarningDialogText": "Рэкамендуецца выкарыстоўваць прадвызначаны выбар выпраўлення і параметры. Іх змяненне можа прывесці да нечаканых праблем.\n\nПерад змяненнем выбару выпраўлення, вам неабходна ўключыць параметр \"Дазволіць змяненне выбару выпраўлення\" ў наладах.",
"patchesChangeWarningDialogButton": "Выкарыстоўваць прадвызначаны выбар"
},
"installerView": {
"widgetTitle": "Устаноўшчык праграм",
"installType": "Выберыце тып устаноўкі",
"installTypeDescription": "Выберыце тып устаноўкі для працягу.",
"installButton": "Усталяваць",
"installRootType": "Падключыць",
"installNonRootType": "Звычайны",
"warning": "Адключыць аўтаматычныя абнаўленні для выпраўленых праграм, каб пазбегнуць нечаканых праблем.",
"pressBackAgain": "Націсніце назад яшчэ раз, каб скасаваць",
"openButton": "Адкрыць",
"shareButton": "Абагуліць файл",
"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": "Мова абноўлена",
"englishOption": "Англійская",
"sourcesLabel": "Альтэрнатыўныя крыніцы",
"sourcesLabelHint": "Сканфігурыраваць альтэрнатыўныя крыніцы для ReVanced Patches і ReVanced Integrations",
"sourcesIntegrationsLabel": "Крыніца інтэграцый",
"useAlternativeSources": "Выкарыстоўваць альтэрнатыўныя крыніцы",
"useAlternativeSourcesHint": "Выкарыстоўваць альтэрнатыўныя крыніцы для ReVanced Patches і ReVanced Integrations замест API",
"sourcesResetDialogTitle": "Скінуць",
"sourcesResetDialogText": "Вы сапраўды хочаце скінуць свае крыніцы да іх прадвызначаных значэнняў?",
"apiURLResetDialogText": "Вы сапраўды хочаце скінуць свае API URL да іх прадвызначаных значэнняў?",
"sourcesUpdateNote": "Нататка: Гэта аўтаматычна спампуе ReVanced Patches і ReVanced Integrations з альтэрнатыўных крыніц.\n\nГэта падключыць вас да альтэрнатыўнай крыніцы.",
"apiURLLabel": "API URL",
"apiURLHint": "Сканфігурыруйце URL API для ReVanced Manager",
"selectApiURL": "API URL",
"orgPatchesLabel": "Арганізацыя выпраўленняў",
"sourcesPatchesLabel": "Крыніца выпраўленняў",
"orgIntegrationsLabel": "Арганізацыя інтэграцый",
"contributorsLabel": "Удзельнікі",
"contributorsHint": "Спіс усіх удзельнікаў праекта ReVanced",
"logsLabel": "Абагуліць журнал",
"logsHint": "Абагуліць журнал ReVanced Manager",
"enablePatchesSelectionLabel": "Дазволіць змяненне выбару выпраўлення",
"enablePatchesSelectionHint": "Не прадухіляць выбар або скасаванне выбару выпраўленняў",
"enablePatchesSelectionWarningText": "Змяненне выбару выпраўленняў можа стаць прычынай нечаканых праблем.\n\nУключыць усё роўна?",
"disablePatchesSelectionWarningText": "Вы збіраецеся адключыць змяненне выбару выпраўленняў.\nБудзе адноўлены прадвызначаны выбар выпраўленняў.\n\nАдключыць усё роўна?",
"autoUpdatePatchesLabel": "Аўтаматычнае абнаўленне выпраўленняў",
"autoUpdatePatchesHint": "Аўтаматычна абнаўляць выпраўленні да апошняй версіі",
"showUpdateDialogLabel": "Паказваць акно абнаўлення",
"showUpdateDialogHint": "Паказваць акно, калі даступна новае абнаўленне",
"universalPatchesLabel": "Паказваць універсальныя выпраўленні",
"universalPatchesHint": "Адлюстраваць усе праграмы і ўніверсальныя выпраўленні (можа запаволіць спіс праграм)",
"versionCompatibilityCheckLabel": "Праверка сумяшчальнасці версіі",
"versionCompatibilityCheckHint": "Прадухіляць выбар выпраўленняў, якія несумяшчальныя з выбранай версіяй праграмы",
"requireSuggestedAppVersionLabel": "Запыт прапанаванай версіі праграмы",
"requireSuggestedAppVersionHint": "Прадухіляць выбар праграмы з не прапанаванай версіяй",
"requireSuggestedAppVersionDialogText": "Выбар праграмы не прапанаванай версіі можа стаць прычынай нечаканых праблем.\n\nВы ўсё роўна хочаце працягнуць?",
"aboutLabel": "Пра праграму",
"snackbarMessage": "Скапіявана ў буфер абмену",
"restartAppForChanges": "Перазапусціце праграму, каб ужыць змены",
"deleteTempDirLabel": "Выдаліць часовыя файлы",
"deleteTempDirHint": "Выдаліць нявыкарыстаныя часовыя файлы",
"deletedTempDir": "Часовыя файлы выдалены",
"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": "Адкрыць",
"uninstallButton": "Выдаліць",
"unmountButton": "Адключыць",
"rootDialogTitle": "Памылка",
"unmountDialogText": "Вы сапраўды хочаце адключыць гэту праграму?",
"uninstallDialogText": "Вы сапраўды хочаце выдаліць гэту праграму?",
"rootDialogText": "Праграма ўсталявана з правамі суперкарыстальніка, але ў цяперашні час у ReVanced Manager адсутнічаюць такія правы.\nСпачатку дайце праграме правы суперкарыстальніка.",
"packageNameLabel": "Назва пакета",
"installTypeLabel": "Тып усталявання",
"mountTypeLabel": "Падключыць",
"regularTypeLabel": "Звычайны",
"patchedDateLabel": "Дата выпраўлення",
"appliedPatchesLabel": "Ужытыя выпраўленні",
"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Звяжыцеся з пастаўшчыком праграмы, каб атрымаць дадатковыя звесткі.",
"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

@@ -0,0 +1,302 @@
{
"okButton": "Ок",
"cancelButton": "Отказ",
"dismissButton": "Отхвърли",
"quitButton": "Изход",
"updateButton": "Актуализация",
"enabledLabel": "Активирано",
"disabledLabel": "Деактивирано",
"installed": "Инсталирана версия: ${version}",
"suggested": "Предложена версия: ${version}",
"yesButton": "Да",
"noButton": "Не",
"warning": "Внимание",
"options": "Опции",
"notice": "Известие",
"noShowAgain": "Не показвай повече",
"add": "Добави",
"remove": "Премахни",
"showChangelogButton": "Покажи промените",
"showUpdateButton": "Покажи обновяванията",
"navigationView": {
"dashboardTab": "Табло за управление",
"patcherTab": "Пачър",
"settingsTab": "Настройки"
},
"homeView": {
"refreshSuccess": "Успешно обновяване",
"widgetTitle": "Табло за управление",
"updatesSubtitle": "Актуализации",
"patchedSubtitle": "Модифицирани приложения",
"changeLaterSubtitle": "Можете да промените това в настройките на по-късен етап.",
"noUpdates": "Няма налични актуализации",
"WIP": "В процес на разработка...",
"noInstallations": "Няма инсталирани модифицирани приложения",
"installUpdate": "Продължете към инсталирането на актуализациите?",
"updateSheetTitle": "Актуализирай ReVanced Manager",
"updateDialogTitle": "Налична е нова актуализация",
"updatePatchesSheetTitle": "Актуализирай ReVanced модификациите",
"updateChangelogTitle": "Списък с промени",
"updateDialogText": "Налична е актуализация за ${file}.\n\nНастоящата инсталирана версия е ${version}.",
"downloadConsentDialogTitle": "Да се изтеглят ли необходимите файлове?",
"downloadConsentDialogText": "ReVanced Manager трябва да изтегли необходими файлове, за да работи правилно.",
"downloadConsentDialogText2": "Това ще ви свърже към ${url}.",
"checkUpdateDialogTitle": "Да се провери ли за актуализации?",
"checkUpdateDialogText": "Бихте ли желали ReVanced Manager автоматично да проверява за актуализации?",
"notificationTitle": "Актуализацията е изтеглена",
"notificationText": "Натиснете за да инсталирате актуализацията",
"downloadingMessage": "Изтегляне на актуализация...",
"downloadedMessage": "Актуализацията е изтеглена",
"installingMessage": "Инсталиране на актуализация...",
"errorDownloadMessage": "Свалянето на актуализацията не беше успешно",
"errorInstallMessage": "Инсталирането на актуализацията не беше успешно",
"noConnection": "Няма връзка с интернет",
"updatesDisabled": "Актуализацията на модифицирани приложения в момента не работи. Модифицирайте приложението наново."
},
"applicationItem": {
"infoButton": "Информация"
},
"latestCommitCard": {
"loadingLabel": "Зареждане...",
"timeagoLabel": "Преди ${time}",
"patcherLabel": "Модификатор: ",
"managerLabel": "Мениджър: ",
"updateButton": "Обнови ReVanced Manager"
},
"patcherView": {
"widgetTitle": "Модификатор",
"patchButton": "Модифицирайте",
"armv7WarningDialogText": "Все още не се поддържат модификации за ARMv7 устройства. Продължете въпреки това?",
"removedPatchesWarningDialogText": "Следните модификации са били премахнати след като са били употребени за последно от вас.\n\n${patches}\n\nПродължете въпреки това?",
"requiredOptionDialogText": "Опциите на някои модификации трябва да бъдат зададени."
},
"appSelectorCard": {
"widgetTitle": "Изберете приложение",
"widgetTitleSelected": "Избрани приложения",
"widgetSubtitle": "Няма избрано приложение",
"noAppsLabel": "Няма намерени приложения",
"currentVersion": "Текуща",
"suggestedVersion": "Препоръчана",
"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": "Стойност по избор",
"resetOptionsTooltip": "Нулиране опциите на модификациите",
"viewTitle": "Опции за модификациите",
"saveOptions": "Запази",
"addOptions": "Добави опции",
"deselectPatch": "Отмяна на всички модификации",
"tooltip": "Повече опции за въвеждане",
"selectFilePath": "Изберете път към файла",
"selectFolder": "Изберете папка",
"selectOption": "Изберете опция",
"requiredOption": "Тази опция е задължителна",
"unsupportedOption": "Тази опция не се поддържа",
"requiredOptionNull": "Следните опции трябва да бъдат зададени:\n\n${options}"
},
"patchItem": {
"unsupportedDialogText": "Изборът на тази модификация може да доведе до грешки.\n\nВерсия: ${packageVersion}\nПоддържани версии: ${supportedVersions}",
"unsupportedPatchVersion": "Модифицирането на избраната версия на приложението не се поддържа.",
"unsupportedRequiredOption": "Настоящата модификация съдържа задължителна опция, която не се поддържа от избраното приложение",
"patchesChangeWarningDialogText": "Препоръчително е да използвате избраните модификации и опции по подразбиране. Всяка промяна може да доведе до неочаквани проблеми.\n\nАко все пак желаете да да промените избраните модификации, първо трябва да изключите \"Позволи промяна в избраните модификации\" от настройките.",
"patchesChangeWarningDialogButton": "Използвайте избора по подразбиране"
},
"installerView": {
"widgetTitle": "Инсталатор",
"installType": "Изберете вида на инсталацията",
"installTypeDescription": "Изберете с кой вид инсталация да продължите.",
"installButton": "Инсталиране",
"installRootType": "Монтирай",
"installNonRootType": "Нормален",
"warning": "Деактивирайте автоматичните актуализации на модифираното приложение, за да избегнете неочаквани проблеми.",
"pressBackAgain": "Натиснете \"назад\" отново, за да откажете",
"openButton": "Отвори",
"shareButton": "Сподели файла",
"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": "Езикът е обновен",
"englishOption": "Английски",
"sourcesLabel": "Алтернативни източници",
"sourcesLabelHint": "Конфигурирайте алтернативните източници за ReVanced Patches и ReVanced Integrations",
"sourcesIntegrationsLabel": "Източник на интеграциите",
"useAlternativeSources": "Използвайте алтернативни източници",
"useAlternativeSourcesHint": "Използвайте алтернативни източници за ReVanced Patches и ReVanced Integrations вместо тези от ППИ-я (API)",
"sourcesResetDialogTitle": "Нулиране",
"sourcesResetDialogText": "Искате ли да възстановите източниците до стойностите им по подразбиране?",
"apiURLResetDialogText": "Сигурни ли сте, че искате да възстановите адреса на ППИ (API) до стойността му по подразбиране?",
"sourcesUpdateNote": "Забележка: Това автоматично ще изтегли ReVanced Patches и ReVanced Integrations от алтернативните източници.\n\nТова ще ви свърже с алтернативния източник.",
"apiURLLabel": "API линк",
"apiURLHint": "Конфигуриране на URL адреса на ППИ (API) на ReVanced Manager",
"selectApiURL": "API линк",
"orgPatchesLabel": "Организация на модификациите",
"sourcesPatchesLabel": "Източник на модификациите",
"orgIntegrationsLabel": "Организация на интеграциите",
"contributorsLabel": "Хора, които допринесоха",
"contributorsHint": "Списък с хората, допринесли за ReVanced",
"logsLabel": "Сподели дневника",
"logsHint": "Споделете дневника на ReVanced Manager",
"enablePatchesSelectionLabel": "Позволи промяна в избраните модификации",
"enablePatchesSelectionHint": "Не предотвратявай избирането или премахването на модификации",
"enablePatchesSelectionWarningText": "Промяната на избора на модификациите може да доведе до неочаквани проблеми.\n\nРазрешавате ли въпреки това?",
"disablePatchesSelectionWarningText": "Предстои да забраните промени в избора на модификации.\nИзбраните модификации по подразбиране ще бъдат възстановени.\n\nЗабранявате ли въпреки това?",
"autoUpdatePatchesLabel": "Автоматична актуализация на модификациите",
"autoUpdatePatchesHint": "Автоматично актуализира модификациите до последната им версия",
"showUpdateDialogLabel": "Показване на диалоговия прозорец за актуализиране",
"showUpdateDialogHint": "Показва диалогов прозорец, когато е налична нова актуализация",
"universalPatchesLabel": "Покажи универсални модификации",
"universalPatchesHint": "Показване на всички приложения и универсални пачове (може да забави списъка с приложения)",
"versionCompatibilityCheckLabel": "Проверка на съвместимост на версиите",
"versionCompatibilityCheckHint": "Предотвратява избирането на модификации, които не са съвместими с избраната версия на приложението",
"requireSuggestedAppVersionLabel": "Изискване на препоръчана версия на приложението",
"requireSuggestedAppVersionHint": "Предотвратяване на избора на приложение с версия, която не е препоръчана",
"requireSuggestedAppVersionDialogText": "Избирането на приложение, чиято версия не е препоръчана, може да доведе до неочаквани проблеми.\n\nИскате ли да продължите все пак?",
"aboutLabel": "Относно",
"snackbarMessage": "Копирано",
"restartAppForChanges": "Рестартирайте приложението, за да се приложат промените",
"deleteTempDirLabel": "Изтриване на временни файлове",
"deleteTempDirHint": "Изтриване на неизползвани временни файлове",
"deletedTempDir": "Временните файлове са изтрити",
"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": "Отвори",
"uninstallButton": "Деинсталирай",
"unmountButton": "Демонтиране",
"rootDialogTitle": "Грешка",
"unmountDialogText": "Сигурни ли сте, че искате да демонтирате това приложение?",
"uninstallDialogText": "Сигурни ли сте, че искате да деиснталирате това приложение?",
"rootDialogText": "Приложението е инсталирано с superuser разрешения, но в момента ReVanced Manager няма разрешения. Моля, първо дайте superuser разрешения.",
"packageNameLabel": "Име на пакета",
"installTypeLabel": "Тип инсталация",
"mountTypeLabel": "Монтиране",
"regularTypeLabel": "Нормален",
"patchedDateLabel": "Дата на модификацията",
"appliedPatchesLabel": "Приложени модификации",
"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Свържете се с разработчика на приложението и поискайте поддръжка.",
"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

@@ -0,0 +1,302 @@
{
"okButton": "ঠিক আছে",
"cancelButton": "বাতিল করুন",
"dismissButton": "বাতিল করুন",
"quitButton": "কাটুন",
"updateButton": "হালনাগাদ করুন",
"enabledLabel": "সক্রিয় রয়েছে",
"disabledLabel": "নিষ্ক্রিয় হয়েছে",
"installed": "ইনস্টলকৃত: ${version}",
"suggested": "প্রস্তাবিত: ${version}",
"yesButton": "হ্যাঁ",
"noButton": "না",
"warning": "সতর্কতা",
"options": "বিকল্পসমূহ",
"notice": "বিজ্ঞপ্তি",
"noShowAgain": "পুনরায় দেখাবেন না",
"add": "যুক্ত করুন",
"remove": "অপসারণ করুন",
"showChangelogButton": "পরিবর্তনসূচী দেখান",
"showUpdateButton": "আপডেট দেখান",
"navigationView": {
"dashboardTab": "ড্যাশবোর্ড",
"patcherTab": "প্যাচার",
"settingsTab": "সেটিংস"
},
"homeView": {
"refreshSuccess": "সফলভাবে রিফ্রেশ করা হয়েছে",
"widgetTitle": "ড্যাশবোর্ড",
"updatesSubtitle": "আপডেটসমূহ",
"patchedSubtitle": "প্যাচড অ্যাপ্লিকেশনগুলো",
"changeLaterSubtitle": "পরবর্তীতে আপনি এটি সেটিং থেকে পরিবর্তন করতে পারবেন।",
"noUpdates": "কোন আপডেট নেই",
"WIP": "কাজ হচ্ছে...",
"noInstallations": "কোন প্যাচড অ্যাপ্লিকেশন ইনস্টল করা হয়নি",
"installUpdate": "আপডেট ইনস্টল করতে এগিয়ে যেতে চান?",
"updateSheetTitle": "ReVanced Manager আপডেট করুন",
"updateDialogTitle": "নতুন আপডেট পাওয়া যাচ্ছে",
"updatePatchesSheetTitle": "ReVanced প্যাচসমূহ আপডেট করুন",
"updateChangelogTitle": "পরিবর্তনসমূহ",
"updateDialogText": "${file} এর জন্য নতুন আপডেট পাওয়া যাচ্ছে।\n\nবর্তমানে ইনস্টল করা সংস্করণ ${version}।",
"downloadConsentDialogTitle": "প্রয়োজনীয় ফাইল ডাউনলোড করবেন?",
"downloadConsentDialogText": "ReVanced Manager সঠিকভাবে কাজ করার জন্য কিছু প্রয়োজনীয় ফাইল ডাউনলোড করতে হবে।",
"downloadConsentDialogText2": "এটি আপনাকে যুক্ত করবে ${url}.",
"checkUpdateDialogTitle": "আপডেটএর জন্য পরীক্ষা করবেন?",
"checkUpdateDialogText": "আপনি কি চান ReVanced Manager আপডেটের জন্য স্বয়ংক্রিয়ভাবে যাচাই করুক?",
"notificationTitle": "আপডেট ডাউনলোড হয়েছে",
"notificationText": "আপডেট ইনস্টল করতে চাপ দিন",
"downloadingMessage": "আপডেট ডাউনলোড হচ্ছে...",
"downloadedMessage": "আপডেট ডাউনলোড করা হয়েছে",
"installingMessage": "আপডেট ইনস্টল করা হচ্ছে...",
"errorDownloadMessage": "আপডেট ডাউনলোড করতে সফল হয় নি",
"errorInstallMessage": "আপডেট ইনস্টল করতে সফল হয় নি",
"noConnection": "কোন ইন্টারনেট সংযোগ নেই",
"updatesDisabled": "প্যাচ করা অ্যাপকে আপডেট করা বর্তমানে সম্ভব নয়। অ্যাপটি পুনরায় প্যাচ করুন।"
},
"applicationItem": {
"infoButton": "তথ্য"
},
"latestCommitCard": {
"loadingLabel": "লোড হচ্ছে...",
"timeagoLabel": "${time} আগে",
"patcherLabel": "প্যাচার: ",
"managerLabel": "Manager: ",
"updateButton": "Manager আপডেট করুন"
},
"patcherView": {
"widgetTitle": "প্যাচার",
"patchButton": "প্যাচ",
"armv7WarningDialogText": "ARMv7 ডিভাইসগুলোতে প্যাচিং এখনো সমর্থিত নয় এবং সফল নাও হতে পারে। যেকোন ভাবে এগিয়ে যেতে চান?",
"removedPatchesWarningDialogText": "আপনি এর আগে যখন ব্যবহার করেছিলেন তারপর এই প্যাচগুলো অপসারণ করা হয়।\n\n${patches}\n\nযেকোন ভাবে এগিয়ে যেতে চান?",
"requiredOptionDialogText": "কিছু প্যাচ অপশন সেট করতে হবে।"
},
"appSelectorCard": {
"widgetTitle": "একটি অ্যাপ নির্বাচন করুন",
"widgetTitleSelected": "নির্বাচিত অ্যাপ",
"widgetSubtitle": "কোন অ্যাপ নির্বাচন করা হয়নি",
"noAppsLabel": "কোন অ্যাপ্লিকেশন পাওয়া যায়নি",
"currentVersion": "বর্তমান",
"suggestedVersion": "প্রস্তাবিত",
"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": "কাস্টম ভ্যালু",
"resetOptionsTooltip": "প্যাচ অপশন আবার সেট করুন",
"viewTitle": "প্যাচ অপশন",
"saveOptions": "সংরক্ষণ করুন",
"addOptions": "অপশন যুক্ত করুন",
"deselectPatch": "প্যাচ অনির্বাচন করুন",
"tooltip": "আরও ইনপুট অপশন",
"selectFilePath": "ফাইলের স্থান নির্বাচন করুন",
"selectFolder": "ফোল্ডার নির্বাচন করুন",
"selectOption": "অপশন নির্বাচন করুন",
"requiredOption": "এই অপশনটি আবশ্যক",
"unsupportedOption": "এই অপশনসটি অসমর্থিত",
"requiredOptionNull": "এই অপশনগুলো সেট করতে হবে:\n\n${options}"
},
"patchItem": {
"unsupportedDialogText": "এই প্যাচটি নির্বাচন করলে প্যাচিং ত্রুটিপূর্ণ হতে পারে।\n\nঅ্যাপ সংস্করণ: ${packageVersion}\nসমর্থিত সংস্করণ:\n${supportedVersions}",
"unsupportedPatchVersion": "এই অ্যাপ সংস্করণের জন্য প্যাচ সমর্থিত নয়।",
"unsupportedRequiredOption": "এই প্যাচটিতে একটি প্রয়োজনীয় অপশন রয়েছে যা এই অ্যাপটি সমর্থন করে না",
"patchesChangeWarningDialogText": "পূর্ব নির্ধারিত নির্বাচিত প্যাচ এবং অপশন ব্যবহার করার প্রস্তাব রাখে। এগুলো পরিবর্তন করার মাধ্যমে অনাকাঙ্খিত ইস্যু হতে পারে।\n\nপ্যাচ নির্বাচন পরিবর্তন করার পূর্বে আপনাকে অবশ্যই সেটিং থেকে \"প্যাচ নির্বাচন পরিবর্তন করার অনুমতি\" সচল করতে হবে।",
"patchesChangeWarningDialogButton": "পূর্বনির্ধারিত নির্বাচন ব্যবহার করুন"
},
"installerView": {
"widgetTitle": "ইনস্টলার",
"installType": "ইনস্টল করার ধরণ নির্বাচন করুন",
"installTypeDescription": "যে প্রক্রিয়ায় ইনস্টল করা এগিয়ে নিতে চান তা নির্বাচন করুন।",
"installButton": "ইনস্টল করুন",
"installRootType": "মাউন্ট",
"installNonRootType": "সাধারণ",
"warning": "অনাকাঙ্ক্ষিত ইস্যু এড়াতে প্যাচকৃত অ্যাপের স্বয়ংক্রিয় আপডেট নিষ্ক্রিয় করুন।",
"pressBackAgain": "বাতিল করতে ব্যাক প্রেস করুন",
"openButton": "অ্যাপ খুলুন",
"shareButton": "ফাইল শেয়ার করুন",
"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": "ভাষা হালনাগাদ করা হয়েছে",
"englishOption": "ইংরেজি",
"sourcesLabel": "বিকল্প উৎস",
"sourcesLabelHint": "ReVanced প্যাচ ও ReVanced ইন্ট্রিগ্রেশনের জন্য বিকল্প উৎস কনফিগার করুন",
"sourcesIntegrationsLabel": "ইন্ট্রিগেশনের উৎস",
"useAlternativeSources": "বিকল্প উৎস ব্যবহার করুন",
"useAlternativeSourcesHint": "ReVanced প্যাচ ও ReVanced ইন্ট্রিগ্রেশনের জন্য API এর পরিবর্তে বিকল্প উৎস ব্যবহার করুন",
"sourcesResetDialogTitle": "পুনরায় সেট করুন",
"sourcesResetDialogText": "আপনি কি নিশ্চিতভাবে আপনার উৎসগুলোকে পূর্বনির্ধারিত উৎসে ফিরিয়ে নিতে চান?",
"apiURLResetDialogText": "আপনি কি নিশ্চিতভাবে আপনার API URL কে তার মূল ভ্যালুতে পুনরায় সেট করতে চান?",
"sourcesUpdateNote": "বি:দ্র: এটি স্বয়ংক্রিয়ভাবে বিকল্প উৎস থেকে ReVanced প্যাচ ও ReVanced ইন্ট্রিগ্রেশন ডাউনলোড করবে।\n\nএটি আপনাকে বিকল্প উৎসের সাথে সংযুক্ত করবে।",
"apiURLLabel": "API URL",
"apiURLHint": "ReVanced Manager এর API URL কনফিগার করুন",
"selectApiURL": "API URL",
"orgPatchesLabel": "প্যাচ এর উদ্ভাবক",
"sourcesPatchesLabel": "প্যাচ এর উৎস",
"orgIntegrationsLabel": "ইন্ট্রিগেশনের উদ্ভাবক",
"contributorsLabel": "অবদানকারীগণ",
"contributorsHint": "ReVanced-এ অবদানকারীদের তালিকা",
"logsLabel": "লগ শেয়ার করুন",
"logsHint": "ReVanced Manager লগ শেয়ার করুন",
"enablePatchesSelectionLabel": "প্যাচ নির্বাচন পরিবর্তন করার অনুমতি",
"enablePatchesSelectionHint": "প্যাচ নির্বাচন করা বা নির্বাচন বাতিল করা আটকাবে না",
"enablePatchesSelectionWarningText": "নির্বাচিত প্যাচগুলো পরিবর্তন করলে অনাকাঙ্খিত ত্রুটি ঘটতে পারে।\n\nযেকোন ভাবে এগিয়ে যেতে চান?",
"disablePatchesSelectionWarningText": "আপনি নির্বাচিত প্যাচ পরিবর্তনকে নিষ্ক্রিয় করতে যাচ্ছেন।\nপূর্বনির্ধারিত নির্বাচিত প্যাচসমূহ ফিরিয়ে আনা হবে।\n\nযেকোন ভাবে নিষ্ক্রিয় করতে চান?",
"autoUpdatePatchesLabel": "প্যাচসমূহ স্বয়ংক্রিয়ভাবে আপডেট করুন",
"autoUpdatePatchesHint": "প্যাচসমূহ স্বয়ংক্রিয়ভাবে সর্বশেষ সংস্করণে আপডেট হবে",
"showUpdateDialogLabel": "হালনাগাদ ডায়ালগ দেখান",
"showUpdateDialogHint": "যখন হালনাগাদ উপলব্ধ থাকবে তখন একটি ডায়ালগ দেখান",
"universalPatchesLabel": "বৈশ্বিক প্যাচসমূহ দেখান",
"universalPatchesHint": "সকল অ্যাপ এবং বৈশ্বিক প্যাচসমূহ দেখায় (অ্যাপ লিস্ট দেখানো একটু ধীর হতে পারে)",
"versionCompatibilityCheckLabel": "সংস্করণ সামঞ্জস্যতা পরীক্ষা করা",
"versionCompatibilityCheckHint": "নির্বাচিত অ্যাপ সংস্করণের সাথে সামঞ্জস্যপূর্ণ নয় এমন প্যাচ নির্বাচন করা আটকায়",
"requireSuggestedAppVersionLabel": "প্রস্তাবিত অ্যাপ সংস্করণ প্রয়োজন",
"requireSuggestedAppVersionHint": "প্রস্তাবিত নয় এমন অ্যাপ সংস্করণ নির্বাচন করা আটকায়",
"requireSuggestedAppVersionDialogText": "অপ্রস্তাবিত সংস্করণের অ্যাপ নির্বাচন করার ফলে অজানা ইস্যু হতে পারে।\n\nআপনি কি যেকোন ভাবে এগিয়ে যেতে চান?",
"aboutLabel": "সম্পর্কিত",
"snackbarMessage": "ক্লিপবোর্ডে কপি করা হয়েছে",
"restartAppForChanges": "পরিবর্তনগুলি প্রয়োগ করতে অ্যাপটি পুনরায় চালু করুন",
"deleteTempDirLabel": "অস্থায়ী ফাইল মুছুন",
"deleteTempDirHint": "অব্যবহৃত অস্থায়ী ফাইল মুছুন",
"deletedTempDir": "অস্থায়ী ফাইল মুছে ফেলা হয়েছে",
"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": "খুলুন",
"uninstallButton": "আনইন্সটল করুন",
"unmountButton": "আনমাউন্ট",
"rootDialogTitle": "ত্রুটি দেখা দিয়েছে",
"unmountDialogText": "আপনি কি অ্যাপটি আনমাউন্ট করার ব্যপারে নিশ্চিত?",
"uninstallDialogText": "আপনি কি অ্যাপটি আনইনস্টল করার ব্যপারে নিশ্চিত?",
"rootDialogText": "অ্যাপটি Superuser অনুমতি নিয়ে ইনস্টল করা হয়েছে, কিন্তু বর্তমানে ReVanced Manager এর Superuser অনুমতি নেই। অনুগ্রহপূর্বক প্রথমে Superuser অনুমতি দিন।",
"packageNameLabel": "প্যাকেজের নাম",
"installTypeLabel": "ইনস্টলের ধরন",
"mountTypeLabel": "মাউন্ট",
"regularTypeLabel": "সাধারণ",
"patchedDateLabel": "প্যাচ করার তারিখ",
"appliedPatchesLabel": "ব্যবহৃত প্যাচ",
"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অ্যাপের বিকাশকারীর সাথে যোগাযোগ করুন এবং সহায়তার জন্য জিজ্ঞাসা করুন.",
"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

@@ -0,0 +1,19 @@
{
"navigationView": {},
"homeView": {},
"applicationItem": {},
"latestCommitCard": {},
"patcherView": {},
"appSelectorCard": {},
"patchSelectorCard": {},
"socialMediaCard": {},
"appSelectorView": {},
"patchesSelectorView": {},
"patchOptionsView": {},
"patchItem": {},
"installerView": {},
"settingsView": {},
"appInfoView": {},
"contributorsView": {},
"installErrorDialog": {}
}

View File

@@ -0,0 +1,304 @@
{
"okButton": "OK",
"cancelButton": "Zrušit",
"dismissButton": "Zrušit",
"quitButton": "Odejít",
"updateButton": "Aktualizovat",
"enabledLabel": "Zapnuto",
"disabledLabel": "Vypnuto",
"installed": "Nainstalováno: ${version}",
"suggested": "Doporučeno: ${version}",
"yesButton": "Ano",
"noButton": "Ne",
"warning": "Varování",
"options": "Možnosti",
"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": "Záplatovač",
"settingsTab": "Nastavení"
},
"homeView": {
"refreshSuccess": "Úspěšně obnoveno",
"widgetTitle": "Řídící panel",
"updatesSubtitle": "Aktualizace",
"patchedSubtitle": "Záplatované aplikace",
"changeLaterSubtitle": "Tuto možnost můžete změnit později v nastavení.",
"noUpdates": "Nejsou dostupné žádné aktualizace",
"WIP": "Probíhající přípravy...",
"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}.",
"checkUpdateDialogTitle": "Zkontrolovat aktualizace?",
"checkUpdateDialogText": "Přejete si, aby ReVanced Manager automaticky kontroloval aktualizace?",
"notificationTitle": "Aktualizace byla stažena",
"notificationText": "Klepnutím nainstalujte aktualizaci",
"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",
"updatesDisabled": "Aktualizace záplatované aplikace je momentálně zakázána. Znovu záplatujte aplikaci."
},
"applicationItem": {
"infoButton": "Info"
},
"latestCommitCard": {
"loadingLabel": "Načítání...",
"timeagoLabel": "před ${time}",
"patcherLabel": "Záplatovač: ",
"managerLabel": "Správce: ",
"updateButton": "Správce aktualizací"
},
"patcherView": {
"widgetTitle": "Záplatovač",
"patchButton": "Záplatovat",
"armv7WarningDialogText": "Záplatování na zařízení ARMv7 ještě není podporováno a může neuspět. Přejete si přesto pokračovat?",
"removedPatchesWarningDialogText": "Následující záplaty byly odstraněny od doby, kdy jste je naposledy použili.\n\n${patches}\n\nPřesto pokračovat?",
"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",
"currentVersion": "Aktuální",
"suggestedVersion": "Navrženo",
"anyVersion": "Jakákoli verze"
},
"patchSelectorCard": {
"widgetTitle": "Vybrat patche",
"widgetTitleSelected": "Vybrané patche",
"widgetSubtitle": "Nejprve vyberte aplikaci",
"widgetEmptySubtitle": "Nejsou vybrány žádné patche"
},
"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 patche",
"universalPatches": "Univerzální záplaty",
"newPatches": "Nové záplaty",
"patches": "Záplaty",
"doneButton": "Hotovo",
"defaultChip": "Výchozí",
"defaultTooltip": "Vybrat všechny výchozí patche",
"noneChip": "Žádné",
"noneTooltip": "Zrušit výběr všech patchů",
"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",
"resetOptionsTooltip": "Obnovit nastavení záplat",
"viewTitle": "Nastavení záplat",
"saveOptions": "Uložit",
"addOptions": "Přidat možnosti",
"unselectPatch": "Zrušit výběr patch",
"tooltip": "Další možnosti vstupu",
"selectFilePath": "Zvolte cestu k souboru",
"selectFolder": "Vybrat složku",
"selectOption": "Vybrat možnost",
"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": {
"widgetTitle": "Instalátor",
"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",
"shareButton": "Sdílet soubor",
"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",
"englishOption": "Angličtina",
"sourcesLabel": "Alternativní zdroje",
"sourcesLabelHint": "Konfigurace alternativních zdrojů pro vylepšené úpravy a zdokonalené integrace",
"sourcesIntegrationsLabel": "Zdroj integrace",
"useAlternativeSources": "Použít alternativní zdroje",
"useAlternativeSourcesHint": "Použít alternativní zdroje pro vylepšené úpravy a vylepšené integrace namísto API",
"sourcesResetDialogTitle": "Obnovit",
"sourcesResetDialogText": "Jste si jisti, že chcete obnovit zdroje na jejich výchozí hodnoty?",
"apiURLResetDialogText": "Jste si jisti, že chcete resetovat URL API na výchozí hodnotu?",
"sourcesUpdateNote": "Poznámka: Toto automaticky stáhne reVanced Patches and ReVanced Integrations z alternativních zdrojů.\n\nToto vás připojí k alternativnímu zdroji.",
"apiURLLabel": "API URL",
"apiURLHint": "Konfigurace URL API ReVanced Manager",
"selectApiURL": "API URL",
"orgPatchesLabel": "Organizace patchů",
"sourcesPatchesLabel": "Zdroj patchů",
"orgIntegrationsLabel": "Autor integrace",
"contributorsLabel": "Přispěvatelé",
"contributorsHint": "Seznam přispěvatelů ReVanced",
"logsLabel": "Sdílet záznamy",
"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í)",
"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",
"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",
"uninstallButton": "Odinstalovat",
"unmountButton": "Odpojit",
"rootDialogTitle": "Chyba",
"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.",
"packageNameLabel": "Název balíčku",
"installTypeLabel": "Typ instalace",
"mountTypeLabel": "Připojit",
"regularTypeLabel": "Běžný",
"patchedDateLabel": "Datum patchování",
"appliedPatchesLabel": "Použité patche",
"patchedDateHint": "${date} v ${time}",
"appliedPatchesHint": "${quantity} použité patche",
"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\nKontaktujte vývojáře aplikace a požádejte o podporu.",
"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

@@ -0,0 +1,304 @@
{
"okButton": "OK",
"cancelButton": "Afbryd",
"dismissButton": "Luk",
"quitButton": "Luk",
"updateButton": "Opdatér",
"enabledLabel": "Aktiveret",
"disabledLabel": "Deaktiveret",
"installed": "Installeret: ${version}",
"suggested": "Foreslået: ${version}",
"yesButton": "Ja",
"noButton": "Nej",
"warning": "Advarsel",
"options": "Indstillinger",
"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",
"patchedSubtitle": "Patchede applikationer",
"changeLaterSubtitle": "Du kan ændre dette i indstillingerne senere.",
"noUpdates": "Ingen tilgængelige opdateringer",
"WIP": "Arbejdet er i gang...",
"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}.",
"checkUpdateDialogTitle": "Søg efter opdateringer?",
"checkUpdateDialogText": "Ønsker du at ReVanced Manager skal søge efter opdateringer automatisk?",
"notificationTitle": "Opdatering downloadet",
"notificationText": "Tryk for at installere opdateringen",
"downloadingMessage": "Henter opdatering...",
"downloadedMessage": "Opdatering downloadet",
"installingMessage": "Installerer opdatering...",
"errorDownloadMessage": "Opdatering kan ikke hentes",
"errorInstallMessage": "Opdatering kunne ikke installeres",
"noConnection": "Ingen internetforbindelse",
"updatesDisabled": "Opdatering af en patchet app er i øjeblikket deaktiveret. Repatch appen igen."
},
"applicationItem": {
"infoButton": "Information"
},
"latestCommitCard": {
"loadingLabel": "Indlæser...",
"timeagoLabel": "${time} siden",
"patcherLabel": "Patcher: ",
"managerLabel": "Manager: ",
"updateButton": "Opdater Manager"
},
"patcherView": {
"widgetTitle": "Patcher",
"patchButton": "Patch",
"armv7WarningDialogText": "Patching på ARMv7-enheder understøttes ikke endnu, og kan derfor fejle. Fortsæt alligevel?",
"removedPatchesWarningDialogText": "Følgende patches er blevet fjernet siden sidste gang du brugte dem.\n\n${patches}\n\nFortsæt alligevel?",
"requiredOptionDialogText": "Nogle patch muligheder skal indstilles."
},
"appSelectorCard": {
"widgetTitle": "Vælg en app",
"widgetTitleSelected": "Valgte app",
"widgetSubtitle": "Ingen app valgt",
"noAppsLabel": "Ingen applikationer fundet",
"currentVersion": "Nuværende",
"suggestedVersion": "Anbefalet",
"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",
"resetOptionsTooltip": "Nulstil patch indstillinger",
"viewTitle": "Patch indstillinger",
"saveOptions": "Gem",
"addOptions": "Tilføj indstillinger",
"unselectPatch": "Fravælg patch",
"tooltip": "Flere input-indstillinger",
"selectFilePath": "Vælg fil sti",
"selectFolder": "Vælg mappe",
"selectOption": "Vælg indstilling",
"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": {
"widgetTitle": "Installationsprogram",
"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",
"shareButton": "Del fil",
"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",
"englishOption": "Engelsk",
"sourcesLabel": "Alternative kilder",
"sourcesLabelHint": "Konfigurer de alternative kilder til ReVanced Patches og ReVanced Integrations",
"sourcesIntegrationsLabel": "Kilde til Integrationer",
"useAlternativeSources": "Brug alternative kilder",
"useAlternativeSourcesHint": "Brug alternative kilder til ReVanced Patches og ReVanced Integrations i stedet for API'en",
"sourcesResetDialogTitle": "Nulstil",
"sourcesResetDialogText": "Er du sikker på, at du vil nulstille dine kilder til deres standardværdier?",
"apiURLResetDialogText": "Er du sikker på, at du vil nulstille API URL til dens standardværdi?",
"sourcesUpdateNote": "Bemærk: Dette vil automatisk downloade ReVanced Patches og ReVanced Integrations fra de alternative kilder.\n\nDette vil forbinde dig til den alternative kilde.",
"apiURLLabel": "API URL",
"apiURLHint": "Konfigurer API-URL'en til ReVanced Manager",
"selectApiURL": "API URL",
"orgPatchesLabel": "Organisation for Patches",
"sourcesPatchesLabel": "Kilde til Patches",
"orgIntegrationsLabel": "Organisation for Integrationer",
"contributorsLabel": "Medvirkende",
"contributorsHint": "En liste over medvirkende til ReVanced",
"logsLabel": "Del logs",
"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)",
"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",
"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",
"uninstallButton": "Afinstallér",
"unmountButton": "Afmonter",
"rootDialogTitle": "Fejl",
"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.",
"packageNameLabel": "Pakkenavn",
"installTypeLabel": "Installationstype",
"mountTypeLabel": "Montér",
"regularTypeLabel": "Almindelig",
"patchedDateLabel": "Dato for patching",
"appliedPatchesLabel": "Anvendte patches",
"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\nKontakt udvikleren af appen og bed om support.",
"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

@@ -0,0 +1,304 @@
{
"okButton": "OK",
"cancelButton": "Abbrechen",
"dismissButton": "Verwerfen",
"quitButton": "Verlassen",
"updateButton": "Aktualisieren",
"enabledLabel": "Aktiviert",
"disabledLabel": "Deaktiviert",
"installed": "Installiert: ${version}",
"suggested": "Empfohlen: ${version}",
"yesButton": "Ja",
"noButton": "Nein",
"warning": "Warnung",
"options": "Optionen",
"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",
"patchedSubtitle": "Gepatchte Apps",
"changeLaterSubtitle": "In den Einstellungen kannst du das später noch ändern.",
"noUpdates": "Keine Updates verfügbar",
"WIP": "In Arbeit...",
"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.",
"checkUpdateDialogTitle": "Nach Aktualisierungen suchen?",
"checkUpdateDialogText": "Soll ReVanced Manager automatisch nach Updates suchen?",
"notificationTitle": "Update heruntergeladen",
"notificationText": "Tippen um Update zu installieren",
"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",
"updatesDisabled": "Aktualisieren einer gepatchten App ist zurzeit deaktiviert. Patche die App erneut."
},
"applicationItem": {
"infoButton": "Informationen"
},
"latestCommitCard": {
"loadingLabel": "Lädt...",
"timeagoLabel": "vor ${time}",
"patcherLabel": "Patcher: ",
"managerLabel": "Manager: ",
"updateButton": "Manager aktualisieren"
},
"patcherView": {
"widgetTitle": "Patcher",
"patchButton": "Patchen",
"armv7WarningDialogText": "Das Patchen auf ARMv7-Geräten wird noch nicht unterstützt, es könnten Fehler auftreten. Trotzdem fortfahren?",
"removedPatchesWarningDialogText": "Die folgenden Patches wurden seit der letzten Verwendung entfernt.\n\n${patches}\n\nTrotzdem fortfahren?",
"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",
"currentVersion": "Aktuell",
"suggestedVersion": "Empfohlen",
"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",
"resetOptionsTooltip": "Patch-Optionen zurücksetzen",
"viewTitle": "Patch-Optionen",
"saveOptions": "Speichern",
"addOptions": "Option hinzufügen",
"unselectPatch": "Patch entfernen",
"tooltip": "Weitere Eingabeoptionen",
"selectFilePath": "Dateipfad auswählen",
"selectFolder": "Ordner auswählen",
"selectOption": "Option 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": {
"widgetTitle": "Installer",
"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ücken Sie \"Zurück\" noch einmal, um die App zu verlassen",
"openButton": "Öffnen",
"shareButton": "Datei teilen",
"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 Sie versuchen, das Log zu teilen, teilen Sie 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",
"englishOption": "Englisch",
"sourcesLabel": "Alternative Quellen",
"sourcesLabelHint": "Konfiguriere die alternativen Quellen für ReVanced Patches und ReVanced Integrations",
"sourcesIntegrationsLabel": "Quelle für Integrationen",
"useAlternativeSources": "Benutze alternative Quellen",
"useAlternativeSourcesHint": "Verwenden alternative Quellen für ReVanced Patches und ReVanced Integrationen anstelle der API",
"sourcesResetDialogTitle": "Zurücksetzen",
"sourcesResetDialogText": "Bist du dir sicher, dass du die benutzerdefinierten Quellen auf ihre Standardwerte zurücksetzen möchtest?",
"apiURLResetDialogText": "Bist du dir sicher, dass du die API-URL auf ihren Standardwert zurücksetzen möchtest?",
"sourcesUpdateNote": "Hinweis: Dadurch werden ReVanced Patches und ReVanced Integrationen automatisch von der alternativen Quelle heruntergeladen.\n\nDies wird dich mit der alternativen Quelle verbinden.",
"apiURLLabel": "API-URL",
"apiURLHint": "Konfigurieren die API URL von ReVanced Manager",
"selectApiURL": "API-URL",
"orgPatchesLabel": "Patches Organisation",
"sourcesPatchesLabel": "Patches Quelle",
"orgIntegrationsLabel": "Integrationen Organisation",
"contributorsLabel": "Mitwirkende",
"contributorsHint": "Eine Liste der Mitwirkenden von ReVanced",
"logsLabel": "Logs teilen",
"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)",
"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",
"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",
"uninstallButton": "Deinstallieren",
"unmountButton": "Unmounten",
"rootDialogTitle": "Fehler",
"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.",
"packageNameLabel": "Paketname",
"installTypeLabel": "Installationsart",
"mountTypeLabel": "Einhängen",
"regularTypeLabel": "Normal",
"patchedDateLabel": "Patch-Datum",
"appliedPatchesLabel": "Angewandte Patches",
"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": "Die 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": "Die Installation ist fehlgeschlagen, da die nicht gepatchte App auf diesem Gerät fehlt, um sie zu mounten.\n\nInstallieren Sie die nicht gepatchte App bevor Sie mounten und versuchen Sie es erneut.",
"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 nicht mit diesem Gerät kompatibel.\n\nKontaktieren Sie den Entwickler der App und bitten Sie um seine Unterstützung.",
"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

@@ -0,0 +1,304 @@
{
"okButton": "Εντάξει",
"cancelButton": "Ακύρωση",
"dismissButton": "Απόρριψη",
"quitButton": "Έξοδος",
"updateButton": "Ενημέρωση",
"enabledLabel": "Ενεργό",
"disabledLabel": "Ανενεργό",
"installed": "Εγκατεστημένη έκδοση: ${version}",
"suggested": "Προτεινόμενη έκδοση: ${version}",
"yesButton": "Ναι",
"noButton": "Όχι",
"warning": "Προειδοποίηση",
"options": "Ρυθμίσεις",
"notice": "Σημείωση",
"noShowAgain": "Να μην ξαναεμφανιστεί",
"add": "Προσθήκη",
"remove": "Αφαίρεση",
"showChangelogButton": "Εμφάνιση αλλαγών",
"showUpdateButton": "Εμφάνιση ενημέρωσης",
"navigationView": {
"dashboardTab": "Πίνακας Ελέγχου",
"patcherTab": "Τροποποιητής",
"settingsTab": "Ρυθμίσεις"
},
"homeView": {
"refreshSuccess": "Ανανεώθηκε επιτυχώς",
"widgetTitle": "Πίνακας Ελέγχου",
"updatesSubtitle": "Ενημερώσεις",
"patchedSubtitle": "Τροποποιημένες Εφαρμογές",
"changeLaterSubtitle": "Μπορείτε να το αλλάξετε αργότερα στις ρυθμίσεις.",
"noUpdates": "Δεν υπάρχουν διαθέσιμες ενημερώσεις",
"WIP": "Υπό κατασκευή...",
"noInstallations": "Δεν έχουν εγκατασταθεί τροποποιημένες εφαρμογές",
"installUpdate": "Συνέχεια για εγκατάσταση της ενημέρωσης;",
"updateSheetTitle": "Ενημέρωση του ReVanced Manager",
"updateDialogTitle": "Υπάρχει διαθέσιμη ενημέρωση",
"updatePatchesSheetTitle": "Ενημέρωση τροποποιήσεων ReVanced",
"updateChangelogTitle": "Τι νέο υπάρχει",
"updateDialogText": "Υπάρχει διαθέσιμη μια νέα ενημέρωση για το ${file}.\n\nΗ τρέχουσα εγκατεστημένη έκδοση είναι η ${version}.",
"downloadConsentDialogTitle": "Λήψη των απαραίτητων αρχείων;",
"downloadConsentDialogText": "Το ReVanced Manager πρέπει να κατεβάσει τα απαραίτητα αρχεία για να λειτουργήσει σωστά.",
"downloadConsentDialogText2": "Αυτό θα σας συνδέσει με το ${url}.",
"checkUpdateDialogTitle": "Έλεγχος για ενημερώσεις;",
"checkUpdateDialogText": "Θέλετε το ReVanced Manager να ελέγχει για ενημερώσεις αυτόματα;",
"notificationTitle": "Η λήψη της ενημέρωσης ολοκληρώθηκε",
"notificationText": "Πατήστε για εγκατάσταση της ενημέρωσης",
"downloadingMessage": "Λήψη ενημέρωσης...",
"downloadedMessage": "Η λήψη της ενημέρωσης ολοκληρώθηκε",
"installingMessage": "Εγκατάσταση ενημέρωσης...",
"errorDownloadMessage": "Αδυναμία λήψης ενημέρωσης",
"errorInstallMessage": "Αδυναμία εγκατάστασης ενημέρωσης",
"noConnection": "Δεν υπάρχει σύνδεση στο διαδίκτυο",
"updatesDisabled": "Η ενημέρωση τροποποιημένων εφαρμογών είναι ανενεργή προς το παρόν. Τροποποιήστε τις εφαρμογές εκ νέου."
},
"applicationItem": {
"infoButton": "Πληροφορίες"
},
"latestCommitCard": {
"loadingLabel": "Φόρτωση...",
"timeagoLabel": "${time} πριν",
"patcherLabel": "Τροποποιητής: ",
"managerLabel": "Manager: ",
"updateButton": "Ενημέρωση του Manager"
},
"patcherView": {
"widgetTitle": "Τροποποιητής",
"patchButton": "Τροποποίηση",
"armv7WarningDialogText": "Η διαδικασία της τροποποίησης δεν υποστηρίζεται προς το παρόν σε ARMv7 συσκευές και μπορεί να αποτύχει. Συνέχεια παρόλα αυτά;",
"removedPatchesWarningDialogText": "Οι παρακάτω τροποποιήσεις αφαιρέθηκαν από την τελευταία φορά που τις χρησιμοποιήσατε.\n\n${patches}\n\nΣυνέχεια παρόλα αυτά;",
"requiredOptionDialogText": "Κάποιες επιλογές τροποποιήσεων πρέπει να οριστούν."
},
"appSelectorCard": {
"widgetTitle": "Επιλέξτε μία εφαρμογή",
"widgetTitleSelected": "Επιλεγμένες εφαρμογές",
"widgetSubtitle": "Δεν έχει επιλεγεί κάποια εφαρμογή",
"noAppsLabel": "Δε βρέθηκαν εφαρμογές",
"currentVersion": "Τρέχουσα έκδοση",
"suggestedVersion": "Προτεινόμενη έκδοση",
"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 επιλέγοντάς το από το χώρο αποθήκευσης χωρίς να χρειάζεται πρόσβαση root."
},
"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": "Αυτή η επιλογή είναι κενή",
"resetOptionsTooltip": "Επαναφορά επιλογών τροποποιήσεων",
"viewTitle": "Επιλογές τροποποιήσεων",
"saveOptions": "Αποθήκευση",
"addOptions": "Προσθήκη επιλογών",
"unselectPatch": "Αποεπιλογή patch",
"tooltip": "Περισσότερες επιλογές εισόδου",
"selectFilePath": "Επιλογή τοποθεσίας αρχείου",
"selectFolder": "Επιλογή φακέλου",
"selectOption": "Επιλογή ρύθμισης",
"requiredOption": "Απαιτείται ρύθμιση αυτής της επιλογής",
"unsupportedOption": "Αυτή η επιλογή δεν υποστηρίζεται",
"requiredOptionNull": "Πρέπει να οριστούν οι παρακάτω επιλογές:\n\n${options}"
},
"patchItem": {
"unsupportedDialogText": "Η επιλογή αυτής της τροποποίησης μπορεί να επιφέρει σφάλματα τροποποίησης.\n\nΈκδοση εφαρμογής: ${packageVersion}\nΥποστηριζόμενες εκδόσεις: ${supportedVersions}",
"unsupportedPatchVersion": "Η τροποποίηση δεν υποστηρίζεται σε αυτήν την έκδοση της εφαρμογής.",
"unsupportedRequiredOption": "Αυτή η τροποποίηση αναγκαστικά περιέχει μια επιλογή η οποία δεν υποστηρίζεται από αυτήν την εφαρμογή",
"patchesChangeWarningDialogText": "Συνιστάται να χρησιμοποιείτε τις προεπιλεγμένες τροποποιήσεις και επιλογές τους. Η αλλαγή τους μπορεί να οδηγήσει σε μη αναμενόμενα θέματα.\n\nΘα πρέπει να ενεργοποιήσετε το «Να επιτρέπονται αλλαγές επιλογών τροποποιήσεων» στις ρυθμίσεις προτού αλλάξετε οτιδήποτε.",
"patchesChangeWarningDialogButton": "Χρήση προεπιλεγμένων επιλογών"
},
"installerView": {
"widgetTitle": "Πρόγραμμα Εγκατάστασης",
"installType": "Επιλέξτε τύπο εγκατάστασης",
"installTypeDescription": "Συνεχίστε επιλέγοντας τον τύπο εγκατάστασης.",
"installButton": "Εγκατάσταση",
"installRootType": "Προσάρτηση",
"installNonRootType": "Κανονική",
"warning": "Απενεργοποίηση αυτόματων ενημερώσεων για την τροποποιημένη εφαρμογή για την αποφυγή απροσδόκητων προβλημάτων.",
"pressBackAgain": "Πατήστε πίσω ξανά για ακύρωση",
"openButton": "Άνοιγμα",
"shareButton": "Κοινοποίηση αρχείου",
"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": "Η γλώσσα ενημερώθηκε",
"englishOption": "Αγγλικά",
"sourcesLabel": "Εναλλακτικές πηγές",
"sourcesLabelHint": "Ρυθμίστε τις εναλλακτικές πηγές για τις τροποποιήσεις ReVanced και τις ενσωματώσεις ReVanced",
"sourcesIntegrationsLabel": "Πηγή ενσωματώσεων",
"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": "Πηγή τροποποιήσεων",
"orgIntegrationsLabel": "Οργάνωση ενσωματώσεων",
"contributorsLabel": "Συνεισφέροντες",
"contributorsHint": "Λίστα με όσους έχουν συμβάλει στο ReVanced",
"logsLabel": "Κοινοποίηση αρχείων καταγραφής",
"logsHint": "Κοινοποίηση αρχείων καταγραφής του ReVanced Manager",
"enablePatchesSelectionLabel": "Να επιτρέπονται αλλαγές επιλογών τροποποιήσεων",
"enablePatchesSelectionHint": "Να μην εμποδίζονται οι επιλογές τροποποιήσεων",
"enablePatchesSelectionWarningText": "Αλλαγές στις προεπιλεγμένες επιλογές τροποποιήσεων ίσως επιφέρει μη αναμενόμενα προβλήματα.\n\nΕνεργοποίηση παρόλα αυτά;",
"disablePatchesSelectionWarningText": "Πρόκειται να απενεργοποιήσετε τη δυνατότητα αλλαγής των επιλογών τροποποιήσεων.\nΟι προεπιλεγμένες επιλογές τροποποιήσεων θα επαναφερθούν.\n\nΑπενεργοποίηση παρόλα αυτά;",
"autoUpdatePatchesLabel": "Αυτόματες ενημερώσεις τροποποιήσεων",
"autoUpdatePatchesHint": "Αυτόματη ενημέρωση τροποποιήσεων στην τελευταία έκδοση",
"showUpdateDialogLabel": "Εμφάνιση προτροπής για ενημερώσεις",
"showUpdateDialogHint": "Εμφάνιση ειδοποίησης όταν είναι διαθέσιμη κάποια νέα ενημέρωση",
"universalPatchesLabel": "Εμφάνιση γενικευμένων τροποποιήσεων",
"universalPatchesHint": "Εμφάνιση όλων των εφαρμογών και γενικευμένων τροποποιήσεων (ενδέχεται να επιβραδύνει τη φόρτωση λίστας εφαρμογών)",
"versionCompatibilityCheckLabel": "Έλεγχος συμβατότητας έκδοσης",
"versionCompatibilityCheckHint": "Αποκλεισμός επιλογών τροποποιήσεων που δεν είναι συμβατές με την επιλεγμένη έκδοση εφαρμογής",
"requireSuggestedAppVersionLabel": "Απαιτείται η προτεινόμενη έκδοση εφαρμογής",
"requireSuggestedAppVersionHint": "Αποκλεισμός επιλογής εκδόσεων εφαρμογών που δεν προτείνονται",
"requireSuggestedAppVersionDialogText": "Επιλέγοντας μια εφαρμογή που δεν έχει την προτεινόμενη έκδοση μπορεί να προκαλέσει μη αναμενόμενα προβλήματα.\n\nΘέλετε να προχωρήσετε ούτως ή άλλως;",
"aboutLabel": "Σχετικά με",
"snackbarMessage": "Αντιγράφηκε στο πρόχειρο",
"restartAppForChanges": "Επανεκκινήστε την εφαρμογή για να εφαρμόσετε αλλαγές",
"deleteTempDirLabel": "Διαγραφή προσωρινών αρχείων",
"deleteTempDirHint": "Διαγραφή των αχρησιμοποίητων προσωρινών αρχείων",
"deletedTempDir": "Τα προσωρινά αρχεία διαγράφηκαν",
"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": "Άνοιγμα",
"uninstallButton": "Απεγκατάσταση",
"unmountButton": "Αποπροσάρτηση",
"rootDialogTitle": "Σφάλμα",
"unmountDialogText": "Είστε βέβαιοι ότι θέλετε να αποπροσαρτήσετε αυτήν την εφαρμογή;",
"uninstallDialogText": "Είστε βέβαιοι ότι θέλετε να απεγκαταστήσετε αυτή την εφαρμογή;",
"rootDialogText": "Η εφαρμογή εγκαταστάθηκε με πρόσβαση root, αλλά αυτή τη στιγμή το ReVanced Manager δεν έχει πρόσβαση root.\nΠαρακαλώ παραχωρήστε πρόσβαση root.",
"packageNameLabel": "Όνομα πακέτου",
"installTypeLabel": "Τύπος εγκατάστασης",
"mountTypeLabel": "Προσάρτηση",
"regularTypeLabel": "Κανονική",
"patchedDateLabel": "Ημερομηνία τροποποίησης",
"appliedPatchesLabel": "Τροποποιήσεις που έχουν εφαρμοστεί",
"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Επικοινωνήστε με τον προγραμματιστή της εφαρμογής και ζητήστε υποστήριξη.",
"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": "Η εγκατάσταση απέτυχε για κάποιον άγνωστο λόγο.\nΠαρακαλώ δοκιμάστε ξανά."
}
}

View File

@@ -0,0 +1,304 @@
{
"okButton": "Aceptar",
"cancelButton": "Cancelar",
"dismissButton": "Descartar",
"quitButton": "Salir",
"updateButton": "Actualizar",
"enabledLabel": "Activado",
"disabledLabel": "Desactivado",
"installed": "Instalada: ${version}",
"suggested": "Sugerida: ${version}",
"yesButton": "Sí",
"noButton": "No",
"warning": "Advertencia",
"options": "Opciones",
"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.",
"noUpdates": "No hay actualizaciones disponibles",
"WIP": "En progreso...",
"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}.",
"checkUpdateDialogTitle": "¿Buscar actualizaciones?",
"checkUpdateDialogText": "¿Querés que ReVanced Manager compruebe si hay actualizaciones automáticamente?",
"notificationTitle": "Actualización descargada",
"notificationText": "Tocá para instalar la actualización",
"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",
"updatesDisabled": "Por ahora no podés actualizar una app parcheada. Parcheala de nuevo."
},
"applicationItem": {
"infoButton": "Gestionar"
},
"latestCommitCard": {
"loadingLabel": "Cargando...",
"timeagoLabel": "Hace ${time}",
"patcherLabel": "Parcheador: ",
"managerLabel": "Manager: ",
"updateButton": "Actualizar Manager"
},
"patcherView": {
"widgetTitle": "Parcheador",
"patchButton": "Parchear",
"armv7WarningDialogText": "El parcheo en dispositivos ARMv7 aún no está soportado de forma oficial y podría fallar. ¿Querés continuar igual?",
"removedPatchesWarningDialogText": "Los siguientes parches fueron eliminados desde la última vez que los usaste.\n\n${patches}\n\n¿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",
"currentVersion": "Actual",
"suggestedVersion": "Sugerida",
"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",
"resetOptionsTooltip": "Restablecer a los valores por defecto",
"viewTitle": "Configuración\\ndel parche",
"saveOptions": "Guardar configuración",
"addOptions": "Agregar configuración",
"unselectPatch": "Deseleccionar parche",
"tooltip": "Más opciones de entrada",
"selectFilePath": "Seleccionar ruta del archivo",
"selectFolder": "Seleccionar carpeta",
"selectOption": "Seleccionar opción",
"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": {
"widgetTitle": "Instalador",
"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",
"shareButton": "Compartir archivo",
"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",
"englishOption": "Inglés",
"sourcesLabel": "Fuentes alternativas",
"sourcesLabelHint": "Configurá las fuentes alternativas para ReVanced Patches y ReVanced Integrations",
"sourcesIntegrationsLabel": "Fuente de las integraciones",
"useAlternativeSources": "Usar fuentes alternativas",
"useAlternativeSourcesHint": "Usá fuentes alternativas para ReVanced Patches y ReVanced Integrations en lugar de la API",
"sourcesResetDialogTitle": "Resetear",
"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",
"orgIntegrationsLabel": "Organización de las integraciones",
"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."
}
}

View File

@@ -0,0 +1,304 @@
{
"okButton": "Aceptar",
"cancelButton": "Cancelar",
"dismissButton": "Descartar",
"quitButton": "Cerrar",
"updateButton": "Actualizar",
"enabledLabel": "Activado",
"disabledLabel": "Desactivado",
"installed": "Instalado: ${version}",
"suggested": "Sugerido: ${version}",
"yesButton": "Sí",
"noButton": "No",
"warning": "Advertencia",
"options": "Opciones",
"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",
"patchedSubtitle": "Apps parcheadas",
"changeLaterSubtitle": "Puedes cambiar esto en la configuración más tarde.",
"noUpdates": "No hay actualizaciones disponibles",
"WIP": "Trabajo en progreso...",
"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}.",
"checkUpdateDialogTitle": "¿Buscar actualizaciones?",
"checkUpdateDialogText": "¿Quieres que ReVanced Manager compruebe si hay actualizaciones automáticamente?",
"notificationTitle": "Actualización descargada",
"notificationText": "Toca para instalar la actualización",
"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",
"updatesDisabled": "Por ahora no puedes actualizar una app parcheada. Re-parchea la app de nuevo."
},
"applicationItem": {
"infoButton": "Información"
},
"latestCommitCard": {
"loadingLabel": "Cargando...",
"timeagoLabel": "Hace ${time}",
"patcherLabel": "Parcheador: ",
"managerLabel": "Manager: ",
"updateButton": "Actualizar Manager"
},
"patcherView": {
"widgetTitle": "Parcheador",
"patchButton": "Parchear",
"armv7WarningDialogText": "El parche en dispositivos ARMv7 aún no está soportado y podría fallar. ¿Continuar de todos modos?",
"removedPatchesWarningDialogText": "Los siguientes parches han sido eliminados desde la última vez que los usaste.\n\n${patches}\n\n¿Continuar de todos modos?",
"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",
"currentVersion": "Actual",
"suggestedVersion": "Recomendada",
"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 es nulo actualmente",
"resetOptionsTooltip": "Restablecer las opciones de parche",
"viewTitle": "Opciones de parche",
"saveOptions": "Guardar",
"addOptions": "Añadir opciones",
"unselectPatch": "Deseleccionar parche",
"tooltip": "Más opciones de entrada",
"selectFilePath": "Seleccionar ruta del archivo",
"selectFolder": "Seleccionar carpeta",
"selectOption": "Seleccionar opción",
"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": {
"widgetTitle": "Instalador",
"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",
"shareButton": "Compartir archivo",
"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",
"englishOption": "Inglés",
"sourcesLabel": "Fuentes alternativas",
"sourcesLabelHint": "Configurar las fuentes alternativas para Parches de ReVanced e Integraciones ReVanced",
"sourcesIntegrationsLabel": "Fuente de las integraciones",
"useAlternativeSources": "Usar fuentes alternativas",
"useAlternativeSourcesHint": "Usar fuentes alternativas para Parches de ReVanced e Integraciones ReVanced en lugar de la API",
"sourcesResetDialogTitle": "Restablecer",
"sourcesResetDialogText": "¿Estás seguro de que quieres restablecer tus fuentes a sus valores predeterminados?",
"apiURLResetDialogText": "¿Estás seguro de que quieres restablecer la URL de tu API a su valor predeterminado?",
"sourcesUpdateNote": "Nota: Esto automáticamente descargará Parches ReVanced e Integraciones ReVanced desde las fuentes alternativas.\n\nEsto lo conectará a la fuente alternativa.",
"apiURLLabel": "URL de la API",
"apiURLHint": "Configurar la URL de API del ReVanced Manager",
"selectApiURL": "URL de la API",
"orgPatchesLabel": "Organización de los parches",
"sourcesPatchesLabel": "Fuente de los parches",
"orgIntegrationsLabel": "Organización de integraciones",
"contributorsLabel": "Contribuidores",
"contributorsHint": "Una lista de contribuidores de ReVanced",
"logsLabel": "Compartir registros",
"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)",
"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",
"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",
"uninstallButton": "Desinstalar",
"unmountButton": "Desmontar",
"rootDialogTitle": "Error",
"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.",
"packageNameLabel": "Nombre del paquete",
"installTypeLabel": "Tipo de instalación",
"mountTypeLabel": "Montar",
"regularTypeLabel": "Normal",
"patchedDateLabel": "Fecha del parche",
"appliedPatchesLabel": "Parches aplicados",
"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\nContacta con el desarrollador de la aplicación y solicita ayuda.",
"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

@@ -0,0 +1,304 @@
{
"okButton": "Aceptar",
"cancelButton": "Cancelar",
"dismissButton": "Descartar",
"quitButton": "Salir",
"updateButton": "Actualizar",
"enabledLabel": "Activado",
"disabledLabel": "Desactivado",
"installed": "Instalada: ${version}",
"suggested": "Sugerida: ${version}",
"yesButton": "Sí",
"noButton": "No",
"warning": "Advertencia",
"options": "Opciones",
"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.",
"noUpdates": "No hay actualizaciones disponibles",
"WIP": "Desarrollo en progreso...",
"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}.",
"checkUpdateDialogTitle": "¿Comprobar actualizaciones?",
"checkUpdateDialogText": "¿Quieres que ReVanced Manager compruebe si hay actualizaciones automáticamente?",
"notificationTitle": "Actualización descargada",
"notificationText": "Toca para instalar la actualización",
"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",
"updatesDisabled": "Por ahora no se puede actualizar o parchear la app. Intenta re-parchear de nuevo."
},
"applicationItem": {
"infoButton": "Información"
},
"latestCommitCard": {
"loadingLabel": "Cargando...",
"timeagoLabel": "Hace ${time}",
"patcherLabel": "Parcheador: ",
"managerLabel": "Manager: ",
"updateButton": "Actualizar ReVanced Manager"
},
"patcherView": {
"widgetTitle": "Parcheador",
"patchButton": "Parchear",
"armv7WarningDialogText": "El parcheo en dispositivos ARMv7 aún no está soportado y podría fallar. ¿Quieres continuar de todas formas?",
"removedPatchesWarningDialogText": "Los siguientes parches fueron removidos desde la última vez que los usaste.\n\n${patches}\n\n¿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",
"currentVersion": "Versión actual",
"suggestedVersion": "Version sugerida",
"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",
"resetOptionsTooltip": "Restablecer las opciones de parche",
"viewTitle": "Opciones de parche",
"saveOptions": "Guardar",
"addOptions": "Añadir opciones",
"unselectPatch": "Deseleccionar parche",
"tooltip": "Más opciones de entrada",
"selectFilePath": "Selecciona la ruta del archivo",
"selectFolder": "Selecciona la carpeta",
"selectOption": "Seleccionar opción",
"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": {
"widgetTitle": "Instalador",
"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",
"shareButton": "Compartir archivo",
"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",
"englishOption": "Inglés",
"sourcesLabel": "Fuentes alternativas",
"sourcesLabelHint": "Configura las fuentes alternativas para ReVanced Patches y ReVanced Integrations",
"sourcesIntegrationsLabel": "Fuente de integraciones",
"useAlternativeSources": "Usar fuentes alternativas",
"useAlternativeSourcesHint": "Usa fuentes alternativas para ReVanced Patches y ReVanced Integrations en lugar de la API",
"sourcesResetDialogTitle": "Reiniciar",
"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",
"orgIntegrationsLabel": "Organización de integraciones",
"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

@@ -0,0 +1,101 @@
{
"cancelButton": "Tühista",
"updateButton": "Värskenda",
"installed": "Paigaldatud: ${version}",
"suggested": "Soovitatud: ${version}",
"yesButton": "Jah",
"noButton": "Ei",
"warning": "Hoiatus",
"navigationView": {
"dashboardTab": "Töölaud",
"patcherTab": "Värskendaja",
"settingsTab": "Sätted"
},
"homeView": {
"refreshSuccess": "Edukalt värskendatud",
"widgetTitle": "Töölaud",
"updatesSubtitle": "Värskendused",
"patchedSubtitle": "Lapitud rakendused",
"noInstallations": "Ühtegi parandatud rakendust pole installitud",
"installUpdate": "Jätka värskenduse installimist?",
"updateChangelogTitle": "Muudatuste logi",
"downloadingMessage": "Värskenduse alla laadimine...",
"installingMessage": "Värskenduse installimine...",
"errorDownloadMessage": "Värskenduse alla laadimine nurjus",
"errorInstallMessage": "Värskenduse installimine nurjus",
"noConnection": "Internetiühendus puudub",
"updatesDisabled": "Parandatud rakenduste värskendamine on hetkel keelatud. Paranda rakendus uuesti."
},
"applicationItem": {},
"latestCommitCard": {
"loadingLabel": "Laadimine...",
"timeagoLabel": "${time} tagasi"
},
"patcherView": {
"widgetTitle": "Parandaja",
"patchButton": "Parandus"
},
"appSelectorCard": {
"noAppsLabel": "Ühtegi rakendust ei tuvastatud",
"currentVersion": "Praegune",
"suggestedVersion": "Soovitatud"
},
"patchSelectorCard": {
"widgetTitle": "Valige parandused",
"widgetTitleSelected": "Valitud parandused",
"widgetSubtitle": "Valige esmalt rakendus",
"widgetEmptySubtitle": "Ühtegi parandust pole valitud"
},
"socialMediaCard": {
"widgetTitle": "Sotsiaalmeediad",
"widgetSubtitle": "Oleme võrgus!"
},
"appSelectorView": {
"storageButton": "Salvestusruum",
"selectFromStorageButton": "Valige salvestusruumist",
"errorMessage": "Ei ole võimalik kasutada valitud rakendust",
"downloadToast": "Alla laadimise funktsioon ei ole hetkel saadaval",
"featureNotAvailable": "Funktsioon ei ole implementeeritud"
},
"patchesSelectorView": {
"viewTitle": "Valige parandused",
"searchBarHint": "Otsi parandustest"
},
"patchOptionsView": {},
"patchItem": {},
"installerView": {},
"settingsView": {
"exportSectionTitle": "Import & eksport",
"aboutLabel": "Teave",
"snackbarMessage": "Lõikelauale kopeeritud",
"restartAppForChanges": "Muudatuste rakendamiseks taaskäivitage rakendus",
"deleteTempDirLabel": "Kustuta ajutised failid",
"deleteTempDirHint": "Kustutage kasutamata ajutised failid",
"deletedTempDir": "Ajutised failid kustutatud",
"deletedLogs": "Logid kustutatud",
"exportKeystoreLabel": "Ekspordi võtmehoius",
"exportedKeystore": "Võtmehoius eksporditud",
"noKeystoreExportFileFound": "Puudub võtmesalv mida eksportida",
"importKeystoreLabel": "Impordi võtmehoius",
"importedKeystore": "Võtmehoius imporditud",
"jsonSelectorErrorMessage": "Valitud JSON-faili kasutamine nurjus"
},
"appInfoView": {
"widgetTitle": "Rakenduse teave",
"openButton": "Ava",
"uninstallButton": "Desinstalli",
"rootDialogTitle": "Viga",
"rootDialogText": "Rakendus installiti superkasutaja õigustega, kuid hetkel pole ReVanced halduril õigusi.\nPalun lubage esmalt superkasutaja õigused.",
"packageNameLabel": "Pakendi nimi",
"installTypeLabel": "Paigaldamise tüüp",
"patchedDateLabel": "Parandamise kuupäev",
"appliedPatchesLabel": "Rakendatud parandused",
"patchedDateHint": "${date} kell ${time}",
"appliedPatchesHint": "${quantity} rakendatud parandus/st (1= parandus, 2+= parandust)",
"updateNotImplemented": "Seda funktsiooni pole veel ellu viidud"
},
"contributorsView": {
"widgetTitle": "Panustajad"
},
"installErrorDialog": {}
}

View File

@@ -0,0 +1,86 @@
{
"okButton": "تأیید",
"cancelButton": "انصراف",
"quitButton": "خروج",
"updateButton": "به‌روزرسانی",
"installed": "نسخه نصب شده:${version}",
"suggested": "پیشنهاد شده:${version}",
"yesButton": "بله",
"noButton": "خیر",
"warning": "هشدار",
"options": "گزینه ها",
"notice": "توجه",
"noShowAgain": "دوباره نشان داده نشود",
"add": "افزودن",
"remove": "حذف",
"navigationView": {
"dashboardTab": "پیشخوان",
"patcherTab": "نصب کننده پچ",
"settingsTab": "تنظیمات"
},
"homeView": {
"refreshSuccess": "با موفقیت به روزرسانی شد",
"widgetTitle": "پیشخوان",
"updatesSubtitle": "به‌روزرسانی‌ها",
"patchedSubtitle": "برنامه های پچ شده",
"noInstallations": "هیچ برنامه پچ شده ای نصب نشده",
"installUpdate": "ادامه نصب بروزرسانی?",
"updateChangelogTitle": "لیست تغییرات",
"downloadingMessage": "در حال بارگیری به‌روزرسانی…",
"installingMessage": "درحال نصب بروزرسانی...",
"errorDownloadMessage": "دانلود بروزرسانی ممکن نیست",
"errorInstallMessage": "نصب بروزرسانی ممکن نیست",
"noConnection": "اتصال به اینترنت موجود نیست"
},
"applicationItem": {
"infoButton": "اطلاعات"
},
"latestCommitCard": {
"loadingLabel": "درحال بارگذاری...",
"timeagoLabel": "${time} پیش"
},
"patcherView": {
"widgetTitle": "نصب کننده پچ",
"patchButton": "پچ",
"requiredOptionDialogText": "بعضی از تنظیمات پچ باید انتخاب شود."
},
"appSelectorCard": {
"noAppsLabel": "هیچ برنامه ای یافت نشد",
"currentVersion": "فعلی",
"suggestedVersion": "پیشنهادی"
},
"patchSelectorCard": {
"widgetTitle": "پچ ها را انتخاب کنید",
"widgetTitleSelected": "پچ های انتخاب شده",
"widgetSubtitle": "ابتدا یک برنامه را انتخاب کنید",
"widgetEmptySubtitle": "هیچ پچی انتخاب نشده است"
},
"socialMediaCard": {
"widgetTitle": "شبکه های اجتماعی",
"widgetSubtitle": "ما آنلاین هستیم!"
},
"appSelectorView": {
"storageButton": "محل ذخیره",
"selectFromStorageButton": "انتخاب از محل ذخیره",
"errorMessage": "امکان استفاده از برنامه انتخابی وجود ندارد",
"downloadToast": "بارگیری عملکرد فعلا در دسترس نیست",
"featureNotAvailable": "قابلیت اضافه نشده است"
},
"patchesSelectorView": {
"viewTitle": "پچ ها را انتخاب کنید",
"searchBarHint": "جست و جوی پچ ها",
"universalPatches": "پچ های عمومی",
"newPatches": "پچ های جدید",
"patches": "پچ ها",
"doneButton": "انجام شد",
"defaultTooltip": "تمام پچ های پیشفرض انتخاب شود",
"noneTooltip": "حذف انتخاب همه پچ ها"
},
"patchOptionsView": {},
"patchItem": {},
"installerView": {},
"settingsView": {},
"appInfoView": {},
"contributorsView": {},
"installErrorDialog": {}
}

View File

@@ -0,0 +1,304 @@
{
"okButton": "OK",
"cancelButton": "Peruuta",
"dismissButton": "Sulje",
"quitButton": "Sulje",
"updateButton": "Päivitä",
"enabledLabel": "Käytössä",
"disabledLabel": "Ei käytössä",
"installed": "Asennettu: ${version}",
"suggested": "Ehdotettu: ${version}",
"yesButton": "Kyllä",
"noButton": "Ei",
"warning": "Varoitus",
"options": "Asetukset",
"notice": "Huomautus",
"noShowAgain": "Älä näytä tätä uudelleen",
"add": "Lisää",
"remove": "Poista",
"showChangelogButton": "Näytä muutokset",
"showUpdateButton": "Näytä päivitys",
"navigationView": {
"dashboardTab": "Hallintapaneeli",
"patcherTab": "Paikkaaja",
"settingsTab": "Asetukset"
},
"homeView": {
"refreshSuccess": "Päivitys onnistui",
"widgetTitle": "Hallintapaneeli",
"updatesSubtitle": "Päivitykset",
"patchedSubtitle": "Paikatut sovellukset",
"changeLaterSubtitle": "Voit muuttaa tätä aseutksista koska tahansa.",
"noUpdates": "Päivityksiä ei ole saatavilla",
"WIP": "Työn alla...",
"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}.",
"checkUpdateDialogTitle": "Tarkistetaanko päivitykset?",
"checkUpdateDialogText": "Haluatko ReVanced Managerin tarkistavan päivitykset automaattisesti?",
"notificationTitle": "Päivitys on ladattu",
"notificationText": "Asenna se napauttamalla",
"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",
"updatesDisabled": "Paikatun sovelluksen päivittäminen ei ole tällä hetkellä käytössä. Paikkaa sovellus uudelleen."
},
"applicationItem": {
"infoButton": "Tietoja"
},
"latestCommitCard": {
"loadingLabel": "Ladataan...",
"timeagoLabel": "${time} sitten",
"patcherLabel": "Paikkaaja: ",
"managerLabel": "Manager: ",
"updateButton": "Päivitä Manager"
},
"patcherView": {
"widgetTitle": "Paikkaaja",
"patchButton": "Paikkaa",
"armv7WarningDialogText": "Paikkausta ei vielä tueta ARMv7-laitteissa ja se voi epäonnistua. Jatketaanko silti?",
"removedPatchesWarningDialogText": "Seuraavat paikkaukset on poistettu edellisen käyttökerran jälkeen.\n\n${patches}\n\nJatketaanko silti?",
"requiredOptionDialogText": "Joitakin paikkausasetuksia on määritettävä."
},
"appSelectorCard": {
"widgetTitle": "Valitse sovellus",
"widgetTitleSelected": "Valitut sovellukset",
"widgetSubtitle": "Sovellusta ei valittu",
"noAppsLabel": "Sovelluksia ei löytynyt",
"currentVersion": "Nykyinen",
"suggestedVersion": "Ehdotettu",
"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 johtaa 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\nTee tarvittavat määritykset ennen kuin jatkat."
},
"patchOptionsView": {
"customValue": "Oma arvo",
"setToNull": "Aseta tyhjäksi",
"nullValue": "Tämä valinta arvo on tällä hetkellä nolla",
"resetOptionsTooltip": "Palauta paikkausasetukset",
"viewTitle": "Paikkausasetukset",
"saveOptions": "Tallenna",
"addOptions": "Lisää asetuksia",
"unselectPatch": "Peru korjauksen valinta",
"tooltip": "Enemmän syöteasetuksia",
"selectFilePath": "Valitse tiedostosijainti",
"selectFolder": "Valitse kansio",
"selectOption": "Valitse asetus",
"requiredOption": "Tämän asetuksen asettaminen on pakollinen",
"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 sovellusversion paikkausta ei tueta.",
"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": {
"widgetTitle": "Asentaja",
"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",
"shareButton": "Jaa tiedosto",
"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": "Vianselvitys",
"advancedSectionTitle": "Lisäasetukset",
"exportSectionTitle": "Tuonti/vienti",
"dataSectionTitle": "Tietolähteet",
"themeModeLabel": "Sovelluksen teema",
"systemThemeLabel": "Järjestelmä",
"lightThemeLabel": "Vaalea",
"darkThemeLabel": "Tumma tila",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Nauti paremmin laitettasi vastaavasta käyttökokemuksesta",
"languageLabel": "Kieli",
"languageUpdated": "Kieli on vaihdettu",
"englishOption": "Englanti",
"sourcesLabel": "Vaihtoehtoiset lähteet",
"sourcesLabelHint": "Määritä käytöstä poistettujen kohteiden ja käytöstä poistettujen integraatioiden vaihtoehtoiset lähteet",
"sourcesIntegrationsLabel": "Integraatioiden lähde",
"useAlternativeSources": "Käytä vaihtoehtoisia lähteitä",
"useAlternativeSourcesHint": "Käytä vaihtoehtoisia lähteitä ReVanced Patches ja ReVanced Integrations sijasta API",
"sourcesResetDialogTitle": "Palauta",
"sourcesResetDialogText": "Haluatko varmasti palauttaa oletuslähteet?",
"apiURLResetDialogText": "Haluatko varmasti palauttaa oletusarvoisen API:n URL-osoitteen?",
"sourcesUpdateNote": "Huomautus: Tämä lataa automaattisesti ReVanced Patches ja ReVanced Integrations vaihtoehtoisista lähteistä.\n\nTämä yhdistää sinut vaihtoehtoiseen lähdekoodiin.",
"apiURLLabel": "API:n URL-osoite",
"apiURLHint": "Määritä reVanced Manager API URL",
"selectApiURL": "API:n URL-osoite",
"orgPatchesLabel": "Paikkauksien organisaatio",
"sourcesPatchesLabel": "Paikkauksien lähde",
"orgIntegrationsLabel": "Integraatioiden organisaatio",
"contributorsLabel": "Osallistujat",
"contributorsHint": "Listaus ReVancedin kehitykseen osallistuneista",
"logsLabel": "Jaa lokit",
"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)",
"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",
"exportPatchesLabel": "Vie paikkasvalikoima",
"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",
"uninstallButton": "Poista asennus",
"unmountButton": "Irroita liitos",
"rootDialogTitle": "Virhe",
"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.",
"packageNameLabel": "Paketin nimi",
"installTypeLabel": "Asennustyyppi",
"mountTypeLabel": "Liitä",
"regularTypeLabel": "Tavallinen",
"patchedDateLabel": "Paikkausaika",
"appliedPatchesLabel": "Suoritetut paikkaukset",
"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\nOta yhteyttä sovelluksen kehittäjään ja pyydä lisäämään tuki.",
"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

@@ -0,0 +1,88 @@
{
"okButton": "Ok",
"cancelButton": "Hindi",
"dismissButton": "Kalimutan",
"quitButton": "Itigil",
"updateButton": "Magbago",
"enabledLabel": "Makaya",
"disabledLabel": "Hindi",
"installed": "Naka-install: ${version}",
"suggested": "Version payo ng ReVanced: ${version}",
"yesButton": "Sige",
"noButton": "Hindi",
"warning": "Babala",
"options": "Mga Pagpipilian",
"notice": "Pabatid",
"noShowAgain": "Wag na ipakita ito muli",
"add": "Idagdag",
"remove": "Itanggal",
"showChangelogButton": "Ipakita ang naibago",
"showUpdateButton": "Ipakita ang pagbabago",
"navigationView": {
"dashboardTab": "Dashboard",
"patcherTab": "Patcher",
"settingsTab": "Settings"
},
"homeView": {
"refreshSuccess": "Tapos nang Refresh",
"widgetTitle": "Mga Dashboard",
"updatesSubtitle": "Mga Pagbabago",
"patchedSubtitle": "Naka-patch nga aplikasyon",
"changeLaterSubtitle": "Pwede mo palitan ito sa settings mamaya.",
"noUpdates": "Walang pagbabagong mayroon",
"downloadingMessage": "Nagda-download ng update..."
},
"applicationItem": {
"infoButton": "Impormasyon"
},
"latestCommitCard": {
"loadingLabel": "Naglo-load...",
"timeagoLabel": "${time} ang nakalipas"
},
"patcherView": {},
"appSelectorCard": {
"currentVersion": "Ngayong Bersyon"
},
"patchSelectorCard": {
"widgetEmptySubtitle": "Walang patches ang napili"
},
"socialMediaCard": {
"widgetSubtitle": "Online na kami!"
},
"appSelectorView": {
"viewTitle": "Pumili ka ng app",
"searchBarHint": "Hanapin ang app",
"storageButton": "Storage",
"selectFromStorageButton": "Pumili ka galing sa storage"
},
"patchesSelectorView": {
"viewTitle": "Pumili ka ng patches",
"doneButton": "Tapos na",
"defaultChip": "Default",
"noneChip": "Wala"
},
"patchOptionsView": {},
"patchItem": {},
"installerView": {},
"settingsView": {
"systemThemeLabel": "Sistema",
"lightThemeLabel": "Liwanag",
"darkThemeLabel": "Dilim",
"dynamicThemeLabel": "Material You",
"languageLabel": "Wika",
"deleteLogsLabel": "Burahin lahat ng logs",
"deletedLogs": "Nabura na yung logs"
},
"appInfoView": {
"widgetTitle": "Impormasyon",
"openButton": "Buksan",
"uninstallButton": "i-alis",
"unmountButton": "i-tanggal",
"unmountDialogText": "Gusto mo bang i-tanggal ang aplikasyong ito?",
"uninstallDialogText": "Gusto mo bang i-alis ang aplikasyong ito?",
"patchedDateHint": "${date} at ${time}",
"appliedPatchesHint": "${quantity} ang naka-apply nga patches"
},
"contributorsView": {},
"installErrorDialog": {}
}

View File

@@ -0,0 +1,304 @@
{
"okButton": "OK",
"cancelButton": "Annuler",
"dismissButton": "Ignorer",
"quitButton": "Quitter",
"updateButton": "Mettre à jour",
"enabledLabel": "Activé",
"disabledLabel": "Désactivé",
"installed": "Version installée : ${version}",
"suggested": "Version suggérée : ${version}",
"yesButton": "Oui",
"noButton": "Non",
"warning": "Avertissement",
"options": "Options",
"notice": "Remarque",
"noShowAgain": "Ne plus afficher",
"add": "Ajouter",
"remove": "Supprimer",
"showChangelogButton": "Afficher le journal des modifications",
"showUpdateButton": "Afficher les mises à jour",
"navigationView": {
"dashboardTab": "Tableau de bord",
"patcherTab": "Patcheur",
"settingsTab": "Paramètres"
},
"homeView": {
"refreshSuccess": "Actualisé avec succès",
"widgetTitle": "Tableau de bord",
"updatesSubtitle": "Mises à jour",
"patchedSubtitle": "Applications patchées",
"changeLaterSubtitle": "Vous pouvez changer cela dans les paramètres ultérieurement.",
"noUpdates": "Aucune mise à jour disponible",
"WIP": "Bientôt disponible...",
"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 ${version}.",
"downloadConsentDialogTitle": "Télécharger les fichiers requis ?",
"downloadConsentDialogText": "ReVanced Manager à besoin de télécharger des fichiers nécessaires pour fonctionner correctement.",
"downloadConsentDialogText2": "Vous allez être connecté à ${url}.",
"checkUpdateDialogTitle": "Vérifier les mises à jour ?",
"checkUpdateDialogText": "Voulez-vous que ReVanced Manager vérifie les mises à jour automatiquement ?",
"notificationTitle": "Mise à jour téléchargée",
"notificationText": "Cliquez pour installer la mise à jour",
"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",
"updatesDisabled": "La mise à jour d'une application patchée est actuellement désactivée. Repatchez l'application."
},
"applicationItem": {
"infoButton": "Info"
},
"latestCommitCard": {
"loadingLabel": "Chargement...",
"timeagoLabel": "Il y a ${time}",
"patcherLabel": "Patcheur : ",
"managerLabel": "Manager: ",
"updateButton": "Mettre à jour le Manager"
},
"patcherView": {
"widgetTitle": "Patcheur",
"patchButton": "Patcher",
"armv7WarningDialogText": "Patcher sur des appareils sur ARMv7 n'est pas encore supporté et pourrait échouer. Continuer quand même ?",
"removedPatchesWarningDialogText": "Les patchs suivants ont été supprimés depuis la dernière fois que vous les avez utilisés.\n\n${patches}\n\nContinuer quand même ?",
"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",
"currentVersion": "Version actuelle",
"suggestedVersion": "Version suggérée",
"anyVersion": "Toute 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électionner une application",
"searchBarHint": "Chercher une application",
"storageButton": "Stockage",
"selectFromStorageButton": "Sélectionner depuis le 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é ne correspond pas à la version recommandée ce qui pourrait créer des problèmes inattendus. Veuillez utiliser la version recommendée.\n\nVersion sélectionnée : ${selected}\nVersion recommendée : ${suggested}\n\nPour continuer quand même, désactivez \"Exiger la version recommendée de l'application\" dans les paramètres.",
"featureNotAvailable": "Fonctionnalité non implémentée",
"featureNotAvailableText": "Cette application est un APK fractionné et ne peut être patchée et installée de manière fiable qu'en la montant avec les autorisations root. Toutefois, vous pouvez patcher et installer un APK complet en le sélectionnant depuis le stockage."
},
"patchesSelectorView": {
"viewTitle": "Sélectionner les 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 les patchs sélectionnés",
"noSavedPatches": "Aucune sélection de patchs enregistrée pour l'application sélectionnée.\nAppuyez sur Terminé pour sauvegarder la sélection actuelle.",
"noPatchesFound": "Aucun patch n'a été trouvé pour l'application sélectionnée",
"setRequiredOption": "Certains patchs nécessitent des options à définir :\n\n${patches}\n\nVeuillez les définir avant de continuer."
},
"patchOptionsView": {
"customValue": "Valeur personnalisée",
"setToNull": "Définir à NULL",
"nullValue": "Cette valeur d'option est actuellement nulle",
"resetOptionsTooltip": "Réinitialiser les options de patch",
"viewTitle": "Options de patch",
"saveOptions": "Enregistrer",
"addOptions": "Ajouter des options",
"unselectPatch": "Désélectionner le patch",
"tooltip": "Plus d'options d'entrée",
"selectFilePath": "Sélectionner l'emplacement du fichier",
"selectFolder": "Sélectionner le dossier",
"selectOption": "Sélectionner une option",
"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 entrainer des erreurs dans la modification.\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 les patchs et options par défaut. Leur modification peut entraîner des problèmes inattendus.\n\nVous aurez besoin d'activer « Autoriser la modification de la sélection de patchs » dans les paramètres avant de modifier toute sélection de patchs.",
"patchesChangeWarningDialogButton": "Utiliser la sélection par défaut"
},
"installerView": {
"widgetTitle": "Installateur",
"installType": "Choisissez le mode d'installation",
"installTypeDescription": "Sélectionner le mode d'installation avec lequel continuer.",
"installButton": "Installer",
"installRootType": "Monter",
"installNonRootType": "Standard",
"warning": "Désactiver les mises à jour automatiques pour l'application patchée afin d'éviter les problèmes inattendus.",
"pressBackAgain": "Appuyez sur retour une nouvelle fois pour quitter",
"openButton": "Ouvrir",
"shareButton": "Partager le fichier",
"notificationTitle": "ReVanced Manager est en train de patcher",
"notificationText": "Appuyer pour revenir à linstallateur",
"exportApkButtonTooltip": "Exporter l'APK patché",
"exportLogButtonTooltip": "Exporter les logs",
"screenshotDetected": "Une capture décran a été détectée. Si vous essayez de partager le journal, veuillez plutôt partager une copie de texte.\n\nCopier les logs dans le presse-papiers ?",
"copiedToClipboard": "Logs copiés dans le presse-papiers",
"noExit": "L'installateur est toujours en fonctionnement, impossible de quitter..."
},
"settingsView": {
"widgetTitle": "Paramètres",
"appearanceSectionTitle": "Apparence",
"teamSectionTitle": "Équipe",
"debugSectionTitle": "Débogage",
"advancedSectionTitle": "Avancé",
"exportSectionTitle": "Import & export",
"dataSectionTitle": "Sources de données",
"themeModeLabel": "Thème de l'application",
"systemThemeLabel": "Système",
"lightThemeLabel": "Clair",
"darkThemeLabel": "Sombre",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Profitez d'une expérience plus proche de votre appareil",
"languageLabel": "Langue",
"languageUpdated": "Langue mise à jour",
"englishOption": "Anglais",
"sourcesLabel": "Sources alternatives",
"sourcesLabelHint": "Configure les sources alternatives pour les patchs et les intégrations ReVanced",
"sourcesIntegrationsLabel": "Source des intégrations",
"useAlternativeSources": "Utiliser les sources alternatives",
"useAlternativeSourcesHint": "Utilise les sources alternatives pour les patchs et les intégrations ReVanced à la place de l'API",
"sourcesResetDialogTitle": "Réinitialiser",
"sourcesResetDialogText": "Êtes-vous sûr de vouloir réinitialiser vos sources à leurs valeurs par défaut ?",
"apiURLResetDialogText": "Êtes-vous sûr de vouloir réinitialiser l'URL d'API à sa valeur par défaut ?",
"sourcesUpdateNote": "Note : Cela téléchargera automatiquement les patchs et les intégrations ReVanced depuis les 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",
"orgIntegrationsLabel": "Organisation des intégrations",
"contributorsLabel": "Contributeurs",
"contributorsHint": "Liste des contributeurs de ReVanced",
"logsLabel": "Partager les journaux",
"logsHint": "Partager les logs 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": "Le changement de sélection par défaut des patchs peut causer des problèmes inattendus \n\nActiver quand même?",
"disablePatchesSelectionWarningText": "Vous êtes sur le point de désactiver le changement de sélection par défaut des patchs.\nLa sélection par défaut des patchs sera restaurée.\n\nDésactiver quand même ?",
"autoUpdatePatchesLabel": "Mise à jour automatique des patchs",
"autoUpdatePatchesHint": "Mise à jour automatique des patchs ReVanced vers la dernière version",
"showUpdateDialogLabel": "Afficher le dialogue de mise à jour",
"showUpdateDialogHint": "Affiche une boîte de dialogue quand une nouvelle mise à jour est disponible",
"universalPatchesLabel": "Afficher les patchs universels",
"universalPatchesHint": "Afficher toutes les applications et les patchs universels (peut ralentir la liste des applications)",
"versionCompatibilityCheckLabel": "Vérification de la compatibilité des versions",
"versionCompatibilityCheckHint": "Empêcher la sélection de patchs qui ne sont pas compatibles avec la version sélectionnée de l'application",
"requireSuggestedAppVersionLabel": "Requiert la version suggérée de l'application",
"requireSuggestedAppVersionHint": "Empêcher la sélection d'une application avec une version qui n'est pas celle suggérée",
"requireSuggestedAppVersionDialogText": "La sélection d'une application qui n'est pas la version suggérée peut causer des problèmes inattendus.\n\nVoulez-vous quand même continuer ?",
"aboutLabel": "À propos",
"snackbarMessage": "Copié dans le presse-papier",
"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",
"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 patch à 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 des patchs",
"resetStoredPatchesHint": "Réinitialiser la sélection des patchs sauvegardés",
"resetStoredPatchesDialogTitle": "Réinitialiser la sélection des patchs ?",
"resetStoredPatchesDialogText": "La sélection par défaut des patchs sera restaurée.",
"resetStoredPatches": "La sélection des patchs a été réinitialisée",
"resetStoredOptionsLabel": "Réinitialiser les options de patch",
"resetStoredOptionsHint": "Réinitialiser toutes les options de patch",
"resetStoredOptionsDialogTitle": "Réinitialiser les options de patch ?",
"resetStoredOptionsDialogText": "La réinitialisation des options de patch supprimera toutes les options enregistrées.",
"resetStoredOptions": "Les options ont été réinitialisées",
"deleteLogsLabel": "Effacer les logs",
"deleteLogsHint": "Supprimer les logs collectés de ReVanced Manager",
"deletedLogs": "Journaux supprimés",
"regenerateKeystoreLabel": "Régénérer le magasin de clés",
"regenerateKeystoreHint": "Régénérer le magasin de clés utilisé pour signer l'application",
"regenerateKeystoreDialogTitle": "Régénérer le magasin de clés ?",
"regenerateKeystoreDialogText": "Les applications patchées signées avec lancien magasin 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 l'apk",
"jsonSelectorErrorMessage": "Impossible d'utiliser le fichier JSON sélectionné",
"keystoreSelectorErrorMessage": "Impossible d'utiliser le fichier KEYSTORE sélectionné"
},
"appInfoView": {
"widgetTitle": "Infos de l'application",
"openButton": "Ouvrir",
"uninstallButton": "Désinstaller",
"unmountButton": "Démonter",
"rootDialogTitle": "Erreur",
"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 permissions root, mais ReVanced Manager n'a actuellement aucune permission.\nVeuillez d'abord accorder l'accès root.",
"packageNameLabel": "Nom du paquet",
"installTypeLabel": "Type d'installation",
"mountTypeLabel": "Monter",
"regularTypeLabel": "Standard",
"patchedDateLabel": "Date du patch",
"appliedPatchesLabel": "Patchs appliqués",
"patchedDateHint": "le ${date} à ${time}",
"appliedPatchesHint": "${quantity} patchs appliqués",
"updateNotImplemented": "Cette fonctionnalité n'est pas encore disponible"
},
"contributorsView": {
"widgetTitle": "Contributeurs"
},
"installErrorDialog": {
"mount_version_mismatch": "Incompatibilité de version",
"mount_no_root": "Aucun accès root",
"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 de downgrader",
"status_failure_conflict": "Conflit d'installation",
"status_failure_storage": "Problème de stockage de l'installation",
"status_failure_incompatible": "Installation incompatible",
"status_failure_timeout": "Délai d'installation dépassé",
"status_unknown": "Échec de l'installation",
"mount_version_mismatch_description": "L'installation a échoué car l'application installée est une version différente de l'application patchée.\n\nInstallez la version de l'application que vous montez et réessayez.",
"mount_no_root_description": "L'installation a échoué parce que l'accès root n'est pas accordé.\n\nAccordez l'accès root à ReVanced Manager et réessayer.",
"mount_missing_installation_description": "L'installation a échoué parce que l'application non patchée n'est pas installée sur cet appareil afin de la monter. \n\nInstallez l'application non patchée avant de monter 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\nContactez le développeur de l'application et demandez de l'aide.",
"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 l'application patchée a une version inférieure à 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

@@ -0,0 +1,268 @@
{
"okButton": "אישור",
"cancelButton": "ביטול",
"dismissButton": "התעלם",
"quitButton": "יציאה",
"updateButton": "עדכן",
"enabledLabel": "הופעל",
"disabledLabel": "הושבת",
"installed": "מותקן: ${version}",
"suggested": "מוצעת: ${version}",
"yesButton": "כן",
"noButton": "לא",
"warning": "אזהרה",
"options": "אפשרויות",
"notice": "התראה",
"noShowAgain": "אל תציג זאת שוב",
"add": "הוסף",
"remove": "הסר",
"showChangelogButton": "הצגת יומן שינויים",
"showUpdateButton": "הצג עדכון",
"navigationView": {
"dashboardTab": "לוח בקרה",
"patcherTab": "מתקן",
"settingsTab": "הגדרות"
},
"homeView": {
"refreshSuccess": "רוענן בהצלחה",
"widgetTitle": "לוח בקרה",
"updatesSubtitle": "עדכונים",
"patchedSubtitle": "אפליקציות מתוקנות",
"changeLaterSubtitle": "ניתן לשנות זאת בהגדרות מאוחר יותר.",
"noUpdates": "אין עדכונים זמינים",
"WIP": "עבודה בתהליך...",
"noInstallations": "אין אפליקציות מתוקנת מותקנות",
"installUpdate": "המשך להתקין את העדכון?",
"updateSheetTitle": "עדכן את ReVanced Manager",
"updateDialogTitle": "עידכון חדש זמין",
"updatePatchesSheetTitle": "עדכן את ReVanced Patches",
"updateChangelogTitle": "היסטורית שינויים",
"updateDialogText": "עדכון חדש זמין עבור ${file}.\n\nהגרסה המותקנת כרגע היא ${version}.",
"downloadConsentDialogTitle": "להוריד קבצי עזר?",
"downloadConsentDialogText": "ReVanced Manager צריך להוריד קבצי עזר על מנת לעבוד כמו שצריך.",
"downloadConsentDialogText2": "זה יחבר אותך ל${url}.",
"checkUpdateDialogTitle": "לבדוק עדכונים?",
"checkUpdateDialogText": "מעדיף ש-ReVanced Manager יבדוק עדכונים אוטומטית?",
"notificationTitle": "העדכון הורד",
"notificationText": "הקש כדי להתקין את העדכון",
"downloadingMessage": "מוריד עדכון...",
"downloadedMessage": "עדכון הורד",
"installingMessage": "מתקין עדכון...",
"errorDownloadMessage": "הורדת קובץ העדכון נכשלה",
"errorInstallMessage": "לא ניתן להתקין את העדכון",
"noConnection": "אין חיבור לאינטרנט",
"updatesDisabled": "עדכון אפליקציה מתוקנת מושבת כרגע. תקן שוב את האפליקציה."
},
"applicationItem": {
"infoButton": "מידע"
},
"latestCommitCard": {
"loadingLabel": "טוען...",
"timeagoLabel": "לפני ${time}",
"patcherLabel": "מתקן: ",
"managerLabel": "מנהל: ",
"updateButton": "עדכן את Manager"
},
"patcherView": {
"widgetTitle": "מתקן",
"patchButton": "תיקון",
"armv7WarningDialogText": "תיקון במכשירי ARMv7 לא נתמך כרגע ואולי יכשל. להמשיך בכל זאת?",
"removedPatchesWarningDialogText": "התיקונים הבאים הוסרו מאז הפעם האחרונה שהשתמשת בהם.\n${patches}\nלהמשיך בכל זאת?",
"requiredOptionDialogText": "כמה אפשרויות תיקון חייבות להיקבע."
},
"appSelectorCard": {
"widgetTitle": "בחר אפליקציה",
"widgetTitleSelected": "אפליקציה שנבחרה",
"widgetSubtitle": "לא נבחרה אפליקציה",
"noAppsLabel": "לא נמצאו יישומים",
"currentVersion": "נוֹכְחִי",
"suggestedVersion": "מוצע",
"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": "תכונה לא מיושמת"
},
"patchesSelectorView": {
"viewTitle": "בחר תיקונים",
"searchBarHint": "חפש תיקונים",
"universalPatches": "תיקונים אוניברסליים",
"newPatches": "תיקונים חדשים",
"patches": "תיקונים",
"doneButton": "בוצע",
"defaultChip": "ברירת מחדל",
"defaultTooltip": "בחר את כל תיקוני ברירת המחדל",
"noneChip": "כלום",
"noneTooltip": "בטל את בחירת כל התיקונים",
"loadPatchesSelection": "טען בחירת תיקונים",
"noSavedPatches": "אין תיקונים שמורים עבור האפליקציה שנבחרה.\nלחץ על בוצע כדי לשמור את הבחירה הנוכחית.",
"noPatchesFound": "לא נמצאו תיקונים ליישום שנבחר",
"setRequiredOption": "תיקונים מסויימים דורשים שאופציות ייקבעו:\n\n${patches}\n\nאנא קבע אותן לפני המשכה."
},
"patchOptionsView": {
"customValue": "ערך מותאם אישית",
"resetOptionsTooltip": "אפס אפשרויות תיקונים",
"viewTitle": "אפשרויות תיקון",
"saveOptions": "שמור",
"addOptions": "הוסף אפשרויות",
"deselectPatch": "בטל את בחירת התיקון",
"tooltip": "אפשרויות קלט נוספות",
"selectFilePath": "בחר נתיב קובץ",
"selectFolder": "בחר תיקייה",
"selectOption": "בחירת אפשרות",
"requiredOption": "האפשרות הזו דרושה",
"unsupportedOption": "האפשרות הזו אינה נתמכת",
"requiredOptionNull": "האפשרויות הבאות חייבות להיקבע:\n\n${options}"
},
"patchItem": {
"unsupportedDialogText": "בחירת תיקון זה עלול לגרום לשגיאות תיקון.\nגרסת יישום: ${packageVersion}\nגרסאות נתמכות:\n${supportedVersions}",
"unsupportedPatchVersion": "תיקון זה אינו נתמך עבור גרסה זו של האפליקציה.",
"unsupportedRequiredOption": "התיקון כולל אפשרות דרושה שאינה נתמכת על ידי אפליקציה זו",
"patchesChangeWarningDialogButton": "השתמש בבחירה ברירת המחדל"
},
"installerView": {
"widgetTitle": "מתקין",
"installType": "בחר סוג התקנה",
"installButton": "התקן",
"installRootType": "טען",
"installNonRootType": "רגיל",
"warning": "השבת עדכונים אוטומטיים עבור באפליקציה המתוקנת כדי למנוע בעיות בלתי צפויות.",
"pressBackAgain": "לחץ שוב כדי לבטל",
"openButton": "פתח",
"shareButton": "שתף קובץ",
"notificationTitle": "מנהל העדכונים בתהליך תיקון",
"notificationText": "לחץ כדי לחזור להתקנה",
"exportApkButtonTooltip": "יצא APK מתוקן",
"exportLogButtonTooltip": "יצא תיעוד אירועים",
"screenshotDetected": "צילום מסך זוהה. אם אתה מנסה לשתף את תיעוד האירועים, אנא שתף העתק טקסט במקום.\n\nהעתקת תיעוד האירועים ללוח הגזירים?",
"copiedToClipboard": "תיעוד האירועים הועתק ללוח הגזירים",
"noExit": "תוכנית ההתקנה עדיין פועלת, לא ניתן לצאת..."
},
"settingsView": {
"widgetTitle": "הגדרות",
"appearanceSectionTitle": "מראה",
"teamSectionTitle": "צוות",
"debugSectionTitle": "איתור באגים",
"advancedSectionTitle": "הגדרות מתקדמות",
"exportSectionTitle": "יבוא ויצוא",
"themeModeLabel": "ערכת הנושא של האפליקציה",
"systemThemeLabel": "מערכת",
"lightThemeLabel": "בהיר",
"darkThemeLabel": "מצב כהה",
"dynamicThemeLabel": "Material you",
"dynamicThemeHint": "תהנה/י מחוויה קרובה יותר למכשיר שלך",
"languageLabel": "שפה",
"englishOption": "אנגלית",
"sourcesIntegrationsLabel": "מקור אינטגרציות",
"sourcesResetDialogTitle": "איפוס",
"sourcesResetDialogText": "האם אתה בטוח שברצונך לאפס את המקורות לערכי ברירת המחדל שלהם?",
"apiURLResetDialogText": "האם אתה בטוח שברצונך לאפס את כתובת הAPI לערך ברירת המחדל?",
"apiURLLabel": "כתובת API",
"selectApiURL": "כתובת API",
"orgPatchesLabel": "ארגון תיקונים",
"sourcesPatchesLabel": "מקור התיקונים",
"orgIntegrationsLabel": "ארגון אינטגרציות",
"contributorsLabel": "תורמים",
"contributorsHint": "רשימת התורמים לReVanced",
"logsLabel": "שתף לוג",
"disablePatchesSelectionWarningText": "אתה עומד לכבות את שינוי בחירת התיקונים.\nהבחירה ברירת המחדל של התיקונים תשוחזר.\n\nלכבות בכל מקרה?",
"autoUpdatePatchesLabel": "עדכון תיקונים באופן אוטומטי",
"autoUpdatePatchesHint": "עדכן אוטומטית את התיקונים לגרסה העדכנית ביותר",
"universalPatchesLabel": "הצג תיקונים אוניברסליים",
"universalPatchesHint": "הצג את כל האפליקציות והתיקונים האוניברסליים (עשוי להאט את רשימת האפליקציות)",
"versionCompatibilityCheckLabel": "בדיקת תאימות לגרסה",
"aboutLabel": "אודות",
"snackbarMessage": "הועתק ללוח",
"restartAppForChanges": "הפעל מחדש את היישום כדי להחיל את השינויים",
"deleteTempDirLabel": "מחק קבצים זמניים",
"deleteTempDirHint": "מחק קבצים זמניים שאינם בשימוש",
"deletedTempDir": "קבצים זמניים נמחקו",
"exportPatchesLabel": "ייצא תיקונים נבחרים",
"exportPatchesHint": "ייצא תיקונים נבחרים לקובץ JSON",
"exportedPatches": "תיקונים נבחרים יוצאו",
"noExportFileFound": "אין תיקונים נבחרים לייצוא",
"importPatchesLabel": "ייבא תיקונים נבחרים",
"importPatchesHint": "ייבא תיקונים נבחרים מקובץ JSON",
"importedPatches": "תיקונים נבחרים יובאו",
"resetStoredPatchesLabel": "אפס בחירת תיקונים",
"resetStoredPatchesHint": "אפס את בחירת התיקונים המאוחסנים",
"resetStoredPatchesDialogTitle": "אפס בחירת תיקונים?",
"resetStoredPatchesDialogText": "ברירת המחדל של בחירת תיקונים תשוחזר.",
"resetStoredPatches": "בחירת התיקונים אופסה",
"resetStoredOptionsLabel": "אפס אפשרויות תיקונים",
"resetStoredOptionsHint": "אפס את כל אפשרויות התיקונים",
"resetStoredOptionsDialogTitle": "אפס אפשרויות תיקונים?",
"resetStoredOptionsDialogText": "איפוס אפשרויות התיקון יסיר את כל האפשרויות השמורות.",
"resetStoredOptions": "האפשרויות אופסו",
"deleteLogsLabel": "נקה יומנים",
"deletedLogs": "תיעוד אירועים נחמק",
"regenerateKeystoreLabel": "יצירה חוזרת של מפתח-האחסון",
"regenerateKeystoreDialogTitle": "יצירה חוזרת של מפתח-האחסון?",
"regeneratedKeystore": "מפתח-אחסון נוצר מחדש",
"exportKeystoreLabel": "יצוא מפתח-אחסון",
"exportedKeystore": "מפתח-אחסון מיוצא",
"noKeystoreExportFileFound": "אין מפתח-אחסון כדי ליציא",
"importKeystoreLabel": "יבוא מפתח-אחסון",
"importedKeystore": "מפתח-אחסון מיובא",
"jsonSelectorErrorMessage": "לא ניתן להשתמש בקובץ JSON שנבחר"
},
"appInfoView": {
"widgetTitle": "מידע אפליקציה",
"openButton": "פתח",
"uninstallButton": "הסר התקנה",
"rootDialogTitle": "שגיאה",
"uninstallDialogText": "האם אתה בטוח שברצונך להסיר את האפליקציה הזו?",
"rootDialogText": "האפליקציה הותקנה עם הרשאות משתמש-על, אך כרגע למנהל המחודש אין הרשאות.\nאנא הענק תחילה הרשאות משתמש-על.",
"packageNameLabel": "שם חבילה",
"installTypeLabel": "סוג התקנה",
"patchedDateLabel": "תאריך תיקון",
"appliedPatchesLabel": "תיקונים הוחלו",
"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_unknown": "ההתקנה נכשלה",
"mount_version_mismatch_description": "ההתקנה נכשלה בגלל שהאפליקציה המותקנת היא גרסה שונה מהאפליקציה המתוקנת.\n\nהתקן את גרסת האפליקציה שאתה מעלה ונסה שוב.",
"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צור קשר עם מפתח האפליקציה ובקש תמיכה.",
"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

@@ -0,0 +1,145 @@
{
"okButton": "ठीक है",
"cancelButton": "रद्द करें",
"dismissButton": "बंद करें",
"quitButton": "छोड़ें",
"updateButton": "अपडेट करें",
"enabledLabel": "सक्रिय",
"installed": "इंस्टॉल्ड: ${version}",
"suggested": "सुझाया गया: ${version}",
"yesButton": "हाँ",
"noButton": "नहीं",
"warning": "चेतावनी",
"options": "विकल्प",
"notice": "सूचना",
"noShowAgain": "इसे पुनः न दिखाएँ",
"add": "ऐड करें",
"remove": "हटाएं",
"showChangelogButton": "बदलाव दिखाएं",
"navigationView": {
"dashboardTab": "नियंत्रण-पट्ट",
"patcherTab": "पैचर",
"settingsTab": "सेटिंग्स"
},
"homeView": {
"refreshSuccess": "रीफ्रेश हो गया है",
"widgetTitle": "नियंत्रण-पट्ट",
"updatesSubtitle": "अपडेट",
"patchedSubtitle": "पैच किए हुए एप्लीकेशन",
"noInstallations": "कोई पैच किया गया एप्लिकेशन इंस्टॉल नहीं किया गया",
"installUpdate": "अपडेट इंस्टॉल करना जारी रखें?",
"updateChangelogTitle": "परिवर्तन पत्र",
"downloadingMessage": "अपडेट डाउनलोड हो रहा है",
"installingMessage": "अपडेट इंस्टॉल हो रहा है",
"errorDownloadMessage": "अपडेट डाउनलोड करने मे असफल",
"errorInstallMessage": "अपडेट इंस्टॉल करने में असफल",
"noConnection": "कोई इंटरनेट कनेक्शन नहीं",
"updatesDisabled": "पैच किए गए ऐप को अपडेट करना वर्तमान में अक्षम है।\nएप को फिर से पैच करें।"
},
"applicationItem": {
"infoButton": "जानकारी"
},
"latestCommitCard": {
"loadingLabel": "लोड हो रहा है...",
"timeagoLabel": "${time} पहले"
},
"patcherView": {
"widgetTitle": "पैचर",
"patchButton": "पैच"
},
"appSelectorCard": {
"noAppsLabel": "कोई एप्लिकेशन नहीं मिला।",
"currentVersion": "वर्तमान",
"suggestedVersion": "सुझाव"
},
"patchSelectorCard": {
"widgetTitle": "पैच चुने",
"widgetTitleSelected": "चुने हुए पैच",
"widgetSubtitle": "पहले किसी एप्लिकेशन को चुने",
"widgetEmptySubtitle": "कोई पैच चुना हुआ नहीं"
},
"socialMediaCard": {
"widgetTitle": "सामाजिक",
"widgetSubtitle": "हम ऑनलाइन है"
},
"appSelectorView": {
"storageButton": "संग्रहण",
"selectFromStorageButton": "स्टोरेज से चुनें",
"errorMessage": "चुने हुए ऐप्लकैशन को उपयोग करने मे असमर्थ",
"downloadToast": "डाउनलोड फ़ंक्शन वर्तमान में अनुपलब्ध है",
"featureNotAvailable": "कार्रवाई लागू नहीं किया गया है"
},
"patchesSelectorView": {
"viewTitle": "पैच चुने",
"searchBarHint": "पैच खोजे",
"doneButton": "पूरा हुआ",
"defaultTooltip": "सभी डिफ़ॉल्ट पैच का चयन करें",
"noneTooltip": "सभी पैच अचयनित करें",
"noPatchesFound": "चुने हुए ऐप्लकैशन के लिए कोई पैच नहीं मिले"
},
"patchOptionsView": {
"saveOptions": "सेव करें",
"selectFolder": "फ़ोल्डर चुनें"
},
"patchItem": {
"unsupportedDialogText": "इस पैच को चुनने से पैचिंग मे त्रुटि हो सकती है। \n\nएप वर्ज़न: ${packageVersion}\nसमर्थित वर्ज़न:\n${supportedVersions}"
},
"installerView": {
"installButton": "इंस्टॉल करे",
"openButton": "खोलें",
"notificationTitle": "ReVanced Manager पैच कर रहा है",
"notificationText": "इंस्टॉल कर्ता पर जाने के लिए टैप करे",
"noExit": "इंस्टॉल कर्ता अब भी चल रहा है, बाहर नहीं निकल सकते"
},
"settingsView": {
"widgetTitle": "सेटिंग्स",
"appearanceSectionTitle": "स्वरूप",
"teamSectionTitle": "टीम",
"advancedSectionTitle": "एडवांसड",
"exportSectionTitle": "आयात और निर्यात",
"lightThemeLabel": "रोशनी",
"darkThemeLabel": "डार्क मोड",
"dynamicThemeLabel": "मेटीरियल यू",
"dynamicThemeHint": "अपने डिवाइस के करीब एक अनुभव का आनंद लें",
"languageLabel": "भाषा",
"sourcesIntegrationsLabel": "एकीकरण स्रोत",
"sourcesResetDialogTitle": "रीसेट करें",
"orgPatchesLabel": "पैच संगठन",
"sourcesPatchesLabel": "पैच स्रोत",
"orgIntegrationsLabel": "एकीकरण संगठन",
"contributorsLabel": "योगदान कर्ता",
"contributorsHint": "ReVanced के योगदानकर्ताओ की सूची",
"aboutLabel": "विवरण",
"snackbarMessage": "क्लिपबोर्ड में कॉपी हो गया है",
"restartAppForChanges": "बदलाव लागू करने के लिए ऐप रीस्टार्ट करें",
"deleteTempDirLabel": "अस्थाई फ़ाइलें मिटायें",
"deleteTempDirHint": "अप्रयुक्त अस्थायी फ़ाइलों को हटाएं",
"deletedTempDir": "क्षणिक फ़ाईल मिटाए गए।",
"deleteLogsLabel": "लोग साफ़ करे",
"deletedLogs": "लॉग हटा दिए गए",
"exportKeystoreLabel": "निर्यात कीस्टोर",
"exportedKeystore": "कीस्टोर निर्यात किया गया",
"noKeystoreExportFileFound": "निर्यात करने के लिए कोई कीस्टोर नहीं",
"importKeystoreLabel": "कीस्टोर आयात करें",
"importedKeystore": "कीस्टोर आयात किया गया",
"jsonSelectorErrorMessage": "चुने हुए JSON फाइल को उपयोग करने मे असमर्थ"
},
"appInfoView": {
"widgetTitle": "ऐप की जानकारी",
"openButton": "खोलें",
"uninstallButton": "अनइंस्टॉल करें",
"rootDialogTitle": "त्रुटि",
"rootDialogText": "एप्प superuser परमिशन के साथ इनस्टॉल हुआ था, परन्तु ReVanced मैनेजर के पास कोई परमिशन नहीं है। पहले superuser परमिशन इनेबल करे।",
"packageNameLabel": "पैकेज का नाम",
"installTypeLabel": "इंस्टॉल का प्रकार",
"patchedDateLabel": "पैच करने की तिथि",
"appliedPatchesLabel": "लागू किए हुआ पैच",
"patchedDateHint": "${date} ${time} पर",
"appliedPatchesHint": "${quantity} लागू किए गए पैच",
"updateNotImplemented": "यह फीचर फिलहाल इम्प्लीमेंट नहीं हुआ है"
},
"contributorsView": {
"widgetTitle": "योगदान कर्ता"
},
"installErrorDialog": {}
}

View File

@@ -0,0 +1,131 @@
{
"okButton": "U redu",
"cancelButton": "Poništi",
"updateButton": "Ažuriraj",
"installed": "Instalirana verzija: ${version}",
"suggested": "Preporučena verzija: ${version}",
"yesButton": "Da",
"noButton": "Ne",
"warning": "Upozorenje",
"navigationView": {
"dashboardTab": "Nadzorna ploča",
"patcherTab": "Zakrpe",
"settingsTab": "Postavke"
},
"homeView": {
"refreshSuccess": "Uspješno osvježeno",
"widgetTitle": "Nadzorna ploča",
"updatesSubtitle": "Ažuriranja",
"patchedSubtitle": "Zakrpane aplikacije",
"noInstallations": "Nema instaliranih zakrpanih aplikacija",
"installUpdate": "Nastaviti s instalacijom ažuriranja?",
"updateChangelogTitle": "Zapisnik promjena",
"downloadingMessage": "Preuzimanje ažuriranja...",
"installingMessage": "Instaliranje ažuriranja...",
"errorDownloadMessage": "Nije moguće preuzeti ažuriranje",
"errorInstallMessage": "Nije moguće instalirati ažuriranje",
"noConnection": "Nema internetske veze",
"updatesDisabled": "Ažuriranje zakrpane aplikacije trenutno je onemogućeno. Ponovno zakrpajte aplikaciju."
},
"applicationItem": {
"infoButton": "Informacije"
},
"latestCommitCard": {
"loadingLabel": "Učitavanje...",
"timeagoLabel": "Prije ${time}"
},
"patcherView": {
"widgetTitle": "Zakrpe",
"patchButton": "Zakrpi"
},
"appSelectorCard": {
"noAppsLabel": "Nije pronađena nijedna aplikacija",
"currentVersion": "Trenutno",
"suggestedVersion": "Preporučeno"
},
"patchSelectorCard": {
"widgetTitle": "Odaberite zakrpe",
"widgetTitleSelected": "Odabrane zakrpe",
"widgetSubtitle": "Najprije odaberite aplikaciju",
"widgetEmptySubtitle": "Nema odabranih zakrpa"
},
"socialMediaCard": {
"widgetTitle": "Društvene mreže",
"widgetSubtitle": "Pronađite nas ovdje!"
},
"appSelectorView": {
"storageButton": "Pohrana",
"selectFromStorageButton": "Odaberi iz pohrane",
"errorMessage": "Nije moguće koristiti odabranu aplikaciju",
"downloadToast": "Funkcija preuzimanja još nije dostupna",
"featureNotAvailable": "Ova značajka još nije ugrađena"
},
"patchesSelectorView": {
"viewTitle": "Odaberite zakrpe",
"searchBarHint": "Pretraživanje zakrpa",
"doneButton": "Završeno",
"defaultTooltip": "Odaberi sve zadane zakrpe",
"noneTooltip": "Poništi odabir svih zakrpa",
"noPatchesFound": "Za odabranu aplikaciju nije pronađena nijedna zakrpa"
},
"patchOptionsView": {},
"patchItem": {
"unsupportedDialogText": "Odabirom ove zakrpe mogu se pojaviti greške pri krpanju.\n\nVerzija aplikacije: ${packageVersion}\nPodržane verzije:\n${supportedVersions}"
},
"installerView": {
"installButton": "Instaliraj",
"openButton": "Otvori",
"notificationTitle": "Krpanje u tijeku",
"notificationText": "Dodirnite za povratak na instalacijski program",
"noExit": "Instalacija je u tijeku, nije moguće izaći..."
},
"settingsView": {
"widgetTitle": "Postavke",
"appearanceSectionTitle": "Izgled",
"teamSectionTitle": "Naš tim",
"advancedSectionTitle": "Napredno",
"exportSectionTitle": "Uvezi / izvezi",
"darkThemeLabel": "Tamni način",
"dynamicThemeHint": "Uživajte u iskustvu prilagođenom vašem uređaju",
"languageLabel": "Jezik",
"sourcesIntegrationsLabel": "Izvori ugradnje",
"sourcesResetDialogTitle": "Ponovno postavljanje",
"apiURLLabel": "API URL (Automatic Copy)",
"orgPatchesLabel": "Autori zakrpa",
"sourcesPatchesLabel": "Izvor zakrpa",
"orgIntegrationsLabel": "Organizacije za ugradnju",
"contributorsLabel": "Pridonositelji",
"contributorsHint": "Popis suradnika ReVanceda",
"aboutLabel": "O aplikaciji",
"snackbarMessage": "Kopirano u međuspremnik",
"restartAppForChanges": "Za primjenu promjena ponovo pokreni program",
"deleteTempDirLabel": "Izbriši privremene datoteke",
"deleteTempDirHint": "Izbrišite nekorištene privremene datoteke",
"deletedTempDir": "Privremene datoteke su izbrisane",
"deletedLogs": "Zapisnici su izbrisani",
"exportKeystoreLabel": "Izvezi spremište ključeva",
"exportedKeystore": "Spremište ključeva je izvezeno",
"noKeystoreExportFileFound": "Nema spremišta ključeva za izvoz",
"importKeystoreLabel": "Uvezi spremište ključeva",
"importedKeystore": "Spremište ključeva je uvezeno",
"jsonSelectorErrorMessage": "Nije moguće koristiti odabranu JSON datoteku"
},
"appInfoView": {
"widgetTitle": "O aplikaciji",
"openButton": "Otvori",
"uninstallButton": "Deinstaliraj",
"rootDialogTitle": "Greška",
"rootDialogText": "Aplikacija je bila instalirana s superkorisničkom dopuštenosti, ali trenutno ReVanced Upravitelj nema dopuštenja.\nPrvo dodijelite superkorisničko dopuštenje.",
"packageNameLabel": "Naziv paketa",
"installTypeLabel": "Vrsta instalacije",
"patchedDateLabel": "Zakrpano",
"appliedPatchesLabel": "Primijenjene zakrpe",
"patchedDateHint": "${date} u ${time}",
"appliedPatchesHint": "${quantity} primijenjenih zakrpa",
"updateNotImplemented": "Ova značajka još nije implementirana"
},
"contributorsView": {
"widgetTitle": "Pridonositelji"
},
"installErrorDialog": {}
}

View File

@@ -0,0 +1,302 @@
{
"okButton": "OK",
"cancelButton": "Mégse",
"dismissButton": "Elvetés",
"quitButton": "Kilépés",
"updateButton": "Frissítés",
"enabledLabel": "Engedélyezve",
"disabledLabel": "Letiltva",
"installed": "Telepített: ${version}",
"suggested": "Javasolt: ${version}",
"yesButton": "Igen",
"noButton": "Nem",
"warning": "Figyelmeztetés",
"options": "Beállítások",
"notice": "Értesítés",
"noShowAgain": "Ne jelenjen meg többé",
"add": "Hozzáadás",
"remove": "Eltávolítás",
"showChangelogButton": "Változások megtekintése",
"showUpdateButton": "Frissítések mutatása",
"navigationView": {
"dashboardTab": "Irányítópult",
"patcherTab": "Patchelő",
"settingsTab": "Beállítások"
},
"homeView": {
"refreshSuccess": "Sikeresen frissítve",
"widgetTitle": "Irányítópult",
"updatesSubtitle": "Frissítések",
"patchedSubtitle": "Patchelt alkalmazások",
"changeLaterSubtitle": "Ezt később módosíthatja a beállításokban.",
"noUpdates": "Nincs elérhető frissítés",
"WIP": "Folyamatban...",
"noInstallations": "Nincs telepítve patchelt alkalmazás",
"installUpdate": "Folytatja a frissítés telepítését?",
"updateSheetTitle": "ReVanced Manager frissítése",
"updateDialogTitle": "Új frissítés elérhető",
"updatePatchesSheetTitle": "ReVanced Patchek frissítése",
"updateChangelogTitle": "Változásnapló",
"updateDialogText": "Új frissítés érhető el a következőhöz: ${file}.\n\nA jelenleg telepített verzió: ${version}.",
"downloadConsentDialogTitle": "Letölti a szükséges fájlokat?",
"downloadConsentDialogText": "A ReVanced Managernek le kell töltenie a szükséges fájlokat a megfelelő működéshez.",
"downloadConsentDialogText2": "Csatlakozni fog ehhez: ${url}.",
"checkUpdateDialogTitle": "Frissítések keresése?",
"checkUpdateDialogText": "Szeretné, hogy a ReVanced Manager automatikusan ellenőrizze a frissítéseket?",
"notificationTitle": "Frissítés letöltve",
"notificationText": "Koppintson a frissítés telepítéséhez",
"downloadingMessage": "Frissítés letöltése...",
"downloadedMessage": "Frissítés letöltve",
"installingMessage": "Frissítés telepítése...",
"errorDownloadMessage": "Frissítés letöltése sikertelen",
"errorInstallMessage": "Frissítés telepítése sikertelen",
"noConnection": "Nincs internetkapcsolat",
"updatesDisabled": "A patchelt alkalmazások frissítése jelenleg nem lehetséges, ehelyett újra kell patchelni."
},
"applicationItem": {
"infoButton": "Infó"
},
"latestCommitCard": {
"loadingLabel": "Betöltés...",
"timeagoLabel": "Frissítve: ${time}",
"patcherLabel": "Patchelő: ",
"managerLabel": "Manager: ",
"updateButton": "Manager frissítése"
},
"patcherView": {
"widgetTitle": "Patchelő",
"patchButton": "Patch",
"armv7WarningDialogText": "A patchelés az ARMv7 eszközökön még nem támogatott, és sikertelen lehet. Folytatja?",
"removedPatchesWarningDialogText": "A következő patcheket a legutóbbi használatuk óta eltávolították.\n\n${patches}\n\nMindenképpen folytatja?",
"requiredOptionDialogText": "Néhány patch lehetőséget be kell állítani."
},
"appSelectorCard": {
"widgetTitle": "Válasszon egy alkalmazást",
"widgetTitleSelected": "Kiválasztott alkalmazás",
"widgetSubtitle": "Nincs alkalmazás kiválasztva",
"noAppsLabel": "Nem találhatóak alkalmazások",
"currentVersion": "Jelenlegi",
"suggestedVersion": "Javasolt",
"anyVersion": "Bármilyen verzió"
},
"patchSelectorCard": {
"widgetTitle": "Patchek kiválasztása",
"widgetTitleSelected": "Kiválasztott patchek",
"widgetSubtitle": "Először válasszon egy alkalmazást",
"widgetEmptySubtitle": "Nem választott patchet"
},
"socialMediaCard": {
"widgetTitle": "Közösségi oldalak",
"widgetSubtitle": "Online vagyunk!"
},
"appSelectorView": {
"viewTitle": "Válasszon egy alkalmazást",
"searchBarHint": "App keresés",
"storageButton": "Tárhely",
"selectFromStorageButton": "Kiválasztás a tárhelyről",
"errorMessage": "A kiválasztott alkalmazás nem használható",
"downloadToast": "A letöltés funkció még nem érhető el",
"requireSuggestedAppVersionDialogText": "Az alkalmazás kiválasztott verziója nem egyezik a javasolt verzióval. Kérjük, válassza ki a javasolt verziónak megfelelő alkalmazást.\n\nKiválasztott verzió: ${selected}\nJavasolt verzió: ${suggested}\n\nA folytatáshoz kapcsolja ki a „Javasolt alkalmazásverzió megkövetelése” lehetőséget a beállításokban.",
"featureNotAvailable": "A funkció nincs megvalósítva",
"featureNotAvailableText": "Ez az alkalmazás egy osztott APK, és csak root jogosultságokkal patchelhető és telepíthető megbízhatóan. A teljes APK-t azonban patchelheti és telepítheti, ha kiválasztja azt a tárhelyről."
},
"patchesSelectorView": {
"viewTitle": "Patchek kiválasztása",
"searchBarHint": "Patchek keresése",
"universalPatches": "Univerzális patchek",
"newPatches": "Új patchek",
"patches": "Patchek",
"doneButton": "Kész",
"defaultChip": "Alapértelmezett",
"defaultTooltip": "Összes alapértelmezett patch kiválasztása",
"noneChip": "Semmi",
"noneTooltip": "Összes patch kijelölésének törlése",
"loadPatchesSelection": "Patch kijelölés betöltése",
"noSavedPatches": "Nincs mentett patch kijelölés a kiválasztott alkalmazáshoz.\nNyomja meg a Kész gombot az aktuális kijelölés mentéséhez.",
"noPatchesFound": "A kiválasztott alkalmazáshoz nem találhatóak patchek",
"setRequiredOption": "Néhány patchhez be kell állítani a következő beállításokat:\n\n${patches}\n\nKérjük, állítsa be őket a folytatás előtt."
},
"patchOptionsView": {
"customValue": "Egyedi érték",
"resetOptionsTooltip": "Patch beállítások visszaállítása",
"viewTitle": "Patch beállítások",
"saveOptions": "Mentés",
"addOptions": "Opciók hozzáadása",
"deselectPatch": "Patch kijelölésének törlése",
"tooltip": "További beviteli lehetőségek",
"selectFilePath": "Válassza ki a fájl elérési útját",
"selectFolder": "Mappa kiválasztása",
"selectOption": "Opció kiválasztása",
"requiredOption": "Ez a beállítás kötelező",
"unsupportedOption": "Ez az opció nem támogatott",
"requiredOptionNull": "A következő opciókat kell beállítani:\n\n${options}"
},
"patchItem": {
"unsupportedDialogText": "Ezt a patchet nem biztos hogy sikerül alkalmazni, mert más verzióhoz készült.\n\nAlkalmazás verzió: ${packageVersion}\nTámogatott verziók:\n${supportedVersions}",
"unsupportedPatchVersion": "A patch nem támogatott ehhez az alkalmazásverzióhoz.",
"unsupportedRequiredOption": "Ez a patch egy kötelező beállítást tartalmaz, amelyet ez az alkalmazás nem támogat",
"patchesChangeWarningDialogText": "Javasoljuk, hogy az alapértelmezett patch kijelölést és beállításait használja. Ezek megváltoztatása váratlan problémákat okozhat.\n\nMielőtt bármilyen patchet módosítana, be kell kapcsolnia a „Patch kijelölés módosításánák engedélyezése” lehetőséget a beállításokban.",
"patchesChangeWarningDialogButton": "Használja az alapértelmezett kijelölést"
},
"installerView": {
"widgetTitle": "Telepítő",
"installType": "Válassza ki a telepítés típusát",
"installTypeDescription": "Válassza ki a telepítés típusát a folytatáshoz.",
"installButton": "Telepítés",
"installRootType": "Csatolás",
"installNonRootType": "Hagyományos",
"warning": "A váratlan problémák elkerülése érdekében tiltsa le a patchelt alkalmazás automatikus frissítéseit.",
"pressBackAgain": "A visszavonáshoz nyomja meg a vissza gombot ismét",
"openButton": "Megnyitás",
"shareButton": "Fájl megosztása",
"notificationTitle": "A ReVanced Manager jelenleg patchel",
"notificationText": "Koppintson a telepítőhöz való visszalépéshez",
"exportApkButtonTooltip": "Patchelt apk exportálása",
"exportLogButtonTooltip": "Napló exportálása",
"screenshotDetected": "Képernyőképet észleltünk. Ha megpróbálja megosztani a naplót, kérjük osszon meg helyette egy szöveges másolatot.\n\nA vágólapra másolja a naplót?",
"copiedToClipboard": "A napló vágólapra másolva",
"noExit": "A telepítő még fut, nem lehet kilépni..."
},
"settingsView": {
"widgetTitle": "Beállítások",
"appearanceSectionTitle": "Megjelenés",
"teamSectionTitle": "Csapat",
"debugSectionTitle": "Hibakeresés",
"advancedSectionTitle": "Haladó",
"exportSectionTitle": "Importálás és exportálás",
"dataSectionTitle": "Adatforrások",
"themeModeLabel": "Alkalmazás témája",
"systemThemeLabel": "Rendszer",
"lightThemeLabel": "Világos",
"darkThemeLabel": "Sötét",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Élvezze az eszközéhez közelibb élményt",
"languageLabel": "Nyelv",
"languageUpdated": "Nyelv frissítve",
"englishOption": "Angol",
"sourcesLabel": "Alternatív források",
"sourcesLabelHint": "Állítsa be a ReVanced Patchek és ReVanced Integrációk alternatív forrásait",
"sourcesIntegrationsLabel": "Integrációk - forrás",
"useAlternativeSources": "Alternatív források használata",
"useAlternativeSourcesHint": "Használjon alternatív forrásokat a ReVanced Patchekhez és a ReVanced Integrációhoz az API helyett",
"sourcesResetDialogTitle": "Visszaállítás",
"sourcesResetDialogText": "Biztosan vissza szeretné állítani a forrásokat az alapértelmezett értékekre?",
"apiURLResetDialogText": "Biztosan vissza szeretné állítani az API URL-jét az alapértelmezett értékre?",
"sourcesUpdateNote": "Megjegyzés: Ez automatikusan letölti a ReVanced Patcheket és a ReVanced Integrációkat az alternatív forrásokból.\n\nEzzel csatlakozik az alternatív forráshoz.",
"apiURLLabel": "API URL",
"apiURLHint": "Konfigurálja a ReVanced Manager API URL-jét",
"selectApiURL": "API link",
"orgPatchesLabel": "Patchek - szervezet",
"sourcesPatchesLabel": "Patchek - forrás",
"orgIntegrationsLabel": "Integrációk - szervezet",
"contributorsLabel": "Közreműködők",
"contributorsHint": "A ReVanced közreműködőinek listája",
"logsLabel": "Naplók megosztása",
"logsHint": "ReVanced Manager naplók megosztása",
"enablePatchesSelectionLabel": "Patch kijelölés módosításánák engedélyezése",
"enablePatchesSelectionHint": "Ne akadályozza meg a patchek kijelölését vagy a kijelölés megszüntetését",
"enablePatchesSelectionWarningText": "A patchek kijelölésének megváltoztatása váratlan problémákat okozhat.\n\nMindenképpen engedélyezi?",
"disablePatchesSelectionWarningText": "Arra készül, hogy letiltja a patchek kijelölésének módosítását.\nA patchek alapértelmezett kijelölése visszaáll.\n\nMindenképpen letiltja?",
"autoUpdatePatchesLabel": "Patchek automatikus frissítése",
"autoUpdatePatchesHint": "A patchek automatikus frissítése a legújabb verzióra",
"showUpdateDialogLabel": "Frissítési panel megjelenítése",
"showUpdateDialogHint": "Panel megjelenítése, ha új frissítés érhető el",
"universalPatchesLabel": "Univerzális patchek megjelenítése",
"universalPatchesHint": "Az összes alkalmazás és univerzális patch megjelenítése (lassíthatja az alkalmazáslistát)",
"versionCompatibilityCheckLabel": "Verziókompatibilitás ellenőrzése",
"versionCompatibilityCheckHint": "Akadályozza meg a kiválasztott alkalmazásverzióval nem kompatibilis patchek kiválasztását",
"requireSuggestedAppVersionLabel": "Javasolt alkalmazásverzió szükséges",
"requireSuggestedAppVersionHint": "Akadályozza meg, hogy olyan alkalmazást válasszon ki, amelynek verziója nem a javasolt",
"requireSuggestedAppVersionDialogText": "A javasolt verziótól eltérő alkalmazás kiválasztása váratlan problémákat okozhat.\n\nMindenképpen folytatni szeretné?",
"aboutLabel": "Rólunk",
"snackbarMessage": "Vágólapra másolva",
"restartAppForChanges": "Indítsa újra az alkalmazást a változások alkalmazásához",
"deleteTempDirLabel": "Ideiglenes fájlok törlése",
"deleteTempDirHint": "Nem használt ideiglenes fájlok törlése",
"deletedTempDir": "Ideiglenes fájlok törölve",
"exportPatchesLabel": "Kijelölt patchek exportálása",
"exportPatchesHint": "Exportálja a kijelölt patcheket egy JSON-fájlba",
"exportedPatches": "Kijelölt patchek exportálva",
"noExportFileFound": "Nincs exportálandó patch kijelölés",
"importPatchesLabel": "Kijelölt patchek importálása",
"importPatchesHint": "Importálja a kijelölt patcheket egy JSON-fájlból",
"importedPatches": "Patch kijelölés importálva",
"resetStoredPatchesLabel": "Patch kijelölés visszaállítása",
"resetStoredPatchesHint": "Mentett patch kijelölés visszaállítása",
"resetStoredPatchesDialogTitle": "Visszaállítja a kijelölt patcheket?",
"resetStoredPatchesDialogText": "A patchek alapértelmezett kijelölése visszaáll.",
"resetStoredPatches": "A patchek kijelölése visszaállításra került",
"resetStoredOptionsLabel": "Patch beállítások visszaállítása",
"resetStoredOptionsHint": "Állítsa vissza az összes patch opciót",
"resetStoredOptionsDialogTitle": "Patch beállítások visszaállítása?",
"resetStoredOptionsDialogText": "A patch beállítások visszaállítása eltávolítja az összes mentett opciót.",
"resetStoredOptions": "Az opciók visszaállításra kerültek",
"deleteLogsLabel": "Naplók törlése",
"deleteLogsHint": "A ReVanced Manager naplóinak törlése",
"deletedLogs": "Naplók törölve",
"regenerateKeystoreLabel": "Kulcstár újragenerálása",
"regenerateKeystoreHint": "Újragenerálja az alkalmazások aláírásához használt kulcstárolót",
"regenerateKeystoreDialogTitle": "Kulcstár újragenerálása?",
"regenerateKeystoreDialogText": "A régi kulcstárolóval aláírt patchelt alkalmazásokat a továbbiakban nem lehet majd frissíteni.",
"regeneratedKeystore": "A kulcstár újra létrehozva",
"exportKeystoreLabel": "Kulcstároló exportálása",
"exportKeystoreHint": "Exportálja az alkalmazások aláírásához használt kulcstárolót",
"exportedKeystore": "Kulcstároló exportálva",
"noKeystoreExportFileFound": "Nincs exportálható kulcstároló",
"importKeystoreLabel": "Kulcstároló importálása",
"importKeystoreHint": "Alkalmazások aláírására használt kulcstároló importálása",
"importedKeystore": "Kulcstároló importálva",
"selectKeystorePassword": "Kulcstár jelszó",
"selectKeystorePasswordHint": "Válassza ki az alkalmazások aláírásához használt kulcstároló jelszavát",
"jsonSelectorErrorMessage": "A kiválasztott JSON fájl nem használható",
"keystoreSelectorErrorMessage": "A kiválasztott kulcstároló fájl nem használható"
},
"appInfoView": {
"widgetTitle": "Alkalmazás információ",
"openButton": "Megnyitás",
"uninstallButton": "Eltávolítás",
"unmountButton": "Leválasztás",
"rootDialogTitle": "Hiba",
"unmountDialogText": "Biztosan le szeretné választani ezt az alkalmazást?",
"uninstallDialogText": "Biztosan eltávolítja ezt az alkalmazást?",
"rootDialogText": "A patchelt alkalmazás root jogosultsággal lett telepítve, de a Managernek már nincs ilyen jogosultsága.\nKérjük először engedélyezze a root jogosultságot.",
"packageNameLabel": "Csomagnév",
"installTypeLabel": "Telepítés módja",
"mountTypeLabel": "Csatolás",
"regularTypeLabel": "Hagyományos",
"patchedDateLabel": "Patchelve",
"appliedPatchesLabel": "Alkalmazott patchek",
"patchedDateHint": "${date} ${time}-kor",
"appliedPatchesHint": "${quantity} alkalmazott patch",
"updateNotImplemented": "Ez a funkció még nem elérhető"
},
"contributorsView": {
"widgetTitle": "Közreműködők"
},
"installErrorDialog": {
"mount_version_mismatch": "Verzió ütközés",
"mount_no_root": "Nincs root hozzáférés",
"mount_missing_installation": "A telepítés nem található",
"status_failure_blocked": "A telepítés blokkolva",
"install_failed_verification_failure": "Az ellenőrzés sikertelen",
"status_failure_invalid": "A telepítés érvénytelen",
"install_failed_version_downgrade": "Nem lehet visszafejleszteni",
"status_failure_conflict": "Telepítési ütközés",
"status_failure_storage": "Telepítési tárolási probléma",
"status_failure_incompatible": "A telepítés nem kompatibilis",
"status_failure_timeout": "Telepítési időtúllépés",
"status_unknown": "A telepítés sikertelen",
"mount_version_mismatch_description": "A telepítés meghiúsult, mert a telepített alkalmazás verziója eltér a patchelt alkalmazástól.\n\nTelepítse a csatlakoztatott alkalmazás verzióját, és próbálja újra.",
"mount_no_root_description": "A telepítés meghiúsult, mert nem biztosított a root hozzáférés.\n\nAdjon root hozzáférést a ReVanced Manager számára, és próbálja újra.",
"mount_missing_installation_description": "A telepítés sikertelen volt, mivel a nem patchelt alkalmazás nem volt telepítve az eszközre, hogy csatlakoztatni lehessen.\n\nTelepítse a nem patchelt alkalmazást a csatlakoztatás előtt, és próbálja meg újra.",
"status_failure_timeout_description": "A telepítés túl sokáig tartott.\n\nSzeretné újra megpróbálni?",
"status_failure_storage_description": "A telepítés meghiúsult a nem elegendő tárhely miatt.\n\nSzabadítson fel helyet, és próbálja újra.",
"status_failure_invalid_description": "A telepítés meghiúsult, mert a patchelt alkalmazás érvénytelen.\n\nTávolítsa el az alkalmazást, és próbálja újra?",
"status_failure_incompatible_description": "Az alkalmazás nem kompatibilis ezzel az eszközzel.\n\nLépjen kapcsolatba az alkalmazás fejlesztőjével, és kérjen támogatást.",
"status_failure_conflict_description": "A telepítést az alkalmazás meglévő példánya akadályozta meg.\n\nTávolítsa el a telepített alkalmazást, és próbálja újra?",
"status_failure_blocked_description": "A telepítést blokkolta: ${packageName}\n\nMódosítsa a biztonsági beállításokat, és próbálja újra.",
"install_failed_verification_failure_description": "A telepítés ellenőrzési probléma miatt nem sikerült.\n\nMódosítsa a biztonsági beállításokat, és próbálja újra.",
"install_failed_version_downgrade_description": "A telepítés meghiúsult, mert a patchelt alkalmazás régebbi verzió, mint a telepített alkalmazás.\n\nTávolítsa el az alkalmazást, és próbálja újra?",
"status_unknown_description": "A telepítés ismeretlen ok miatt meghiúsult. Kérem próbálja újra."
}
}

View File

@@ -0,0 +1,20 @@
{
"okButton": "Այո",
"navigationView": {},
"homeView": {},
"applicationItem": {},
"latestCommitCard": {},
"patcherView": {},
"appSelectorCard": {},
"patchSelectorCard": {},
"socialMediaCard": {},
"appSelectorView": {},
"patchesSelectorView": {},
"patchOptionsView": {},
"patchItem": {},
"installerView": {},
"settingsView": {},
"appInfoView": {},
"contributorsView": {},
"installErrorDialog": {}
}

View File

@@ -0,0 +1,302 @@
{
"okButton": "Oke",
"cancelButton": "Batal",
"dismissButton": "Abaikan",
"quitButton": "Keluar",
"updateButton": "Perbarui",
"enabledLabel": "Aktif",
"disabledLabel": "Nonaktif",
"installed": "Terpasang: ${version}",
"suggested": "Disarankan: ${version}",
"yesButton": "Iya",
"noButton": "Tidak",
"warning": "Peringatan",
"options": "Pengaturan",
"notice": "Pemberitahuan",
"noShowAgain": "Jangan tampilkan lagi",
"add": "Tambah",
"remove": "Hapus",
"showChangelogButton": "Tampilkan log perubahan",
"showUpdateButton": "Tampilkan pembaruan",
"navigationView": {
"dashboardTab": "Dasbor",
"patcherTab": "Penambal",
"settingsTab": "Pengaturan"
},
"homeView": {
"refreshSuccess": "Berhasil Memuat Ulang",
"widgetTitle": "Dasbor",
"updatesSubtitle": "Pembaruan",
"patchedSubtitle": "Aplikasi tertambal",
"changeLaterSubtitle": "Anda dapat mengubahnya di pengaturan nanti.",
"noUpdates": "Tidak ada pembaruan",
"WIP": "Sedang dikerjakan...",
"noInstallations": "Aplikasi tambalan tidak terpasang",
"installUpdate": "Lanjutkan untuk mengunduh pembaruan?",
"updateSheetTitle": "Perbarui Manajer ReVanced",
"updateDialogTitle": "Pembaruan terkini telah tersedia",
"updatePatchesSheetTitle": "Perbarui Tambalan ReVanced",
"updateChangelogTitle": "Catatan perubahan",
"updateDialogText": "Pembaruan telah tersedia untuk ${file}.\n\nVersi yang diinstal saat ini adalah ${version}.",
"downloadConsentDialogTitle": "Unduh file yang diperlukan?",
"downloadConsentDialogText": "Manajer ReVanced perlu mengunduh file yang diperlukan agar berfungsi dengan baik.",
"downloadConsentDialogText2": "Ini akan menghubungkan Anda ke ${url}.",
"checkUpdateDialogTitle": "Periksa pembaruan yang tersedia?",
"checkUpdateDialogText": "Apakah anda ingin Manajer ReVanced untuk mengecek pembaruan secara otomatis?",
"notificationTitle": "Pembaruan diunduh",
"notificationText": "Ketuk untuk memperbarui",
"downloadingMessage": "Mengunduh pembaruan...",
"downloadedMessage": "Pembaruan telah diunduh",
"installingMessage": "Memasang pembaruan...",
"errorDownloadMessage": "Tidak dapat mengunduh pembaruan",
"errorInstallMessage": "Gagal memasang pembaharuan",
"noConnection": "Tidak ada koneksi internet",
"updatesDisabled": "Pembaharuan aplikasi tambalan sedang dinonaktifkan. Silahkan ulangi penambalan aplikasi."
},
"applicationItem": {
"infoButton": "Informasi"
},
"latestCommitCard": {
"loadingLabel": "Memuat...",
"timeagoLabel": "${time} yang lalu",
"patcherLabel": "Penambal: ",
"managerLabel": "Pengelola: ",
"updateButton": "Perbarui Manager"
},
"patcherView": {
"widgetTitle": "Penambal",
"patchButton": "Tambalan",
"armv7WarningDialogText": "Menambal pada perangkat ARMv7 belum didukung dan mungkin gagal. Lanjutkan saja?",
"removedPatchesWarningDialogText": "Patch berikut telah dihapus sejak terakhir kali Anda menggunakannya.\n\n${patches}\n\nTetap lanjut?",
"requiredOptionDialogText": "Beberapa opsi patch harus diatur."
},
"appSelectorCard": {
"widgetTitle": "Pilih aplikasi",
"widgetTitleSelected": "Aplikasi yang dipilih",
"widgetSubtitle": "Tidak ada aplikasi yang dipilih",
"noAppsLabel": "Aplikasi tidak ditemukan",
"currentVersion": "Saat ini",
"suggestedVersion": "Disarankan",
"anyVersion": "Versi apa saja"
},
"patchSelectorCard": {
"widgetTitle": "Pilih tambalan",
"widgetTitleSelected": "Tambalan terpilih",
"widgetSubtitle": "Pilih aplikasi terlebih dahulu",
"widgetEmptySubtitle": "Tambalan belum dipilih"
},
"socialMediaCard": {
"widgetTitle": "Media Sosial",
"widgetSubtitle": "Ikuti kami!"
},
"appSelectorView": {
"viewTitle": "Pilih aplikasi",
"searchBarHint": "Cari aplikasi",
"storageButton": "Penyimpanan",
"selectFromStorageButton": "Pilih dari penyimpanan",
"errorMessage": "Tidak dapat menggunakan aplikasi yang dipilih",
"downloadToast": "Fungsi mengunduh belum tersedia",
"requireSuggestedAppVersionDialogText": "Versi aplikasi yang Anda pilih tidak sesuai dengan versi yang disarankan yang dapat menyebabkan masalah yang tidak diharapkan. Silakan gunakan versi yang disarankan.\n\nVersi yang dipilih: ${selected}\nVersi yang disarankan: ${suggested}\n\nUntuk melanjutkan, nonaktifkan \"Memerlukan versi aplikasi yang disarankan\" di pengaturan.",
"featureNotAvailable": "Fitur tidak diterapkan",
"featureNotAvailableText": "Aplikasi ini adalah APK terpisah dan hanya dapat ditambal dan dipasang dengan andal dengan memasang dengan izin root. Namun, Anda bisa menambal dan memasang APK lengkap dengan memilihnya dari penyimpanan."
},
"patchesSelectorView": {
"viewTitle": "Pilih tambalan",
"searchBarHint": "Cari tambalan",
"universalPatches": "Patch universal",
"newPatches": "Patch baru",
"patches": "Patch",
"doneButton": "Selesai",
"defaultChip": "Bawaan",
"defaultTooltip": "Pilih semua tambalan bawaan",
"noneChip": "Tidak ada",
"noneTooltip": "Batalkan semua tambalan",
"loadPatchesSelection": "Muat patch terpilih",
"noSavedPatches": "Tidak ada pilihan tambalan yang disimpan untuk aplikasi yang dipilih.\nTekan Selesai untuk menyimpan pilihan saat ini.",
"noPatchesFound": "Tidak ada tambalan untuk aplikasi",
"setRequiredOption": "Beberapa patch memerlukan opsi untuk diatur:\n\n${patches}\n\nAturlah sebelum melanjutkan."
},
"patchOptionsView": {
"customValue": "Nilai kustom",
"resetOptionsTooltip": "Mengatur ulang opsi tambalan",
"viewTitle": "Opsi tambalan",
"saveOptions": "Simpan",
"addOptions": "Tambahkan opsi",
"deselectPatch": "Lepas tambalan",
"tooltip": "Opsi masukan lainnya",
"selectFilePath": "Pilih lokasi berkas",
"selectFolder": "Pilih folder",
"selectOption": "Pilih opsi",
"requiredOption": "Pilihan ini diperlukan",
"unsupportedOption": "Pilihan ini tidak didukung",
"requiredOptionNull": "Pilihan ini harus terpilih:\n\n${options}"
},
"patchItem": {
"unsupportedDialogText": "Memilih tambalan ini akan menyebabkan galat tambal.\n\nVersi apli: ${packageVersion}\nVersi anjuran:\n${supportedVersions}",
"unsupportedPatchVersion": "Tambalan ini tidak mendukung versi aplikasi ini.",
"unsupportedRequiredOption": "Patch ini berisi opsi wajib yang tidak didukung oleh aplikasi ini",
"patchesChangeWarningDialogText": "Direkomendasikan untuk menggunakan pilihan dan opsi tambalan default. Mengubahnya dapat mengakibatkan masalah yang tidak diharapkan.\n\nAnda harus mengaktifkan \"Izinkan perubahan pilihan tambalan\" dalam pengaturan sebelum mengubah pilihan tambalan.",
"patchesChangeWarningDialogButton": "Gunakan pemilihan bawaan"
},
"installerView": {
"widgetTitle": "Pemasang",
"installType": "Pilih tipe pemasang",
"installTypeDescription": "Pilih jenis instalasi untuk melanjutkan.",
"installButton": "Pasang",
"installRootType": "Mount",
"installNonRootType": "Reguler",
"warning": "Nonaktifkan pembaruan pada aplikasi tertambal untuk menghindari isu.",
"pressBackAgain": "Tekan tombol balik lagi untuk membatalkan",
"openButton": "Buka",
"shareButton": "Bagikan berkas",
"notificationTitle": "ReVanced Manager sedang menambal",
"notificationText": "Ketuk untuk kembali ke pemasang",
"exportApkButtonTooltip": "Ekspor APK yang ditambal",
"exportLogButtonTooltip": "Log ekspor",
"screenshotDetected": "Tangkapan layar telah terdeteksi. Jika Anda mencoba membagikan log, silakan bagikan salinan teks.\n\nMenyalin log ke papan klip?",
"copiedToClipboard": "Menyalin log ke papan klip",
"noExit": "Pemasangan masih berjalan, tidak bisa keluar..."
},
"settingsView": {
"widgetTitle": "Pengaturan",
"appearanceSectionTitle": "Tampilan",
"teamSectionTitle": "Tim",
"debugSectionTitle": "Debugging",
"advancedSectionTitle": "Lanjutan",
"exportSectionTitle": "Impor & Ekspor",
"dataSectionTitle": "Sumber data",
"themeModeLabel": "Tema aplikasi",
"systemThemeLabel": "Sistem",
"lightThemeLabel": "Cahaya",
"darkThemeLabel": "Mode gelap",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Nikmati pengalaman lebih dekat ke perangkat Anda",
"languageLabel": "Bahasa",
"languageUpdated": "Bahasa diperbaharui",
"englishOption": "Bahasa Inggris",
"sourcesLabel": "Sumber-sumber alternatif",
"sourcesLabelHint": "Mengonfigurasi sumber alternatif untuk ReVanced Patches dan ReVanced Integrations",
"sourcesIntegrationsLabel": "Sumber Integrasi",
"useAlternativeSources": "Gunakan sumber-sumber alternatif",
"useAlternativeSourcesHint": "Gunakan sumber alternatif untuk ReVanced Patches dan ReVanced Integrations alih-alih API",
"sourcesResetDialogTitle": "Atur ulang",
"sourcesResetDialogText": "Apakah Anda yakin ingin mengatur ulang sumber kustom ke bawaannya?",
"apiURLResetDialogText": "Apakah Anda yakin ingin mengatur ulang URL API ke bawaan?",
"sourcesUpdateNote": "Catatan: Ini akan secara otomatis mengunduh ReVanced Patches dan ReVanced Integrations dari sumber alternatif.\n\nIni akan menghubungkan Anda ke sumber alternatif.",
"apiURLLabel": "URL API",
"apiURLHint": "Konfigurasikan URL API dari ReVanced Manager",
"selectApiURL": "URL API",
"orgPatchesLabel": "Perapihan tambalan",
"sourcesPatchesLabel": "Sumber tambalan",
"orgIntegrationsLabel": "Organisasi Intergrasi",
"contributorsLabel": "Kontributor",
"contributorsHint": "Daftar kontributor ReVanced",
"logsLabel": "Bagikan log",
"logsHint": "Bagikan log ReVanced Manager",
"enablePatchesSelectionLabel": "Izinkan mengubah pemilihan tambalan",
"enablePatchesSelectionHint": "Jangan mencegah pemilihan atau pembatalan pemilihan tambalan",
"enablePatchesSelectionWarningText": "Mengubah pilihan dari tambalan akan menyebabkan isu tak terduga.\n\nAktifkan saja?",
"disablePatchesSelectionWarningText": "Anda akan menonaktifkan pengubahan pilihan tambalan.\nPilihan tambalan default akan dikembalikan.\n\nMenonaktifkan?",
"autoUpdatePatchesLabel": "Otomatis perbarui tambalan",
"autoUpdatePatchesHint": "Otomatis perbarui tambalan ke versi terkini",
"showUpdateDialogLabel": "Tampilkan dialog pembaruan",
"showUpdateDialogHint": "Tampilkan dialog ketika pembaruan tersedia",
"universalPatchesLabel": "Tampilkan tambalan universal",
"universalPatchesHint": "Menampilkan semua aplikasi dan tambalan universal (dapat memperlambat daftar aplikasi)",
"versionCompatibilityCheckLabel": "Periksa versi kompatibilitas",
"versionCompatibilityCheckHint": "Cegah pemilihan tambalan yang tidak kompatibel dengan versi aplikasi yang dipilih",
"requireSuggestedAppVersionLabel": "Memerlukan versi aplikasi yang disarankan",
"requireSuggestedAppVersionHint": "Cegah memilih versi aplikasi yang tidak disarankan",
"requireSuggestedAppVersionDialogText": "Memilih versi aplikasi yang tidak disarankan dapat menyebabkan masalah yang tidak terduga.\n\nApakah anda ingin melanjutkan?",
"aboutLabel": "Tentang",
"snackbarMessage": "Disalin ke papan klip",
"restartAppForChanges": "Mulai ulang aplikasi untuk menerapkan perubahan",
"deleteTempDirLabel": "Hapus berkas sementara",
"deleteTempDirHint": "Hapus berkas sementara yang tidak dipakai",
"deletedTempDir": "Berkas sementara dihapus",
"exportPatchesLabel": "Ekspor tambalan pilihan",
"exportPatchesHint": "Ekspor tambalan terpilih ke berkas JSON",
"exportedPatches": "Tambalan pilihan diekspor",
"noExportFileFound": "Belum pilih tambalan untuk diekspor",
"importPatchesLabel": "Impor modifikasi terpilih",
"importPatchesHint": "Impor tembalan terpilih dari berkas JSON",
"importedPatches": "Tambalan pilihan diimpor",
"resetStoredPatchesLabel": "Setel ulang tambalan pilihan",
"resetStoredPatchesHint": "Mulai ulang tambalan pilihan yang disimpan",
"resetStoredPatchesDialogTitle": "Mulai ulang tambalan pilihan?",
"resetStoredPatchesDialogText": "Tambalan pilihan bawaan akan dikembalikan.",
"resetStoredPatches": "Tambalan pilihan telah diatur ulang",
"resetStoredOptionsLabel": "Setel ulang opsi tambalan",
"resetStoredOptionsHint": "Setel ulang semua opsi tambalan",
"resetStoredOptionsDialogTitle": "Setel ulang opsi tambalan?",
"resetStoredOptionsDialogText": "Menyetel ulang opsi tambalan akan menghapus semua opsi yang disimpan.",
"resetStoredOptions": "Opsi telah diatur ulang",
"deleteLogsLabel": "Hapus riwayat",
"deleteLogsHint": "Hapus log ReVanced Manager terkumpul",
"deletedLogs": "Log dihapus",
"regenerateKeystoreLabel": "Menghasilkan penyimpanan kunci",
"regenerateKeystoreHint": "Buat ulang penyimpanan kunci yang digunakan untuk menandatangani aplikasi",
"regenerateKeystoreDialogTitle": "Membuat ulang kunci penyimpanan?",
"regenerateKeystoreDialogText": "Aplikasi tambalan yang ditandatangani dengan kunci penyimpanan lama tidak dapat diperbarui lagi.",
"regeneratedKeystore": "Kunci penyimpanan dibuat ulang",
"exportKeystoreLabel": "Ekspor keystore",
"exportKeystoreHint": "Ekspor kunci penyimpanan yang digunakan untuk menandatangani aplikasi",
"exportedKeystore": "Keystore diekspor",
"noKeystoreExportFileFound": "Tidak ada keystore untuk diekspor",
"importKeystoreLabel": "Impor keystore",
"importKeystoreHint": "Impor kunci penyimpanan yang digunakan untuk menandatangani aplikasi",
"importedKeystore": "Keystore diimpor",
"selectKeystorePassword": "Kata Sandi Keystore",
"selectKeystorePasswordHint": "Pilih kata sandi keystore yang digunakan untuk menandatangani aplikasi",
"jsonSelectorErrorMessage": "Tidak bisa menggunakan berkas JSON tersebut",
"keystoreSelectorErrorMessage": "Tidak bisa menggunakan berkas keystrore tersebut"
},
"appInfoView": {
"widgetTitle": "Info aplikasi",
"openButton": "Buka",
"uninstallButton": "Copot",
"unmountButton": "Lepas mount",
"rootDialogTitle": "Kesalahan",
"unmountDialogText": "Apakah yakin ingin melepas mount aplikasi ini?",
"uninstallDialogText": "Apakah yakin ingin mencopot aplikasi ini?",
"rootDialogText": "Aplikasi dipasang dengan izin superuser, tapi saat ini ReVanced Manager belum diizinkan.\nMohon berikan izin superuser dulu.",
"packageNameLabel": "Nama paket",
"installTypeLabel": "Tipe pemasangan",
"mountTypeLabel": "Mount",
"regularTypeLabel": "Reguler",
"patchedDateLabel": "Kapan ditambal",
"appliedPatchesLabel": "Tambalan terterap",
"patchedDateHint": "${date} pukul ${time}",
"appliedPatchesHint": "${quantity} tambalan terterap",
"updateNotImplemented": "Fitur ini belum diimplementasikan"
},
"contributorsView": {
"widgetTitle": "Kontributor"
},
"installErrorDialog": {
"mount_version_mismatch": "Versi tidak cocok",
"mount_no_root": "Tak ada akses root",
"mount_missing_installation": "Pemasangan tidak ada",
"status_failure_blocked": "Pemasangan diblokir",
"install_failed_verification_failure": "Verifikasi gagal",
"status_failure_invalid": "Pemasangan tidak absah",
"install_failed_version_downgrade": "Tak bisa turun versi",
"status_failure_conflict": "Pemasangan cekcok",
"status_failure_storage": "Ruang pemasangan bermasalah",
"status_failure_incompatible": "Pemasangan tidak kompatibel",
"status_failure_timeout": "Pemasangan kelamaan",
"status_unknown": "Pemasangan gagal",
"mount_version_mismatch_description": "Penginstalan gagal karena aplikasi yang diinstal merupakan versi yang berbeda dari aplikasi yang ditambal.\n\nInstal versi aplikasi yang anda pasang dan coba lagi.",
"mount_no_root_description": "Pemasangan ini gagal karena akses root belum dizinkan.\n\nIzinkan akses root ke ReVanced Manager dan coba lagi.",
"mount_missing_installation_description": "Penginstalan gagal karena aplikasi yang belum ditambal tidak diinstal pada perangkat ini untuk dipasang di atasnya.\n\nInstal aplikasi yang belum ditambal sebelum memasang dan coba lagi.",
"status_failure_timeout_description": "Instalasi memakan waktu terlalu lama untuk diselesaikan.\n\nApakah anda ingin mencoba lagi?",
"status_failure_storage_description": "Instalasi gagal karena penyimpanan tidak mencukupi.\n\nKosongkan sebagian ruang dan coba kembali.",
"status_failure_invalid_description": "Instalasi gagal karena aplikasi yang ditambal tidak valid.\n\nCopot pemasangan aplikasi dan coba lagi?",
"status_failure_incompatible_description": "Aplikasi ini tidak kompatibel dengan perangkat anda.\n\nHubungi pengembang aplikasi dan minta dukungan.",
"status_failure_conflict_description": "Penginstalan dicegah oleh aplikasi yang sudah ada.\n\nCopot pemasangan aplikasi yang terpasang dan coba kembali?",
"status_failure_blocked_description": "Instalasi diblokir oleh ${packageName}.\n\nSesuaikan pengaturan keamanan anda dan coba kembali.",
"install_failed_verification_failure_description": "Instalasi gagal karena masalah verifikasi.\n\nSesuaikan pengaturan keamanan anda dan coba kembali.",
"install_failed_version_downgrade_description": "Instalasi gagal karena aplikasi tambalan memiliki versi yang lebih rendah daripada aplikasi yang sudah ada.\n\nCopot pemasangan aplikasi dan coba kembali?",
"status_unknown_description": "Instalasi gagal karena alasan yang tidak diketahui. Silakan coba kembali."
}
}

View File

@@ -0,0 +1,304 @@
{
"okButton": "OK",
"cancelButton": "Annulla",
"dismissButton": "Chiudi",
"quitButton": "Esci",
"updateButton": "Aggiorna",
"enabledLabel": "Abilitato",
"disabledLabel": "Disabilitato",
"installed": "Installata: ${version}",
"suggested": "Consigliata: ${version}",
"yesButton": "Si",
"noButton": "No",
"warning": "Attenzione",
"options": "Opzioni",
"notice": "Avviso",
"noShowAgain": "Non mostrare più",
"add": "Aggiungi",
"remove": "Rimuovi",
"showChangelogButton": "Mostra novità",
"showUpdateButton": "Mostra aggiornamento",
"navigationView": {
"dashboardTab": "Dashboard",
"patcherTab": "Patcher",
"settingsTab": "Impostazioni"
},
"homeView": {
"refreshSuccess": "Ricaricato con successo",
"widgetTitle": "Dashboard",
"updatesSubtitle": "Aggiornamenti",
"patchedSubtitle": "Applicazioni patchate",
"changeLaterSubtitle": "Questo sarà modificabile nelle impostazioni in un secondo momento.",
"noUpdates": "Nessun aggiornamento disponibile",
"WIP": "Lavori in corso...",
"noInstallations": "Nessuna applicazione patchata è stata installata",
"installUpdate": "Proseguire con l'installazione dell'aggiornamento?",
"updateSheetTitle": "Aggiorna ReVanced Manager",
"updateDialogTitle": "Nuovo aggiornamento disponibile",
"updatePatchesSheetTitle": "Aggiorna le patch ReVanced",
"updateChangelogTitle": "Novità",
"updateDialogText": "È disponibile un nuovo aggiornamento per ${file}.\n\nLa versione attualmente installata è ${version}.",
"downloadConsentDialogTitle": "Scaricare i file necessari?",
"downloadConsentDialogText": "ReVanced Manager deve scaricare i file necessari per funzionare correttamente.",
"downloadConsentDialogText2": "Questo ti collegherà a ${url}.",
"checkUpdateDialogTitle": "Cercare aggiornamenti?",
"checkUpdateDialogText": "Vuoi che ReVanced Manager verifichi automaticamente la presenza di aggiornamenti?",
"notificationTitle": "Aggiornamento scaricato",
"notificationText": "Tocca per installare l'aggiornamento",
"downloadingMessage": "Download dell'aggiornamento...",
"downloadedMessage": "Aggiornamento scaricato",
"installingMessage": "Installazione dell'aggiornamento...",
"errorDownloadMessage": "Impossibile scaricare l'aggiornamento",
"errorInstallMessage": "Impossibile installare l'aggiornamento",
"noConnection": "Nessuna connessione ad internet",
"updatesDisabled": "L'aggiornamento di un'app patchata è attualmente disabilitato. Applica nuovamente la patch."
},
"applicationItem": {
"infoButton": "Info"
},
"latestCommitCard": {
"loadingLabel": "Caricamento...",
"timeagoLabel": "${time} fa",
"patcherLabel": "Patcher: ",
"managerLabel": "Manager: ",
"updateButton": "Aggiorna Manager"
},
"patcherView": {
"widgetTitle": "Patcher",
"patchButton": "Patch",
"armv7WarningDialogText": "Il patching sui dispositivi ARMv7 non è ancora supportato e potrebbe fallire. Continuare comunque?",
"removedPatchesWarningDialogText": "Le seguenti patch sono state rimosse dall'ultima volta che le hai usate.\n\n${patches}\n\nContinuare comunque?",
"requiredOptionDialogText": "Alcune opzioni di patch devono essere impostate."
},
"appSelectorCard": {
"widgetTitle": "Seleziona un'app",
"widgetTitleSelected": "App selezionata",
"widgetSubtitle": "Nessuna app selezionata",
"noAppsLabel": "Nessuna applicazione trovata",
"currentVersion": "Attuale",
"suggestedVersion": "Consigliata",
"anyVersion": "Qualsiasi versione"
},
"patchSelectorCard": {
"widgetTitle": "Seleziona patch",
"widgetTitleSelected": "Patch selezionate",
"widgetSubtitle": "Seleziona prima un'applicazione",
"widgetEmptySubtitle": "Nessuna patch selezionata"
},
"socialMediaCard": {
"widgetTitle": "Social",
"widgetSubtitle": "Seguici sui nostri canali!"
},
"appSelectorView": {
"viewTitle": "Seleziona un'app",
"searchBarHint": "Cerca app",
"storageButton": "Memoria interna",
"selectFromStorageButton": "Seleziona dalla memoria interna",
"errorMessage": "Impossibile utilizzare l'applicazione selezionata",
"downloadToast": "La funzione di Download non è ancora disponibile",
"requireSuggestedAppVersionDialogText": "La versione dell'app selezionata non corrisponde a quella suggerita, il che può causare problemi imprevisti. Si prega di utilizzare la versione suggerita.\n\nVersione selezionata: ${selected}\nVersione suggerita: ${suggested}\n\nPer continuare comunque, disattiva \"Richiedi versione consigliata dell'app\" nelle impostazioni.",
"featureNotAvailable": "Funzionalità non implementata",
"featureNotAvailableText": "Quest'app è un APK diviso e può essere patchata e installata in modo affidabile solo montandola con i permessi di root. Tuttavia, è possibile applicare le patch e installare un APK completo selezionandolo dalla memoria."
},
"patchesSelectorView": {
"viewTitle": "Seleziona patch",
"searchBarHint": "Cerca patch",
"universalPatches": "Patch universali",
"newPatches": "Nuove patch",
"patches": "Patch",
"doneButton": "Fatto",
"defaultChip": "Predefinito",
"defaultTooltip": "Seleziona tutte le patch predefinite",
"noneChip": "Nessuna",
"noneTooltip": "Deseleziona tutte le patch",
"loadPatchesSelection": "Carica selezione patch",
"noSavedPatches": "Nessuna selezione patch salvata per l'app selezionata.\nPremi Fatto per salvare la selezione attuale.",
"noPatchesFound": "Nessuna patch trovata per l'applicazione selezionata",
"setRequiredOption": "Alcune patch richiedono opzioni da impostare:\n\n${patches}\n\nImpostale prima di continuare."
},
"patchOptionsView": {
"customValue": "Valore personalizzato",
"setToNull": "Imposta a nullo",
"nullValue": "Questo valore di opzione è al momento nullo",
"resetOptionsTooltip": "Ripristina opzioni patch",
"viewTitle": "Opzioni patch",
"saveOptions": "Salva",
"addOptions": "Aggiungi opzioni",
"unselectPatch": "Deseleziona patch",
"tooltip": "Più opzioni di input",
"selectFilePath": "Seleziona percorso file",
"selectFolder": "Seleziona cartella",
"selectOption": "Seleziona opzione",
"requiredOption": "L'impostazione di questa opzione è obbligatoria",
"unsupportedOption": "Questa opzione non è supportata",
"requiredOptionNull": "È necessario impostare le seguenti opzioni:\n\n${options}"
},
"patchItem": {
"unsupportedDialogText": "La selezione di questa patch potrebbe causare degli errori.\n\nVersione dell'app: ${packageVersion}\nVersioni supportate:\n${supportedVersions}",
"unsupportedPatchVersion": "La patch non è supportata per questa versione dell'app.",
"unsupportedRequiredOption": "Questa patch contiene un'opzione richiesta che non è supportata da questa app",
"patchesChangeWarningDialogText": "Si consiglia di utilizzare la selezione di patch e le opzioni predefinite. La loro modifica potrebbe causare problemi imprevisti.\n\nÈ necessario attivare \"Consenti la modifica della selezione delle patch\" nelle impostazioni prima di modificare qualsiasi selezione di patch.",
"patchesChangeWarningDialogButton": "Utilizza la selezione predefinita"
},
"installerView": {
"widgetTitle": "Installer",
"installType": "Seleziona il tipo di installazione",
"installTypeDescription": "Seleziona il tipo di installazione con cui continuare.",
"installButton": "Installa",
"installRootType": "Monta",
"installNonRootType": "Normale",
"warning": "Disabilita gli aggiornamenti automatici per l'app patchata per evitare problemi.",
"pressBackAgain": "Premi ancora indietro per annullare",
"openButton": "Apri",
"shareButton": "Condividi file",
"notificationTitle": "ReVanced Manager è in fase di patch",
"notificationText": "Tocca per tornare all'installer",
"exportApkButtonTooltip": "Esporta APK patchato",
"exportLogButtonTooltip": "Esporta log",
"screenshotDetected": "È stato rilevato uno screenshot. Se stai cercando di condividere il log, condivilo in formato di testo.\n\nCopiare il log negli appunti?",
"copiedToClipboard": "Log copiato negli appunti",
"noExit": "Installer ancora in esecuzione, impossibile uscire..."
},
"settingsView": {
"widgetTitle": "Impostazioni",
"appearanceSectionTitle": "Aspetto",
"teamSectionTitle": "Team",
"debugSectionTitle": "Debugging",
"advancedSectionTitle": "Avanzate",
"exportSectionTitle": "Importa / Esporta",
"dataSectionTitle": "Sorgenti dati",
"themeModeLabel": "Tema dell'app",
"systemThemeLabel": "Sistema",
"lightThemeLabel": "Chiaro",
"darkThemeLabel": "Modalità scura",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Goditi un'esperienza più in armonia con il tuo dispositivo",
"languageLabel": "Lingua",
"languageUpdated": "Lingua aggiornata",
"englishOption": "Inglese",
"sourcesLabel": "Sorgenti alternative",
"sourcesLabelHint": "Configura fonti alternative per ReVanced Patches e ReVanced Integrations",
"sourcesIntegrationsLabel": "Sorgente Integrazioni",
"useAlternativeSources": "Usa sorgenti alternative",
"useAlternativeSourcesHint": "Usa sorgenti alternative per ReVanced Patches e ReVanced Integrations invece delle API",
"sourcesResetDialogTitle": "Reimposta",
"sourcesResetDialogText": "Sei sicuro di voler reimpostare le sorgenti ai valori predefiniti?",
"apiURLResetDialogText": "Sicuro di voler ripristinare l'URL API al valore predefinito?",
"sourcesUpdateNote": "Nota: Questo scaricherà automaticamente ReVanced Patches e ReVanced Integrations dalle sorgenti alternative.\n\nQuesto ti collegherà alla sorgente alternativa.",
"apiURLLabel": "URL API",
"apiURLHint": "Configura l'URL API di ReVanced Manager",
"selectApiURL": "URL API",
"orgPatchesLabel": "Organizzazione Patch",
"sourcesPatchesLabel": "Sorgente Patch",
"orgIntegrationsLabel": "Organizzazione Integrazioni",
"contributorsLabel": "Contributori",
"contributorsHint": "Lista dei contributori di ReVanced",
"logsLabel": "Condividi i log",
"logsHint": "Condividi i log di ReVanced Manager",
"enablePatchesSelectionLabel": "Consenti la modifica della selezione delle patch",
"enablePatchesSelectionHint": "Non impedire di selezionare/deselezionare le patch",
"enablePatchesSelectionWarningText": "Cambiare la selezione delle patch potrebbe causare problemi inaspettati.\n\nAttivarle comunque?",
"disablePatchesSelectionWarningText": "Stai per disabilitare la modifica della selezione delle patch.\nLa selezione predefinita delle patch sarà ripristinata.\n\nDisabilitare comunque?",
"autoUpdatePatchesLabel": "Aggiornamento automatico delle patch",
"autoUpdatePatchesHint": "Aggiorna automaticamente le patch all'ultima versione",
"showUpdateDialogLabel": "Mostra finestra di aggiornamento",
"showUpdateDialogHint": "Mostra una finestra di dialogo quando è disponibile un nuovo aggiornamento",
"universalPatchesLabel": "Mostra patch universali",
"universalPatchesHint": "Mostra tutte le app e patch universali (rallenterà la lista delle app)",
"versionCompatibilityCheckLabel": "Controllo compatibilità versione",
"versionCompatibilityCheckHint": "Impedisci di selezionare patch che non sono compatibili con la versione dell'app selezionata",
"requireSuggestedAppVersionLabel": "Richiedi versione consigliata dell'app",
"requireSuggestedAppVersionHint": "Impedisci di selezionare un'app con una versione non consigliata",
"requireSuggestedAppVersionDialogText": "Selezionare un'app con versione diversa dalla consigliata può causare problemi imprevisti.\n\nVuoi procedere comunque?",
"aboutLabel": "Informazioni",
"snackbarMessage": "Copiato negli appunti",
"restartAppForChanges": "Riavvia l'app per applicare le modifiche",
"deleteTempDirLabel": "Elimina file temporanei",
"deleteTempDirHint": "Elimina i file temporanei non utilizzati",
"deletedTempDir": "File temporanei eliminati",
"exportPatchesLabel": "Esporta selezione patch",
"exportPatchesHint": "Esporta selezione patch in un file JSON",
"exportedPatches": "Selezione patch esportata",
"noExportFileFound": "Nessuna selezione patch da esportare",
"importPatchesLabel": "Importa selezione patch",
"importPatchesHint": "Importa le patch selezionate da un file JSON",
"importedPatches": "Selezione patch importata",
"resetStoredPatchesLabel": "Ripristina selezione patch",
"resetStoredPatchesHint": "Ripristina la selezione delle patch",
"resetStoredPatchesDialogTitle": "Resettare la selezione delle patch?",
"resetStoredPatchesDialogText": "La selezione delle patch è stata resettata a quella di default.",
"resetStoredPatches": "Selezione patch ripristinata",
"resetStoredOptionsLabel": "Ripristina opzioni patch",
"resetStoredOptionsHint": "Ripristina tutte le opzioni patch",
"resetStoredOptionsDialogTitle": "Ripristinare opzioni patch?",
"resetStoredOptionsDialogText": "Ripristinare le opzioni patch rimuoverà tutte le opzioni salvate.",
"resetStoredOptions": "Le opzioni sono state ripristinate",
"deleteLogsLabel": "Cancella i log",
"deleteLogsHint": "Elimina i log di ReVanced Manager",
"deletedLogs": "Log cancellati",
"regenerateKeystoreLabel": "Rigenera keystore",
"regenerateKeystoreHint": "Rigenera il keystore usato per firmare le app",
"regenerateKeystoreDialogTitle": "Rigenerare keystore?",
"regenerateKeystoreDialogText": "Le app patchate firmate con il vecchio keystore non potranno più essere aggiornate.",
"regeneratedKeystore": "Keystore rigenerato",
"exportKeystoreLabel": "Esporta keystore",
"exportKeystoreHint": "Esporta il keystore usato per firmare le app",
"exportedKeystore": "Keystore esportato",
"noKeystoreExportFileFound": "Nessun keystore da esportare",
"importKeystoreLabel": "Importa keystore",
"importKeystoreHint": "Importa il keystore usato per firmare le app",
"importedKeystore": "Keystore importato",
"selectKeystorePassword": "Password keystore",
"selectKeystorePasswordHint": "Seleziona la password di keystore utilizzata per firmare le app",
"jsonSelectorErrorMessage": "Impossibile utilizzare il file json selezionato",
"keystoreSelectorErrorMessage": "Impossibile usare il file keystore selezionato"
},
"appInfoView": {
"widgetTitle": "Info app",
"openButton": "Apri",
"uninstallButton": "Disinstalla",
"unmountButton": "Smonta",
"rootDialogTitle": "Errore",
"unmountDialogText": "Sicuro di voler smontare quest'app?",
"uninstallDialogText": "Sicuro di voler disinstallare quest'app?",
"rootDialogText": "L'app è stata installata con i permessi di root, ma attualmente ReVanced Manager non ha nessun permesso.\nSi prega di concedere prima i permessi di root.",
"packageNameLabel": "Nome pacchetto",
"installTypeLabel": "Tipo di installazione",
"mountTypeLabel": "Monta",
"regularTypeLabel": "Normale",
"patchedDateLabel": "Data di patch",
"appliedPatchesLabel": "Patch applicate",
"patchedDateHint": "${date} alle ${time}",
"appliedPatchesHint": "${quantity} patch applicate",
"updateNotImplemented": "Questa funzionalità non è stata ancora implementata"
},
"contributorsView": {
"widgetTitle": "Contributori"
},
"installErrorDialog": {
"mount_version_mismatch": "Versione non corrispondente",
"mount_no_root": "Nessun permesso root",
"mount_missing_installation": "Installazione non trovata",
"status_failure_blocked": "Installazione bloccata",
"install_failed_verification_failure": "Verifica fallita",
"status_failure_invalid": "Installazione non valida",
"install_failed_version_downgrade": "Impossibile effettuare il downgrade",
"status_failure_conflict": "Conflitto di installazione",
"status_failure_storage": "Problema archiviazione",
"status_failure_incompatible": "Installazione incompatibile",
"status_failure_timeout": "Timeout installazione",
"status_unknown": "Installazione fallita",
"mount_version_mismatch_description": "L'installazione è fallita perché l'app installata ha una versione differente rispetto a quella dell'app patchata.\n\nInstalla la versione dell'app che stai montando e riprova.",
"mount_no_root_description": "L'installazione è fallita per assenza di permessi di root.\n\nFornisci i permessi di root a ReVanced Manager e riprova.",
"mount_missing_installation_description": "L'installazione è fallita perché l'app non patchata non è installata su questo dispositivo, che è necessaria per montarci sopra.\n\nInstalla l'app non patchata prima di montare e riprova.",
"status_failure_timeout_description": "L'installazione ha richiesto troppo tempo per essere completata.\n\nVuoi riprovare?",
"status_failure_storage_description": "L'installazione è fallita a causa di spazio insufficiente.\n\nLibera dello spazio e riprova.",
"status_failure_invalid_description": "L'installazione è fallita perché l'app patchata è invalida.\n\nDisinstallare l'app e riprovare?",
"status_failure_incompatible_description": "L'app è incompatibile con questo dispositivo.\n\nContatta lo sviluppatore dell'app e chiedi supporto.",
"status_failure_conflict_description": "L'installazione è stata impedita da un'esistente installazione dell'app.\n\nDisinstallare l'app installata e riprovare?",
"status_failure_blocked_description": "L'installazione è stata bloccata da ${packageName}.\n\nModifica le impostazioni di sicurezza e riprova.",
"install_failed_verification_failure_description": "L'installazione è fallita a causa di un problema di verifica.\n\nModifica le impostazioni di sicurezza e riprova.",
"install_failed_version_downgrade_description": "L'installazione è fallita perché l'app patchata ha una versione minore dell'app installata.\n\nDisinstallare l'app e riprovare?",
"status_unknown_description": "L'installazione è fallita per un motivo sconosciuto. Riprova."
}
}

View File

@@ -0,0 +1,304 @@
{
"okButton": "OK",
"cancelButton": "キャンセル",
"dismissButton": "取り消し",
"quitButton": "終了",
"updateButton": "更新",
"enabledLabel": "有効",
"disabledLabel": "無効",
"installed": "インストール済み: ${version}",
"suggested": "推奨: ${version}",
"yesButton": "はい",
"noButton": "いいえ",
"warning": "警告",
"options": "設定",
"notice": "お知らせ",
"noShowAgain": "今後は表示しない",
"add": "追加",
"remove": "削除",
"showChangelogButton": "更新履歴を表示",
"showUpdateButton": "更新を表示",
"navigationView": {
"dashboardTab": "一覧",
"patcherTab": "パッチャー",
"settingsTab": "設定"
},
"homeView": {
"refreshSuccess": "正常に更新されました",
"widgetTitle": "一覧",
"updatesSubtitle": "更新",
"patchedSubtitle": "パッチ済みのアプリ",
"changeLaterSubtitle": "この設定は後から変更できます",
"noUpdates": "利用可能な更新はありません",
"WIP": "制作中",
"noInstallations": "パッチ済みのアプリはインストールされていません",
"installUpdate": "更新を適用しますか?",
"updateSheetTitle": "ReVanced Managerを更新",
"updateDialogTitle": "新しいアップデートが利用可能",
"updatePatchesSheetTitle": "ReVancedパッチを更新",
"updateChangelogTitle": "変更履歴",
"updateDialogText": "${file} の更新が利用可能です。\n現在のバージョン: ${version} ",
"downloadConsentDialogTitle": "必要なファイルをダウンロードしますか?",
"downloadConsentDialogText": "ReVanced Managerを正常に動作させるためのファイルをダウンロードする必要があります。",
"downloadConsentDialogText2": "${url} に接続します。",
"checkUpdateDialogTitle": "更新を確認しますか?",
"checkUpdateDialogText": "ReVanced Managerの更新を自動的に確認しますか?",
"notificationTitle": "更新データをダウンロードしました",
"notificationText": "タップしてアップデートをインストール",
"downloadingMessage": "更新データをダウンロードしています...",
"downloadedMessage": "アップデートのダウンロードが完了しました",
"installingMessage": "更新を適用しています...",
"errorDownloadMessage": "更新データをダウンロードできませんでした",
"errorInstallMessage": "更新を適用できませんでした",
"noConnection": "インターネットに接続されていません",
"updatesDisabled": "パッチ済みアプリのアップデートは無効になっています。もう一度パッチし直してください"
},
"applicationItem": {
"infoButton": "詳細"
},
"latestCommitCard": {
"loadingLabel": "読み込み中...",
"timeagoLabel": "${time} 前",
"patcherLabel": "Patcher: ",
"managerLabel": "Manager: ",
"updateButton": "アップデートマネージャー"
},
"patcherView": {
"widgetTitle": "パッチャー",
"patchButton": "パッチ",
"armv7WarningDialogText": "ARMv7デバイスではパッチがサポートされていません。失敗する可能性がありますが、続行しますか?",
"removedPatchesWarningDialogText": "以下のパッチはもう使用できません。\n\n${patches}\n\n続行しますか?",
"requiredOptionDialogText": "一部のパッチオプションを設定する必要があります。"
},
"appSelectorCard": {
"widgetTitle": "アプリを選択",
"widgetTitleSelected": "選択したアプリ",
"widgetSubtitle": "アプリが選択されていません",
"noAppsLabel": "アプリが見つかりません",
"currentVersion": "選択",
"suggestedVersion": "推奨",
"anyVersion": "全てのバージョン"
},
"patchSelectorCard": {
"widgetTitle": "パッチを選択",
"widgetTitleSelected": "選択したパッチ",
"widgetSubtitle": "最初にアプリを選択してください",
"widgetEmptySubtitle": "パッチが選択されていません"
},
"socialMediaCard": {
"widgetTitle": "SNS",
"widgetSubtitle": "私たちはここにいます!"
},
"appSelectorView": {
"viewTitle": "アプリを選択",
"searchBarHint": "アプリを検索",
"storageButton": "APKファイルを選択",
"selectFromStorageButton": "ストレージから選択",
"errorMessage": "選択したアプリは使用できません",
"downloadToast": "現在、ダウンロード機能は利用できません",
"requireSuggestedAppVersionDialogText": "選択したアプリのバージョンは推奨バージョンではありません。予期せぬ問題が発生する可能性があります。\n推奨バージョンを選択してください。\n\n選択されたバージョン ${selected}\n推奨バージョン ${suggested}\n\n選択されたバージョンを使用する場合、設定から「推奨バージョンの使用を強制」を無効にしてください。",
"featureNotAvailable": "この機能は未実装です",
"featureNotAvailableText": "このアプリは分割された 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": "null に設定",
"nullValue": "このオプション値は現在nullです",
"resetOptionsTooltip": "パッチ設定をリセット",
"viewTitle": "パッチ設定",
"saveOptions": "保存",
"addOptions": "オプションを追加",
"unselectPatch": "パッチの選択を解除",
"tooltip": "他の入力オプション",
"selectFilePath": "ファイルパスを選択",
"selectFolder": "フォルダーを選択",
"selectOption": "オプションを選択",
"requiredOption": "このオプションを設定する必要があります",
"unsupportedOption": "この設定はサポートされていません",
"requiredOptionNull": "以下のオプションを設定する必要があります:\n\n${options}"
},
"patchItem": {
"unsupportedDialogText": "このパッチを選択するとエラーが発生する可能性があります。\n\n現在のバージョン: ${packageVersion}\nサポートされているバージョン: ${supportedVersions}",
"unsupportedPatchVersion": "このアプリのバージョンではパッチはサポートされていません.",
"unsupportedRequiredOption": "このパッチには、このアプリではサポートされていない必須設定が含まれています",
"patchesChangeWarningDialogText": "デフォルトのパッチ選択とオプションの使用を推奨します。変更すると予期せぬ問題が発生する可能性があります。\n\nパッチ選択を続ける場合、設定で「パッチ選択の変更を許可」をオンにする必要があります。",
"patchesChangeWarningDialogButton": "デフォルトの選択を使用"
},
"installerView": {
"widgetTitle": "インストーラー",
"installType": "インストールの種類を選択",
"installTypeDescription": "インストールの種類を選択して続行します。",
"installButton": "インストール",
"installRootType": "マウント",
"installNonRootType": "標準",
"warning": "予期しない問題を避けるため、パッチを適用したアプリの自動更新を無効にします。",
"pressBackAgain": "キャンセルするには、もう一度戻るを押してください",
"openButton": "開く",
"shareButton": "ファイルを共有",
"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": "言語が更新されました",
"englishOption": "英語",
"sourcesLabel": "代替ソース",
"sourcesLabelHint": "ReVanded PatchesとReVanced Integrationsの代替ソースを設定",
"sourcesIntegrationsLabel": "Integrations のソース",
"useAlternativeSources": "他のソースを使用",
"useAlternativeSourcesHint": "APIの代わりにReVanced PatchesとReVanced Integrationsの他のソースを使用する",
"sourcesResetDialogTitle": "リセット",
"sourcesResetDialogText": "ソースをデフォルト値にリセットしてもよろしいですか?",
"apiURLResetDialogText": "API の URL をデフォルト値にリセットしてもよろしいですか?",
"sourcesUpdateNote": "注: ReVeded PatchesとReVanced Integrationsを別のソースから自動的にダウンロードします。\n\nこれにより、他のソースに接続されます。",
"apiURLLabel": "API の URL",
"apiURLHint": "ReVanced ManagerのAPIのURLを設定する",
"selectApiURL": "API の URL",
"orgPatchesLabel": "パッチの組織",
"sourcesPatchesLabel": "パッチのソース",
"orgIntegrationsLabel": "Integrations の組織",
"contributorsLabel": "貢献者",
"contributorsHint": "ReVancedの貢献者一覧",
"logsLabel": "ログを共有",
"logsHint": "ReVanced Manager のログを共有します",
"enablePatchesSelectionLabel": "パッチ選択の変更を許可",
"enablePatchesSelectionHint": "パッチの選択・解除を禁止しません",
"enablePatchesSelectionWarningText": "パッチの選択を変更すると、予期せぬ問題が起こる可能性があります。\n\n有効にしますか",
"disablePatchesSelectionWarningText": "パッチ選択の変更を無効にしようとしています。\nデフォルトのパッチの選択が復元されます。\n\n無効にしますか",
"autoUpdatePatchesLabel": "パッチの自動アップデート",
"autoUpdatePatchesHint": "パッチを自動的に最新バージョンに更新する",
"showUpdateDialogLabel": "アップデートの通知を表示",
"showUpdateDialogHint": "新しいアップデートが利用可能な場合にダイアログを表示する",
"universalPatchesLabel": "共通パッチの表示",
"universalPatchesHint": "すべてのアプリと共通パッチを表示します(アプリ一覧の読み込みが遅くなる可能性があります)",
"versionCompatibilityCheckLabel": "バージョンの互換性の確認",
"versionCompatibilityCheckHint": "選択したアプリのバージョンと互換性のないパッチの選択を防止",
"requireSuggestedAppVersionLabel": "推奨バージョンの使用を強制",
"requireSuggestedAppVersionHint": "推奨されていないバージョンのアプリを選択できないようにします",
"requireSuggestedAppVersionDialogText": "推奨バージョンではないアプリを選択すると、予期しない問題が発生する可能性があります。\n\nこのまま続行しますか",
"aboutLabel": "情報",
"snackbarMessage": "クリップボードにコピーしました",
"restartAppForChanges": "変更を適用するにはアプリを再起動してください",
"deleteTempDirLabel": "一時ファイルを削除",
"deleteTempDirHint": "未使用の一時ファイルを削除",
"deletedTempDir": "一時ファイルを削除しました",
"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": "開く",
"uninstallButton": "アンインストール",
"unmountButton": "マウント解除",
"rootDialogTitle": "エラー",
"unmountDialogText": "このアプリをアンマウントしてもよろしいですか?",
"uninstallDialogText": "本当にこのアプリをアンインストールしますか?",
"rootDialogText": "アプリはスーパーユーザー権限でインストールされましたが、現在 ReVanced Manager にはその権限がありません。 スーパーユーザー権限を付与してください。",
"packageNameLabel": "パッケージ名",
"installTypeLabel": "インストールの種類",
"mountTypeLabel": "マウント",
"regularTypeLabel": "通常",
"patchedDateLabel": "パッチ適用日時",
"appliedPatchesLabel": "適用されたパッチ",
"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アプリの開発者に連絡してサポートを求めてください。",
"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

@@ -0,0 +1,58 @@
{
"okButton": "ОК",
"cancelButton": "Артқа",
"dismissButton": "Елемеу",
"quitButton": "Шығу",
"updateButton": "Жаңарту",
"enabledLabel": "Қосулы",
"disabledLabel": "Сөндірулі",
"installed": "Орнатылған: ${version}",
"suggested": "Ұсынылған: ${version}",
"yesButton": "Иә",
"noButton": "Жоқ",
"warning": "Назар аударыңыз",
"options": "Баптау",
"notice": "Ескерту",
"noShowAgain": "Енді көрсетілмесін",
"add": "Қосу",
"remove": "Жою",
"showChangelogButton": "Өзгерту тарихын көрсету",
"showUpdateButton": "Жаңартуды көрсету",
"navigationView": {
"dashboardTab": "Басқару тақтасы",
"patcherTab": "Patcher",
"settingsTab": "Баптау"
},
"homeView": {
"refreshSuccess": "Сәтті жаңартылды",
"widgetTitle": "Бақылау тақтасы",
"updatesSubtitle": "Жаңартулар",
"patchedSubtitle": "Патчталған қолданбалар",
"changeLaterSubtitle": "Мұны кейінірек баптауда өзгертіп ала аласыз.",
"noUpdates": "Жаңарту жоқ",
"WIP": "Жүктеліп жатыр...",
"noInstallations": "Патчталған қолданбалар орнатылмаған",
"installUpdate": "Жаңартуды әрі қарай орната берейік пе?",
"updateSheetTitle": "ReVanced Manager-ді жаңарту",
"updateDialogTitle": "Жаңарту қолжетімді",
"updatePatchesSheetTitle": "ReVanced патчін жаңарту",
"updateChangelogTitle": "Өзгерту тарихы",
"updateDialogText": "${file} үшін жаңарту қолжетімді.\n\nҚазіргі ${version} нұсқасы орнатылып тұр.",
"downloadConsentDialogTitle": "Керек файлды жүктеп алайық па?"
},
"applicationItem": {},
"latestCommitCard": {},
"patcherView": {},
"appSelectorCard": {},
"patchSelectorCard": {},
"socialMediaCard": {},
"appSelectorView": {},
"patchesSelectorView": {},
"patchOptionsView": {},
"patchItem": {},
"installerView": {},
"settingsView": {},
"appInfoView": {},
"contributorsView": {},
"installErrorDialog": {}
}

View File

@@ -0,0 +1,302 @@
{
"okButton": "확인",
"cancelButton": "취소",
"dismissButton": "무시하기",
"quitButton": "종료",
"updateButton": "업데이트",
"enabledLabel": "활성화됨",
"disabledLabel": "비활성화됨",
"installed": "설치된 앱 버전: ${version}",
"suggested": "권장 앱 버전: ${version}",
"yesButton": "예",
"noButton": "아니요",
"warning": "경고",
"options": "옵션",
"notice": "알림",
"noShowAgain": "다시 보지 않기",
"add": "추가",
"remove": "제거",
"showChangelogButton": "변경 사항 보기",
"showUpdateButton": "업데이트 보기",
"navigationView": {
"dashboardTab": "Dashboard",
"patcherTab": "Patcher",
"settingsTab": "설정"
},
"homeView": {
"refreshSuccess": "새로고침을 성공했습니다.",
"widgetTitle": "Dashboard",
"updatesSubtitle": "업데이트",
"patchedSubtitle": "설치된 앱",
"changeLaterSubtitle": "나중에 설정에서 변경할 수 있습니다.",
"noUpdates": "새 업데이트가 없습니다.",
"WIP": "개발 중 입니다...",
"noInstallations": "아직 설치된 ReVanced 앱이 없습니다.",
"installUpdate": "업데이트를 계속 설치하겠습니까?",
"updateSheetTitle": "ReVanced Manager 업데이트",
"updateDialogTitle": "새 업데이트가 있습니다.",
"updatePatchesSheetTitle": "ReVanced 패치 업데이트",
"updateChangelogTitle": "변경 사항",
"updateDialogText": "'${file}'에 대한 새 업데이트를 할 수 있습니다.\n\n현재 설치된 버전은 '${version}'입니다.",
"downloadConsentDialogTitle": "필요한 파일을 다운로드하시겠습니까?",
"downloadConsentDialogText": "ReVanced Manager가 제대로 작동하려면 필요한 파일을 다운로드해야 합니다.",
"downloadConsentDialogText2": "진행하면 '${url}'에 연결하게 됩니다.",
"checkUpdateDialogTitle": "업데이트를 확인하시겠습니까?",
"checkUpdateDialogText": "ReVanced Manager가 자동으로 업데이트를 확인하도록 하시겠습니까?",
"notificationTitle": "업데이트를 다운로드했습니다.",
"notificationText": "업데이트를 설치하려면 여기를 누르세요.",
"downloadingMessage": "업데이트 다운로드 중...",
"downloadedMessage": "업데이트를 다운로드 완료했습니다.",
"installingMessage": "업데이트 설치 중...",
"errorDownloadMessage": "업데이트를 다운로드할 수 없습니다.",
"errorInstallMessage": "업데이트를 설치할 수 없습니다.",
"noConnection": "인터넷에 연결되지 않음",
"updatesDisabled": "패치된 앱 업데이트는 현재 비활성화되어 있습니다. 앱을 다시 패치하세요."
},
"applicationItem": {
"infoButton": "정보"
},
"latestCommitCard": {
"loadingLabel": "불러오는 중...",
"timeagoLabel": "${time} 전",
"patcherLabel": "Patcher: ",
"managerLabel": "Manager: ",
"updateButton": "Manager 업데이트"
},
"patcherView": {
"widgetTitle": "Patcher",
"patchButton": "패치하기",
"armv7WarningDialogText": "ARMv7 디바이스에 대한 패치는 아직 지원되지 않으며 실패할 수 있습니다. 그래도 계속 하시겠습니까?",
"removedPatchesWarningDialogText": "최근 적용한 패치들 중 다음 패치가 제거됩니다.\n\n${patches}\n\n계속 진행하시겠습니까?",
"requiredOptionDialogText": "일부 패치 옵션을 설정해야 합니다."
},
"appSelectorCard": {
"widgetTitle": "앱 선택하기",
"widgetTitleSelected": "선택한 앱",
"widgetSubtitle": "선택한 앱이 없습니다.",
"noAppsLabel": "앱이 발견되지 않음",
"currentVersion": "현재 앱 버전",
"suggestedVersion": "권장 앱 버전",
"anyVersion": "모든 앱 버전"
},
"patchSelectorCard": {
"widgetTitle": "패치 선택하기",
"widgetTitleSelected": "선택한 패치",
"widgetSubtitle": "먼저 앱을 선택하세요.",
"widgetEmptySubtitle": "선택한 패치가 없습니다."
},
"socialMediaCard": {
"widgetTitle": "소셜 네트워크",
"widgetSubtitle": "소셜 네트워크에서 ReVanced Team을 만나보세요!"
},
"appSelectorView": {
"viewTitle": "앱 선택하기",
"searchBarHint": "앱 검색하기",
"storageButton": "기기 저장소",
"selectFromStorageButton": "기기 저장소에서 선택",
"errorMessage": "선택한 앱을 사용할 수 없습니다.",
"downloadToast": "다운로드 기능은 아직 사용할 수 없습니다.",
"requireSuggestedAppVersionDialogText": "선택한 앱 버전이 권장 앱 버전과 일치하지 않아 예기치 않은 문제가 발생할 수 있습니다. 권장 앱 버전을 사용하세요.\n\n선택한 앱 버전: ${selected}\n권장 앱 버전: ${suggested}\n\n계속하려면 설정에서 '권장 앱 버전 요구'를 비활성화하세요.",
"featureNotAvailable": "기능이 구현되지 않음",
"featureNotAvailableText": "이 앱은 분할 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": "사용자 지정 값",
"resetOptionsTooltip": "패치 옵션 초기화",
"viewTitle": "패치 옵션",
"saveOptions": "저장",
"addOptions": "옵션 추가",
"deselectPatch": "패치 선택 해제",
"tooltip": "입력 옵션 더보기",
"selectFilePath": "파일 경로 선택",
"selectFolder": "폴더 선택",
"selectOption": "옵션 선택",
"requiredOption": "필수 옵션입니다.",
"unsupportedOption": "지원하지 않는 옵션입니다.",
"requiredOptionNull": "다음 옵션들이 설정되어 있어야 합니다:\n\n${options}"
},
"patchItem": {
"unsupportedDialogText": "이 패치는 오류를 발생시킬 수 있습니다.\n\n앱 버전: ${packageVersion}\n지원되는 버전:\n${supportedVersions}",
"unsupportedPatchVersion": "패치가 이 앱 버전을 지원하지 않습니다.",
"unsupportedRequiredOption": "패치에 이 앱을 지원하지 않는 필수 옵션이 포함되어 있습니다.",
"patchesChangeWarningDialogText": "기본 패치 선택을 사용하는 것을 권장합니다. 설정을 변경할 경우 오류의 원인이 될 수 있습니다.\n패치 선택을 변경하기 위해서는 설정에서 \"패치 선택 변경 허용\"을 활성화해야 합니다.",
"patchesChangeWarningDialogButton": "기본 선택목록 사용"
},
"installerView": {
"widgetTitle": "설치 관리자",
"installType": "설치 유형 선택",
"installTypeDescription": "설치를 진행할 유형을 선택해주세요.",
"installButton": "설치하기",
"installRootType": "마운트",
"installNonRootType": "일반",
"warning": "패치한 앱의 자동 업데이트를 꺼서 예기치 못한 오류를 예방하세요.",
"pressBackAgain": "취소하려면 뒤로가기 버튼을 다시 누르세요.",
"openButton": "열기",
"shareButton": "파일 공유",
"notificationTitle": "ReVanced Manager가 패치 중입니다.",
"notificationText": "설치 관리자로 돌아가려면 여기를 누르세요.",
"exportApkButtonTooltip": "패치한 APK 내보내기",
"exportLogButtonTooltip": "로그 내보내기",
"screenshotDetected": "스크린샷이 감지되었습니다. 로그를 공유할 목적이라면, 대신 텍스트 사본으로 공유해주세요.\n\n로그를 클립보드에 복사하시겠습니까?",
"copiedToClipboard": "로그를 클립보드에 복사했습니다.",
"noExit": "설치 관리자가 실행 중이므로 중단할 수 없습니다..."
},
"settingsView": {
"widgetTitle": "설정",
"appearanceSectionTitle": "레이아웃",
"teamSectionTitle": "ReVanced Team",
"debugSectionTitle": "디버깅",
"advancedSectionTitle": "고급 설정",
"exportSectionTitle": "가져오기 & 내보내기",
"dataSectionTitle": "데이터 소스",
"themeModeLabel": "앱 테마",
"systemThemeLabel": "기기 테마 사용",
"lightThemeLabel": "밝은 테마",
"darkThemeLabel": "어두운 테마",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "당신의 기기에 더 맞는 경험을 즐겨보세요.",
"languageLabel": "앱 언어",
"languageUpdated": "앱 언어를 변경했습니다.",
"englishOption": "영어",
"sourcesLabel": "대체 소스",
"sourcesLabelHint": "ReVanced Patches 및 ReVanced Integrations 대체 소스를 설정할 수 있습니다.",
"sourcesIntegrationsLabel": "Integrations 소스",
"useAlternativeSources": "대체 소스 사용",
"useAlternativeSourcesHint": "공식 소스가 아닌 ReVanced Patches 및 ReVanced Integrations 대체 소스를 사용합니다.",
"sourcesResetDialogTitle": "초기화",
"sourcesResetDialogText": "정말 커스텀 소스를 기본값으로 되돌릴까요?",
"apiURLResetDialogText": "정말 API URL을 기본값으로 되돌릴까요?",
"sourcesUpdateNote": "알림: 변경하면 대체 소스에서 ReVanced Patches 및 ReVanced Integrations이 자동으로 다운로드됩니다. \n\n그 이후에는 대체 소스로 연결됩니다.",
"apiURLLabel": "API URL",
"apiURLHint": "ReVanced Manager의 API URL를 설정할 수 있습니다.",
"selectApiURL": "API URL",
"orgPatchesLabel": "Patches 구성",
"sourcesPatchesLabel": "Patches 소스",
"orgIntegrationsLabel": "Integrations 구성",
"contributorsLabel": "도움을 주신 분들",
"contributorsHint": "ReVanced 개발에 도움을 주신 분들",
"logsLabel": "로그 공유하기",
"logsHint": "수집된 ReVanced Manager 로그를 공유합니다.",
"enablePatchesSelectionLabel": "패치 선택 변경 허용",
"enablePatchesSelectionHint": "패치를 선택하거나 선택 해제할 수 있습니다.",
"enablePatchesSelectionWarningText": "패치의 기본 선택을 바꾸는 경우 예상치 못한 문제가 발생할 수 있습니다.\n\n그래도 활성화하시겠습니까?",
"disablePatchesSelectionWarningText": "패치 선택 변경을 비활성화하려 합니다.\n패치의 기본 선택목록이 복원될 것입니다.\n\n그래도 비활성화하시겠습니까?",
"autoUpdatePatchesLabel": "패치 자동 업데이트",
"autoUpdatePatchesHint": "자동으로 패치를 최신 버전으로 업데이트합니다.",
"showUpdateDialogLabel": "업데이트 팝업창 보기",
"showUpdateDialogHint": "새 업데이트가 있으면 팝업창을 표시합니다.",
"universalPatchesLabel": "공용 패치 보기",
"universalPatchesHint": "기기에 설치된 모든 앱과 공용 패치를 표시합니다. (앱 목록이 느려질 수 있음)",
"versionCompatibilityCheckLabel": "버전 호환성 체크",
"versionCompatibilityCheckHint": "선택한 앱 버전과 호환되지 않는 패치를 선택할 수 없습니다.",
"requireSuggestedAppVersionLabel": "권장 앱 버전 요구",
"requireSuggestedAppVersionHint": "권장되지 않은 앱 버전은 선택할 수 없습니다.",
"requireSuggestedAppVersionDialogText": "권장 앱 버전이 아닌 앱을 선택하는 경우 예상치 못한 문제가 발생할 수 있습니다.\n\n그래도 계속 진행하시겠습니까?",
"aboutLabel": "정보",
"snackbarMessage": "클립보드에 복사했습니다.",
"restartAppForChanges": "변경 사항을 적용하려면 앱을 다시 시작하세요.",
"deleteTempDirLabel": "임시 파일 제거",
"deleteTempDirHint": "사용하지 않는 임시 파일을 제거합니다.",
"deletedTempDir": "임시 파일을 제거했습니다.",
"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": "열기",
"uninstallButton": "제거하기",
"unmountButton": "마운트 해제",
"rootDialogTitle": "오류",
"unmountDialogText": "이 앱의 마운트를 해제할까요?",
"uninstallDialogText": "이 앱을 제거할까요?",
"rootDialogText": "앱이 슈퍼유저 권한으로 설치되었으나 현재 ReVanced Manager에는 권한이 없습니다. 먼저 슈퍼유저 권한을 부여해주세요.",
"packageNameLabel": "패키지 이름",
"installTypeLabel": "설치 유형",
"mountTypeLabel": "마운트",
"regularTypeLabel": "일반",
"patchedDateLabel": "패치한 날짜",
"appliedPatchesLabel": "적용한 패치",
"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\nReVanced Manager에 Root 권한을 부여한 뒤 다시 시도하세요.",
"mount_missing_installation_description": "패치되지 않은 앱이 이 기기에 설치되지 않아서 마운트를 진행할 수 없어 설치에 실패했습니다.\n\n마운트하기 전 패치되지 않은 앱을 설치한 뒤 다시 시도하세요.",
"status_failure_timeout_description": "설치하는 데 시간이 너무 오래 걸립니다.\n\n다시 시도할까요?",
"status_failure_storage_description": "저장공간이 충분하지 않아 설치에 실패했습니다.\n\n저장공간을 확보한 뒤 다시 시도하세요.",
"status_failure_invalid_description": "패치된 앱이 유효하지 않아 설치에 실패했습니다.\n\n앱을 제거하고 다시 시도할까요?",
"status_failure_incompatible_description": "앱이 기기와 호환되지 않습니다.\n\n앱 개발자에게 문의하여 도움을 요청해 보세요.",
"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

@@ -0,0 +1,215 @@
{
"okButton": "Gerai",
"cancelButton": "Atšaukti",
"quitButton": "Išeiti",
"updateButton": "Atnaujinti",
"installed": "Įdiegta: ${version}",
"suggested": "Siūloma: ${version}",
"yesButton": "Taip",
"noButton": "Ne",
"warning": "Įspėjimas",
"options": "Nustatymai",
"notice": "Pranešimas",
"noShowAgain": "Daugiau to nerodyti",
"add": "Pridėti",
"remove": "Pašalinti",
"navigationView": {
"dashboardTab": "Valdymo skydas",
"patcherTab": "Pataisytuvas",
"settingsTab": "Nustatymai"
},
"homeView": {
"refreshSuccess": "Sėkmingai atnaujinta",
"widgetTitle": "Valdymo skydas",
"updatesSubtitle": "Atnaujinimai",
"patchedSubtitle": "Pataisytos programos",
"noInstallations": "Nėra įdiegtų pataisytų programų",
"installUpdate": "Tęsti atnaujinimą?",
"updateChangelogTitle": "Pakeitimų sąrašas",
"downloadingMessage": "Atsiunčiamas atnaujinimas...",
"installingMessage": "Įdiegiamas atnaujinimas...",
"errorDownloadMessage": "Nepavyksta atsisiųsti atnaujinimo",
"errorInstallMessage": "Nepavyksta įdiegti atnaujinimo",
"noConnection": "Nėra interneto ryšio",
"updatesDisabled": "Šiuo metu pataisytą programėlę atnaujinti neleidžiama. Dar kartą pataisykite programėlę."
},
"applicationItem": {
"infoButton": "Informacija"
},
"latestCommitCard": {
"loadingLabel": "Įkeliama...",
"timeagoLabel": "Prieš ${time}"
},
"patcherView": {
"widgetTitle": "Pataisytuvas",
"patchButton": "Pataisymas",
"requiredOptionDialogText": "Reikia nustatyti kai kurias pataisymų parinktis."
},
"appSelectorCard": {
"noAppsLabel": "Nerasta jokių programų",
"currentVersion": "Dabartinė",
"suggestedVersion": "Siūloma"
},
"patchSelectorCard": {
"widgetTitle": "Pasirinkite pataisymus",
"widgetTitleSelected": "Pasirinkti pataisymai",
"widgetSubtitle": "Pirmiausia pasirinkite programą",
"widgetEmptySubtitle": "Nėra pasirinktų pataisymų"
},
"socialMediaCard": {
"widgetTitle": "Socialiniai tinklai",
"widgetSubtitle": "Mes esame internete!"
},
"appSelectorView": {
"storageButton": "Saugykla",
"selectFromStorageButton": "Pasirinkti iš talpyklos",
"errorMessage": "Neina naudoti parinktos programos",
"downloadToast": "Atsisiuntimas dar neprieinamas",
"featureNotAvailable": "Funkcija dar neįgyvendinta"
},
"patchesSelectorView": {
"viewTitle": "Pasirinkite pataisymus",
"searchBarHint": "Ieškoti pataisymų",
"universalPatches": "Universalūs pataisymai",
"newPatches": "Nauji pataisymai",
"patches": "Pataisymai",
"doneButton": "Atlikta",
"defaultTooltip": "Pasirinkite visus numatytuosius pataisymus",
"noneTooltip": "Panaikinkite visų pataisymų pasirinkimą",
"loadPatchesSelection": "Įkelti pataisymų pasirinkimą",
"noSavedPatches": "Nėra išsaugoto pasirinktos programos pataisymų pasirinkimo.\nPaspauskite Atlikta, kad išsaugotumėte dabartinį pasirinkimą.",
"noPatchesFound": "Pasirinktai programėlei pataisymų nerasta",
"setRequiredOption": "Kai kuriems pataisymams reikia nustatyti parinktis:\n\n${patches}\n\nPrieš tęsdami darbą, nustatykite jas."
},
"patchOptionsView": {
"customValue": "Pasirinkta vertė",
"resetOptionsTooltip": "Iš naujo nustatyti pataisymų parinktis",
"viewTitle": "Pataisymų parinktys",
"saveOptions": "Išsaugoti",
"addOptions": "Pridėti pasirinkimus",
"deselectPatch": "Atšaukti pataisymą",
"tooltip": "Daugiau įvesties pasirinkčių",
"selectFilePath": "Pasirinkite failo kelią",
"selectFolder": "Pasirinkti aplanką",
"requiredOption": "Ši parinktis yra privaloma",
"unsupportedOption": "Ši parinktis nepalaikoma",
"requiredOptionNull": "Reikia nustatyti šias parinktis:\n\n${options}"
},
"patchItem": {
"unsupportedDialogText": "Pasirinkus šį pataisymą, gali atsirasti pataisymo klaidų.\n\nProgramos versija: ${packageVersion}\nPalaikomos versijos:\n${supportedVersions}",
"unsupportedRequiredOption": "Šiame pataisyme yra privaloma parinktis, kurios ši programa nepalaiko",
"patchesChangeWarningDialogButton": "Naudoti numatytą pasirinkimą"
},
"installerView": {
"installType": "Pasirinkite diegimo tipą",
"installButton": "Įdiegti",
"installRootType": "Įdėti",
"pressBackAgain": "Dar kartą paspauskite atgal, kad atšauktumėte",
"openButton": "Atidaryti",
"notificationTitle": "ReVanced Tvarkyklė yra pataisomas",
"notificationText": "Paspauskite sugrįžti į įdiegėją",
"exportApkButtonTooltip": "Eksportuoti pataisytą APK",
"exportLogButtonTooltip": "Eksportuoti įrašus",
"screenshotDetected": "Aptikta ekrano nuotrauka. Jei bandote dalintis įrašu, vietoje jo pasidalykite teksto kopija.\n\nKopijuoti įrašą į iškarpinę?",
"copiedToClipboard": "Nukopijuotas įrašas į iškarpinę",
"noExit": "Diegimo programa vis dar veikia, negalima išeiti..."
},
"settingsView": {
"widgetTitle": "Nustatymai",
"appearanceSectionTitle": "Išvaizda",
"teamSectionTitle": "Komanda",
"debugSectionTitle": "Derinimas",
"advancedSectionTitle": "Išplėstiniai nustatymai",
"exportSectionTitle": "Importuoti ir eksportuoti",
"themeModeLabel": "Programos tema",
"systemThemeLabel": "Sistema",
"lightThemeLabel": "Šviesus",
"darkThemeLabel": "Tamsus",
"dynamicThemeLabel": "Material You",
"dynamicThemeHint": "Mėgaukis patirtimi artimiau tavo įrenginiui",
"languageLabel": "Kalba",
"sourcesIntegrationsLabel": "Integracijų šaltinis",
"sourcesResetDialogTitle": "Nustatyti iš naujo",
"sourcesResetDialogText": "Ar tikrai norite iš naujo nustatyti savo šaltinius į numatytąsias vertes?",
"apiURLResetDialogText": "Ar tikrai norite iš naujo nustatyti savo API URL adresą į numatytąją vertę?",
"apiURLLabel": "API URL",
"selectApiURL": "API URL",
"orgPatchesLabel": "Modifikacijų organizacija",
"sourcesPatchesLabel": "Modifikacijų šaltinis",
"orgIntegrationsLabel": "Integracijų organizacija",
"contributorsLabel": "Prisidėjusieji žmonės",
"contributorsHint": "Žmonės prisidėję prie ReVanced",
"logsLabel": "Dalytis įrašais",
"logsHint": "Dalytis ReVanced Tvarkyklės įrašais",
"enablePatchesSelectionLabel": "Leisti keisti pataisymų pasirinkimą",
"enablePatchesSelectionWarningText": "Keičiant pataisymų pasirinkimą gali kilti netikėtų problemų.\n\nVis tiek įjungti?",
"disablePatchesSelectionWarningText": "Jūs ketinate išjungti pataisymų pasirinkimo keitimą.\nNumatytasis pataisymų pasirinkimas bus atstatytas.\n\nVis dėlto išjungti?",
"autoUpdatePatchesLabel": "Automatiškai atnaujinti pataisymus",
"autoUpdatePatchesHint": "Automatiškai atnaujinti pataisymus iki naujausios versijos",
"universalPatchesLabel": "Rodyti universalius pataisymus",
"universalPatchesHint": "Rodyti visas programas ir universalius pataisymus (gali sulėtėti programų sąrašas)",
"versionCompatibilityCheckLabel": "Versijos suderinamumo tikrinimas",
"requireSuggestedAppVersionLabel": "Reikalauti siūlomos programėlės versijos",
"requireSuggestedAppVersionDialogText": "Pasirinkus ne siūlomą programėlės versiją, gali kilti nenumatytų problemų.\n\nAr norite vis tiek tęsti?",
"aboutLabel": "Apie",
"snackbarMessage": "Nukopijuota į iškarpinę",
"restartAppForChanges": "Iš naujo paleiskite programą, kad modifikacijos įsigaliotų",
"deleteTempDirLabel": "Ištrinti laikinus failus",
"deleteTempDirHint": "Ištrinti nenaudojamus laikinus failus",
"deletedTempDir": "Laikini failai ištrinti",
"exportPatchesLabel": "Eksportuoti pataisymų pasirinkimą",
"exportPatchesHint": "Eksportuoti pataisymų pasirinkimą į JSON failą",
"exportedPatches": "Eksportuotas pataisymų pasirinkimas",
"noExportFileFound": "Nėra pataisymų pasirinkimo eksportuoti",
"importPatchesLabel": "Importuoti pataisymų pasirinkimą",
"importPatchesHint": "Importuoti pataisymų pasirinkimą iš JSON failo",
"importedPatches": "Importuotas pataisymų pasirinkimas",
"resetStoredPatchesLabel": "Iš naujo nustatyti pataisymų pasirinkimą",
"resetStoredPatchesHint": "Iš naujo nustatyti išsaugotą pataisymų pasirinkimą",
"resetStoredPatchesDialogTitle": "Iš naujo nustatyti pataisymų pasirinkimą?",
"resetStoredPatchesDialogText": "Bus atkurtas numatytasis pataisymų pasirinkimas.",
"resetStoredPatches": "Pataisymų pasirinkimas buvo iš naujo nustatytas",
"resetStoredOptionsLabel": "Iš naujo nustatyti pataisymų parinktis",
"resetStoredOptionsHint": "Iš naujo nustatyti visas pataisymų parinktis",
"resetStoredOptionsDialogTitle": "Iš naujo nustatyti pataisymo parinktis?",
"resetStoredOptionsDialogText": "Iš naujo nustatant pataisymų parinktis bus pašalintos visos išsaugotos parinktys.",
"resetStoredOptions": "Parinktys buvo iš naujo nustatytos",
"deleteLogsLabel": "Išvalyti įrašus",
"deleteLogsHint": "Ištrinti surinktus ReVanced Tvarkyklės įrašus",
"deletedLogs": "Įrašai ištrinti",
"regenerateKeystoreLabel": "Iš naujo sukurti raktų saugyklą",
"regenerateKeystoreHint": "Iš naujo sukurti programoms pasirašyti naudojamą raktų saugyklą",
"regenerateKeystoreDialogTitle": "Iš naujo sukurti raktų saugyklą?",
"regenerateKeystoreDialogText": "Pataisytos programos, pasirašytos senąja raktų saugykla, nebegalės būti atnaujinamos.",
"regeneratedKeystore": "Raktų saugykla iš naujo sukurta",
"exportKeystoreLabel": "Eksportuoti raktų saugyklą",
"exportKeystoreHint": "Eksportuoti raktų saugyklą, naudojamą programoms pasirašyti",
"exportedKeystore": "Raktų saugykla eksportuota",
"noKeystoreExportFileFound": "Nėra raktų saugyklos",
"importKeystoreLabel": "Importuoti raktų saugyklą",
"importKeystoreHint": "Importuoti raktų saugyklą, naudojamą programoms pasirašyti",
"importedKeystore": "Raktų saugykla importuota",
"selectKeystorePassword": "Raktų saugyklos slaptažodis",
"selectKeystorePasswordHint": "Pasirinkti raktų saugyklos slaptažodį, naudojamą programoms pasirašyti",
"jsonSelectorErrorMessage": "Neina naudoti pasirinkto JSON failo",
"keystoreSelectorErrorMessage": "Nepavyksta naudoti pasirinkto raktų saugyklos failo"
},
"appInfoView": {
"widgetTitle": "Programos informacija",
"openButton": "Atidaryti",
"uninstallButton": "Išdiegti",
"rootDialogTitle": "Klaida",
"rootDialogText": "Programa buvo įdiegta su super vartotojo leidimais, tačiau šiuo metu ReVanced Tvarkyklė neturi jokių leidimų.\nPrašome pirmiausia suteikti super vartotojo leidimus.",
"packageNameLabel": "Paketo pavadinimas",
"installTypeLabel": "Įdiegimo tipas",
"patchedDateLabel": "Pataisymo data",
"appliedPatchesLabel": "Pritaikyti pataisymai",
"patchedDateHint": "${date} ${time}",
"appliedPatchesHint": "${quantity} pritaikyti pataisymai",
"updateNotImplemented": "Ši funkcija dar neįgyvendinta"
},
"contributorsView": {
"widgetTitle": "Prisidėjusieji žmonės"
},
"installErrorDialog": {}
}

View File

@@ -0,0 +1,144 @@
{
"okButton": "Labi",
"cancelButton": "Atcelt",
"quitButton": "Iziet",
"updateButton": "Atjaunināt",
"installed": "Uzstādītā versija: ${version}",
"suggested": "Ieteiktā versija: ${version}",
"yesButton": "Jā",
"noButton": "Nē",
"warning": "Brīdinājums",
"options": "Iestatījumi",
"notice": "Piezīme",
"noShowAgain": "Vairs nerādīt",
"add": "Pievienot",
"remove": "Noņemt",
"navigationView": {
"dashboardTab": "Info panelis",
"patcherTab": "Pačeris",
"settingsTab": "Iestatījumi"
},
"homeView": {
"refreshSuccess": "Veiksmīgi atsvaidzināts",
"widgetTitle": "Info panelis",
"updatesSubtitle": "Atjauninājumi",
"patchedSubtitle": "Pačotās aplikācijas",
"noInstallations": "Nav atrasta neviena pačota aplikācija",
"installUpdate": "Vai turpināt instalēt atjauninājumu?",
"updateChangelogTitle": "Izmaiņu žurnāls",
"downloadingMessage": "Lejupielādē atjauninājumu...",
"installingMessage": "Instalē atjauninājumu...",
"errorDownloadMessage": "Nav iespējams lejupielādēt atjauninājumu",
"errorInstallMessage": "Nav iespējams instalēt atjauninājumu",
"noConnection": "Nav interneta savienojuma",
"updatesDisabled": "Pačoto aplikāciju atjaunināšana pašlaik ir izslēgta. Pačo aplikāciju velreiz."
},
"applicationItem": {
"infoButton": "Informācija"
},
"latestCommitCard": {
"loadingLabel": "Notiek ielāde...",
"timeagoLabel": "Pirms ${time}"
},
"patcherView": {
"widgetTitle": "Pačeris",
"patchButton": "Pačot"
},
"appSelectorCard": {
"noAppsLabel": "Netika atrasta neviena aplikācija",
"currentVersion": "Pašreizējā",
"suggestedVersion": "Ieteikums"
},
"patchSelectorCard": {
"widgetTitle": "Izvēlies pačus",
"widgetTitleSelected": "Izvēlētie pači",
"widgetSubtitle": "Vispirms izvēlies aplikāciju",
"widgetEmptySubtitle": "Nav atlasītu paču"
},
"socialMediaCard": {
"widgetTitle": "Sociālie tīkli",
"widgetSubtitle": "Mēs esam tiešsaistē!"
},
"appSelectorView": {
"storageButton": "Krātuve",
"selectFromStorageButton": "Izvēlēties krātuvi",
"errorMessage": "Nevar izmantot atlasīto aplikāciju",
"downloadToast": "Instalēšanas funkcija pašlaik nav pieejama",
"featureNotAvailable": "Funkcija nav ieviesta"
},
"patchesSelectorView": {
"viewTitle": "Izvēlies pačus",
"searchBarHint": "Meklē pačus",
"doneButton": "Gatavs",
"defaultTooltip": "Atlasiet visus standarta pači",
"noneTooltip": "Atsijāt visus pači",
"noPatchesFound": "Atlasītajai lietotnei nav atrasts neviens patčs"
},
"patchOptionsView": {
"saveOptions": "Saglabāt"
},
"patchItem": {
"unsupportedDialogText": "Izvēloties šo paču var rasties paču kļūdas\n\nApp versija: ${packageVersion}\nPašlaik atbalstītās versijas:\n${supportedVersions}"
},
"installerView": {
"installButton": "Instalēt",
"openButton": "Atvērt",
"notificationTitle": "ReVanced Manager pašlaik pačo",
"notificationText": "Spied, lai atgrieztos pie instalācijas",
"noExit": "Vēl notiek instalācija, nevar iziet..."
},
"settingsView": {
"widgetTitle": "Iestatījumi",
"appearanceSectionTitle": "Izskats",
"teamSectionTitle": "Komanda",
"advancedSectionTitle": "Papildus",
"exportSectionTitle": "Importēt / Eksportēt",
"themeModeLabel": "Aplikācijas motīvs",
"systemThemeLabel": "Sistēma",
"lightThemeLabel": "Gaišs",
"darkThemeLabel": "Tumšais režīms",
"dynamicThemeLabel": "Materiāls izskats",
"dynamicThemeHint": "Izbaudi pieredzi personalizētu tavai ierīcei",
"languageLabel": "Valoda",
"sourcesIntegrationsLabel": "Integrācijas avots",
"sourcesResetDialogTitle": "Atiestatīt",
"apiURLLabel": "API Saite",
"selectApiURL": "API Saite",
"orgPatchesLabel": "Paču autori",
"sourcesPatchesLabel": "Paču avots",
"orgIntegrationsLabel": "Integrāciju autori",
"contributorsLabel": "Autori",
"contributorsHint": "ReVanced ieguldītāji",
"aboutLabel": "Par",
"snackbarMessage": "Ievietots starpliktuvē",
"restartAppForChanges": "Restartējiet lietotni, lai piemērotu izmaiņas",
"deleteTempDirLabel": "Dzēst pagaidu failus",
"deleteTempDirHint": "Dzēst neizmantotos pagaidu failus",
"deletedTempDir": "Pagaidu faili izdzēsti",
"deletedLogs": "Žurnāls dzēsts",
"exportKeystoreLabel": "Eksportēt drošības atslēgu krātuvi",
"exportedKeystore": "Drošības atslēgu krātuve ir eksportēta",
"noKeystoreExportFileFound": "Eksportējamo drošības atslēgu krātuves nav",
"importKeystoreLabel": "Importēt drošības atslēgu krātuvi",
"importedKeystore": "Drošības atslēgu krātuve ir importēta",
"jsonSelectorErrorMessage": "Nevar izmantot atlasīto JSON failu"
},
"appInfoView": {
"widgetTitle": "Lietotnes informācija",
"openButton": "Atvērt",
"uninstallButton": "Atinstalēt",
"rootDialogTitle": "Kļūda",
"rootDialogText": "Aplikācija tika instalēta ar superuser pieejām, taču ReVanced Manager nav šādu pieeju.\nLūdzams uzlikt vispirms superuser ieejas.",
"packageNameLabel": "Pakotnes nosaukums",
"installTypeLabel": "Instalācijas tips",
"patchedDateLabel": "Pača datums",
"appliedPatchesLabel": "Lietotie pači",
"patchedDateHint": "${date} un ${time}",
"appliedPatchesHint": "${quantity} lietoti pači",
"updateNotImplemented": "Šī funkcija vēl nav izveidota"
},
"contributorsView": {
"widgetTitle": "Autori"
},
"installErrorDialog": {}
}

View File

@@ -0,0 +1,19 @@
{
"navigationView": {},
"homeView": {},
"applicationItem": {},
"latestCommitCard": {},
"patcherView": {},
"appSelectorCard": {},
"patchSelectorCard": {},
"socialMediaCard": {},
"appSelectorView": {},
"patchesSelectorView": {},
"patchOptionsView": {},
"patchItem": {},
"installerView": {},
"settingsView": {},
"appInfoView": {},
"contributorsView": {},
"installErrorDialog": {}
}

View File

@@ -0,0 +1,19 @@
{
"navigationView": {},
"homeView": {},
"applicationItem": {},
"latestCommitCard": {},
"patcherView": {},
"appSelectorCard": {},
"patchSelectorCard": {},
"socialMediaCard": {},
"appSelectorView": {},
"patchesSelectorView": {},
"patchOptionsView": {},
"patchItem": {},
"installerView": {},
"settingsView": {},
"appInfoView": {},
"contributorsView": {},
"installErrorDialog": {}
}

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